From 7d347c2516cd3902c476bf21f8bdd3645617bc52 Mon Sep 17 00:00:00 2001 From: bseayin Date: Sat, 17 Aug 2019 21:46:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SpringBootHomework/.classpath | 36 + SpringBootHomework/.project | 23 + .../org.eclipse.core.resources.prefs | 6 + .../.settings/org.eclipse.jdt.core.prefs | 5 + .../.settings/org.eclipse.m2e.core.prefs | 4 + SpringBootHomework/pom.xml | 73 + .../com/cy/SpringBootHomeworkApplication.java | 12 + .../com/cy/controller/HomeworkController.java | 167 + .../com/cy/controller/UserController.java | 92 + .../src/main/java/com/cy/entity/Homework.java | 64 + .../java/com/cy/entity/HomeworkRankDTO.java | 31 + .../java/com/cy/entity/HomeworkUserDTO.java | 55 + .../src/main/java/com/cy/entity/User.java | 57 + .../main/java/com/cy/repository/DTODao.java | 61 + .../com/cy/repository/HomeworkRepository.java | 15 + .../com/cy/repository/UserRepository.java | 13 + .../java/com/cy/service/HomeworkService.java | 122 + .../main/java/com/cy/service/UserService.java | 31 + .../src/main/java/com/cy/utils/KeyUtils.java | 11 + .../src/main/resources/application.properties | 8 + .../assets/images/background/error-bg.jpg | Bin 0 -> 35846 bytes .../static/assets/images/big/img1.jpg | Bin 0 -> 64932 bytes .../static/assets/images/big/img2.jpg | Bin 0 -> 124425 bytes .../static/assets/images/big/img4.jpg | Bin 0 -> 95955 bytes .../static/assets/images/custom-select.png | Bin 0 -> 14991 bytes .../static/assets/images/favicon.png | Bin 0 -> 817737 bytes .../static/assets/images/logo-icon.png | Bin 0 -> 818415 bytes .../static/assets/images/logo-text.png | Bin 0 -> 2120 bytes .../static/assets/images/users/1.jpg | Bin 0 -> 95683 bytes .../static/assets/images/users/2.jpg | Bin 0 -> 101308 bytes .../static/assets/images/users/5.jpg | Bin 0 -> 73888 bytes .../plugins/bootstrap/css/bootstrap-grid.css | 1339 +++ .../bootstrap/css/bootstrap-grid.css.map | 1 + .../bootstrap/css/bootstrap-grid.min.css | 1 + .../bootstrap/css/bootstrap-grid.min.css.map | 1 + .../bootstrap/css/bootstrap-reboot.css | 459 + .../bootstrap/css/bootstrap-reboot.css.map | 1 + .../bootstrap/css/bootstrap-reboot.min.css | 1 + .../css/bootstrap-reboot.min.css.map | 1 + .../plugins/bootstrap/css/bootstrap.css | 9320 ++++++++++++++++ .../plugins/bootstrap/css/bootstrap.css.map | 1 + .../plugins/bootstrap/css/bootstrap.min.css | 6 + .../bootstrap/css/bootstrap.min.css.map | 1 + .../assets/plugins/bootstrap/js/bootstrap.js | 3535 ++++++ .../plugins/bootstrap/js/bootstrap.min.js | 7 + .../assets/plugins/bootstrap/js/tether.min.js | 1 + .../assets/plugins/flot.tooltip/.bower.json | 24 + .../assets/plugins/flot.tooltip/bower.json | 14 + .../plugins/flot.tooltip/js/excanvas.min.js | 1 + .../plugins/flot.tooltip/js/jquery.flot.js | 3168 ++++++ .../flot.tooltip/js/jquery.flot.tooltip.js | 517 + .../js/jquery.flot.tooltip.min.js | 12 + .../js/jquery.flot.tooltip.source.js | 506 + .../static/assets/plugins/flot/.bower.json | 19 + .../static/assets/plugins/flot/.gitignore | 3 + .../static/assets/plugins/flot/.travis.yml | 3 + .../static/assets/plugins/flot/API.md | 1498 +++ .../assets/plugins/flot/CONTRIBUTING.md | 98 + .../static/assets/plugins/flot/FAQ.md | 75 + .../static/assets/plugins/flot/Makefile | 12 + .../static/assets/plugins/flot/NEWS.md | 1026 ++ .../static/assets/plugins/flot/PLUGINS.md | 143 + .../static/assets/plugins/flot/README.md | 110 + .../static/assets/plugins/flot/component.json | 8 + .../examples/ajax/data-eu-gdp-growth-1.json | 4 + .../examples/ajax/data-eu-gdp-growth-2.json | 4 + .../examples/ajax/data-eu-gdp-growth-3.json | 4 + .../examples/ajax/data-eu-gdp-growth-4.json | 4 + .../examples/ajax/data-eu-gdp-growth-5.json | 4 + .../examples/ajax/data-eu-gdp-growth.json | 4 + .../examples/ajax/data-japan-gdp-growth.json | 4 + .../examples/ajax/data-usa-gdp-growth.json | 4 + .../plugins/flot/examples/ajax/index.html | 173 + .../flot/examples/annotating/index.html | 87 + .../flot/examples/axes-interacting/index.html | 97 + .../flot/examples/axes-multiple/index.html | 77 + .../flot/examples/axes-time-zones/date.js | 893 ++ .../flot/examples/axes-time-zones/index.html | 114 + .../flot/examples/axes-time-zones/tz/africa | 1181 ++ .../examples/axes-time-zones/tz/antarctica | 413 + .../flot/examples/axes-time-zones/tz/asia | 2717 +++++ .../examples/axes-time-zones/tz/australasia | 1719 +++ .../flot/examples/axes-time-zones/tz/backward | 117 + .../flot/examples/axes-time-zones/tz/etcetera | 81 + .../flot/examples/axes-time-zones/tz/europe | 2856 +++++ .../flot/examples/axes-time-zones/tz/factory | 10 + .../examples/axes-time-zones/tz/iso3166.tab | 276 + .../examples/axes-time-zones/tz/leapseconds | 100 + .../examples/axes-time-zones/tz/northamerica | 3235 ++++++ .../examples/axes-time-zones/tz/pacificnew | 28 + .../flot/examples/axes-time-zones/tz/solar87 | 390 + .../flot/examples/axes-time-zones/tz/solar88 | 390 + .../flot/examples/axes-time-zones/tz/solar89 | 395 + .../examples/axes-time-zones/tz/southamerica | 1711 +++ .../flot/examples/axes-time-zones/tz/systemv | 38 + .../examples/axes-time-zones/tz/yearistype.sh | 38 + .../flot/examples/axes-time-zones/tz/zone.tab | 441 + .../flot/examples/axes-time/index.html | 137 + .../plugins/flot/examples/background.png | Bin 0 -> 231 bytes .../flot/examples/basic-options/index.html | 91 + .../flot/examples/basic-usage/index.html | 57 + .../plugins/flot/examples/canvas/index.html | 75 + .../flot/examples/categories/index.html | 64 + .../assets/plugins/flot/examples/examples.css | 97 + .../examples/image/hs-2004-27-a-large-web.jpg | Bin 0 -> 34489 bytes .../plugins/flot/examples/image/index.html | 69 + .../assets/plugins/flot/examples/index.html | 80 + .../flot/examples/interacting/index.html | 118 + .../flot/examples/navigate/arrow-down.gif | Bin 0 -> 916 bytes .../flot/examples/navigate/arrow-left.gif | Bin 0 -> 891 bytes .../flot/examples/navigate/arrow-right.gif | Bin 0 -> 897 bytes .../flot/examples/navigate/arrow-up.gif | Bin 0 -> 916 bytes .../plugins/flot/examples/navigate/index.html | 153 + .../flot/examples/percentiles/index.html | 79 + .../plugins/flot/examples/realtime/index.html | 122 + .../plugins/flot/examples/resize/index.html | 76 + .../flot/examples/selection/index.html | 152 + .../flot/examples/series-errorbars/index.html | 150 + .../flot/examples/series-pie/index.html | 818 ++ .../flot/examples/series-toggle/index.html | 121 + .../flot/examples/series-types/index.html | 90 + .../shared/jquery-ui/jquery-ui.min.css | 6 + .../plugins/flot/examples/stacking/index.html | 107 + .../plugins/flot/examples/symbols/index.html | 76 + .../flot/examples/threshold/index.html | 76 + .../plugins/flot/examples/tracking/index.html | 135 + .../plugins/flot/examples/visitors/index.html | 147 + .../plugins/flot/examples/zooming/index.html | 144 + .../static/assets/plugins/flot/excanvas.js | 1428 +++ .../assets/plugins/flot/excanvas.min.js | 1 + .../assets/plugins/flot/flot.jquery.json | 27 + .../plugins/flot/jquery.colorhelpers.js | 180 + .../assets/plugins/flot/jquery.flot.canvas.js | 345 + .../plugins/flot/jquery.flot.categories.js | 190 + .../plugins/flot/jquery.flot.crosshair.js | 176 + .../plugins/flot/jquery.flot.errorbars.js | 353 + .../plugins/flot/jquery.flot.fillbetween.js | 226 + .../assets/plugins/flot/jquery.flot.image.js | 241 + .../static/assets/plugins/flot/jquery.flot.js | 3168 ++++++ .../plugins/flot/jquery.flot.navigate.js | 346 + .../assets/plugins/flot/jquery.flot.pie.js | 820 ++ .../assets/plugins/flot/jquery.flot.resize.js | 59 + .../plugins/flot/jquery.flot.selection.js | 360 + .../assets/plugins/flot/jquery.flot.stack.js | 188 + .../assets/plugins/flot/jquery.flot.symbol.js | 71 + .../plugins/flot/jquery.flot.threshold.js | 142 + .../assets/plugins/flot/jquery.flot.time.js | 432 + .../static/assets/plugins/flot/jquery.js | 9472 +++++++++++++++++ .../static/assets/plugins/flot/package.json | 11 + .../static/assets/plugins/gmaps/gmaps.js | 2204 ++++ .../static/assets/plugins/gmaps/gmaps.min.js | 2 + .../assets/plugins/gmaps/gmaps.min.js.map | 1 + .../assets/plugins/gmaps/jquery.gmaps.js | 13 + .../plugins/gmaps/lib/gmaps.controls.js | 83 + .../assets/plugins/gmaps/lib/gmaps.core.js | 488 + .../assets/plugins/gmaps/lib/gmaps.events.js | 54 + .../plugins/gmaps/lib/gmaps.geofences.js | 14 + .../plugins/gmaps/lib/gmaps.geometry.js | 205 + .../assets/plugins/gmaps/lib/gmaps.layers.js | 158 + .../plugins/gmaps/lib/gmaps.map_types.js | 29 + .../assets/plugins/gmaps/lib/gmaps.markers.js | 210 + .../gmaps/lib/gmaps.native_extensions.js | 121 + .../plugins/gmaps/lib/gmaps.overlays.js | 134 + .../assets/plugins/gmaps/lib/gmaps.routes.js | 330 + .../assets/plugins/gmaps/lib/gmaps.static.js | 245 + .../plugins/gmaps/lib/gmaps.streetview.js | 44 + .../assets/plugins/gmaps/lib/gmaps.styles.js | 9 + .../assets/plugins/gmaps/lib/gmaps.utils.js | 42 + .../assets/plugins/jquery/jquery.min.js | 4 + .../sticky-kit-master/dist/sticky-kit.js | 265 + .../sticky-kit-master/dist/sticky-kit.min.js | 10 + .../styleswitcher/jQuery.style.switcher.js | 51 + .../src/main/resources/static/css/animate.css | 7 + .../src/main/resources/static/css/auth.css | 541 + .../resources/static/css/colors/blue-dark.css | 230 + .../main/resources/static/css/colors/blue.css | 195 + .../static/css/colors/default-dark.css | 216 + .../resources/static/css/colors/default.css | 177 + .../static/css/colors/green-dark.css | 230 + .../resources/static/css/colors/green.css | 199 + .../static/css/colors/megna-dark.css | 230 + .../resources/static/css/colors/megna.css | 199 + .../static/css/colors/purple-dark.css | 230 + .../resources/static/css/colors/purple.css | 199 + .../resources/static/css/colors/red-dark.css | 230 + .../main/resources/static/css/colors/red.css | 199 + .../main/resources/static/css/css/animate.css | 7 + .../main/resources/static/css/css/auth.css | 541 + .../static/css/css/colors/blue-dark.css | 230 + .../resources/static/css/css/colors/blue.css | 195 + .../static/css/css/colors/default-dark.css | 216 + .../static/css/css/colors/default.css | 177 + .../static/css/css/colors/green-dark.css | 230 + .../resources/static/css/css/colors/green.css | 199 + .../static/css/css/colors/megna-dark.css | 230 + .../resources/static/css/css/colors/megna.css | 199 + .../static/css/css/colors/purple-dark.css | 230 + .../static/css/css/colors/purple.css | 199 + .../static/css/css/colors/red-dark.css | 230 + .../resources/static/css/css/colors/red.css | 199 + .../css/simple-line-icons.css | 750 ++ .../css/icons/themify-icons/themify-icons.css | 1074 ++ .../resources/static/css/css/spinners.css | 68 + .../main/resources/static/css/css/style.css | 1 + .../css/simple-line-icons.css | 752 ++ .../css/icons/themify-icons/themify-icons.css | 1076 ++ .../main/resources/static/css/spinners.css | 68 + .../src/main/resources/static/css/style.css | 1 + .../src/main/resources/static/index.html | 209 + .../src/main/resources/static/index2.html | 206 + .../src/main/resources/static/index3.html | 236 + .../src/main/resources/static/index4.html | 357 + .../src/main/resources/static/index5.html | 235 + .../src/main/resources/static/js/auth.js | 136 + .../src/main/resources/static/js/custom.js | 96 + .../main/resources/static/js/custom.min.js | 1 + .../src/main/resources/static/js/flot-data.js | 130 + .../src/main/resources/static/js/index1.js | 31 + .../src/main/resources/static/js/index2.js | 30 + .../src/main/resources/static/js/index3.js | 49 + .../src/main/resources/static/js/index4.js | 410 + .../src/main/resources/static/js/index5.js | 41 + .../resources/static/js/jquery.slimscroll.js | 1 + .../src/main/resources/static/js/login.js | 61 + .../src/main/resources/static/js/register.js | 94 + .../main/resources/static/js/sidebarmenu.js | 342 + .../src/main/resources/static/js/table.js | 71 + .../src/main/resources/static/js/waves.js | 1 + .../src/main/resources/static/login.html | 65 + .../src/main/resources/static/register.html | 69 + .../SpringBootHomework-0.0.1-SNAPSHOT.jar | Bin 0 -> 1959217 bytes .../zz/SpringBootHomework/pom.properties | 7 + .../maven/zz/SpringBootHomework/pom.xml | 73 + .../target/classes/application.properties | 8 + .../cy/SpringBootHomeworkApplication.class | Bin 0 -> 725 bytes .../cy/controller/HomeworkController.class | Bin 0 -> 7939 bytes .../com/cy/controller/UserController.class | Bin 0 -> 3477 bytes .../classes/com/cy/entity/Homework.class | Bin 0 -> 1644 bytes .../com/cy/entity/HomeworkRankDTO.class | Bin 0 -> 918 bytes .../com/cy/entity/HomeworkUserDTO.class | Bin 0 -> 1368 bytes .../target/classes/com/cy/entity/User.class | Bin 0 -> 1409 bytes .../classes/com/cy/repository/DTODao.class | Bin 0 -> 3634 bytes .../cy/repository/HomeworkRepository.class | Bin 0 -> 924 bytes .../com/cy/repository/UserRepository.class | Bin 0 -> 579 bytes .../com/cy/service/HomeworkService.class | Bin 0 -> 5911 bytes .../classes/com/cy/service/UserService.class | Bin 0 -> 1278 bytes .../classes/com/cy/utils/KeyUtils.class | Bin 0 -> 941 bytes .../assets/images/background/error-bg.jpg | Bin 0 -> 35846 bytes .../classes/static/assets/images/big/img1.jpg | Bin 0 -> 64932 bytes .../classes/static/assets/images/big/img2.jpg | Bin 0 -> 124425 bytes .../classes/static/assets/images/big/img4.jpg | Bin 0 -> 95955 bytes .../static/assets/images/custom-select.png | Bin 0 -> 14991 bytes .../classes/static/assets/images/favicon.png | Bin 0 -> 817737 bytes .../static/assets/images/logo-icon.png | Bin 0 -> 818415 bytes .../static/assets/images/logo-text.png | Bin 0 -> 2120 bytes .../classes/static/assets/images/users/1.jpg | Bin 0 -> 95683 bytes .../classes/static/assets/images/users/2.jpg | Bin 0 -> 101308 bytes .../classes/static/assets/images/users/5.jpg | Bin 0 -> 73888 bytes .../plugins/bootstrap/css/bootstrap-grid.css | 1339 +++ .../bootstrap/css/bootstrap-grid.css.map | 1 + .../bootstrap/css/bootstrap-grid.min.css | 1 + .../bootstrap/css/bootstrap-grid.min.css.map | 1 + .../bootstrap/css/bootstrap-reboot.css | 459 + .../bootstrap/css/bootstrap-reboot.css.map | 1 + .../bootstrap/css/bootstrap-reboot.min.css | 1 + .../css/bootstrap-reboot.min.css.map | 1 + .../plugins/bootstrap/css/bootstrap.css | 9320 ++++++++++++++++ .../plugins/bootstrap/css/bootstrap.css.map | 1 + .../plugins/bootstrap/css/bootstrap.min.css | 6 + .../bootstrap/css/bootstrap.min.css.map | 1 + .../assets/plugins/bootstrap/js/bootstrap.js | 3535 ++++++ .../plugins/bootstrap/js/bootstrap.min.js | 7 + .../assets/plugins/bootstrap/js/tether.min.js | 1 + .../assets/plugins/flot.tooltip/.bower.json | 24 + .../assets/plugins/flot.tooltip/bower.json | 14 + .../plugins/flot.tooltip/js/excanvas.min.js | 1 + .../plugins/flot.tooltip/js/jquery.flot.js | 3168 ++++++ .../flot.tooltip/js/jquery.flot.tooltip.js | 517 + .../js/jquery.flot.tooltip.min.js | 12 + .../js/jquery.flot.tooltip.source.js | 506 + .../static/assets/plugins/flot/.bower.json | 19 + .../static/assets/plugins/flot/.travis.yml | 3 + .../classes/static/assets/plugins/flot/API.md | 1498 +++ .../assets/plugins/flot/CONTRIBUTING.md | 98 + .../classes/static/assets/plugins/flot/FAQ.md | 75 + .../static/assets/plugins/flot/Makefile | 12 + .../static/assets/plugins/flot/NEWS.md | 1026 ++ .../static/assets/plugins/flot/PLUGINS.md | 143 + .../static/assets/plugins/flot/README.md | 110 + .../static/assets/plugins/flot/component.json | 8 + .../examples/ajax/data-eu-gdp-growth-1.json | 4 + .../examples/ajax/data-eu-gdp-growth-2.json | 4 + .../examples/ajax/data-eu-gdp-growth-3.json | 4 + .../examples/ajax/data-eu-gdp-growth-4.json | 4 + .../examples/ajax/data-eu-gdp-growth-5.json | 4 + .../examples/ajax/data-eu-gdp-growth.json | 4 + .../examples/ajax/data-japan-gdp-growth.json | 4 + .../examples/ajax/data-usa-gdp-growth.json | 4 + .../plugins/flot/examples/ajax/index.html | 173 + .../flot/examples/annotating/index.html | 87 + .../flot/examples/axes-interacting/index.html | 97 + .../flot/examples/axes-multiple/index.html | 77 + .../flot/examples/axes-time-zones/date.js | 893 ++ .../flot/examples/axes-time-zones/index.html | 114 + .../flot/examples/axes-time-zones/tz/africa | 1181 ++ .../examples/axes-time-zones/tz/antarctica | 413 + .../flot/examples/axes-time-zones/tz/asia | 2717 +++++ .../examples/axes-time-zones/tz/australasia | 1719 +++ .../flot/examples/axes-time-zones/tz/backward | 117 + .../flot/examples/axes-time-zones/tz/etcetera | 81 + .../flot/examples/axes-time-zones/tz/europe | 2856 +++++ .../flot/examples/axes-time-zones/tz/factory | 10 + .../examples/axes-time-zones/tz/iso3166.tab | 276 + .../examples/axes-time-zones/tz/leapseconds | 100 + .../examples/axes-time-zones/tz/northamerica | 3235 ++++++ .../examples/axes-time-zones/tz/pacificnew | 28 + .../flot/examples/axes-time-zones/tz/solar87 | 390 + .../flot/examples/axes-time-zones/tz/solar88 | 390 + .../flot/examples/axes-time-zones/tz/solar89 | 395 + .../examples/axes-time-zones/tz/southamerica | 1711 +++ .../flot/examples/axes-time-zones/tz/systemv | 38 + .../examples/axes-time-zones/tz/yearistype.sh | 38 + .../flot/examples/axes-time-zones/tz/zone.tab | 441 + .../flot/examples/axes-time/index.html | 137 + .../plugins/flot/examples/background.png | Bin 0 -> 231 bytes .../flot/examples/basic-options/index.html | 91 + .../flot/examples/basic-usage/index.html | 57 + .../plugins/flot/examples/canvas/index.html | 75 + .../flot/examples/categories/index.html | 64 + .../assets/plugins/flot/examples/examples.css | 97 + .../examples/image/hs-2004-27-a-large-web.jpg | Bin 0 -> 34489 bytes .../plugins/flot/examples/image/index.html | 69 + .../assets/plugins/flot/examples/index.html | 80 + .../flot/examples/interacting/index.html | 118 + .../flot/examples/navigate/arrow-down.gif | Bin 0 -> 916 bytes .../flot/examples/navigate/arrow-left.gif | Bin 0 -> 891 bytes .../flot/examples/navigate/arrow-right.gif | Bin 0 -> 897 bytes .../flot/examples/navigate/arrow-up.gif | Bin 0 -> 916 bytes .../plugins/flot/examples/navigate/index.html | 153 + .../flot/examples/percentiles/index.html | 79 + .../plugins/flot/examples/realtime/index.html | 122 + .../plugins/flot/examples/resize/index.html | 76 + .../flot/examples/selection/index.html | 152 + .../flot/examples/series-errorbars/index.html | 150 + .../flot/examples/series-pie/index.html | 818 ++ .../flot/examples/series-toggle/index.html | 121 + .../flot/examples/series-types/index.html | 90 + .../shared/jquery-ui/jquery-ui.min.css | 6 + .../plugins/flot/examples/stacking/index.html | 107 + .../plugins/flot/examples/symbols/index.html | 76 + .../flot/examples/threshold/index.html | 76 + .../plugins/flot/examples/tracking/index.html | 135 + .../plugins/flot/examples/visitors/index.html | 147 + .../plugins/flot/examples/zooming/index.html | 144 + .../static/assets/plugins/flot/excanvas.js | 1428 +++ .../assets/plugins/flot/excanvas.min.js | 1 + .../assets/plugins/flot/flot.jquery.json | 27 + .../plugins/flot/jquery.colorhelpers.js | 180 + .../assets/plugins/flot/jquery.flot.canvas.js | 345 + .../plugins/flot/jquery.flot.categories.js | 190 + .../plugins/flot/jquery.flot.crosshair.js | 176 + .../plugins/flot/jquery.flot.errorbars.js | 353 + .../plugins/flot/jquery.flot.fillbetween.js | 226 + .../assets/plugins/flot/jquery.flot.image.js | 241 + .../static/assets/plugins/flot/jquery.flot.js | 3168 ++++++ .../plugins/flot/jquery.flot.navigate.js | 346 + .../assets/plugins/flot/jquery.flot.pie.js | 820 ++ .../assets/plugins/flot/jquery.flot.resize.js | 59 + .../plugins/flot/jquery.flot.selection.js | 360 + .../assets/plugins/flot/jquery.flot.stack.js | 188 + .../assets/plugins/flot/jquery.flot.symbol.js | 71 + .../plugins/flot/jquery.flot.threshold.js | 142 + .../assets/plugins/flot/jquery.flot.time.js | 432 + .../static/assets/plugins/flot/jquery.js | 9472 +++++++++++++++++ .../static/assets/plugins/flot/package.json | 11 + .../static/assets/plugins/gmaps/gmaps.js | 2204 ++++ .../static/assets/plugins/gmaps/gmaps.min.js | 2 + .../assets/plugins/gmaps/gmaps.min.js.map | 1 + .../assets/plugins/gmaps/jquery.gmaps.js | 13 + .../plugins/gmaps/lib/gmaps.controls.js | 83 + .../assets/plugins/gmaps/lib/gmaps.core.js | 488 + .../assets/plugins/gmaps/lib/gmaps.events.js | 54 + .../plugins/gmaps/lib/gmaps.geofences.js | 14 + .../plugins/gmaps/lib/gmaps.geometry.js | 205 + .../assets/plugins/gmaps/lib/gmaps.layers.js | 158 + .../plugins/gmaps/lib/gmaps.map_types.js | 29 + .../assets/plugins/gmaps/lib/gmaps.markers.js | 210 + .../gmaps/lib/gmaps.native_extensions.js | 121 + .../plugins/gmaps/lib/gmaps.overlays.js | 134 + .../assets/plugins/gmaps/lib/gmaps.routes.js | 330 + .../assets/plugins/gmaps/lib/gmaps.static.js | 245 + .../plugins/gmaps/lib/gmaps.streetview.js | 44 + .../assets/plugins/gmaps/lib/gmaps.styles.js | 9 + .../assets/plugins/gmaps/lib/gmaps.utils.js | 42 + .../assets/plugins/jquery/jquery.min.js | 4 + .../sticky-kit-master/dist/sticky-kit.js | 265 + .../sticky-kit-master/dist/sticky-kit.min.js | 10 + .../styleswitcher/jQuery.style.switcher.js | 51 + .../target/classes/static/css/animate.css | 7 + .../target/classes/static/css/auth.css | 541 + .../classes/static/css/colors/blue-dark.css | 230 + .../target/classes/static/css/colors/blue.css | 195 + .../static/css/colors/default-dark.css | 216 + .../classes/static/css/colors/default.css | 177 + .../classes/static/css/colors/green-dark.css | 230 + .../classes/static/css/colors/green.css | 199 + .../classes/static/css/colors/megna-dark.css | 230 + .../classes/static/css/colors/megna.css | 199 + .../classes/static/css/colors/purple-dark.css | 230 + .../classes/static/css/colors/purple.css | 199 + .../classes/static/css/colors/red-dark.css | 230 + .../target/classes/static/css/colors/red.css | 199 + .../target/classes/static/css/css/animate.css | 7 + .../target/classes/static/css/css/auth.css | 541 + .../static/css/css/colors/blue-dark.css | 230 + .../classes/static/css/css/colors/blue.css | 195 + .../static/css/css/colors/default-dark.css | 216 + .../classes/static/css/css/colors/default.css | 177 + .../static/css/css/colors/green-dark.css | 230 + .../classes/static/css/css/colors/green.css | 199 + .../static/css/css/colors/megna-dark.css | 230 + .../classes/static/css/css/colors/megna.css | 199 + .../static/css/css/colors/purple-dark.css | 230 + .../classes/static/css/css/colors/purple.css | 199 + .../static/css/css/colors/red-dark.css | 230 + .../classes/static/css/css/colors/red.css | 199 + .../css/simple-line-icons.css | 750 ++ .../css/icons/themify-icons/themify-icons.css | 1074 ++ .../classes/static/css/css/spinners.css | 68 + .../target/classes/static/css/css/style.css | 1 + .../css/simple-line-icons.css | 752 ++ .../css/icons/themify-icons/themify-icons.css | 1076 ++ .../target/classes/static/css/spinners.css | 68 + .../target/classes/static/css/style.css | 1 + .../target/classes/static/index.html | 209 + .../target/classes/static/index2.html | 206 + .../target/classes/static/index3.html | 236 + .../target/classes/static/index4.html | 357 + .../target/classes/static/index5.html | 235 + .../target/classes/static/js/auth.js | 136 + .../target/classes/static/js/custom.js | 96 + .../target/classes/static/js/custom.min.js | 1 + .../target/classes/static/js/flot-data.js | 130 + .../target/classes/static/js/index1.js | 31 + .../target/classes/static/js/index2.js | 30 + .../target/classes/static/js/index3.js | 49 + .../target/classes/static/js/index4.js | 410 + .../target/classes/static/js/index5.js | 41 + .../classes/static/js/jquery.slimscroll.js | 1 + .../target/classes/static/js/login.js | 61 + .../target/classes/static/js/register.js | 94 + .../target/classes/static/js/sidebarmenu.js | 342 + .../target/classes/static/js/table.js | 71 + .../target/classes/static/js/waves.js | 1 + .../target/classes/static/login.html | 65 + .../target/classes/static/register.html | 69 + .../target/maven-archiver/pom.properties | 3 + .../compile/default-compile/createdFiles.lst | 0 .../compile/default-compile/inputFiles.lst | 13 + .../default-testCompile/inputFiles.lst | 0 460 files changed, 158063 insertions(+) create mode 100644 SpringBootHomework/.classpath create mode 100644 SpringBootHomework/.project create mode 100644 SpringBootHomework/.settings/org.eclipse.core.resources.prefs create mode 100644 SpringBootHomework/.settings/org.eclipse.jdt.core.prefs create mode 100644 SpringBootHomework/.settings/org.eclipse.m2e.core.prefs create mode 100644 SpringBootHomework/pom.xml create mode 100644 SpringBootHomework/src/main/java/com/cy/SpringBootHomeworkApplication.java create mode 100644 SpringBootHomework/src/main/java/com/cy/controller/HomeworkController.java create mode 100644 SpringBootHomework/src/main/java/com/cy/controller/UserController.java create mode 100644 SpringBootHomework/src/main/java/com/cy/entity/Homework.java create mode 100644 SpringBootHomework/src/main/java/com/cy/entity/HomeworkRankDTO.java create mode 100644 SpringBootHomework/src/main/java/com/cy/entity/HomeworkUserDTO.java create mode 100644 SpringBootHomework/src/main/java/com/cy/entity/User.java create mode 100644 SpringBootHomework/src/main/java/com/cy/repository/DTODao.java create mode 100644 SpringBootHomework/src/main/java/com/cy/repository/HomeworkRepository.java create mode 100644 SpringBootHomework/src/main/java/com/cy/repository/UserRepository.java create mode 100644 SpringBootHomework/src/main/java/com/cy/service/HomeworkService.java create mode 100644 SpringBootHomework/src/main/java/com/cy/service/UserService.java create mode 100644 SpringBootHomework/src/main/java/com/cy/utils/KeyUtils.java create mode 100644 SpringBootHomework/src/main/resources/application.properties create mode 100644 SpringBootHomework/src/main/resources/static/assets/images/background/error-bg.jpg create mode 100644 SpringBootHomework/src/main/resources/static/assets/images/big/img1.jpg create mode 100644 SpringBootHomework/src/main/resources/static/assets/images/big/img2.jpg create mode 100644 SpringBootHomework/src/main/resources/static/assets/images/big/img4.jpg create mode 100644 SpringBootHomework/src/main/resources/static/assets/images/custom-select.png create mode 100644 SpringBootHomework/src/main/resources/static/assets/images/favicon.png create mode 100644 SpringBootHomework/src/main/resources/static/assets/images/logo-icon.png create mode 100644 SpringBootHomework/src/main/resources/static/assets/images/logo-text.png create mode 100644 SpringBootHomework/src/main/resources/static/assets/images/users/1.jpg create mode 100644 SpringBootHomework/src/main/resources/static/assets/images/users/2.jpg create mode 100644 SpringBootHomework/src/main/resources/static/assets/images/users/5.jpg create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-grid.css create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-grid.css.map create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-grid.min.css create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-grid.min.css.map create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-reboot.css create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-reboot.css.map create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-reboot.min.css create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-reboot.min.css.map create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap.css create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap.css.map create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap.min.css create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap.min.css.map create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/js/bootstrap.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/js/bootstrap.min.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/js/tether.min.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/.bower.json create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/bower.json create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/js/excanvas.min.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/js/jquery.flot.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/js/jquery.flot.tooltip.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/js/jquery.flot.tooltip.min.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/js/jquery.flot.tooltip.source.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/.bower.json create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/.gitignore create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/.travis.yml create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/API.md create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/CONTRIBUTING.md create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/FAQ.md create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/Makefile create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/NEWS.md create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/PLUGINS.md create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/README.md create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/component.json create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-1.json create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-2.json create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-3.json create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-4.json create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-5.json create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth.json create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-japan-gdp-growth.json create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-usa-gdp-growth.json create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/annotating/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-interacting/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-multiple/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/date.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/africa create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/antarctica create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/asia create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/australasia create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/backward create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/etcetera create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/europe create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/factory create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/iso3166.tab create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/leapseconds create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/northamerica create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/pacificnew create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/solar87 create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/solar88 create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/solar89 create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/southamerica create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/systemv create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/yearistype.sh create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/zone.tab create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/background.png create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/basic-options/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/basic-usage/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/canvas/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/categories/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/examples.css create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/image/hs-2004-27-a-large-web.jpg create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/image/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/interacting/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/navigate/arrow-down.gif create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/navigate/arrow-left.gif create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/navigate/arrow-right.gif create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/navigate/arrow-up.gif create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/navigate/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/percentiles/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/realtime/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/resize/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/selection/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/series-errorbars/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/series-pie/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/series-toggle/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/series-types/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/shared/jquery-ui/jquery-ui.min.css create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/stacking/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/symbols/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/threshold/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/tracking/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/visitors/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/zooming/index.html create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/excanvas.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/excanvas.min.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/flot.jquery.json create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.colorhelpers.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.canvas.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.categories.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.crosshair.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.errorbars.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.fillbetween.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.image.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.navigate.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.pie.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.resize.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.selection.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.stack.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.symbol.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.threshold.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.time.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/flot/package.json create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/gmaps.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/gmaps.min.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/gmaps.min.js.map create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/jquery.gmaps.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.controls.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.core.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.events.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.geofences.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.geometry.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.layers.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.map_types.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.markers.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.native_extensions.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.overlays.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.routes.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.static.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.streetview.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.styles.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.utils.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/jquery/jquery.min.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/sticky-kit-master/dist/sticky-kit.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/sticky-kit-master/dist/sticky-kit.min.js create mode 100644 SpringBootHomework/src/main/resources/static/assets/plugins/styleswitcher/jQuery.style.switcher.js create mode 100644 SpringBootHomework/src/main/resources/static/css/animate.css create mode 100644 SpringBootHomework/src/main/resources/static/css/auth.css create mode 100644 SpringBootHomework/src/main/resources/static/css/colors/blue-dark.css create mode 100644 SpringBootHomework/src/main/resources/static/css/colors/blue.css create mode 100644 SpringBootHomework/src/main/resources/static/css/colors/default-dark.css create mode 100644 SpringBootHomework/src/main/resources/static/css/colors/default.css create mode 100644 SpringBootHomework/src/main/resources/static/css/colors/green-dark.css create mode 100644 SpringBootHomework/src/main/resources/static/css/colors/green.css create mode 100644 SpringBootHomework/src/main/resources/static/css/colors/megna-dark.css create mode 100644 SpringBootHomework/src/main/resources/static/css/colors/megna.css create mode 100644 SpringBootHomework/src/main/resources/static/css/colors/purple-dark.css create mode 100644 SpringBootHomework/src/main/resources/static/css/colors/purple.css create mode 100644 SpringBootHomework/src/main/resources/static/css/colors/red-dark.css create mode 100644 SpringBootHomework/src/main/resources/static/css/colors/red.css create mode 100644 SpringBootHomework/src/main/resources/static/css/css/animate.css create mode 100644 SpringBootHomework/src/main/resources/static/css/css/auth.css create mode 100644 SpringBootHomework/src/main/resources/static/css/css/colors/blue-dark.css create mode 100644 SpringBootHomework/src/main/resources/static/css/css/colors/blue.css create mode 100644 SpringBootHomework/src/main/resources/static/css/css/colors/default-dark.css create mode 100644 SpringBootHomework/src/main/resources/static/css/css/colors/default.css create mode 100644 SpringBootHomework/src/main/resources/static/css/css/colors/green-dark.css create mode 100644 SpringBootHomework/src/main/resources/static/css/css/colors/green.css create mode 100644 SpringBootHomework/src/main/resources/static/css/css/colors/megna-dark.css create mode 100644 SpringBootHomework/src/main/resources/static/css/css/colors/megna.css create mode 100644 SpringBootHomework/src/main/resources/static/css/css/colors/purple-dark.css create mode 100644 SpringBootHomework/src/main/resources/static/css/css/colors/purple.css create mode 100644 SpringBootHomework/src/main/resources/static/css/css/colors/red-dark.css create mode 100644 SpringBootHomework/src/main/resources/static/css/css/colors/red.css create mode 100644 SpringBootHomework/src/main/resources/static/css/css/icons/simple-line-icons/css/simple-line-icons.css create mode 100644 SpringBootHomework/src/main/resources/static/css/css/icons/themify-icons/themify-icons.css create mode 100644 SpringBootHomework/src/main/resources/static/css/css/spinners.css create mode 100644 SpringBootHomework/src/main/resources/static/css/css/style.css create mode 100644 SpringBootHomework/src/main/resources/static/css/icons/simple-line-icons/css/simple-line-icons.css create mode 100644 SpringBootHomework/src/main/resources/static/css/icons/themify-icons/themify-icons.css create mode 100644 SpringBootHomework/src/main/resources/static/css/spinners.css create mode 100644 SpringBootHomework/src/main/resources/static/css/style.css create mode 100644 SpringBootHomework/src/main/resources/static/index.html create mode 100644 SpringBootHomework/src/main/resources/static/index2.html create mode 100644 SpringBootHomework/src/main/resources/static/index3.html create mode 100644 SpringBootHomework/src/main/resources/static/index4.html create mode 100644 SpringBootHomework/src/main/resources/static/index5.html create mode 100644 SpringBootHomework/src/main/resources/static/js/auth.js create mode 100644 SpringBootHomework/src/main/resources/static/js/custom.js create mode 100644 SpringBootHomework/src/main/resources/static/js/custom.min.js create mode 100644 SpringBootHomework/src/main/resources/static/js/flot-data.js create mode 100644 SpringBootHomework/src/main/resources/static/js/index1.js create mode 100644 SpringBootHomework/src/main/resources/static/js/index2.js create mode 100644 SpringBootHomework/src/main/resources/static/js/index3.js create mode 100644 SpringBootHomework/src/main/resources/static/js/index4.js create mode 100644 SpringBootHomework/src/main/resources/static/js/index5.js create mode 100644 SpringBootHomework/src/main/resources/static/js/jquery.slimscroll.js create mode 100644 SpringBootHomework/src/main/resources/static/js/login.js create mode 100644 SpringBootHomework/src/main/resources/static/js/register.js create mode 100644 SpringBootHomework/src/main/resources/static/js/sidebarmenu.js create mode 100644 SpringBootHomework/src/main/resources/static/js/table.js create mode 100644 SpringBootHomework/src/main/resources/static/js/waves.js create mode 100644 SpringBootHomework/src/main/resources/static/login.html create mode 100644 SpringBootHomework/src/main/resources/static/register.html create mode 100644 SpringBootHomework/target/SpringBootHomework-0.0.1-SNAPSHOT.jar create mode 100644 SpringBootHomework/target/classes/META-INF/maven/zz/SpringBootHomework/pom.properties create mode 100644 SpringBootHomework/target/classes/META-INF/maven/zz/SpringBootHomework/pom.xml create mode 100644 SpringBootHomework/target/classes/application.properties create mode 100644 SpringBootHomework/target/classes/com/cy/SpringBootHomeworkApplication.class create mode 100644 SpringBootHomework/target/classes/com/cy/controller/HomeworkController.class create mode 100644 SpringBootHomework/target/classes/com/cy/controller/UserController.class create mode 100644 SpringBootHomework/target/classes/com/cy/entity/Homework.class create mode 100644 SpringBootHomework/target/classes/com/cy/entity/HomeworkRankDTO.class create mode 100644 SpringBootHomework/target/classes/com/cy/entity/HomeworkUserDTO.class create mode 100644 SpringBootHomework/target/classes/com/cy/entity/User.class create mode 100644 SpringBootHomework/target/classes/com/cy/repository/DTODao.class create mode 100644 SpringBootHomework/target/classes/com/cy/repository/HomeworkRepository.class create mode 100644 SpringBootHomework/target/classes/com/cy/repository/UserRepository.class create mode 100644 SpringBootHomework/target/classes/com/cy/service/HomeworkService.class create mode 100644 SpringBootHomework/target/classes/com/cy/service/UserService.class create mode 100644 SpringBootHomework/target/classes/com/cy/utils/KeyUtils.class create mode 100644 SpringBootHomework/target/classes/static/assets/images/background/error-bg.jpg create mode 100644 SpringBootHomework/target/classes/static/assets/images/big/img1.jpg create mode 100644 SpringBootHomework/target/classes/static/assets/images/big/img2.jpg create mode 100644 SpringBootHomework/target/classes/static/assets/images/big/img4.jpg create mode 100644 SpringBootHomework/target/classes/static/assets/images/custom-select.png create mode 100644 SpringBootHomework/target/classes/static/assets/images/favicon.png create mode 100644 SpringBootHomework/target/classes/static/assets/images/logo-icon.png create mode 100644 SpringBootHomework/target/classes/static/assets/images/logo-text.png create mode 100644 SpringBootHomework/target/classes/static/assets/images/users/1.jpg create mode 100644 SpringBootHomework/target/classes/static/assets/images/users/2.jpg create mode 100644 SpringBootHomework/target/classes/static/assets/images/users/5.jpg create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-grid.css create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-grid.css.map create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-grid.min.css create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-grid.min.css.map create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-reboot.css create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-reboot.css.map create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-reboot.min.css create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-reboot.min.css.map create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap.css create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap.css.map create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap.min.css create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap.min.css.map create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/bootstrap/js/bootstrap.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/bootstrap/js/bootstrap.min.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/bootstrap/js/tether.min.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/.bower.json create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/bower.json create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/js/excanvas.min.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/js/jquery.flot.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/js/jquery.flot.tooltip.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/js/jquery.flot.tooltip.min.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/js/jquery.flot.tooltip.source.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/.bower.json create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/.travis.yml create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/API.md create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/CONTRIBUTING.md create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/FAQ.md create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/Makefile create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/NEWS.md create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/PLUGINS.md create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/README.md create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/component.json create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-1.json create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-2.json create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-3.json create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-4.json create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-5.json create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth.json create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-japan-gdp-growth.json create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-usa-gdp-growth.json create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/annotating/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-interacting/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-multiple/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/date.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/africa create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/antarctica create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/asia create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/australasia create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/backward create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/etcetera create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/europe create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/factory create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/iso3166.tab create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/leapseconds create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/northamerica create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/pacificnew create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/solar87 create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/solar88 create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/solar89 create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/southamerica create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/systemv create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/yearistype.sh create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/zone.tab create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/background.png create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/basic-options/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/basic-usage/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/canvas/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/categories/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/examples.css create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/image/hs-2004-27-a-large-web.jpg create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/image/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/interacting/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/navigate/arrow-down.gif create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/navigate/arrow-left.gif create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/navigate/arrow-right.gif create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/navigate/arrow-up.gif create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/navigate/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/percentiles/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/realtime/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/resize/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/selection/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/series-errorbars/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/series-pie/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/series-toggle/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/series-types/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/shared/jquery-ui/jquery-ui.min.css create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/stacking/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/symbols/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/threshold/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/tracking/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/visitors/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/examples/zooming/index.html create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/excanvas.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/excanvas.min.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/flot.jquery.json create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.colorhelpers.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.canvas.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.categories.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.crosshair.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.errorbars.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.fillbetween.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.image.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.navigate.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.pie.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.resize.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.selection.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.stack.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.symbol.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.threshold.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.time.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/flot/package.json create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/gmaps/gmaps.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/gmaps/gmaps.min.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/gmaps/gmaps.min.js.map create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/gmaps/jquery.gmaps.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.controls.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.core.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.events.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.geofences.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.geometry.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.layers.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.map_types.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.markers.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.native_extensions.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.overlays.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.routes.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.static.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.streetview.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.styles.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.utils.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/jquery/jquery.min.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/sticky-kit-master/dist/sticky-kit.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/sticky-kit-master/dist/sticky-kit.min.js create mode 100644 SpringBootHomework/target/classes/static/assets/plugins/styleswitcher/jQuery.style.switcher.js create mode 100644 SpringBootHomework/target/classes/static/css/animate.css create mode 100644 SpringBootHomework/target/classes/static/css/auth.css create mode 100644 SpringBootHomework/target/classes/static/css/colors/blue-dark.css create mode 100644 SpringBootHomework/target/classes/static/css/colors/blue.css create mode 100644 SpringBootHomework/target/classes/static/css/colors/default-dark.css create mode 100644 SpringBootHomework/target/classes/static/css/colors/default.css create mode 100644 SpringBootHomework/target/classes/static/css/colors/green-dark.css create mode 100644 SpringBootHomework/target/classes/static/css/colors/green.css create mode 100644 SpringBootHomework/target/classes/static/css/colors/megna-dark.css create mode 100644 SpringBootHomework/target/classes/static/css/colors/megna.css create mode 100644 SpringBootHomework/target/classes/static/css/colors/purple-dark.css create mode 100644 SpringBootHomework/target/classes/static/css/colors/purple.css create mode 100644 SpringBootHomework/target/classes/static/css/colors/red-dark.css create mode 100644 SpringBootHomework/target/classes/static/css/colors/red.css create mode 100644 SpringBootHomework/target/classes/static/css/css/animate.css create mode 100644 SpringBootHomework/target/classes/static/css/css/auth.css create mode 100644 SpringBootHomework/target/classes/static/css/css/colors/blue-dark.css create mode 100644 SpringBootHomework/target/classes/static/css/css/colors/blue.css create mode 100644 SpringBootHomework/target/classes/static/css/css/colors/default-dark.css create mode 100644 SpringBootHomework/target/classes/static/css/css/colors/default.css create mode 100644 SpringBootHomework/target/classes/static/css/css/colors/green-dark.css create mode 100644 SpringBootHomework/target/classes/static/css/css/colors/green.css create mode 100644 SpringBootHomework/target/classes/static/css/css/colors/megna-dark.css create mode 100644 SpringBootHomework/target/classes/static/css/css/colors/megna.css create mode 100644 SpringBootHomework/target/classes/static/css/css/colors/purple-dark.css create mode 100644 SpringBootHomework/target/classes/static/css/css/colors/purple.css create mode 100644 SpringBootHomework/target/classes/static/css/css/colors/red-dark.css create mode 100644 SpringBootHomework/target/classes/static/css/css/colors/red.css create mode 100644 SpringBootHomework/target/classes/static/css/css/icons/simple-line-icons/css/simple-line-icons.css create mode 100644 SpringBootHomework/target/classes/static/css/css/icons/themify-icons/themify-icons.css create mode 100644 SpringBootHomework/target/classes/static/css/css/spinners.css create mode 100644 SpringBootHomework/target/classes/static/css/css/style.css create mode 100644 SpringBootHomework/target/classes/static/css/icons/simple-line-icons/css/simple-line-icons.css create mode 100644 SpringBootHomework/target/classes/static/css/icons/themify-icons/themify-icons.css create mode 100644 SpringBootHomework/target/classes/static/css/spinners.css create mode 100644 SpringBootHomework/target/classes/static/css/style.css create mode 100644 SpringBootHomework/target/classes/static/index.html create mode 100644 SpringBootHomework/target/classes/static/index2.html create mode 100644 SpringBootHomework/target/classes/static/index3.html create mode 100644 SpringBootHomework/target/classes/static/index4.html create mode 100644 SpringBootHomework/target/classes/static/index5.html create mode 100644 SpringBootHomework/target/classes/static/js/auth.js create mode 100644 SpringBootHomework/target/classes/static/js/custom.js create mode 100644 SpringBootHomework/target/classes/static/js/custom.min.js create mode 100644 SpringBootHomework/target/classes/static/js/flot-data.js create mode 100644 SpringBootHomework/target/classes/static/js/index1.js create mode 100644 SpringBootHomework/target/classes/static/js/index2.js create mode 100644 SpringBootHomework/target/classes/static/js/index3.js create mode 100644 SpringBootHomework/target/classes/static/js/index4.js create mode 100644 SpringBootHomework/target/classes/static/js/index5.js create mode 100644 SpringBootHomework/target/classes/static/js/jquery.slimscroll.js create mode 100644 SpringBootHomework/target/classes/static/js/login.js create mode 100644 SpringBootHomework/target/classes/static/js/register.js create mode 100644 SpringBootHomework/target/classes/static/js/sidebarmenu.js create mode 100644 SpringBootHomework/target/classes/static/js/table.js create mode 100644 SpringBootHomework/target/classes/static/js/waves.js create mode 100644 SpringBootHomework/target/classes/static/login.html create mode 100644 SpringBootHomework/target/classes/static/register.html create mode 100644 SpringBootHomework/target/maven-archiver/pom.properties create mode 100644 SpringBootHomework/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 SpringBootHomework/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 SpringBootHomework/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst diff --git a/SpringBootHomework/.classpath b/SpringBootHomework/.classpath new file mode 100644 index 0000000..16c89cc --- /dev/null +++ b/SpringBootHomework/.classpath @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SpringBootHomework/.project b/SpringBootHomework/.project new file mode 100644 index 0000000..2d3edf7 --- /dev/null +++ b/SpringBootHomework/.project @@ -0,0 +1,23 @@ + + + SpringBootHomework + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/SpringBootHomework/.settings/org.eclipse.core.resources.prefs b/SpringBootHomework/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..04cfa2c --- /dev/null +++ b/SpringBootHomework/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,6 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/main/resources=UTF-8 +encoding//src/test/java=UTF-8 +encoding//src/test/resources=UTF-8 +encoding/=UTF-8 diff --git a/SpringBootHomework/.settings/org.eclipse.jdt.core.prefs b/SpringBootHomework/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..d59e09c --- /dev/null +++ b/SpringBootHomework/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/SpringBootHomework/.settings/org.eclipse.m2e.core.prefs b/SpringBootHomework/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..14b697b --- /dev/null +++ b/SpringBootHomework/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/SpringBootHomework/pom.xml b/SpringBootHomework/pom.xml new file mode 100644 index 0000000..184896b --- /dev/null +++ b/SpringBootHomework/pom.xml @@ -0,0 +1,73 @@ + + 4.0.0 + + zz + SpringBoot2 + 0.0.1-SNAPSHOT + + SpringBootHomework + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-devtools + true + true + + + junit + junit + 4.11 + test + + + + junit + junit + 4.11 + test + + + mysql + mysql-connector-java + 8.0.15 + + + org.springframework.boot + spring-boot-starter-data-jpa + + + com.auth0 + java-jwt + 3.3.0 + + + commons-fileupload + commons-fileupload + 1.3 + + + org.springframework.boot + spring-boot-starter-test + + + + + + alimaven + aliyun maven + http://maven.aliyun.com/nexus/content/groups/public/ + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + \ No newline at end of file diff --git a/SpringBootHomework/src/main/java/com/cy/SpringBootHomeworkApplication.java b/SpringBootHomework/src/main/java/com/cy/SpringBootHomeworkApplication.java new file mode 100644 index 0000000..bde2930 --- /dev/null +++ b/SpringBootHomework/src/main/java/com/cy/SpringBootHomeworkApplication.java @@ -0,0 +1,12 @@ +package com.cy; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SpringBootHomeworkApplication { + public static void main(String[] args) { + SpringApplication.run(SpringBootHomeworkApplication.class, args); + } + +} diff --git a/SpringBootHomework/src/main/java/com/cy/controller/HomeworkController.java b/SpringBootHomework/src/main/java/com/cy/controller/HomeworkController.java new file mode 100644 index 0000000..b155010 --- /dev/null +++ b/SpringBootHomework/src/main/java/com/cy/controller/HomeworkController.java @@ -0,0 +1,167 @@ +package com.cy.controller; + +import com.cy.entity.Homework; +import com.cy.entity.HomeworkRankDTO; +import com.cy.entity.HomeworkUserDTO; +import com.cy.repository.DTODao; +import com.cy.service.HomeworkService; +import com.cy.utils.KeyUtils; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.disk.DiskFileItemFactory; +import org.apache.commons.fileupload.servlet.ServletFileUpload; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; +import java.io.*; +import java.sql.Array; +import java.sql.Date; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; + + +@RestController +@RequestMapping("homework") +public class HomeworkController { + @Resource + HomeworkService hs; + + @Resource + DTODao dd; + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + + @RequestMapping("showByType/{type}") + public List showByType(@PathVariable("type") String type) { + + java.util.Date d1 = new java.util.Date(); + if (d1.getHours() <= 11 && "竞赛".equals(type)) { + Date datesql = new Date(d1.getTime()); + return hs.findByTypeAndFinishTime(type, datesql); + } else if (d1.getHours() >= 12 && "结对".equals(type)) { + Date datesql2 = new Date(d1.getTime()); + return hs.findByTypeAndFinishTime(type, datesql2); + } else { + return null; + } + } + + @RequestMapping("showByTypeAndFinishTime") + public List showByTypeAndFinishTime(HttpServletRequest request) { + String type = request.getParameter("type"); + java.util.Date d1 = null; + try { + d1 = sdf.parse(request.getParameter("finishTime")); + + } catch (ParseException e) { + e.printStackTrace(); + } + Date d2 = new Date(d1.getTime()); + return hs.findByTypeAndFinishTime(type, d2); + } + + @RequestMapping("showByTypeAndFinishTime/{page}") + public Iterable showByTypeAndFinishTime(@PathVariable("page") String page,HttpServletRequest request) { + Pageable pageable = new PageRequest(Integer.parseInt(page),10); + String type = request.getParameter("type"); + java.util.Date d1 = null; + try { + d1 = sdf.parse(request.getParameter("finishTime")); + + } catch (ParseException e) { + e.printStackTrace(); + } + Date d2 = new Date(d1.getTime()); + return hs.findByTypeAndFinishTime(type, d2,pageable); + } + + @RequestMapping("save") + public Homework save(@RequestBody Homework homework) { + homework.setId(KeyUtils.genUniqueKey()); + homework.setUpdateTime(new Date(new java.util.Date().getTime())); + return hs.save(homework); + } + + @RequestMapping("findAllById/{id}") + public List findAllById(@PathVariable("id") String id) { + return hs.findAllById(id); + + } + + @RequestMapping("update") + public Homework update(@RequestBody Homework homework) { + return hs.update(homework); + } + + @RequestMapping("deleteById/{id}") + public Map deleteById(@PathVariable("id") String id) { + Map map = new HashMap(); + hs.deleteById(id); + if (hs.findAllById(id).size() == 0) { + map.put("rs", "success"); + } else { + map.put("rs", "fail"); + } + return map; + } + + @RequestMapping("showdetails/{id}") + public ArrayList showdetails(@PathVariable("id") String hid) { + return hs.gethomeworkdetail(hs.findAllById(hid).get(0)); + } + + + @RequestMapping(value = "/upload", method = RequestMethod.POST) + @ResponseBody + public Map upload(@RequestParam MultipartFile myFile, HttpSession session) throws IOException { + String originalFilename = myFile.getOriginalFilename(); + int pos = originalFilename.lastIndexOf("."); + String suffix = originalFilename.substring(pos); + String realPath = "D:/tmp"; + String uuid = UUID.randomUUID().toString(); + String fullPath = realPath + File.separator + uuid + suffix; + String homeworkid=File.separator + uuid + suffix; + InputStream in = null; + try { + in = myFile.getInputStream(); + OutputStream out = new FileOutputStream(new File(fullPath)); + int len = 0; + byte[] buf = new byte[3 * 1024]; + while ((len = in.read(buf)) != -1) { + out.write(buf, 0, len); + } + out.close(); + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + Map map= new HashMap(); + map.put("result",homeworkid); + return map; + } + + + @RequestMapping("saveDetails/{uid}/{hid}/{result}") + public Map saveDetails(@PathVariable("uid") String uid, @PathVariable("hid") String hid,@PathVariable("result") String homeworkid) { + Map map = new HashMap(); + int rs = hs.savedetails(uid, hid,homeworkid); + if (rs > 0) { + map.put("rs", "success"); + } else if (rs == -1) { + map.put("rs", "outtime"); + } else { + map.put("rs", "fail"); + } + return map; + } + + @RequestMapping("rank/{type}") + public ArrayList rank(@PathVariable("type") String type) { + return hs.getRank(type); + } +} diff --git a/SpringBootHomework/src/main/java/com/cy/controller/UserController.java b/SpringBootHomework/src/main/java/com/cy/controller/UserController.java new file mode 100644 index 0000000..187a42d --- /dev/null +++ b/SpringBootHomework/src/main/java/com/cy/controller/UserController.java @@ -0,0 +1,92 @@ +package com.cy.controller; + +import com.cy.entity.User; +import com.cy.service.UserService; +import com.cy.utils.KeyUtils; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +@RestController + +public class UserController { + //使用SpringIOC控制反转,让spring容器创建对象 + //userservice上添加@Service注解 + @Resource + UserService us; + + @RequestMapping("register") + public Object save(@RequestBody User user) { + user.setId(KeyUtils.genUniqueKey()); + if (us.save(user) != null) { + return "success"; + } else { + return "fail"; + } + } + + @RequestMapping("checkName") + @ResponseBody + public Map checkName(HttpServletRequest request) { + String username = request.getParameter("username"); + List user = us.findByName(username); + boolean result = false; + if (user.size() > 0) { + result = true; + } + Map map = new HashMap(); + map.put("result", result); + return map; + } + + @RequestMapping("login") + public User login(@RequestBody User user) { + String loginName = user.getUsername(); + String password = user.getPassword(); + String type = user.getType(); + User user1 = us.findByNameAndPassword(loginName, password,type); + if (user1 != null) { + return user1; + } else { + return null; + } + } + + @RequestMapping("showId") + public Map showId(HttpServletRequest request) { + Map map = new HashMap(); + HttpSession session = request.getSession(); + String name = (String)session.getAttribute("username"); + String id = (String)session.getAttribute("id"); + String type = (String)session.getAttribute("type"); + map.put("username",name); + map.put("id",id); + map.put("type",type); + return map; + } + + @RequestMapping("setId") + public Map setId(HttpServletRequest request){ + Map map = new HashMap(); + map.put("rs","y"); + String name = request.getParameter("username"); + String id = request.getParameter("id"); + String type = request.getParameter("type"); + HttpSession session = request.getSession(); + session.setAttribute("username",name); + session.setAttribute("id",id); + session.setAttribute("type",type); + return map; + } + + +} diff --git a/SpringBootHomework/src/main/java/com/cy/entity/Homework.java b/SpringBootHomework/src/main/java/com/cy/entity/Homework.java new file mode 100644 index 0000000..ba7207a --- /dev/null +++ b/SpringBootHomework/src/main/java/com/cy/entity/Homework.java @@ -0,0 +1,64 @@ +package com.cy.entity; + +import javax.persistence.Entity; +import javax.persistence.Id; +import java.sql.Date; +@Entity +public class Homework { + @Id + private String id; + private String title; + private String type; + private Date updateTime; + private Date finishTime; + private String details; + + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public Date getFinishTime() { + return finishTime; + } + + public void setFinishTime(Date finishTime) { + this.finishTime = finishTime; + } + + public String getDetails() { + return details; + } + + public void setDetails(String details) { + this.details = details; + } +} diff --git a/SpringBootHomework/src/main/java/com/cy/entity/HomeworkRankDTO.java b/SpringBootHomework/src/main/java/com/cy/entity/HomeworkRankDTO.java new file mode 100644 index 0000000..4be98b0 --- /dev/null +++ b/SpringBootHomework/src/main/java/com/cy/entity/HomeworkRankDTO.java @@ -0,0 +1,31 @@ +package com.cy.entity; + +public class HomeworkRankDTO { + private String username; + private String ac; + private String type; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getAc() { + return ac; + } + + public void setAc(String ac) { + this.ac = ac; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } +} diff --git a/SpringBootHomework/src/main/java/com/cy/entity/HomeworkUserDTO.java b/SpringBootHomework/src/main/java/com/cy/entity/HomeworkUserDTO.java new file mode 100644 index 0000000..7793c7f --- /dev/null +++ b/SpringBootHomework/src/main/java/com/cy/entity/HomeworkUserDTO.java @@ -0,0 +1,55 @@ +package com.cy.entity; + +import java.sql.Date; + +public class HomeworkUserDTO { + private String id; + private String username; + private String hid; + + private Date completeTime; + private String status; + + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getHid() { + return hid; + } + + public void setHid(String hid) { + this.hid = hid; + } + + + + public Date getCompleteTime() { + return completeTime; + } + + public void setCompleteTime(Date completeTime) { + this.completeTime = completeTime; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } +} diff --git a/SpringBootHomework/src/main/java/com/cy/entity/User.java b/SpringBootHomework/src/main/java/com/cy/entity/User.java new file mode 100644 index 0000000..014b3a1 --- /dev/null +++ b/SpringBootHomework/src/main/java/com/cy/entity/User.java @@ -0,0 +1,57 @@ +package com.cy.entity; + +import javax.persistence.Entity; +import javax.persistence.Id; + +@Entity +public class User { + @Id + private String id; + private String username; + private String password; + private String type; + + public User(String id, String username, String password, String type) { + this.id = id; + this.username = username; + this.password = password; + this.type = type; + } + + + public User() { + + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } +} diff --git a/SpringBootHomework/src/main/java/com/cy/repository/DTODao.java b/SpringBootHomework/src/main/java/com/cy/repository/DTODao.java new file mode 100644 index 0000000..9e7a2c6 --- /dev/null +++ b/SpringBootHomework/src/main/java/com/cy/repository/DTODao.java @@ -0,0 +1,61 @@ +package com.cy.repository; + +import com.cy.entity.Homework; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.sql.Types; +import java.util.Date; +import java.util.List; +import java.util.Map; + +@Repository +public class DTODao { + @Resource + private JdbcTemplate jdbcTemplate; + + public List> queryHomeworkUserDTOListMap(Homework homework) { + String sql = "SELECT u.id,u.username,uh.h_id,uh.complete_time from `user` u LEFT JOIN user_homework uh on (u.id=uh.u_id and uh.h_id= ? )where u.type='student'"; + Object[] args = {homework.getId()}; + int[] argTypes = {Types.VARCHAR}; + + return this.jdbcTemplate.queryForList(sql, args, argTypes); + } + + + public int queryuploadDTOListMap(String uid, String hid, String homeworkid,Date date) { + String sql = "insert into user_homework(h_id,u_id,complete_time,homeworkid,status) values(?,?,?,?,?)"; + Object[] args = {hid, uid, date, homeworkid,"完成"}; + int[] argTypes = {Types.VARCHAR, Types.VARCHAR, Types.DATE, Types.VARCHAR}; + + return this.jdbcTemplate.update(sql, args); + } + + public int queryuploadDTOListMap2(String uid, String hid,String homeworkid, Date date) { + String sql = "update user_homework set complete_time =? , homeworkid=? where u_id=? AND h_id=?"; + Object[] args = {date,homeworkid, uid,hid}; + int[] argTypes = {Types.VARCHAR, Types.VARCHAR, Types.DATE, Types.VARCHAR}; + + return this.jdbcTemplate.update(sql, args); + } + + public List> queryRankDTOListMap(String type) { + if ("全部".equals(type)) { + String sql = "SELECT `user`.`username`,COUNT(user_homework.`status`) ac, `user`.type FROM `user` LEFT JOIN user_homework ON `user`.id=user_homework.u_id GROUP BY `user`.id HAVING `user`.type='student' ORDER BY COUNT(user_homework.`status`) DESC"; + return this.jdbcTemplate.queryForList(sql); + } else { + String sql2 = "SELECT `user`.`username`,count(t.h_id) ac ,`user`.type FROM `user` LEFT JOIN (SELECT `user`.id,`user`.`username`,user_homework.h_id FROM `user` LEFT JOIN user_homework on `user`.id = user_homework.u_id LEFT JOIN homework on user_homework.h_id=homework.id where homework.type=?) t on t.id = `user`.id GROUP BY `user`.id HAVING `user`.type='student' ORDER BY COUNT(t.h_id) desc;"; + Object[] args = {type}; + int[] argTypes = {Types.VARCHAR}; + return this.jdbcTemplate.queryForList(sql2, args, argTypes); + } + } + + public List> queryfindexist(String uid, String hid) { + String sql = ("select * from user_homework where h_id=? AND u_id=?"); + Object[] args = {hid, uid}; + int[] argTypes = {Types.VARCHAR, Types.VARCHAR}; + return this.jdbcTemplate.queryForList(sql, args,argTypes); + } +} diff --git a/SpringBootHomework/src/main/java/com/cy/repository/HomeworkRepository.java b/SpringBootHomework/src/main/java/com/cy/repository/HomeworkRepository.java new file mode 100644 index 0000000..04445b6 --- /dev/null +++ b/SpringBootHomework/src/main/java/com/cy/repository/HomeworkRepository.java @@ -0,0 +1,15 @@ +package com.cy.repository; + +import com.cy.entity.Homework; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.sql.Date; +import java.util.List; + +public interface HomeworkRepository extends JpaRepository { + List findByTypeAndFinishTime(String type, Date date); + List findAllById(String id); + Page findByTypeAndFinishTime(String type, Date date, Pageable pageable); +} diff --git a/SpringBootHomework/src/main/java/com/cy/repository/UserRepository.java b/SpringBootHomework/src/main/java/com/cy/repository/UserRepository.java new file mode 100644 index 0000000..a4edd86 --- /dev/null +++ b/SpringBootHomework/src/main/java/com/cy/repository/UserRepository.java @@ -0,0 +1,13 @@ +package com.cy.repository; + +import com.cy.entity.User; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.repository.CrudRepository; + +import java.util.List; + +public interface UserRepository extends JpaRepository { + List findByUsername(String username); + + User findByUsernameAndPasswordAndType(String username, String password,String type); +} diff --git a/SpringBootHomework/src/main/java/com/cy/service/HomeworkService.java b/SpringBootHomework/src/main/java/com/cy/service/HomeworkService.java new file mode 100644 index 0000000..46f315f --- /dev/null +++ b/SpringBootHomework/src/main/java/com/cy/service/HomeworkService.java @@ -0,0 +1,122 @@ +package com.cy.service; + +import com.cy.entity.Homework; +import com.cy.entity.HomeworkRankDTO; +import com.cy.entity.HomeworkUserDTO; +import com.cy.repository.DTODao; +import com.cy.repository.HomeworkRepository; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.sql.Date; + +import java.sql.Time; +import java.sql.Timestamp; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Service +public class HomeworkService { + @Resource + HomeworkRepository hr; + @Resource + DTODao dd; + + public List findByTypeAndFinishTime(String type, Date date) { + return hr.findByTypeAndFinishTime(type, date); + } + public Iterable findByTypeAndFinishTime(String type, Date date, Pageable pageable){ + return hr.findByTypeAndFinishTime(type,date,pageable); + } + + public Homework save(Homework homework) { + return hr.save(homework); + } + + public List findAllById(String id) { + return hr.findAllById(id); + } + + public Homework update(Homework homework) { + return hr.save(homework); + } + + public void deleteById(String id) { + hr.deleteById(id); + } + + + public ArrayList gethomeworkdetail(Homework homework) { + ArrayList ah = new ArrayList<>(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd"); + List> listmap = dd.queryHomeworkUserDTOListMap(homework); + for (int i = 0; i < listmap.size(); i++) { + HomeworkUserDTO hud = new HomeworkUserDTO(); + String id = (String) listmap.get(i).get("id"); + String username = (String) listmap.get(i).get("username"); + String hid = (String) listmap.get(i).get("hid"); + try { + if (listmap.get(i).get("complete_time") != null) { + Date completeTime = new Date(sdf.parse(listmap.get(i).get("complete_time").toString()).getTime()); + hud.setCompleteTime(completeTime); + } else { + Date completeTime = null; + hud.setCompleteTime(completeTime); + } + + } catch (ParseException e) { + e.printStackTrace(); + } + hud.setId(id); + hud.setUsername(username); + hud.setHid(hid); + if (hud.getCompleteTime() == null) { + hud.setStatus("未完成"); + } else { + hud.setStatus("完成"); + } + ah.add(hud); + + } + return ah; + } + + + public ArrayList getRank(String type1) { + ArrayList hr = new ArrayList<>(); + List> listmap = dd.queryRankDTOListMap(type1); + for (int i = 0; i < listmap.size(); i++) { + HomeworkRankDTO hrd = new HomeworkRankDTO(); + String username = (String) listmap.get(i).get("username"); + String ac = listmap.get(i).get("ac").toString(); + String type = (String) listmap.get(i).get("type"); + hrd.setUsername(username); + hrd.setAc(ac); + hrd.setType(type); + hr.add(hrd); + } + return hr; + } + + public int savedetails(String uid, String hid,String homeworkid) { + int rs = 0; + List list = hr.findAllById(hid); + if (new Date(System.currentTimeMillis()).getTime() > list.get(0).getFinishTime().getTime()) { + rs = -1; + } else { + if (dd.queryfindexist(uid, hid).size() > 0) { + dd.queryuploadDTOListMap2(uid, hid, homeworkid,new Timestamp(new java.util.Date().getTime())); + rs = 1; + } else { + dd.queryuploadDTOListMap(uid, hid, homeworkid,new Timestamp(new java.util.Date().getTime())); + rs = 1; + } + } + return rs; + } +} diff --git a/SpringBootHomework/src/main/java/com/cy/service/UserService.java b/SpringBootHomework/src/main/java/com/cy/service/UserService.java new file mode 100644 index 0000000..3a1ce8e --- /dev/null +++ b/SpringBootHomework/src/main/java/com/cy/service/UserService.java @@ -0,0 +1,31 @@ +package com.cy.service; + + +import com.cy.entity.Homework; +import com.cy.entity.User; +import com.cy.repository.UserRepository; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + + +@Service +public class UserService { + @Resource + UserRepository ur; + + public User save(User user) { + return ur.save(user); + } + + public List findByName(String name){ + return ur.findByUsername(name); + } + + public User findByNameAndPassword(String name,String password,String type){ + return ur.findByUsernameAndPasswordAndType(name,password,type); + } + + +} diff --git a/SpringBootHomework/src/main/java/com/cy/utils/KeyUtils.java b/SpringBootHomework/src/main/java/com/cy/utils/KeyUtils.java new file mode 100644 index 0000000..1c6f526 --- /dev/null +++ b/SpringBootHomework/src/main/java/com/cy/utils/KeyUtils.java @@ -0,0 +1,11 @@ +package com.cy.utils; + +import java.util.Random; + +public class KeyUtils { + public static synchronized String genUniqueKey() { + Random random = new Random(); + Integer number = random.nextInt(900000) + 100000; + return System.currentTimeMillis() + String.valueOf(number); + } +} diff --git a/SpringBootHomework/src/main/resources/application.properties b/SpringBootHomework/src/main/resources/application.properties new file mode 100644 index 0000000..a3bf886 --- /dev/null +++ b/SpringBootHomework/src/main/resources/application.properties @@ -0,0 +1,8 @@ +server.port=9084 +server.servlet.context-path=/SpringBootHomework +spring.datasource.url=jdbc:mysql://118.24.99.140:3306/zzty?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.username=root +spring.datasource.password=Aa_114514 +spring.jpa.database=MYSQL +spring.jpa.hibernate.ddl-auto=update \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/assets/images/background/error-bg.jpg b/SpringBootHomework/src/main/resources/static/assets/images/background/error-bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d295c900fb3e9b83884873a90a8f111ded4df27d GIT binary patch literal 35846 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 G;Qs>^LTyk0 literal 0 HcmV?d00001 diff --git a/SpringBootHomework/src/main/resources/static/assets/images/big/img1.jpg b/SpringBootHomework/src/main/resources/static/assets/images/big/img1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9c4a8c60f17894975660c3ac7658e9c595fb2d56 GIT binary patch literal 64932 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£K5Sw;JN}e5bdkIFYL9t!su}Gnn?(&?JbG7kze& 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𓑤>ljE|4f62=3Hblzk5Gu3?{{Z6wjDdI5 z_E%jn*G;-iJw`tbfs29rO0w+rW&Z$^CQM~6;rv^o-d!%%)@fnY2^jj`vw}Am^e4d@ z=3X}y#MXCNjxr?MOzr|i$HP@JmulWG9Q8Zq!4fK0K5ig~=9n`aVk++35ie)qDp`^OT`sNG6$-F;|U!~xH73wPeP&&707izngWa;q6S0{ z#Zhk;^HdW8f^7+bVz`vREwCCU0O&de10xqyS)_GL2q04cga>pMApy`TEQp{368b13 z9_THiLSO-jKq3da3Sj!GQEAy$P@s_k0RTHH2uH~QZP5h*su>dm1mLJ9o(hOVj*1Ea z1du>61<)`>kY1{YOq3H;5CVcS3UYvCf(KAr$xss9fJ{jU0KmEn*icVR1$t%BSgFua zs2~Ablo#n2L0dIJTSK6ur(^`~5D7n$0F$?h1(PGxAQ2=Aovd4_Kr*nmLV&=Lk4;c! zol&>%@VgAy8CXf&KEh0m0swUmw5LJ zRz8SKNa_b;rpO6GhtS#4T=*s1B7iTGvAV&E__9$X9OCrfW`OJ+-)fXkoe<{`9 zRdQsR!Q4B^)J%lHX#G6AQz?*{MkI*Iz9$N@i?i9!!_oU+I{Pe$1ea30w!WXn`i8ifJFawftBEQGh&N;e zVo*)8XJr9E%fSGdOi!Xw36jlNqZR6+zckkMkgBqOJ_D(j_pNK~V}}R~qHv zq5}|N(E$p>I;K)o_fStvo`C@X0AdhWhzf{nbpgf$qbhfK@ z@t^+yEAdv z2lSvB^pd1W_V_Chv-BUw{SivDrC$%`lnClk3$y4y6aI)WWOe)zrwf|@0L4FnQH{Ui z`Ce!L0L!1na@q0s`E)S41c>@yvOcJO3sik;j{gA1AA;vm(yOA1&^sU?fRsdsL{OfJ z2s~3OyAN^;BF@5k(X_Ain4=1%(B8pq+xM8K5Yr7&|KxiYZ95^q>RLC;`<# wWmO+#5EgY+K`x;{=&Fe>s)~LffD+H$ZDhi*+27Ys{jB1 literal 0 HcmV?d00001 diff --git a/SpringBootHomework/src/main/resources/static/assets/images/big/img2.jpg b/SpringBootHomework/src/main/resources/static/assets/images/big/img2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b282e6d6079d5e1a740f468e3d0e3dacfbedac13 GIT binary patch literal 124425 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

m|NS@?X7cN>jy<@qDoG|?s)sV^#e0EJ%kt= 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%0D$rh8}hlnD;GDpU1OzQz6ST& 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

Y48Z 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 literal 0 HcmV?d00001 diff --git a/SpringBootHomework/src/main/resources/static/assets/images/custom-select.png b/SpringBootHomework/src/main/resources/static/assets/images/custom-select.png new file mode 100644 index 0000000000000000000000000000000000000000..5a5f9f487b381da6f162a7162a205923adee0875 GIT binary patch literal 14991 zcmeI3Ux*t;9LML7`seE5Lo5D4?7CHHt;zmLa=EOVw0B9)J2dTiz0x}@ZTEKPF3Tmm z>+W8YI}nPBS`b8`D59W`iU6>Cf@Wp2Z>4Sp$q_ew8_Loi4IiZgeNb<|f z_xGKh&-`YxFMDC(=#vxU_m3llCg$fVi{$%G^1ki%Tgj*T*~br)uREN%6%V1^dxG~E zdgtAH5h}cAE-m}ZwWk%`Zl*QEUd8El(;;e-cDU_m`Udv7RlIImMgIDiU-O)46#0|6 znpktnxNgpEyZHF_(ItI*LoXQo;nKL;R)|3p`x@77HY`tR7x~avA#uz+9}Lucb>`J{dIMQrhaI6Pv^7VN(xNaTsaCsjTC+Jc)AJW`JhPz# zdP`dl78bE*Z@M}r^8Ldu!Sk!<$do#Wc3@OJhb@1om7({1oK3e8f;MykH*k}rc!Yv9 zbS_Ta_HD0jj{w-~9*NO6*G8}idPb(CFr9|eQHcf*}#K_5baxEpw zlQ@-;vwBJsF;3;OlAO=1l8F~G;UxRh2dpc$z8Mr!$J!v)(^FHDB*tRE;+A>@~loxp;b=?1-J5M3HNM+Gu;du378YC<$G1-G*d} zDg;Z{F#A_7YVBXpZV?U^fNJQ3~@=BX;5Q^i;4&e7%oVI8Z%r}L{PwRK^oMU;i4jf0)`9HpvDXr6%iCLT#yDe zX1J(`pn&0mG^jDdMMVS!3>Tz9jTtT~A}C8Ps4>GuMFa&57oe)G(gS)y&sSEiTRKfmg-v$ba|});k5~$f8xLguUx+Sfh!YVUA*wjwWm(E{&F6w@!$S(YVPyh=E9Nd z`su&F`R>#$hrU1X{;oft_20;Ee6h0fTi Zp)=NrV`uK$_YoNv%~y|BKAAcD!hhb5Hb4LX literal 0 HcmV?d00001 diff --git a/SpringBootHomework/src/main/resources/static/assets/images/favicon.png b/SpringBootHomework/src/main/resources/static/assets/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..7e5c0dc0e1ff6fd151b10f8964ee6e45d3c92de1 GIT binary patch literal 817737 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

ZW(g0Z` zWn1;i2|I>shlCXjigrqXd_?Lpq=}Evm}#CYWKO(Q(1_BFM&TZ&tH~X=4jc~!#70qi z!%HdjH>R$E7^|=qqNTiR4a)=3!Y`y=g_dm)cBDucC6Xu#HJQ$r5IEpTeqRU)ZfKS3hQecRz3#n}B zD~}SXGoex;(8N;4PK`5B51_;l_O*6nkxnY{1Ot5%16n}?P zVRajZCr{qI+2AxF%allt(N= z8VNkEOenUCJ}iusO7Q1kTghJbPOCw}X8wmLL7=2DN9j+5ROolM0L=hI5;PD>3eXr( zZpwB62bEe1UqPzL7I?~%1gg%+sfaPSwi-?So6id@#C!Iee-E9GZaf>i)7z$jL8Mq% zz&ns>;wGziYs1o>=L>)o^xIYjc?j>s>o7>rYB)89<~a?{H9goA!wNefTj~)Bl0gxE z1JU;|(48wDMS*Hd&IjLx0*YK2bB0BccMDq){1n0qA`;9A1W1gp&VY%gZ^O?(%K|S+ z1PeS>g(X5&xQ*H{Fmb@LCsH73-PPa;1^9dhkzPrQF`o`ncPD@td`gBNc2cpz0xS`C zguMc<5EnsmZCxE-?FmD#vVcYdr8e9fzr^2;&p~j@Zj5X%OxcE9%J)UfQUo;#QkVtXYU4~SpIflXVd5xmXaxa-Xr@qk zrtuq@W^Gc1)_vo1v^GXu%gt3Iid9XN3>T!}SExIqqNc?i3?#%8pO9`qPx2V_n@V8| z&smzqkjXv$m3fbNDf%8T5rmA2HHELBo6=+~nYX47P%1FqAbb8VAypdwu>1L43l~rWcU8SWZ4+8o@6& zOVUwT0Hl4?{&eu|K^`K#BbnQ1Vwfyk$Xqdd-M735Q4ugDn&CM2-lNPzV^d)VTJ#xk zO$YHNs!U|oG%qBb1lfNEVNl5!Gle0}7?r~y8sauecP58L=C$CNcECrigf1Y!0Y?;H zT|TdI-scqj7JdR-u1BAo5EKBb%JHijN{2OF`nHt?Li`u&vIMjET9^~Mao$vvc?%10 z2nd0~1jFm1oevt7@R*!MOtcbU$h!5AMAzkvXU->^h04nMm_z{z1Do8rmg-wU`QHM5EDs-%b0CCNL)U>qmxF-p zRz4#F8wD7Ng6TM^&l7YGQA+m;#4`UAZRRYEks8L6VcN7A88K!cpH zP8xw~AbS16;fuS8yzb|Ffc1~b<@%+EM$5TzGTO}aIC+}zt-=B-5=oo99?ka3zfnc@ zHN+e;j)Hq9Hvz^JPHB7?fj8!8n470ogonU96n5ahO+QeHbZKdc_P?HvSXpbapqGzLQVfi@`ZXSKtVt;)1uj0rTD@Q3~Y9Qg#=c7+-gK`a1|DV%|y zZeD`4IgHapJ8AAT$X8JPA6a6glIFoSM}4r z@R)Fl`Bp4TnWrI&hzlB(8AGHrg{#626uCuNDJKZE2Wf`PS-|cpiQCqNC{2oLzLHiF zB{P4uSP8>Wr79Dzsgiy^1D*g+d0{ugfvEupJwm$|_lR2yUx8|gfJ8M!l+7w?tV$}W zzydx{{VnW3Wd@m(QPOl^!9kKzU3n>$E4zF6+T8Ix6 z{Uywi`-^yAIz&aPic}Qa9Z4ZZ;)>C!e04#0raGq|De_}-C#Jpd83BimE1fVJa>CUW zHe;xea^O z5%d>YviNic1u71g?g>QW9H>}^=Sm+`^LJqf5$IMuSH9O9Y*IK}P}8o8ffrVw8#7)R z&1F0r>WIHJIuNLqnTTVWU&SxvsB}JsqPftfy(4{nQKgkh6`ICL9rDZKb2|AVOf#87 z*M`>XvK4I?(tjg#lje#KbW4HFiKD+5JkL1* zm%YqF?OjjrG6V*bL}@^+jqZ1NIZT0O^mXAL80ErrQ7@Dzi3;2(_5>><1rL<;!cQP< zgbGPn7H3*yqUsra6VjHHaSC)IdDaGN3?LMV;gtQdD6&+Qsf{gl} zl?Ct+{oalA708bwsgA9_pqoiDTzHKTXks2CE*hh1f(zk7egZd8-hrxF*nz7gq#_?+ zcBXhY`8xnevoMBBC3n_*0zehznM0dtY2tJ@DpU93nF>2l%86QB2HZoI)0n0=hja0H zOcyN#+etHc6C^NzrqEK!IfCs(dZT_=xXOT6X(w44W#iP_QTpJ*7yu9%MCi|ls5+#} zS$&N;73i=9i4`fLsMt8r!U6(Ky@?V>w5Smh!o4{GMJGy}l}gu178qJrM*W6 znOHCkL>67y0V)|IWPFBzn|};A4T@B>0FxI&9K{&{rli5g&+N9Sy|aY`ro)^qJSOJL zggx#+3xwP!x?93@<0Ca$3Ka@JA(9R9O(_?StF~PiK$NZ@2}!F0jk6zWgrp<2fB|K7 z^%xs=(U+z~peFr!2U1lKkOn4A>U;z+CKRzj-H17QE`9_p@jJ)BBjDlP^N-8W$Fh@ph^TsG=VJ+FE^>OfSO*~N_Ezy zF$pflI{?R`n^z!xv!8Hq2Z*17)t@Y7VxbixVy)(;?}_)5Zi~O6^|$;yJ@5 z3Yn{}364ageOi4nN~Dl59UI9Y%)*RojiBCvU?TlM+G#+-8S6<5BgBphhJw9>=&nK; z1p)xON1<*hhmMe9L9AS=qzpiP61JXh9Mz39Yc4$egub6YBSm3+2UxTrB=U?@ozg#V zwk|NBE7$`Ia0;0P5;+hluq+-9gPzDfS8QUM;AH#m4)joz%8taChJOtZE4;>wIRosU zv_-B){6Mef5cD*G^6r9!2 zNf1P&M#x|I3gBqP41cu;37d9>!axr^ryyPVjABw6X-ZShpFFb>wbS1Kk2`P$CA$IPBznp` zaP5skL$orabyi60OUS2+9}t)l~Gb|O6z=supX;3h#AQjJbwU_{|3xNyi@cu4xm0!k(6 z-!H+1P`9!J{#0jkkQ7x8xE=Ao*~#;`kKCM1@G=wYV9SAi+` zdP)S9ui(Gt&5W%}jin!rb^}-{bL=5o1$&_3 zUoT{c-wDwqYKV>zc$HB5tc9BhP*OadGikXcUaPoRAQbV^lpVk2YrIq_t~xki)D;!x$AA}p$Z*!OtM zO23~|9{n1Mb$E#hlF_pml?XaUCI*AQKzQa$(UU`>Q}L(4sW%c9sOMOb0MDxMoYfAu3DeARfu!K5N>+7i8+wHllX_X|5wOB4+=;@ERfM_zRhViIT&~i`qen(jW9h zSWsaH_++d&QXB-7qeKc5=LSzv<0uUNL;DGQNh42@0+CG$PwYHk1eq<}0EHc-7f;om z4hV;?6+nb1LQ@CVh_fzuChyo&ijJok8G#<4Me0b>3J1``U)VtgjGX?4|gp(_iGNPS4zE(WTw z0OpeBWKPjP!!)%=!c=?@Ty_w7VF75IE?o$wyUVp_xG=k})lm(yP%1-4G!iT!m0!;n z`FQJu8T!Au_k!xZ@KmD!3QwrU6zhC@z@&~KmR9&)xJWc@2qdZWz~cgHOWPxdnmIKB zm%?LmiT!CDG=rX!s>(m15rS2nZBp3Jhp721oYJ-W3fgtbV|vUEjEf|$GD%cnk~P&K z&Ym#Ls%*LuRI$a~Y;yq;O%+0Dg{^D46s~lYs1M4-S&)b)UbU+D2v9y$??(-oM$Z9@Qns^VNav6OaDlM0839f{r- zLK}y+;F?ef(I$~&^!v&Jjt}Y(%{+dg57$%b?TIQQS1c0slcmCf#1aU|?+;ayNVoce z)~3%pKoJL12<50D}MtSq33f_Im^8u8^J@e8Eq^{3%>H`y+C9)19+q#WeiGO+V$3+nP}k)S z#)}q$tjsr8q42ZQUTT0H1Vb%coJse3S9pzL30xfNtznwO4^U-sdprx+dZlP9v{SqG zhp<6-b=Oh?E^k)rqJ&T&IMO=^gk-Rhf1+X%G%P4_hVW@KEc^tVBV8wQEqTixLofOV zh^CI#nwvs|qT^qAb5DgLlzXf)?on3{4?|f0;oA`?V<&X zq|_JjNhMSK8SRadxR6W($m%vNJSJRHxf-IphyVhZ2}_;y)o+T{ROJxm8wyoA4RDx3 z?gK^y{@`V7pb+91q!e;DNE!e~a3IPi5x7x4i&XOG=bX{%X|PW3f^>7#4C8G;l#w<$ zh|de)>0<#c(_=4CS=2PaN!ojq(siDe7C1RGAc(gE`3RZEvC>9aIFFSD(mdd=Rk@bL zt2qJ~(-T4#vlL{}8zALF%teDUGKC;P-B11u(b@xO3p)@H;ALur!kCXlvBAoM4zjj- zV+!;_P>tprJtOI3Nu5BJVm=PWs|p8I*1`@XR|zv&6Y+(+M=~4C&ri~rD)e|>LXgcQ z){OR*X_CYwRK_aG=zYw>V^TUdKu2ZEyR>t7bXurqZiY&EB|Ag>XL+ zGIequ8iye1UK(0dI#BRYf(nj>*d=*;a=P$&9B0896Gu;mua-_%b`ZKbJXd_5-@+PU zh1p3e-!S*j7m45|Tooed-q0*0Op02lxS?S*g^I!gP7!rOoR!Q+0|7J*E+5i5Os?=5 zqizjwp$#rTV42`QqD1r}0~~a$P!^vT8my0-D3?!g#`xwgMv!53&U}Rg+MmVNQ$~p zVYm?r6x~HY!P0dv@xpV(uT;8H{6f>y%k@B+1VRw0v6!261)L~4}Y3xK4uv4Rw~ zK3b-XOW;i#2nr$_ju>TO2mWjBF&2Y*yP!x0ulw4jL{7|VVSy>dcXt?A;M*zL%Ue~^ zk!Pu16+BZk_h8Xcs55R2n564g5*`swEVIH}aElmrhEUN?j8Cjfkfyx`qyZMHd<6ia zf!IEpaNBSfPjauFA*~2tw!&3r2m{x^BBhY1-dv-LsofgsSn>7qA>xU{L%BntAwnTE z01W`iEt72o+?56VU6H`WVhgj>yry2$c}j=qK?T=F4=01M#MQY+7feN0P>8146+Tz^ z3aXrl&ctj1dg4n2M^{qh8Rk31sKQUc0Rg*cXH&R0XHE-?$eE6WPg)s4d42r;_Wa%B z_xHbl{O<4n@%p#Ve|}yc|L^a{^=<6$UAO9X_s43zemqw5?y+6n<_D~DeNPwP$IbnB zYyZ>Z@w-%$@0)wKazVCMeRiwsc6zOz_t)(TiQIL!XUnR)*W=j_R-Ip2b-lWI39I@3 zRDr!d`}^+RuNnT^z3TMb zJXSX_XougZQ1LmQ`LlCfKZh5Axb3R%o?olZuUC#i@$ZqENkO0J&sTk=!>L=Z`q74$ zbH(4BR(#cCcah1B+s*l&|cJuKfQl|YaayXyg&7bX6F>ZH% z`cTt#*nNF1(g&;ibiGr{(d$`2w*PEZTF<-TzTK>L-Q)J&Yv$3do}*~2zdmlaq2a!U z*8O_sL-o6R_S&uH=X$q#4Q_|B*5+EkI{s|0uzz(0_jP(cvsbU+DlA)F*Z1dZH$TSb zz2RK9IT z&F6jfymhgJkLT*zukWk*wi}@DiZyhw_mCnQR^>>xTtTvPbzfRzGpV(KHT>1r0X|Y+H2ovaQP50*#4{%x67n|i?2xD}OtQ+j>V}8!t7{MEZ z@IHa5_iv}+HQlch*Y#?+SigTj*@4Zxx|&VFad)@%t05v{Lx|1z{F~wV z5^VRs%2fK8EXcGp;>kQ+cF8z|C-Z!iD%~Q7YZFPN(yVbOL^{=f%(kS?=Y{Q={-9KJ8B?q7J zw(Qz_6DqGDU*I_*h@(SJ&SPRQf+P6@PLd^g71Z-7!z%P`l=Y?&EfKo!IB6tdFy6-SuvK zVT;^Xsnxs>WV&~Phid|8@rvlOdFj{ue7eodaL)RGfDq-pP{@PykLhtLyVNy*AGWNBz07 z_zO4W`l8Nu_58Np&2mGos&=b+^X%?E@#cDOz9F}vf5_cd{d8NFp1kq3jKjQ2eIncK zqtIXR3%kC(o{!DTg4^8^xq9RGn^1dx^xHcR+5Jl2@+VK`eg$RTgah*}t{^w08*Z!T zL%KyjXuMuO1B}10>xU}VCdn}bJ4?rg$mXx(?)fx?;_ef)KAA^SE8#J3li<+O^VMs- z4Ufljd~78;&7bjcM;;!h)o#8o2Xb>c;08jk=T?l@J?3W1_v|K@B%g7+II#N)`N!oO z?)Mktr@qtt(4T{SKkRyQ{W_4_`X!A9N2Ed3g$ z$FB@-|K#$$hU;tSZ>!Y!vb3WS+q>Kxj26F{`D?u)uifJzCd<8EprmiS*RMOsr|(ve zMB{cX=F1CWp02y=eJk;8-8DG7ze*iMxa{4s^t8Ep=nun2Hcx-+^)uN1mtP}6vh71S zz1k*KTh7{@U{oLThIP5$9+WvIdO2%1q}$x(0#61IDP{9&wb%ae478`s0G3MvnsM(V^H<^{e{vw3nPGkn!LXL-X zdhMj2b9bY$wz~<~TF*KI6ngef3c5U*yVt_<-Mh!Mxxc!{b8cTcsl2m(T{mC34F1eo z5G>{2UDw04P$d6_d%eBBAkoYR7DygCx0}Z~Kc3y=vE99ta9a;#CuM=auCCp<#33%< zO?v*!&GFV>u+-+Iks^n!z3$!)%#(S{NjQXj_ov!Oq1gKi2eK1&Gu&f_se5O{94x_j#5EEGN z?ZB?^wiT}!?i(TSLh0)lZpeG->u<93`u2FR*U#%ak!GH#Ps+gf0U3c5q51N8Al+;C zTn(x%IS}T_Bry2kb2B`i11+0oFLPV7)HeJZco}6EPT-zhFGiJ@nZdk)wC|k6y?->{ zYwp#%c&s)LLAC>ViOD?qX#)JO*Vnt0ruAOm$Gdkfhy-W8mu5NctH<^RWucLLZNGf? z$Mtr-%4K92mVSO?9O5`f3G;998J}y>q&PtowM44S>qg4{yshsLhm1gL4uYQ?_e&7G zp00~W7n4o!S!gxVXswP?+<hJ1Q5eL}(K`c`0^{KBp^j4Lbc zJoKgB@{JE&BZ}(aW~(l$La^8noJEnU8nI%p+t+MEuoqNspAO`{Sw5q@@#QW)Z(AVZ z%jAZFMA$DJNdE*}@#x>5?dl<(9%urp{KHb&NqXKrR*(D3@7Z7g6u6MTu;Le|z2t?-a-E z)+?FI5?`kVCUk$P&JB;@)!iSh(71~9W=7J1NlriPwakmPx;?hS;TXWycLi@~uT z@-ClI5DW@IWO&^oA@T$tH7_mpx`A5O0OhY6LV;`b@}IrB8;9@{ySC+xdLYii5{C#U zLlXdpJXx3f{c&#%-TN#2Z6hZ8{?J|V<@VTw%+d))-VRKDnSWV5h4T*=8|Kv-U-t+ZG7O30AffRYrT<7X&U$yZ_WDtoWcCa8 z`Z3%`_^F!wu%x7H$o=+oKD!qpm6Cd4{^u_(ebaV(omRu>a)__pyIzIksuw8BUYA;dz*6Upa8iZT@jvtowAzp-;m4hNBP+MWAvQe7np|^;Ij?zrHXBu# z{d7gp5s`l3*Vq0f>)1XC-#*yIpIBOsgqpHa&-`Jpub6B~x++!1G2pJW9>|LYc>?yn z|H%y9b3my0Exmy0w-e23YNg$02kdzCs+OX;1R`G6n*Do_tl~y;j(n zdyw9$o8JjXo_sI41J3oY86o1;8i(kQzjn7CXtCLTnWrnoN_pdYysEP)dN(h<;a6!G ztkfcw&nPQUAXtHig*V&HZJt^qRT>}olwRZTl$kG=ZvqFbFlyJTJ&NnE=B0hC@wR5K zg+$z7#2eMU!k4MCtSwftV(G%iegxwV=q8!uec8$5PG#m1pExq|o zmVS_hcuAA)^A{s9?aZtA7s#X%O0$;06KiM@{ zLfuGZYJB4%;t-&u(gE495gz{&M)kHq=3RKV?}sk5R?A#Hlzg|t_5QT|R?7!El^kA$ zOK+;6%zwCUVngyF`==DIdFdGr2|eU{e;{UCA&%_m9`W0Ji{_>8^X}zJ_pdiU#O0eL zrw)0z`&)G{G+(~^8r#d#%8pBXeKZDPSxpYH>SZ&d3*CY{s&f;!&{5UDblJuP#F{4Pdy;XOghQ6T{1 zI)Mr@8-F=;M{yrHa?jRZ-qNKdfCGQ z#z_beU6>T%n$x)RK&?ybdB;CQmSm@LuU)?UO@4^@sY8fp|BNEu$QG~e59KLK`-~d} zWW9|1m*UTSZ{GEIrJE~9zgp+LYZVT;9+$qs;kfJDZat9k`cOt&ZpdOozK_o*UhJNo zvoP^xu_16i@qv2g!{i!`sgHZ}u0;l-UafX8mmElFlWGO2`tK0Ac%0T;Mj|8(k=H4b zE;j__$*s^ZOVx@)zQWU5&w64~J(~1zET7Q_{iYrc5j%FI^cLGXmoIQFhX%7X>Ivd7 zvfItOewjiQrZIuSEX{H&Qu_x#2JGoCZiQ<%FfFu0DJg=&d+9I=(0l^v%L#N8weDIh zbK_n?crb};XK5Kt``@#=- z+)%dOOJfaj1$HdUQO|5eaW>b8eyejU-z~3EbTbVpDLr*+`ayHo8a-`px;5^@?5r2+ zNvPM!c5nCf^(rF4GHZV5_mI8x%M6x!9|%b~4oq9wy@NjK+-todj~9W?-e)9KlBK!F6#_stzu8<2|G6R;=XO_t^saSwx-^)Jjg>ZHv!L>UdKWyq6R%#+TO?|L#X zw~v8ChxpMRBGT4>4WiSiB=c?VxfA=s^KrR1R(gNNh4*y7X_1ibYKdt5j3hn@@!^=k z-j)ytTkGnsU@PctMVYx5B(?ssd7{s)vtSJ|QzFi;6{=oaMjH!}0N@=Rw)I|byN7W- z4D|N(gYlUXHQMUyb~na&b01q{KBDT3s@6aAmIEMEh--sW_@uHzL^FxrgXM!bi^t_e@4{<=MNxZ=I zDS+S%S`TE@SC5Ue%CNKC5DrExhPFyAc>4q(HuL#ttlm5L!Ac9=&6W`>)zZALH5gV3f&4aqUDCL*LOSv z8eD`vu!_v6Xg%xc6}q9OYeFnJ5cu_-P=^j_Q}3RF`nlOW=_5^q4xN;US~^8RUJ^-! z)X;hsFf`wgS@dgr!TA6V2F32JfI~Ng0<5Uv zefi8=?R2jVXxWlS5{#{9El|}7N5P}Nevvqkn5De;dj|N;6XddWXw8kPD)dwH zYkUct1n(j4F20ey#`e~mq|HjbNBG_fwRnlw)P}WAE}#V)!d!EZS|)V~!il=px(wEe z8=>9^4vs5GB29fG^-O8{_<}mLen#c&t#A))17XMwiS7%@8iH*a-Q5v#3yq&~rzc?@ zN)>+h;=nAOi06gSvZdaHB-UE;i5v?$FdBU_7`tXZ?&vBye9X* z0?fSe0rc)bc$w6|7E0Ak$^f%%-L<>|3W>=q@6FQRhvJZ;GIBdS(l7Zq_k=Dy6hW19>HcGoWYsuGyOY{;sndnYVx-k0aFNc#Lz6mpg zKAg6mEFBdoRSEiLD6FDap<3&%bunsgdMS3lC3jRw$(;&u)YtvP=GN}f?qpA{UDUJBCr zf7$YlBo6?|x{bl$SsG_yM~UOURr^OJH59tlqmOE&+lMbGpILHrOB?OZ6^N~Gy}8QG zZBI;*pDYKxo5J_rwcb||kKY38yS-#ltv5vBQritv_ocqZUTaqH86SSlT8h`Vrleyu zYVOYZNfGVq@+D3qqI(nl=-PcYpEZqNDpzS_ezOqC(caw^?+8-DAuHRo9>|P%O$cE{ z(r2;P+%B~p1WGzm0c&-)H7|`Nl;n;M-{N*bh+BV?tRqc2n-?}{>(c+>e>(jB_y6;M zS^d=?`oCGd{sx`-f4%nm)gS-E-(+~~?*I6Qe`!sVbc+g`7^PvY&&-oin_fSKI10Q# zB5kJ41V=4e>JQ^{WyHu5UklMlf{~e-#g})4ms|5$t+l@ zv%P*@doqHkf*rkT2g34g^+kx+paNTT_vS=;{M+6Ccm0!a}+`P1x z%)@X6i=@9Bavf<}%<3_QD@H)6H7h_rGGimy6A^o79dgnPAVLq@-XWjJ60ONyE-@7t zfVCH$&nSAL@dU&0&e1!@TQl{<(y8Tc^JIPmW~i&4Of=Kz#%s4~J!^&BwHfz{x$j!R z_puNa05P(n#{~HOI_u3{A`QfdtY|uyT6e7#XBd_%rMMnbno!l>>8*_AdN(SYaBA|BrBZYN~6j0&_ReYe&&f>!5W5$Hq*Lm0(!42 zP64roW!FAqB$Q1>cu|;Ay=oTX1j|OOm9YNf?PWZ4s?{#cI0mm>-rdS4Ir)*O-K3o5tT`AMEgJpq>WI`nZmss3OEFl4GZ)}}m3&lm zowbQ0X_0bJLhfIQdIqCQy;Gw{8?o zEmOE$&6baxolXs49QnC?Mk)Y#H%ckmBXA*zPqZEg+McoJx_qv0(NnohI=gRMq5?Ek zH8r<}lS0P3=eQ{DF82ESn9NAwonBAK0(Nl@Bnbz+h=76AZr3XqwgzU?E3%kOH5_{h zf+4}_ts+6z8-b?*=1BI>TQ7%K1P4-p)58qPijC5Db>D&-l<+ z;6iWl&mPmJrfblIy-+CZaIA1qL6`K5IRKb378L`c6 z`y!R_XbsF{NT$!ram9RJG#~Ig3Ii1=;1k8jzBMqT?VQeY#S?w{4#bt75fy@%5%a~Q z*)~g)kd0!PP`e3OEDzn2ndwAKWOvmIwg`l+c!-(BU}n{%Aq)D9;n^;;C+=<~Mm>e5 z*3U?HVwk~^>oCifC!?KDOzE}2U3mLP^R9O{AoEtkCo1gM(mLX7-S7s-ziC(P)?|?n zhE(?L!~%~^Ena%AEWNx&XR*xCp>c8F5IDm-Xg%vuxfQCKd%c`BCd7B$Yp9+P()|hp z^Xth>y=y*cumbEW-8D1xX92dhUtjS0elkD{d=aM-1=q1>LRx(z`H_$$-RlTyzwh-o z<><4K5LaT-Q1>^hCB+k;JLqmw`WC+Yx@gyV}TZi9DHc0e0-)ku+HTy`$-!bYDy3Vg3e7gRed2-{Q$&uX&Ie-t*lJ`g$A5Ttjgv_bzD?%a@+SC&uR; z{p2Sah~|eRD;-1MZ=U}8kH7!BfBwVYomSm{{a^lR_1{ka`9H0U1OCHm{rKPR!+-tb zAOG_|tpB#r6>#UMUQ|z{7mMZlzS=JKD<#ALdr{J3RO7%9gI`>Y-Xa8@O>5q09m1G$ z=fx0=Sk8ZA`r(p9Q;2x=*G$IfisHT^GY z;~=sDN@UmW3L$05qp1;{`aEfY=A}i!W;Iard3X89z|5)ziZ~4XcLU8^OFl*}shVi; z(Q&ctS^+j9fchJa_1zJ?Y_9&}{bsT!FQ7;3{TU_Z9LrFrWH@N zKgz}?AxLc?!E%uoYC-G0zI7;eSI}>l;kt_r`7XNg*V2#QW@+3h(C>5igZG4+%c%mq}7*%ilrk8XPd+*SN4W4K;Pn5>BN_yj%4~v%pjYpT0paUYa z)Q@^Z^U}}R&}z>7{vQ0t^6AS@f8&jm*^WqBEAUAu&(k1mtQN5x$ij~XjX%xeU6lWu zWd(%juojpqeEmnZ8&|0mM3rp@%=OK?j%3e>CJtg>s!2-$mQI>kg?#*o;nDmVB}31s z8;{g`JsBhsrId6CcXApN0gWeZ{fxAAaAou+aaVbbAik*e-vuCA8T8mT7X{^C_j{)@ z^~m_qWoef$%@O)&^bML0*?jq^8zsKeH2!XC5iA%eqVqiyMX!o(zj8MBzoV1UFV47m z)ui`BSMu2z2Xj@&#Ob4r+kUSBZV(YhJx zWV=@g6lM{}+iv+Nf(@pA`EKu`pc|qwBK1td?i*LK8Cjs*I}?X|sujEuvq+PG5FbQ1 z(G#hEwi{K&u6ss$O4OGp#ISJSLf0 zJ|T#|A37Z0sgMIiCV#-7TCpd*I zp-i5i;?9EN$kBDK>DztLn9*6#-T^CpCaAbnrv8n@;hDJRQR3Zcq;Jk;ND8JR1&q^$ z{l0uy|4}4fYhrdvE@$IsRGzv@8$%O+_elGUiXM2XVhE9waIn=CJb)69o6H{p^NY{- zT?&p7m*r5jJ>A}C?F$Op^%W=~tZ6t7&sKg2a1tsjCL@2Fht4-*6v3~N70?*cmsIdP4wxA{>6U zf9vz5S<5(>iJY`%tsbYm`Jvy)63$wv@GpO)q)Qk58iEF{MSE&ZI3C!dp?mp^?+HZT z*T@W3k%cqW^q!XFZehm7qmzM_k&a$Y>skATT_n*}|G%)O?;;i$;qyQjyzAS2^RJVm zi&<~4P!_a4VSTpl+A9b2T~|Yf-7SF`SLroMbk#_a)tiF_df&aqOn#QSMV3ys`#lXr zmIl{?S~jBIEFEM)Y7=#H1)441XREy?ibF}tg66V(LE}g=ijMktVUwm+H3mo9(GjcG7BKi^XI{Kkh3tEE(OTV7xR%$|g4<xt0FEHkuF>^Yo@SFRcSkc)g~D zNNC4dYko~v=JTPCSrq|t*_xwM{vwPc$Wsja3UMenNJ)u&8j2fX!RC7%sdyu>Ol)|A zaj>&q%8nfNHSWCkc;x425 z{ec<8?V9R~ewlX%tPh%2CB1y8cmY0}NgPjvQIHvZJ{{t@d@SGH(){8ed?&)zTwZf^ z6(TeVitd)PR=JZeYQ-U4WdbbFz4`Jz5r2a((`H?E&3wSJPz7nxkzj)WG&``THpH!j zg975>WfV{Nadj(sq^n{OVrzVD+}Bm0WL^P!LC%_GQs!Z;QZ^MBYxik1Pk#8+>)Zvk z*z58cC5uvCGVcl>TeA>b12f%200eFYmiPnsl%5Oxg!C!OT$`a5IXDP03>i8wb{#qd zAqxtQj#(Dm2`F0+1nWVFt>JTc_wBlT!xFCQk?0f*O?YTtdgnPh>xK5|tT`|`2%aR} z|3T13daHS9q+$h2BdU=xE$#A|WJ$3=&2H$hjn}RBn!HTk(aTG1bXi(*nh}6rJMF(v z^qafrExnP(xNY}$^c3Q*E}y5I9W?I$*es|5o1kujHu?QV6)Pla_Vlm6bQbLTo0`TE z@dFv=p}(i%i1|7pAe~l~8FDMMpjvOpE-H;6KH<#r&>;&XcvO)G0v|VBKFuCob3Q>< zDdU9gn#%_o*9<3wdKxmQ`|;XbxkDZ>&ncr2%+boy%!iIzbP>{6j4FO zp^1eK;VjI_<-jzEX(2Qvq4_nU^NndV?lP!q*)_7KDy*3>QK{}<&DvV8+`OP~v{}9? z(&mBDMi}@WNlh@b)*B)qrS1n0!JEmh(-N#v!~-{q{w5D=uFFJxi59xz!2H&GVoja^ zu4w!i0H{^4xw%#ZO<9XugnusgS`{!pjApqF~OnVy;=bx@y4Y4n(}`{=u^4uhy8kU z8Ta$$c=@=+uT_T4;W(WS(`h=L*6YKx+n+8_$IF(S@YJTk{f9LujF4_A*>*+F__nU*|#^I!#RsBUY@^RqPyIeajCb49C8ukZ;~KGA*0SI1t9#k6FZ+3a-1M7#qxpE)p3ldlP^CK^ z`tmBL%}Lki;Lontr^DP|#=~$L$67hi z`-4~Q`Ix|MAy<%rxIhT1=Q12zE^X7>OWx5mT)I<#n8rQBa~#U&vfFpw@p0Nu%WFJM zheNj>_Lt-7wA~)6d+{6g{rRBI>O*6Pu8&7|*SNs#@lr^^zs_aqH;40{RQql@-QAkS zJZ>(-_IMon@;7o4yF=HV4~wmvMp|zM29c)hysoOPTOYTm-NPE5mtS=7`!4f*KAtXT zkZkKmebej9I9~eg<+46xFZDqokC+Kq?Z`xTt~^W1R@m-Tr*UaDt9 z{!4Yg9}Wj5&ac{B`qODRPBX*Hp%j0WG|HRw42N;Kzeqd>tU6jX9Nu`YuA(qBp4e?p zDQ}4$@BT0yWXLoi3i=UW=khK75e@KoGBeKo%`4bXo6B)943|A-s6K}_UwhfDFWL{r ziKP-ZOuJJz@Aqh=>u!G;s_)wE-R;@hpU=Z| zs#@^=$a-VWp0@kb-s!IQ5ddbY99DOzuQG`U1(nBjzVzX;S)V$O>9QZ^(_Fs0=k4xr zAXDf!F%Qi6_S|)Q)tS?DJeFT06E*I{AKtY4vcF8HBfSupWj$Z&Z`z@D4F1To*~`4& zo#**Dji=-6KdnZHc%?M_M***yA}1m5?l4_Wf`H@pvOAYo8HV$GIGQiLSO)R#@nGD= zG!KXAT#moZ!#L0TO?T=pi|u8FPh6ubx7i9qiuOeTuHOmE4k!PcnD->AXZ6S^Zu(30 z?h1L&+0D{aodiYcV6y` zNjUr6@pu?1E$+*AcbK<37tA+aPS=Oo9=wOWec)_WA%fvLz(?RHw2&o!;r+zU)y7%%GG?v|LBv7GGV(C>JZa%{KR?4?DXVE(N5eXovx zo?N*7c<9IKtrN8Op0l~=%dKM-d>!$W*b`N@YU}7zb(h`A^;m43Fi2iJuvC{d-&T#M zHlw5Dg|JC}!eVX!#0dtw^^$=e03Ju5nSdm%>w+lx+fQ%i1M&3DR@f3B5HYJ0)%v)) zzHVQ5kbb{s^H1FpGn`oj8RX===HXnvb(cX-v^$>Hn`M>LraxXTqd@Aol|mM89U$!> z+}^@}7AwV8NlK>8cA~joMhVQy;n0*Lqu(l!(dPD4j#L#w*)hRXQLDNibbt87>2&TF zFMD3|(5K^eO1yXZOpJJcCvuo>>U{Ef7JGN-F0=G;D@p2Ez3N`1SNp^9a2l7d?am&R zY~?DaZExx7D(7B!IwYrGzSBWYyOnQ|B-vy7p4rn z&qZt~nctk(!#g|QyK%?qByKi@Y^=t1(!}Yw-R{Lfi`5)XhvT>(ri09n!fEkbcB5o` z?FcT*{hijA!zBREWjirG<-P3BOi8zOqKnnM9FP0UNjc>#^FLI-k<{#<`xhehGx;Or zhJ})gZ^w5$<%D=wkm9A^oyvPT?_7*w;>MO3<^b2>96?;-yK??0Ryi5w;_i7$B1HT| zHvEKKbe4@);|4BG&1Bg7UCWnt=?)&~Np9gjSHF>qK2MkZ9%*lR0Wy4u=)4>KMB;qK z`-06GrC}9*|B%@Sq+Tdw-0)#;H&k~FzUoS5Y8(yT-UI6rft=wMeSd~6!CdF6zm`+= zU4O=$bH1meID+|w*>)V|=3KQgqfbPSf9j-=_JRR*x*SC1tj=Lyj(c$&T;9&8+c#o- zI;PeID-904t42e<2T6&`7L>SnS}?(3>$6=1R7_9xbiJhulT9IKIo;iPEhAnFVE2q> z`5Q^8pe5ZP3g>Cb+5)NgC5ap`x*9u}gsZHW5o?$bN+t?1su5o(O2lR7&n1($8i$gh}17J04G*0h{Sn4t~v<&^dnOc5|t|gb9j1T@Jjq{GKm32|fn4p%aXp z%b0xnpm8v1+KCf$!j~CD)lHWPSYOWm43@l1dx0wu$ic`y;a$gr`2IBd?!`MJ=k!~S z=Oc(1x`b=AIR$jsf#j7>s;iKKy>Qk}c3I_eIqXM}x?pWkz9_FE+U;1lJ%ra@PI6&@ zAXMbM6Ejv<5pa(}&4FJ^_D3sU(Ze=2csYg1y3NTpEr2{jp)-d+x?mX_! z<@>T^SVkx*GB}yTrc)6bE(QcjuJ={!PFZU_VC}C@%e$W1&{5D|rzp@}wr{)_baB|9 z4N79~JcZ)v&YKJWJ^;~|YMrYBi{J2*=aU~+wY^%|cwdQbI`Ftl#)bWO9tVz69_L?If6?yD{GMP*(-QY8N+}&G-cd-CI8|4flm@zkpyRaI zUU8XPg#b^`d)}8k5CBbG! zQv5~xZ;2g1Lj4Jv)EyTza=+{Mvkd35W=DrZ)xJo!M3%>+XPj@uC2ZI%xrO}nQXufW z-!zkSJOTdp%05{IVhzRMcsIg^GNL0HNsUh`p~wrcbJxyTS9^*3f%&SQZc;tTgiM$l z0x6xPO=p#AqwR}z-n4*hR_-Ga#8932l;U2LwN5Hhy&C8ePqksa(5NJN zGNT2#5Q3{RpQL^~-Em*_u!jzcI0j_MRuaDh=GQ}aP$t7wEdQcucfK%nKlP4OYUow^ zP{+%1F4B}ExOMFJU2445y{H2D^FN6cC`xyyX}gCtySp$&i3%?OyzY(=#p+%r5t-&P z_dd1`6ATV>Ihb82Z7)~H4m10*O|%>APDLy91OSBS9_guk>kh{rYU0kU;{*2a+WmTe z&NCYJ<#_iX3yoVo|J>a@JJ`dX@%@>YLCLY-9c4xAt;-8+J~K`|vcu6MD1W2N88hoR z0>_qfY4ZWj_Am-wc!9;kw((&U$mgvOyZO1jNby+%RkrPNE^=7)4)D~m;}ELn!VS%e zVc^4Mm2m6g_C3W|<7zg1gq{dKNC_=D^&VEN>>@WX4&qc8>G$@H@U`%q&_0$5Cf{_P zWjE{N8D?BiXZx|rPFB5lI`36djPH`>Uk*@*YD9K~AsR@4hCjw)ro4>CHTI{x@&b$R zYcDFGCN%&}-Z?d&f82$C(tDJ16+uCA>i35Z!uvCoUEcj5z8p8_H|~KQlU$(Z^Do;| zHD>TF&S!<)?x!pRtmGp2-f>|+@fx{Tu!-3JYn3fnD!=A%-tKo}HJjk;#}od`{tH`` z<154ipoQK*(If`F?#s{2t!L zk7RrxlXDLy9=H3gfTVcq6z~tH&cvLbdedi!2`)g8;l-=9Ma`mAJzt{;e5p}1zDD?h zf^z32fm{-oNzsqSxFt&$hZN7{(v7@_>c7%YPFHrrh(gUcJ0MXbBSbmO22jP@+sm=s ze(6>2k2+m-FKS@PNCpS%VD{?GI?H_~20~auA|OI1yX-Dp8ez-oUXainha#aOsJ)~v zCa*zL;9$x;E=dgNNZGzy5XfnV@_Ce{T~Kp2h34sZ6a=jPhWeV#iv zy@vJWzFdxeivPjY0Mk~pEUSD&EOjxbMI~53i3Q`~!^C=uT>g#fO zUm7oWnpG;GTi}Ok-SLJAkx7TcRv#G&Rb4z!y-kBL#uHJ+yU|Ovo97X6VK`)=^+JU9 zW-}fyB1U8DFXw#`wU&<$9U(`0C~4kGTdy&7dS344pr|M9*3VaUKi^?F?MEqBSFJV^ z5y)BBBp&!l`TSfA=o4P+Dz((}&$ve-Zn;0mmPHCNeYs)#j&J zP2nBK(AYWwcQ7}7ylUS7R5f@5lMSy>>tMK4Ch(6?1h6HG@5!qME((U9HN_5VY43$($#{XPhW{t|5^nBOa!5(C`i(B?-k|u)&s4qF zF3iqB$~@mZTBRI(=iz`9mH?u-7as<(Le>fK4!(p?bIiOvm9Yb<`RXbNWNIVoNTL|r zvQEWY3xi&|!vX8Ryo$Q{T3q%sULR)*g3jqHf+nWI7lmkw`2;ij%f9@J^dciQ{#@U{ zI=srH)!J5<$ZSm*b;R=}nuAqP%-Q?~7iLsVz@cGZ)F<`}i^KRzn$MWp zFi0LTe(;=hii@|Z-zeWxdL!IjJW3!@Fyf5hqfT7@(uZ*D!bEx3Kz9ggr}dnon>LSP z93xiNVs&BfvE>}^!6~_Rq_Jd7(8cO6I!&@0?7w`W^IC+3hl?&eAe0NKf7L4ex2!^+ z=;!uwKFl8A&mk!5wL$_mqLz?LEW@5!fx4L11$2TkXGsSeG;`~lz+YHz$&qRlKEf8C zV5o8t(+5ZJ0xSmXdqdw^qYy^rU&E!EZ7D6d^5eLN(&p|?2;oOszuL$Cf7b3SNtWHn z0qBa-Ea%}f$9>drYyV5o0i*Pfm#prVNqW|oH!^~xyTbuEf@RD7L&-SqpLR^*kU>?F{Guyu$P>h?Rq_<3+jvABg8h1) zQ-|0p3Yq=-ww=*+Y__@!=&L)qZ{DsoZR0c!6+QBZ_PqpfAk|vWbQj$H1ik`1lHPc` zSJ;OF8C?@3QfFj(5;}6)^}jq?iY7IiK6lPltKdmcQ()bEsBj7Bv%<`bP!C!xNi5%s zzWc);d1yk7GktYaI77n1?RDR@xfI;`5Aqjum*5Mog`tM?xzGyGs3mu1k+*T$urU3nA}U~1O6{{;$*f!?7{*!UJ#O13 zVo)+n%|65xZx@)O*>=)TjlQD9r|^NPZ-nCoe5p z+#V9fTg%~MArNhgQHN9ai((#YM7amQPYf_TRdJ(ALK-==y*?X*4j;5I#l)3hx>+t1 zw!fV*vmqapMVLNYl-2eG#L?&;@MUV(VMY)TV`j=S)oMbkkAz*BcBH;{c>?tHkj^P$ zm)qMuUYR}0hQ=dMHQAq7PqR1DP2 z?G0AFmyn!gWQWjVQDv*kr5SJa^6e70A^=2tnY<3o^riu$P6=*Jf7Y(@7rh%c4Sx{> z6d(H9*U4OpQW7#8P3%NhcXRxcIDG^Y19}5*Wxu?qOXU{JzXEzf=#?1Y_5=!Htsbv} z?YitPWMIdYL~!$e{LnWeT3AQZ=BjBU34QEoLzIOyGJ2pgGWa*^1JoQ>Rk`c1(G05I zuMY9M=Vrz_Sy@At|GoLTk3I7P+Yda=YoD$MPcvDo8iB@yC~`N%uk9-PCsqvH1cM~C^%3L# zh*1(SgULm^N|cYXL=+)+Fku_xoZIoX4?U6fLcNL;VBXghqYqD_N&70Oi4M^>*o!A&yM^-J6uxH#-Iu;eZEgOOw@MI z5YZjtBQtsWmspPVhP%9MrN65`lXLF!_4W;p-mqUbwgS z46yJIs=w?}&=AF=|MM)QY&a+`cR*mRWdnG~d+nAR*<$JwLkXOK+g4_Vw$^?l8%(GC zHi^gc-;v_Mm^4Lmi?8FV1w*E@)3j(SuIrwPSpVj+FdCWU`zZ%7t!C2Z(%zcaKS8hc z+xPC+m;UG2FLKzJS}7~ zuAf}RpLY+u@CZkRenKDzp3zHTgw*{$_a#=Dj?`n|Wl~spIt-n06RA{N{joq{)vQL} zEg1;481w>{$@@~im)|HxDp=Yo?7?Wnk>LM94HSh5H>h?MKgUmCraQ6^86)rxP$mxz z2G_0vTJ;+?_S~q@-*P@fmgd-?>-qaEn&^8(QL-TS1JtyA7CbDC<_C>yZcM&o6u8cn z#tUS#%~(??vP;`+HEfc3sH&-WpR|f6Ke9bX*d5knbWlI4SovP=#5P1;dv;NyJ^}KBTk(`3Bc!hNDo8c2owmYqj`Egy_JIKrN9(Hi zjz=JS@h27x+`h$g=Z>Mnt3+s@MM-{HyW92)2i%FcVyt2NAglH7#n}rsum=>ly~$KH z`h0b-`wV7npM^r*&=%iiaGjA*B0ES|G&e(=sj7yBN1kA=-{cGkcuxXZy#jiobsHOb zDTTR6jKAPz@0~_=czj)Kys4^K*9R#dkiReiu+u1A^j7T}(WE^`2>N^UpcCXI^(?{6 z{)TTUliulWweLkt%Ywbh;g&+ccqziHU)-5W6*TGa+QB1J`eGXSFWCEN~n z4BoX{n0(Fmk{MyR)X(B}A~PW^8EWX8L`K$-Ebpk<+~!i)8B8N|aHe+MbIrMs8G&BX zi1uRb`AF8f=U8@Fx6hJQa0%28Lx+zSAKQ+TIu_UL-u7?Y*j!uPb-&)CfCiT^M$Oii zIkZ``j85Yy7J@_bc)bIAxmw(GcGVR1FVgrwtaT-pIL%!~y6|7!OYE%|dsQ@?ZMZNl z%fvW%g#zw*ZhadzB%8jC6lhWKFr)QaQFG8)?Y{c$#zaC>3lk?drkccKg&2?;zxCR4 z_Q+*kOc$2!*o}_TiS%nMg8NZ{G4eC?PB zG00nUungF$^SYPJCEq3ZOJXC{upo;rYC5L#RQ{qDJ{blXGVxN`yj}nc^%4%a7IAxy z*fF^y_j69a8;LFXVX3DXrP96qM#ce{%Vea;&ks{`Bk2reGjsOm>-)rH>tp}( z`CWePeU`ZF7M)4ZU0amqs>0ZA~w&G+`W{Db~ET7ohA#05DM3pDJiPdW-qOC%$0;CWM zn0vUz8Bh_!Uyoo?kEFTUyHgE%If1l4`%Xy2=vkvlf*%(WYP#3kN_ zP-4BU?A=zK2colGDR)s&@+@H*o8U%i1cNr|xqKEefD6BIydz=N55lM6UyPas5NYvD z2>LD@&F53%o$dm>78yYK72)lv%o8*#()-w%%RJoT$}WdVBE<1=16FC@E{K=kJhI%f3ezzYbzt9w zMUR#%h31tm7CT)6cwwu(L);ws0qv3K9{ zv4;~VAl63rsDH=(@}Aobzy)Owhw-*}Xad~iGY7tX zaXM|CIHA1o;ed5=p!_1NV9e1g7Lw}kRw7HmifLV>F~NfDU8hKCBUX!cENRO}Nkm*DVpl+epFzHab@nR{By& z^W84ARkre9jkY!h@OfZn$dBu?)cCHbIBVefTtvGzPFuwVrIeo9b^DEGAI=>7BWN*1 ze}@SLI^%7}lD_;#L9?9eId2$hbEeyzodPw7TXw)43HM3Fm-N=}MVE#00gYT+9Ga|9*P=J)PtM$UjG2GOUh3!CrU?w5=p5gc!XS@}hmjaZ=K;j;l*X>~wb zU3z~+Co~{yAk=v(YVzlftQ&8<(6HL0)0LPVJVPuwM_Gj@B+5q+lyu%@40L@QA|XrbRyAW4 zc3=-KQ(P!4qpm(+fv?$>aZReTAc_G@GBA=~6f_6!iy?_+Z?n`6-m+}OLjxD4G{mN< zfW&lDkBB2d|Mqw659r-fGESdgerdkw;;9zERPJpRuO`mc-mN^@jc{|-@DDM(spWug zt%4sa9V9zWoVJ6{myya4rnVE8wnz50XE-w%Q6jAD6q>?U1*Fftti2ih0og)07ULZ0 zQ5a!^#AUDWU~8kAbU6ygkPyb+eXH-teBUWzkBFs^Ci~g(uIeSJ|l6V3XOYlIrHx5(iM?9CV4WK- zO>9`O?0)M3Cfw`>&H~=Ou9LJ)wD!zYRPLoBHjMK2V!acl==#`ZthqLUwBehMFZ~wR z0wp5T;QUMK;8_T?86q>H-Eq-0YOs8}X<`~0#UXWKhM!KgZHMHi^*7@6TTD5tgtf=? zL|g4`MgQ+A@dcP#<&*|K!Z)IXbVz-)vH!eh_{aL%ercsR!Mr}c6t&95oreECY?H7IO&rQNCIB0YBEUjZUe*fAGEZ7aIo@GSVBa1|t z8LhSd-2S3WSi(EeV;M*!C45HR;p_v6?(I1OT}u8HuM3)kG#EpF&|Q#=XZwxDfG`yR zDpz*hg=4UPi34yifv)^T$fjyDrae=*9jlKsh{1TQ!RNIi4^BT&pASsczFpV|ZCP;!%0BzW)Kx?h z9?IzP@Z+{NfiNFr%_hPwCm`543Mv3iBHYdrG*AUo(4>xMMD%_UStcD1NE}H`hoJn@ zd}P!&%(H$~^kgm|0@epY0TixX1s@K}{~$LV`3s>7p&p6o5udN+ayi1rX;=nPZ>+-J zlkuZazvg?>a{n}4Mz%AY_>(iRN{7pMMMr}c>->e2hK7QjtAC$!7Qkvs?n0Gfd zOOS?M${rc%7$MJNDF%KN8fk!=M_KL{II*7cCPR#W_X~_5vIVXox@_$#IPq8SbgnWt zCJJuN1IQSw_cPVFe5fC6o1y+?UGGTmF}WGK)|!s38ZkP0G?)|;M|tLCf^s%^+g zzje&k83ekU*gMB10QLDe0Fz;!$1=SjY^$ z7_pVRP76192VXN*$Ls25ERA%(oTUgcoeh@K}@e`FpwmKe(#@<@d!2JN$?{c}3F z>zL)Z$lXlpzXzfonD*XgWX3b;$mT4K`~}I_Mlod8ELDu-whln>JNWD8eD)a6k5amI&-HmR}*lc?M%$vz85IYi9iNYm~RAVlhmn|=#kS>tyj_8h!UTcBC9YNqy9bW ziK6he++rVC>IFKQtEa~*FI4TRs{BPcXTQjJmQF_m_HE0a|GWHKUH+N(xc$U={`t52*?)g_ z&xDD)_HnR$X6_ktAP8qVipU`z#oy$QsF($Emy`of=Dpt)}2; z=jEBbV1O&kI2xij?6S+gl5yU|aE`QPerJ_GK)I~)2dF+_7tGDLG(&*$cDa&cDM%)U zG1b1@eagOl=oQ$ABa?UU8p)Zk3HZR|Yrj#*eg{W9bpF{f# z(M&|)M;K~MWj}e$)D)z5V zmFlm2FF3@IvCEt@kxY=04@nUSWbEBwfjkd*!L!3(m)$xl5d24WE@g zWLi-Bi(J@lySdy!#*Qe21&`A>ZUzXn5B+@7e(PkGsD*a2bHt#MieY3RZ`IXu1kJwK zxh#Ic?8;(nq0joT|J(j!Ty;;!7xIUaEg36K8wZ~!1Ojf=R>TgW1{6;`g3zIah$*z& z&zeM`yY@`;Va8`eTQQZwNg@h4X(FNKut32KFTeC?8zKhFaozy9a0_Ur!YczUAzla+ z<=b`sDPm1JpV3k5{LfaIHs=azkq6)%5#<;)26OV*kC-}|b}u4E`-}FmrJ=d}WhStU zH}WP1d?psPh#OCIf=m5aTQ9fNd#qrqumA^~8zM2{v?K0#b3nnCgm%@x=wb5I+AP7P zH_UoLIZAkgSgF6-u0r3cq=`5C$fYt(vlcw3n%DP)uR9Z#uVH1!qx@LFqcNO6*A((LN=(L6)w1 zhf*`Xr>G6=RLXNiFqcGbouNCT{dp~s(mK&ijY&Wok5K-IWS(>G4}`h23a(0Wo$MF3 z*OE;C#C*cFTfO~7^q1kR^7T)?8{;)HYpCLb+j+~}#_->TlY>1o?mEW$8A;A4z}7uH z+8dK<-&V`i$lrNZkK+|Xhp8Yuy`6otJ5bAONV$858smzOC^d8<^daxE&5?OH#QAjgvJnDrCx#ePJo(TMeB`d zdBY0YRbWuIoNo1~Nys14ch|nuXCv-xSCLF|N1MF8O`t-SP5X2_3*iePk~T%W5AYbv zXVEcD1fj}W;*rvVK+DY%OZv8x%3LyCX@Kzz{~Owuv5amNo!yZg$}SP)XxcIxu|-Y@ zTEYLy7%JwR0J{bEU!}u`6U5cN7Y&M#>Dm6-E)Ihc$fQKNj})St_8cLU?$qI|OGX_) z8!ih`d7%dhP;FE*HOSpy>*5l77>-fK6vVj9JP|yh@)z+B`h%PS|Mo!_fE_Wx;~nnO z;-FYRx^yyeuGh*N=xn%V?Jr`3M{|tgI-bS20leU&E{wTUwX2uoj6A?gpBixFQo^Dm z#3$8tBa?2QMRG8F@Mn7F89xj3(PWuAM_4d;BQ9B#)$A8XTGJ%DE5j)+?ae?Yc|S(; zIiuo7&EsDs0YWCuIeKs2!7iqHgdvQLCKw4;u>{|@HFzymx#%X{B=m4Wm_1p3=>P$g z`@zJ<+kJ~2v12Qvo5l@z#(7>>5O6{!pYhIaOr5_YpbLWuY^?`a{vyVMTi7&m#4b0v-R8y)@r7VsDXfTi$onq5YHBj1BbSA(P4En}=FD+QXF*J> z-9C$Z1p|Tk+|Y7h4JwYr0nG-4kXy2c5a z$(L4Udov)PV^*sh;;SJ}BL#asfdcKLcIJ(723YmZVy3mbdG#Z}CIW8IKq9pE7ij?4 z{c}oa+Hj|ZwE-sms9`UpGMr9=Oi3gp10hx2Di<*yiq}9ASe-g&8?sZkf-8Y zv1dqC9-M(uh*}n0SL0HzG_x6T$xuhuETF+Hs1{vRG%MxX)sfZ`d)$S`tU?39tHu}$ zTvb}4Hcr0;0n$~*pEKP#{9QtWbT$TaMInK8vNOP#Ca9kBvHSW|mu>#7elEs=b3W?PV1&xYZ}p>*{#;IAe4fro1gziU2fZ)1Y+Y zTQMw?*Pt?b^^DiMZ?(t#mbCDno2ip1s^wv@I~Qn9CHs8tEGOaQA-1)hcf%#OKw(TS z;{@Fh+}mQONH%ll)!w?OSS5cz18ek4$mh=|p4%D=x!PNfg?XNeG`Iz??!4XWc^|Qt zM1CX6wJzdT(MjNHV~oqdR$)SJhXb5Tq1EtG&+7c|W54?R-2D9e+WdTce3$V+ zGgbHKCErxO=9XYiz|c)9ophpQ`>Ra;pw3rM_|SGt95fTN?USp)J6jr!BYJyzmKX^j za1mis(ECjnMWB+JU0$N?qr||?(u@nOX`stwa+8B;ZouI(ii>e#<+Hf1Y&!g=#ifHI z5(6m873ey?S&2q6<=`_yB8BC@d?O?!NtU;ig1bZuh9k^PSkjjoXK4!oG%fG;M7gJ7 zXn)bcP;pV)%)arBB%j2A@}f0nOFKJzzcuvl==&V>Z<0S?vtyq=xmSZs+x&t3@pgAO z#~FRpO7FP}SS6AyS9dCRHa%v?U%;P!&PF=xHtz2PWb4WtTKpm>p{z^)2I-qV2bsG zHWRNkiZ3Z$_6yjT=3vW`kiYVyeY>Fa)5##X{SPAem*HBgk1ZdQ!`FAld;j~arxm1? zI*(o;Co!Lh@@?vCOQRGR$GGW_jQ%Z`gG_LUEY(U&w+>s$-OCi&#YvD~?innjUCgu6 zm=H~ZeaP>j29G>niKhE7thvyqSaVr~y6GK{Fj)ov6U!r$C^#iVp>P_dqW3n2&m$FG^6LWk$;{F?9p_AOw(Tz<0wi8bPF;9R> zCPK7t*OOCht`E<_lDJ?>E8nPZbCEvFF2mkm3)DwlO-|>%M5@jr7x0?b-9F2a{DMx0 ztJvsm;ig$uN&Ix6B{tyewI)XxLo43 zC91v024J_Ug2d_}3bkMEro-US!mv%kG$5coM_?dhs6t*JXPOHqUV<}3#7lQl|02$k zJ_$H=QDcA&q=@JmEuUErDTc~yM(aW>!|?>A1~D=-o0v%;6RK+%gClaZ zF(5*0){3#cN`#e0@9uK%jKm^|Z1*k|r_H4jI4%xA@7;B55`2-p(v)y$MEl=kU zS~s%h13bu|CYcps?(O}84k^KeVHzek5U#a+9+fY|Q*_+&SpZP(Z)pdwr}T)2aR`Vt zoFDgby$a+;5go^ybb|0MY_~P*NoTTks3u+bi=2TPl|UAX3i8V@Qncv|#AZ@^r*%0X zfIxR$-v9+HEs`_bMK=nKEkS0@adTBGhFKfv<>Xo3b4nEm;}62qg@a;lZ-_d7Tv!mb zs}@=Njr7#G*Pd{_Xy9&;sk*RZR0H7r` zU8XwDc-QX@tYjJmQdkt6C`%{a?1b6iB+kX) zrogJbT4e}W79fTED0#MDUILR*(V1aSs9S5hqmTT97(k~Cx1UEm#1L}xEN{(`b!cQ` zFlthran~KuMIoeH=m+PYwkF|%_y_fo9?{uAxf|eed})B@o#UA=g>~0*i}w*?1Wu*A z$S;Dsz2W&PXhgtAleA3yA;sd$ysUCdVCu#wD4E2Z{86K4Hbkw;b{M0i_E`|YXh{xtys2O?#@{F#G2ED) znW@&U0?g9b!^|8E7R~K+RJ{@Y1pBt?GyRS5M?{^{Us7O4!glap#vK!e2R_r!lDeb2;KA$S=Iyec0&f}4!9*pZjPmVbI(aR;2?+d>^Bzqs(^&um z%5K)}H*%VpqBFnxe@EAZbU}?a)UDiV*m$dLuc~k~w$Y(e-7uMPP3Wzmc9j?}BAJVT zo3AFxi1-GSqJ`6U>%FgAycx6pN}L_r*>Ouxe={#Vk(kvBkA zqau*l9H3ui4s!qwFu0_boN<;xM)zTdo^GPEKpYF4J#t2ewv9gD<`Aeo^3J+7LWtL)P7!d|Yxg_9wCz zI9~gUc<}|jnabihSfn>+wlx8cPc3!PEp%0-v7lgYpT$57@6oBA;PJ9PG$|II(XYb2zjUo_L+=5J;(EyVoduhmojs&{6+gSF`(Ne-m}RWxV%ai_Y_|^ zaxF{4Fpnb%veb^lblz?p#8nqq=z6G+60>vBBidXB~D!4vxF61c5E4pXg9!2 zeDhQ0F?tqqLsTgY9m9_SG3|Tt3qmGBXdk!tMwpfpAx1jm?Q}3vNGT$NQ=BA&mob|k z#d1>K5kXP;EFfYH3fa>PPsxN2*6@O=$dUT!hK3VwqF9MWli5BCjKflTjzduj{?PwN zQZg@F!PVY%1aOAhMJuyRy2d1SMWs87^H*nw(Gd9)imV9+BT}Cvm5eCHaW;$+RQ+eV zhEt)_+@2$|x`pb9s|KebcLah?#=@9)(0^&_Kp?*BWn@877Xq!Nod-B^J9#QJMW)YT zGmmowOBDk++eyhD_tuq~o|JS0i@?1ws?WEOKg3oZia6+CkDNyHFpg=#6FtfhTkKnO zR!Xa$nYxVohSEqG#+QDJ>k*SaA64y1kSc3N=Mm{qoz}Fr zV2tt{9k&W9sI!_r?*;!0nwW^hF;bn@$c9rw)-#@1J z-`{)s%hUe6`uzSpufEPyXNT|IdH2)eK_EVU^T#<){{xn+WN@+Y^p4e$WVeZ$DdbvD zMj5HwjseV+e;Zh0r=^@oJF{n4XkF}i#qg-t_(+4QPC5c`-`aJ@&!IJdZ|xqVyMU6< zmDh2?9cR8BYMcPQYR2)hM}aV3ci4c)oP(sfp{_d@A{YK*DEgnaU-H zR+lHz9_fc$+#^;!S4|eY{*ei(W^Zy%+(x##$2RAU?A|SYCArDD9@B*E{Reh00$tt?t z6cY>b#|_EViO`a%efodpO_k0zG64hq;i|4)L;lb~q5+jUwD>7bFKMIZdZLxV;%KM75~H^;_^^TRp02E}~A90htP&YSVz2O3DB4Zy_0xh5BN$qRgEkYGRt4F=9AehEYkcY!DNX6gu9t$54w91LA1|;Imx7q zg{p?UWSljmc3s8t7b*BiaK^WDxgIM>CtE{Y9jwiw(0P zC$W*@A?^+G#oMXv4ZBxh)VwX{sy<4VKfoFg#{k8r&2}m_k|Et-eCn)G$6_&hwXEWe zvq#~m-!5v8K06d9pUB?jv#y@d_;E?K{s@RGIune(Ge0(GS^)^GrX(`;4nALg>6??A zxk%1*?%lW~G0(yIysJ%X{Lq91`wKYn>*0CNTh8z?{F<6e0IA^cZI?2#&5O}f2-noy zRKvzLb=I7@w}O3!>E=wEdyEtC(r6IsPOW1J3v%6Q!I~>$?m9^(r${3x)CW9@+S<`* z4(xen$pxNY1Ue5F!CPLtzS^jEJH^IVfxcv_!@Pbdz4siTmG&t+?;8a{A{=R zD6%+G;IuJ7o8}LYKVk{3%Dpsf;St1*NX-|2XtI?yHoA5xY`9*rZb^0+E*6js2@ptB z@0awJsS+nU3(7`Xw-lO#e+c`|uwF?ftG&~qy)oSjBt9X04CfR<`USr@u-C#4u4`D* zAvXhk48lhuEKkQP30fG52nF?*27%rg^Weqju6s|TD*=p4rc4MiEvqO`@TJJ|u)$cz zmM1`>y~pt8pg;1uD<&n(%nfDuBzi=<$|(5mk81!!CxETHc4#85K1Dkx6?MT`-r|3$ zTCH+*I`i?>_*kp0vzTTln;m)!e$;LT^G93l;g zp)GvX$cd(@8k%|X)Qt(ChTa=aEwVX{@3Hl`C`w;A+L+wxHNV@7MM1|HxDkPb-~6Ty z$&bP2)O3kctW~HrZ9~Lqxm0H6mEVYfn|E?Xa4kB4w_Kvq$ciW4_Jy$J#c=7-lajt@ z#l|MGeU{kgs*vVz2KKqisjc)B1mhg(R;UZu1Is+HV9IC7T;9xpM%vDocA&%P!gEk! zz&Ptw@RY#c1}}_nq`MIfMH~`PblM(upa9M<+G`^_bO@D<2s(OXnONCA%MSNev)>&x z@;ZHPsz(rp28zL+?JC6kAtup9HruY~p3Uw9X|R^4$z>5OM9W z0PlwGne;R@p98Z)H`Tvb1&FcYE;h|unLx^IrLL_3?4&fG>T|5sE$>R z{4n@T(RjOw37KW*C>NT=I&USfz$%x!q!}Y&i7b#+`ltuO&VYNEjG*1puBWBSlFhYB+qoDxb}_A z^Y$oFog<~$d|d$hK#x0wbQeE;m#0Z#s!Ahc?(6-j>@<^#nT7GhwP0hPa|F&d=TTki zPKn{pLnmJo3aE&0_wVp-yL zsS`G;$##DCh-aVc^XmJDKlx6ktzS-n?~+C(|5qZxkA z?gqq5&}9cifzUn+2peB$v*iz#Rap7((&U$uV!Q3CYIz`m<48}rBWd^n4;8blle1^= z*)>O1hPoceG9}7H>bOPd1u;c#l^a}tLG{Br)s(B&$5Sk_MT}-U)L$SbBaVTc|z;)5q*V)OW?77t6a?I|6>nlGK^Bvm7_y~VIZs@dzq1MV`|0(DwK zuTAVc#bT~iLLh6zw^@67W@g6`v3<8iE5LRdcg$OJRm{5ni#XtxL^L(VYU)c95%XgA zk>-9;oa8v6%sxwKe&LMx&d$+`(#oVrkw5>lJmV@aA{5-bPpw zTp>-@+UhwZUemph6A|x%_faR>XJNa8X`%5vkV&plLNyj)jI3nD?JDXJN`ti`XS^3P zvAB7=)M53GWVwnn%uXmOuLa@HNDE~t`aOwX%V9kVlAG`C$Lind@Ua5OUtl3V{${iP z{@Q#x4|o0Wl=~+2F%#S%dB1Kkiz&S58yPUq0>H# zfkcPsbvYB|YqQ$pVo$W1*`9TdXD$|z3ko#`ZP09`qs}olq7$Oa+CEEGK~pyia>F#KIm#6$yPaTi9~&PaSn6YVdu<-yQeZj0W;{fE`f z3?G9@+^$z4E_EXyAB|@*aOMR}R@3T$x14=aT`;<)CMJk)1W&x9@bA(PCw*!i)~zCq zH~d5vp1AbhlsT)UHzgrLl5tbf>uKC^D==d*)`I1G2}j=iVA;^{S~5zTOjH*`*fw0J z#f5k|yJDfMrh7)U0>dSDViQAN%-pAa7Re>QsF!iAm|&6xm`X9mNYg z(ZnDILykgB#42xZaBvxcmLwX0k@$F~LuTp8I5@(OvZoJvhWFWKQ?u%hX#p{cn$zQ_ zTEnwPYH^g)=R&1MrVw? zzj(XaTe5hPtBg3u0%?B{@-4$y9WxT3!~mZi^kv8ukEGT|`8X^$by8jW1LIx(F&xF~~(N2UV5NBI7w|;y`j_ z-yREZ4ha-rCUau8?Jshov0w3C$*z)TqN(x2$^dqK!`4Sr5|5QYr8=d&waQ=QybhtA zc9Qyo8tfNLHEN9`T;+A(SJ1xQ(4KYMrsm!t>=~x$jb@CAFYThhT1NWiRL%gk-MdzK zZA}qME#n)RS#272M28&O@LSqnlvrl+jXWl&(HxyKX&siCx1!0_u7ZD^`37+z5tDc= zov6L{8U}0NU|Ug0xETf#&(p?1BbDSP6@mW9fE99Wtj70r04TLF*2dmNF~qW0y$Q3e zmiQRD%v>4?K=O2y$ zqoTOM6@^EiTUWO3v)LNhmhll10mu#I3EeD!hogJRAlk~lokAgocdg`@T~n(lnR+j1)Mai$fFnF_vU{h{U7?m7dfuqxty zGSF*!Anik?AkSRjUz@FB?AhoN4<{#hrV7@)8oI0Ome!3k>SchKjw6IEQBAi&9SlbV zk|7$DZHF=4QQ$F>GRw+j^X7`50Objyz7O zR(`t*--wLF<>;K)m|F(X3`;UYGg|*NvxMLs@^^k=qbI9<4YV`j+(E)nZ=WS3Y#0{^ zWklGwTy2l8IfVnB9rai4mm?N{`HJgkgowDxXVLvP%iGYXDYVVRRK(g8Q$6{)SnRJSgbup3J` z>Uu(eVj@`HyFpObDo`+`AwL z*iP^=b?v^)$gDy|7X=-4diOlTf`VYQ&!R1Yv=!-AGF7Et*srN2bz)ofx@RE^jO(@vB(<91KyY}D z_Gzmg+8dK{Q)0@)VTKhb;OGX$O= zBg`=I2!%xJ1Yk#{OzGdQvb#nYXPVpKzFt{fyEg-#z6LUJZXp4qgg`JQrPDgD#i{a!n z+tM;52jRPYFMP3CIGcUr&P<$s$EV;VKnrTjM}~3{I^b>+?R_Xkf7|_GI%2!|q!{+g zFETnZxEb*uSDyMyvtI)zVGJ(1b2mcB_9u*PwA%I@K`I!QCFA?RgHP*&yh1zJ9<4lcj^j`iVfPl&k=$hfI!u?fxt~lL@ zoFn>o5}F)GEdd*;JV$coGyvxOgp2^y6jVsCMVfgp`jhGgS#J6yguie*1~GX)QxNK3 zM01UxTqDO7aW6YCvg-z zI3LQ2y)n=&lPJKV7z6-beckpKnf5^d0VY|LM0)l3ejrIi6f3o>h(@{asep4c5QHEe zy35rj=~vXNaO!sD-Yu4U*UL~Wi6~%ITBmjuzPR{a3^T_qC1=%z+M1#&Kw&79tLU8i zAej#^P(SdG(Gr8kO$y)6>Np+zX&fAAiaNBfIDzIUh3BJ`d)qPfBqR__Oto;*!*lZAD`t) z#C=R3sQadVl}TI_vV0aePvRp;X0B%v;FF3N7SsMJsofvsc1K+#ZPx&GsqgitW9*Zm zt{}m7BJBzLL3dFL$wY{prK>*+U*e;!@z+j)rBmai%#wWA>&Y{v;&RMbh3TTSb4q3J zrejbgaf%roI*nbsh>51@rH6XYh&#O7U<3;<(+nt)(Y-6aDY{yu7$kb%s1>0Ec`xq1 zxVxMz#wM%oEGW%0R7h-_K|~eR@O-8)8u+qlhj>$m{F3?}f*oc_{F|(dFQsW`r!v>}gB8N!wM za*NG_D_om0F~GP0ydHFCB6`i$b`?IqG<~S}@KCETF+`D%T!kpJWobA)#1@EsQ}Yf^ zM#dtpQ#)Q3-8(9yf25Im#R9DB64nuPRiLsN7MN=R&kya2nc}#2uZeQ9aON_YO6@I` z(M0n|j)yR0?<$^TWS)G36mNt51jp84ZYv7CT=CU}Jv2sNS~UTKQBJF|Q!ADGB|#d- ze9pde*Xgt)B2eW=XVS+;aQn%{rnT_P$MGLLos>qIQ&(DXb%)p48i{J|N;{UPy>^9s zq~&~{(3{MvOx1ZF9Tz@1NrX`54i0MlcJBe)u!9CjfURxPiyYCQEhfVKvj}4bHBoqv zND`ypoBvLu#fPGfjhZyay_Ta6TfR|z(KD`k{7e-~`=ycRvCVZkMhws(V0)IP;nP5% zOZ{H7Yc+h)!DO@T0zv+@wlGde_fcl1 zvRFk$!hGHho*01qOWp0_HUC#e)8;P;$8z;a9)SV|LVycTYLG}0;*xVkIYVdO`jMX$ zt;tr<+h(wD(TA~)lc%Sa*hs7v1vLsgbhVwUB}+Y{s=^?rP^Ft0@3?IEa5LRyY8?vL zqkj2%oM|xY`9gPd$h_zJ9Ni3qqtj{5U*}x^LISFsf>aYqn&keBVE6F@=u7C1RG2p6GP{$)~0nh*# z$;=Evnwm@j54&?wV4#*7U4vT`2l!Tl6d!)5#LIAjAOy(hBv~+%3~iDMw;7p1tqw79 z_!LSEgz`5dsxG&bDb;WI(h#BIsuGp}#Ioy*;*8zv4KZLVQ*EoyAk%v#61XiVKyXr^ zZ_!cG&#F&j$|1n#B){STGsHP(b2jS6Gi7#^A;@yacr2CYDAaR0T4OALTY;E;VN6;% z4II4nBam2<>Tvb5@y2`Mo+8Iff(Qs{Jw`AUCH}JPpdP6vNPDq)_R2o0;cc5WV>AI~ zrD6ItxnD@iaoRUtNfM8?tMGJO@JYp<1%WgwKnje+b=?7kN>$Z~bm9-PX6cwq<;=Zs zoM}z04BhZ{NmI&zl{R zXF+I|??Q&SLplWIdwJ>1TxX{cy0?*L$crsD&Jq0Q0o2#hq6Dfd;mj&gMN4*_MNutd zM542$k_-&e{vtFzXa(DhG38V_40XV3!^`9+P_F{PXOA-HM0b*Eb8N{dml;Ny%O#!H zumJLQbvt-|vmrphX1Lwr3@`@#F#w`2hqoJ7Y!r=M2xgpD>s7!~ZYfNdaWgQe3fn@+ zb@P&8wBN|sZAB}V^l*s6JT#caor?%VRoXH}G$+qGQ7o>5zud0|*BD2FyP=M(=Mqt9 zl8fG6VK)a0%9&Q?o97wBoO>Ck)63A|Llaq#{Dm}z_1Z-X9a)nnQukgc8R7V9J2+&% z5thd8$xaCi7>%lpM^;fOx&o%yacJ3Uz04$^sf20TS)^T*5HlTA?n$5xw}Tn+-it

D9+4Wno7W0TK{~)?>4Dz3*0R)z=D)j6%b1zio7t#_Fuh#UV%|mxqm4EwyLzpiso? zruC@fPsXsdw&QDms1yAv)QF14Y^{k8=(X*k&|K7>RK$_g@xSIKgRQ{n{uN-c?fFk5 z9)`#HRhO3HqmZy3cRpsZ$A%w6e$vYxFJi@=K#vpNWXhV_-c?b)_O}}I_xW|#!`Q76 z;TT~UDCRD{k)ZimI^6l!)Up8+ykp4pz9(4~6O>s#b=-=Mk30_3EF}pjRPdHuZ5P z!h$%syA$?rdZ;?E`IuWx%|$dyID_+FVl?05R1usV&5p*PZx9%%9*^UCq3dus?S7Z= z@TeT|g(+Z2CsS=GhlC)q=sf5e(8#<%HwSUxDu;`qH*JQr2n*~jsR54PYmDJ^uhH^d4++D3W|p9&8*~f?f-$8~`QDM$#&e6Hcp* z{{X97%0Ela+P0rs zc6Z47js;`{oRJW)AN|I#(`{?TFRZV2mpFUjg;p*B2ezOn9ROQf`B#!xO3Zy#*l_!n z6tOu99_;NMfnwSoSJ3P}>g%TVa!1(_h47H33I8F(@tN(U3h+_yK-*8SyXb z+%lrXo*5A1Nr&%G%-ymP1C$yl;Uj=L-mg~H@5{&bukCpE(A}APpVi%~1{Kz9h*f|Z z@mCJV>{K=D?zqytpI&Ep`-dB}#@OSQ#cawz*lp6jew}d_k zrBA$cx$w1jw;8XWtj^f|Ui*>SAc#oK2_zn%+>QF153;-yvG!(+$8x}iS5qhFKTO%UU5q>{V0KDrwMfq4>~D$1Ea`yd;fLunaDGQ(z5W50o_iIAA*0g8j}G31S)+kJd0 z3AniU(5ZdR{$tbs07?bm4UO(Uom4sA$APi9y|*+CxcQ25I^0`Y4zo6eO@)XfO+3Xw zlB?-+VQnvcs)+B7Ir2f^4TTgY1Tv5T>wiBgp+Nl2!4?}{ppPP;QUe?BR3brme|lpiB+%2o&77|1w{~mZKaQippgoOTalpYK%_>jMeXBiBdiVBpGcrx zMac(Vlme5|+(0*Ox7bw=4pY>0b{ta1$ISl#N`V13;#SmBVV-9NEsE`7~F24n}g>>J(@5;>u<1{4uzGYHqa6B zok+LFfNrS72T{v=P#Fgh7yt*A2TtT0+pnkrK@`? ziFxkaJt{6qBVlbm+UDz{<=lRMLH_N-A|Om`OvRcQ_^X47k?K`ZA#eWM@dTUoucg=f z^~dHs+kV}jQ+FQS4p-GZn;}%3c_mrVz$4_3+(tJ5`nZk9m3-a!mFw!fwrwb2L0)RN z-^#qv>B1AfCR0i8KwUtw;=ZB}_MX3GSz%?KDxWK{=S1z5+vS+XLHveLnD zS-kO4KS|xEVvG>v%qx1Jv5Zs9Xs~wp^1MRI!dq{zk z^p-$ktiZ4O1;DV{=KGy%QK{J|-J|JDXeCEz`JKsaRP9>IZ@&uv0N*(=u>SyVGh)hi z5@tz@kA{o#saaA`p>zNU;%!Hjb^7x=<>K$#_OT!Mwe;%u53O^1q`X=_)s1uvq@Qyj z@C>c6DyYNY)#~o?hnq`@m(}4E3jw8KYcR%D{lYljI|J$>%0M4){TlP{Bfnj*kpBR7 zzKDafePf^XB*?AX0-VHvfJE7D!DE8V9b9uf-$wL;vzbwyvOpg26 z`#;sVx0f+cV0U&>S=TEOZye8ZeKJ57VPU}6ZyY@Q-d@M_1~+Z*9j6Z}+@+BLc@4CE z_^A9`ZLRwM03RQ374)>*GcAs9Vu^ziJwRC)-u45iC+@BpbekwA?HM?)?_!taIWZ~X z_XfiEB!kkdt>sZ7<4jT$GR8^a&90~|_?(MaT%84KZAy>aJ3x~up^j*atYKPaBikBZ z(B*Bf!nHdQpO@*(DF-~9!4|Hq3V_bMSI~J}C7Jqk71DNL&g*J0>|L%0R)!}9hc067 z>}&;=OD>z}w%meEFKtQIw(ap`p=5&r(O88HVgxU$*SGbqcWk#N8cyL1ouBF4&hMC5 zLywC*(!{Wk>twRH^^G|&*0a~n(lOh%HLnBxp6v&@{cnpT>nkQAOO-6B3vqN(P`Uor zm6RWidpqtluMgJOJ(2V#S_O^PRb)0LP03?pZ9&@oFJCf8*^!&ff;MK7HsY=FgTyE| z>u?KKZEY^B=W$S|?1~M*^)lF#eR!(bYtf}}+A`hAt$V5QJ!{pg&ATI-7vH$r`&U@- z@8rm!Q#v8jl8`w#czm2@M6>^8-cD#wD9)bs*GTyOa-rg)cB*a6= z%WrbsRBC^Y)Qj1~!ip6slD5{`gXPfFlMXL_{k~=GA68<+7-+HkmLzksXiJ%*3c*kM zWI%MT9o)xh9@iD)fZ~J9ss>jl)opj{y?E4kki05eM?e`ETS09=s2>ziyL(4nIhH%> zXcR{xvy^2amc$)w2LAvW2wk!$qJ;A*R$HS3ux*Jq*2aQdPY9V}c3*Ri)L)^{nhDD^ zW)kV@0Dc{Osep?jxKO6vS|753!2*koI(0wJsvN4|3mcQEJ8$u*p`pm+RiolAc%E0d z9c@(|)RDRTMv7{M0>z4x_FjXfMP=J=v=M@UNGfb}Jug8P7FkP|xL|Bn`&zUJV>Zxf z<4`?R2DQbG^afS8sB8u72Bx4>$&I$S1W+A8(#PRMDO4^EwchjuUrO6T3B9dB&Te%! z8`^=P36kDA@;cgqj#bMZHUieahw!08jrmEVST5x4K`1rA+KA)Dm&Bbl&{0b}GDHG^ z*CXZdqJWOlIer!vPoDj7$gu)??Oz{{W{AH_KtJy+^``BQ1bcu^wG$ph#?? zi~6=zI$nZYD;p?5zLXsCvXdpq9efXvph$x;5rna`6Rv{eOP?y0V>|VeMgIT;BrPE+ z8Y>p#V%pnt_;3C-&PPpeFQ0#SexGjRfs5a9{{Y^^#YdSAj?i2yHv7iJeV025^>l6U zck7;8{{Z}N`t3X4XHTa4jzWLTc7=BByqJ5F;*xHlY3hiQdXf!Kxz%jwP-!R|)I^fLMmPBGw#7^xl|Uql_he7y-nai*Nq`SF47-g^L|Wt8N+%hu!zl zjJ|*W0LdSzpvced-%r6OCdChzngd-!$T-HW<`fh5*SqU$#$I0ixx>@H@u%r|dpFR- zHy|?Pcc~6xjOoTOJ-D-jP0&9dk0F}l8?X4B8QcLARkriMbAp|cUQBc zT)e~g6Y0E9skVDU7nTcx=Su!I`$6fkMz%Z?jKF} zc;r7$cP2Rf!0=N#6u-5T7(9S@iR2U=K_d6ozLe*f`P)mS!`1%)ZPst6d#wKePv$!0 z#z*SAMsjHmRxHFHay~;%!6Nq@kA-=@#QA#uzS)?1%x&*OaK*1-#MlAhdh)v~=k3hK z>RCZ0j~xj;4b5e&t1`PDPC#TJIx?y-QWUTk^n?EZ%i&ioO0LNLyo!8lMUyT*P428k z(?WeEH?{P={x_@bgWjs<{jJW~Ga5%6Y#4@)=LX>^QJD<%fh=Sy;0W#E=U!S#M#gi`Fe^=3l?P`~Ek#NA%El zZ2sZxfv+MQZdsolqa`1Z=UwxJ$uiQrn zZW&wj(XjOo?h;BoKLzh&So>S%&0W5hn4Z<>Q_ha8j6Ko-W_^{8q+4t0zV+sj^dmc+ z=yqawl?-(RT#r?SxAX9>nw3M`7|9HQeq^%^IcRLBU2FkA#=GeA?#TCygLf}rPT&gl z=<;?}Pc6xio7YE=Z!TFZ@wWUqkUk&^xkv|Xz;wtwx8!Kvnyzv};;3l;Zx1@HTaOIi zb#HevK{dlD0Z7{5YAsrD-rS<&Lgrx@^*Y?Gx7g`#<5QG-ems!j_V1)Vp@2xwh7@F> z3>VsWF}c2?!L6-%_U72_@b|PaI9!6oRHE^aYBgKm%Di<-oRUKrQz8vL+uGOPK~O!p zMC6++U~yKy<9)s~3MYsXp@3EdTV^j(>jAWixyIlBQpp7@T7)jbbZwmp;YC^t- z_vw9Vi&$rlMIt^nT`sm8>rkgfrN}(U+fKeUP*7iu&6?VaR2*ai<$~l`VN@IjBTWJ6K%j9Ni}+9(2?XkG=TJSZduijY)}kHA0xh?N17w(AO*}x>^+Sw{ zaD)&}*6^qv!t3e1fa^fW{k05sW*m6+@j4Me*@H5GJvTPE-qZ`g1pw==)}VVi;s9BLZf3<&A<9$o?%S^qT%p}6ewaz5h*B(=`U2KKEWzhNe`rY%gV)^->m!G?) z>CEu@L-ynM6SjSE*l|063yIvMiGNiRurV2faAZgPG8Wg`Z&ipQ<686geQaJGI=k^P zTbK(g2;@#DuT86tvd$~6-17&KRg&trB=}bBVqQWi#B(6>Jw~6_vxc%^iHd{QuAMwI zr>gq^z%Qxzfw%*uzBLt%{mT8q?4LyTgO{4?HhhXlZ|#V{OFV>p$8wP_oSct^$*!G! zH+%Xqziij~zHIszu=lUrU#=rP!QNNSow9q5Ni0ghrtWUstTv4=UfuSZYUS6bwf4Rv z?Vj0-7Cb8yNF#+6QYhCzs-OU%cnerpm#fNl?Ud3$7q0fW#$&!WIf2uH9!BF*M@?(z z_Fi8{reZT}LdeWOFULku0Kb7c_-lI1cCQ)z;r+Z^mmSLzJ~Fz3$fHYi3_k5%gc~XK?yu;q0GKW43Q%hC*XDAFIJ;(8-SH?c|5j*CVZZx7KYQ8FtfW z(cevXuHD`6(=)Q=Cv?DJ%JGgfMl{k`Ppu8u4T$rv4*gqd_G{fX{VM)9M_{JF^#KTVlgo3t#W^ zsp@+L9we;xhBC&%PyufN=cQS%;coJIVLx;JzWRUZ4%H&dn;ZAWi=Gw=lIF}ba--75 z=S^+B&Xzuoudnl7ZqKp!eCPC6(BDvg<9$JqotG@1p;<(o*SWpfi#DPt$@!&WxAu)r zmFVs4nnxb4tG#_6{{R~f3<-$@UdB8r8bXQbMM&3*`cws8Aaono%)4ghzQ&r&aH-2! z(3emPg$!E6o<{p^#;dLw%=Ts%W#9%AZ zn;=5P*LSl6@f2><{@)b&F_}1$Qtoay0AHga*d+*VPUiJHM{kR2u%vfe@btc7-GD*VZ^kviIUQW(7%eKBAvGndy&g?ic ziz~?rB&co}Z~$lxw-x8ximRyM3m9bii6HU@*9XS>Rzipwq9po&Yw;(j>p{yAl?z>c zs|EtyeC^>tDOcQa!o^S!NhCG*0MG+F9!W47DA=Tqg;Lt;bqDM_RR!&!t}ICZ05L#L zo}$VuP3R}Wsv!zXCB@CgzYQn|9eu(H(!-IzK}0X8j$n%e>G8D#3dWzB4;vj=o$p0C zWkMf;3{Jd7t|$QD76_+~lP&wFwBRAx#4aw8h>bUrVCTK;h~Zu>jkxjgMN0a53_*Hz3$riY#aWhn2%vUvvJO3I*;s z->8I!V1#KCZ)fOhJ95^y4;${-vtfO0jl>UrX`@F%c@9z@yuS_WQt@49!`)@=cwNT= zd>r^A%EZW19QgAnk~tKOnNEhhTH7vXm#1u5itsMIp`r%+UwY$un*K_?A6Wf3@rPMw3fgdZTo4C}^r?E9or(_k`^)=#+P_r> zM{y%J6;?*WaIi?~M$t6w8c5b3C~MRBGJh+|ezyMr$(baIY+s`>y{Q~g`Xmii0-d;81 zSl`691ID}QF!Ak6C(1=#{3gCxj_(&K1Z8~+c^2`v@vjc^m(l9HC})Od1!GPi@c=L+ zYH!z3r0GBwD*6Rp)rAffcJ1RIL=Yu&AR zH~O3FEl`Kq3O{F?d`6sb%pGZsc>W`o^%VnJ&LNu$Axlm3}okDXcd;d{1Y zJGcHoe&qdE7yNJ2J)_teH%BnX?-Jw^LRnQ5a2g3YusVjWp1SMh&Umj5(k{gyfYC*W-FM8v@*^|dFS6|cG{{VLnVC_xW`!{dK z?Y){6$H2rKBZPywxn?8-$(^+%+@7Yqd)u|meGNKhvj$C^G6OQ*+CW>=)5KW+0G(qF z(qUDbl>Y!H5{xY0>hT(b($!>Xn(jFh63TAtsRM30X>PUKSm(87d#sBrgVoE zd~6vSMTtlR%IV7b5}+E}&xCIIi~4T;JWd6J4^Y=bZ@#WmY0KKbX0l)yGsiOW#zG$< z4!}pVDX}D;Yo~?l&ED;=hpGK9jqTz#BhBut63DO-y2e^~fU+qJZL@UsTcuILWov_Azzdb!R8zRDOX=i#_}+kW^9Pom zJZ(U+L~rS_3OD}%IsypKF!nbai|J|wPyx_seQ1T@b}w&Lv>sFq1553F??KHOBKIBu z^|eswq5)J|);gW29O_tjAMP4Z01k&!=cNKPoS&BqAU6uT0rt=pZ_AJu7SVc-jX>^} z8~JJv*+ABD#PqQBSpNVjs#M~>q$cERuJsVUz67zo#lny;{3r^N21^ZZL~`)ua<;yg z0ABP8RH8DM)aouTKv>Pxx)4+yEq!RGyT<4^jd#BEQwI`$-9->pTk5(l-gE(vi>V=i z-Hq+ndI^F={VKCr`4AUh3W~-3ZP*ttGZ(w#k6tUF$xsieISXnA>*8uz!+m>l^n7Ph zIF0YE>&qU!pqUVRk+2%yb86NZn_-;#lj#1>-{28<94K;-5EW*PUq!hClLBlBI$qV= zO|0--eDd;s?f(Fc-JW^m{V8m2M&W*BxhFs^r^40VckG|V)qX09PyA)b1(k9V;DK_B zZAJQPr^2uNkI?@Bjn(R+<6>-A5~X?s`fS7X4j z%$4St0M=2(O@^Y@<-WJ@t~>pWtI^l#r}pa}rSzB6eY>{fD)z_{C`enCQVX?({af3@ zxJ>O_`@1dj*x{oUQ2Ma^R{sF4Yrc`=-mC_qy>aF?MgdNj@~rICiZ0-wmbJO5Cc|(# z_zPE$cek#nGV&2hfK(PBX}P|Zu)o_}o#awKd@xNL7qI405Zv8?x1^o->Ncq9>6j_a zmn<^Kj2qU-jxKJdz!7n<>E{@@^`{HNCBIq5is7rpTSGHwDqQYW|qZ)@?gt^93T*LxQ2uHIC~_NTP|onW7_!RsnL*wc%SB%6DPZaH72 zcAfivT(3`6_*Osc{{UcF6#oFnIa0R+-I12$_13ri`=9Z;e;@ZxA47Jyq>RPbaN;p> z_U0Js8skvqtV!E?#qHbj>90>z_={D??(r)|gN#gBo;cJhl6sXE7dEbT<=$C57az9H zWFk^-_B}@=$4KW}J<6tHNRS%K2`-j&l<*XTc@ z`?r4YfAP3V6A@RQc2i&5jsw*AvDrm)+i50icH!#ZRee64zp-PlZeRZZr(h#-h>H~w z3y1M*>c;*x$4&EjM}SF+f8?hP$BMj?wf58vEH$rIT=0?mi`%4csByE^L{Vo$6Q~+4 z!3p?Yrk8}?a@79W_gK4c)YxduV!_UcL6n5uIWqAjuh2LjWn;ExH7nn7m7<;Eb{vCq zfvv}q6QZAi(!6T461N|CT#u9`^u6^0pqm<@c1e33Ytw7h@+Semn_|aUl6>cotul7(F9YT#cUgxC)Py;dWwXHx#Big%YS97SM z0UQyuJZ*4CjqmWHrNt0*b!N0^Kpq5jsG=C6k|vChV_{~swfm}M6B8j~7TkgXzWUda z@n1quXtGJe=rlb?m2Ou%t`00dAI`Tc7zy4m+=&+P_|>&!N1G}&H@E`*Evc;9+|gT? z-Qj{3zW{(99(o^z>p66qFn!zV*v@CN#p6)o=(Ye6vkQx9ezj*^uDnOC{XLGc_Pk;* z>qTJ4bI4xjL0$UweBSM|R!hK0K=@d6CbvAfUjqSQUDz?mw!3w#Y_Ub$qz9iHxzslc zSRSKNE6Kat*BPT5WlSSTfK#o8jdFf#>3ZbvZX(MAu;HTuVFae!!8-4~YDYb{t64jC z8pX&$gHK7~G`{xoHM<<<^^E$D^w=!(kcC2%D?a5{pkc=LAL^`QFIJuqdq35ExTrc_NXO7WA?_D2TKxeXogS7 zNSq&$2Fz?U2c;A#;bM7M6UbPN@8kAW3h_rHAv&U1u<p({!*$$@r z9c*YL#>1IOSSgT_mKy&6S_e%KRva`Y;B`M8YM?-6D}@Rf031m+BjN=(2KNDCr22)A zzzT{*b0D#|7SNNS1HynZ*;kG3HzWCLK+ba;TKXv>{{V=e@Srfg$i3~q$H>(WSJuGX zpZe0Ed&ofqjrO$%2@UOiNxu`lsDKUUe*BEpM?Nsk%{)#vFi*9M9JJ_|;gV?tR4Lg4YMcYZzUD zHDIM%S5b4}d+qmD_0hXzMfy{>$J{d6-IJO5Byq_@UrXqI{*`yGcD?hrcN}w%3`*Rr zfDeLzHLI@w01poRcR3deE-4A(MvOroeNFsoX}2c&a3uZ0IK{t(blbI^daXpu?s0$s zBikd?cDLPn=eF*ebu+!=x&>n!u#Fnza=LQy{{W+0cDZ``^k>i2{i79#S=UG7#1Ku1 zzuieITWM=U+kU0Tl|;qLqgdFrl!Bn?;wsIs<+oSDUT4(UUemdgjB#60X1LozG^O7u zr%jJ0`uFQR8M}T&P|TMvG?-3}<%E4z6x4bwA@? zopr;>+1Q|YOXyAQwdL3~@%$J3w$OWQ7DwxZ)gBu`jR{)V~(JR#d0AYJJ z4D!vFI{thzdzkWS2;vH#D|)MseMt8Vv}8xlDFC@y z5QbB)n4}{C^-@XQ4`VZH6xkP^GpJb=Sy^wl%nj?Nyk({XCl3c3viAv5M8%ohfJhOT z+Sb#{?ykQv7s=XSn-?MlV7TQcjxJ{8A&5w}w@_a7pJ7qi@Vk#~?btb}7Dw$_CK6aR z?5B3q<+|VPt!-r_;qBOy#g`EFNocsNipYI8ad1|==#?_a7%_fI)?bMJlm^5B5sNk1 zTFOuM_!@w+jR;iYq>fFch$i+F4Uxjj#A>nX-Xi@4P(YzeaZuezzTnXj#z{eM#HKfxvQNZ(*>ppf0w(wzj_t4h*dK=0bz&S_e7ob4G+@8ujwE)m`u}BLvXL1Q+{H;_hb4kD}Xva(6Lr@Wx zFgU2N1TFPCnjvx5forw3JB$AS5k)yul#JhT>Gx0;24NFedXuU0s42dvMqE_LUzihp zt**6={JkAF%8R#mmsSW^*j~ol>sY$IUd>J~bPT$mzj~Ntc{Ae*Y}COS52-tdDolSc z)E>Wgg>PM3mF8W|avJGl(ziM` zS+ zVSeUW*Y4R}#(3aT-qpZvmmU_blUW=#?Yq5`>1<51hXTTkfkzPEgx^AZPg?VD}o$S-~W02M5iWwXjs_lbidGkSSl zTjl;WJzC0kFML%6X5>dMT&@7{8frD`S-P1`PUNy1>JM9+bku$IoGO#LcRy))E0ul0 z*z5_h)5q$=p7k%$HcCqyI*5}7lt$K9P$9~2yx%X3c^>+$fS0AzP17?K{uI2QhOLQS)JH4ANYxFgS{05Rr3V+|dOjcsx-PXl5R#uaiwsKjvQSkAt0;mMtzmD}0#x+t&7Z=|24_0(;B|JgFCu`IVW5kYLl5}fdU%r7r z{2zpZK?e7rbaJY(OA~v2$ED~F*B12vKaB?n`P~ZHYydwBD2k4R@^Nc*q7cVn=xw#> zsG#8`?bBO><3v0UN#*jdf!6d`YOAC2UC!&};Xp$xDJ(^`)kgN97j}gw?arrCM<6~G z&$Gj~O~%X)TrG}6k4?YytZBAht>D<*(?ROgZT44OIeQ(I-WgPj?hnGO)jgSh`Q8}D zz#HF73e?rFbys1+mm@i3a9@_TtG|WPy|?M?AdsQ9;>tnjExmcK4Q*Ggjmka*1HHxV za(qVhFveJqs=knmF%6Ue6hZ6019#%U5;)R2||D1(pdG=XnDIr--qw<;uk&#Enj^ zbK|{CFnU6}D7_X$xI1*Rn<^9GYK=`Y*Znc{oXaSdR07r|k4tnP8s)zK0Ee%us}E-E zF=OJyiz0}fR>;JI*FsL#)1`Sfxq6~!an6odiU60m1pU21BwYDcVHJJBAZS!8aypN* z?bKGKEM{_Y*#TKMjN8ls;ay~Mw2}7(i_{M&?SEGOKfgakUMN&HB*=i^_`@ zxEPXUX5-^V3pCEC00f;+fT>mVRylk>s6L&+jwOcJyc*m7SQiXDZ(b|TYi+cw@k(1x zEpJbcopS^BOH5=sr~q5c9<&&b-Li?<5@%}(zP}?s^yhDbH$S=LtV|L} zk{Fiu-3j#kcyz68;ib3I-J(q1-GJ^0{T#BKW(M7TL5IW|n_gLK9|am#f1lpqED7QY z*@FSlf;X&WN-?jzsUn^x&lG^zqpkF{0Z{TBm)6@cJuO5@hl4HHTU~r89#vJ1^#oiC zc>E{=>k~+~&;hTVs5yy@FB=X=QT|j9xzx8opdK^>cDA4uCf~-2j9uF6C?JcHPX1d} z!W*Dlx1~4Nd(Z`6i~Rh-YkUVp(HKq>!(=GfBuWL}q5!;bIr3%CV zP49EkftMr}9)M2A%82MB=BDS11L|Gp=6UxUg=& z8Uf!!sIfLT6hpZnVXcDgrn>YLS1Sf%rG@-ApfNji9Xe1nk+>gi^fV6QS|m+pn) zmdrHst;(LMJ&U;F$C8U9*r~P6O{FDz_hRoc$&R52U_fT$pdZq_+hx-YEHbo3<(^7{$FKMC_A6iczJ47lb5Q_e-ImK{&bF$XO;b9`((((l0u*lnl7&b!F- z?Y0qS@28E_-Mm4q%^dFPJnrc%hvvC8(o8vRzEso7#gB=q=V&{NnivSF{{RXoupUeY z{b@yyM*X1dZQTB`$CZ}w;r?TTvA0U+-EpeNuVlup`G{o$L3+EI@*H?`-6{@+y)PBj43kD?w&*oDvJ|ui50y#24k3aD3w!QrsjRnPP5h1gD1k``V}4s| zZE6TI$EaRp1IyL+)`LUZBpi;7b8&0=+rpq&w3XN}-p9yvrBfYmHzD|LK)r{?i0N)o z_=30jc--FSS_=k^U3jn@9Ba_jQm9XGCC;OW9W6mEBDx+Xzzca)LOO5*`$psAMMVI5 z_`e(cq*jo?vhzHR?WO1?D+l7O>FGe>#DGfzLG-Bp+JPh}vIYjscRepaYd-+MDI-#R zM^R99gOCFiw!8lT3ZTr^O9QV$DgZN{M#S?vYIFjqe<*~4=azuAx*fNu7m^8&Qb$dI zq8()8eZe;b(MsA72=upK4+;eui=9u8T__$nljYXb3JER(-q+Nfs1V4Z%Ijfrd?*?N zJ2yQR`U(T60IiOe+K6y)ZVA@f14TJUr;yZj6b|GCx_MAh_h`MT!<`afY<$M`=j_+z z?C9S!4CZDvnA~ZupBkF%?P4Fa*0roP-nTYl#TR?QX|)P|&HmF{_rlFt{Ewz`vQfQ> z408=Z2FCp>bGr$*QZH=!$Lo)yWsu}Vy~_<4E3ToGc^{R&+Ux7C@z2+7e^}P`ul$R| z$||BSW>s4>E_j}HI_fNStbfJ*Thi&bnz0|g(rL#XQr|t>`06Tu#>3gC*3)m2kKW9g z7$@nI)o)OHDYsp(PvCU_0EMsRIv?Gh)jPlHaU4fssr5Gd8*~Dn!&tvl@lkuH*56Ky zcFT_yn6r*VnDsl_*X8p0QgqgThR>FIZ?C&Zj?v=rko>@&n%>shwK{5gE8zXYg&CB@ zf-75y0{iJ;Z>_6Wr1goT_eZwlFj(N^s#K0Z8`y95Rxj7AZHe+E{{XyQwM1zYav+Ua zNmoCMsL=G%pYf}e-&m#3{mj702ixTlC5IRFaRsgl?P|LHdd=_ENt5+#P6I63>@?d- z>pGmTZdG!9VePg3@HM^fd*6MlUXjlBn0~4E%QSKZZ2?_26=tyhR4KFHBrsV0TeE+i zYB6@TVf5$I**(Q)ovtEH6Tp$ZV{Xq^POh7@RQJB#adM1c+>_}ZM!RdaV}|{HwNsEd zx5K4Y3dlrv@e~oC!l*tBZ6vCo63j(_p!!?(m+AOBN7Ij(#?#I@yB)v=yj|Pox@!yc zY=^sjQ`~-{AMA!~TyxN(=vuS46AIo$tR*Z#VtjVL#<__{Y=pN_(<1&kwcZ*PgQ1nH%yhs?3E0Cg7tjqhqHL}W1b+T2g6PJn~qQ4Ve~ zqw~-?+i)nR4G$1`003e)wNxl)jw2d+yk#qKMMGjC%76nk>Tb(L| zXC@%2u(iqGUbO(<(u5!;+m608lrb^ibwu>%bnsY2kae~jsI{kJp<6mhvA zH};LK@u;ZoM>iN46+OVE?pDB)adGezqQE$4Li6Eq^L3~hk7BG|+==2m zY%0+#J4R00?Q_@RSyS>~^6%9AwPGTwqQ}(OyA4uLmPf~Q$YgyW6H>TLRW@JTe$H(L0UTZM->$YGA5F3I%?;2&GChgI>S-x)}S1S;I zhm=&FV%)VpMJNB0nsaNT5uU09g zkF{jU91O`eL@H!Z!pud~>%T!=r)HPs+I`D7syy%ch>IpxB(S!e{n(0;*ITNQTg-FY z?cc&6!|t;ZV#k%p^?Ff=w~g&g#|!p0zX&;T_b89&MA7m#7Z%p1v~t_CYFWEKcaN99 z6UNE&qbUrhz=O3i<$bC)HV#zkSTCd-Uanc?2Pq7B4-r2t8LG^wO3YPBHyc%Emm9a` zPT&PMI{-DQg__p0vHc?+a@yyS zpobu`18yLZ#`=@yDB zdfXFx{qz8gNV$_1kQP!D4S@s$dI^k*lHF70`Od(P@v4qbY%t`cUqn-3U_32QHdjD+ z`iN8NBTF8YLPs6RB!jJk9qr}uqLuyQAwVvlgadPLjSwj%FfyP%w%UNHAqMTG>`1jm zHO`=_+#UMqy-=$tNSrcU*pL9eo^=2tm1KvUWE+kA2>vy2jx4+b?x$eaz0Cw7%w!D{ zU5VlpUc;`ntcJh6%%lD-Q-HWVP47@L0w0qGI`UEo(2z*C@TCzY$W%N;E<{>$L4H>k zBkZjSQOy&{#J!r@D8076pM7LVhGj8;E=kniVQNrZa_r6hm(=;viP51aivU$d=UbCm zP-lwkV%Okqqr$AH1j@<*4z?r&C&sk|xCOa0`iaz?JStG9BJq(O+f#8<0j5hJ97zYm zY6Z}X>3*Ycx`4{(mmqkk7Pn0(9$gK%-ra3bA-P)veQejNJ5CoG5uv|IDe7#t9<3@e zPHw%6V8dPd+s1)I*@)b9q7y-Ke-Zm= z91i;F(t(_bJ!lnmMHknp@SrXIHv2^bgRdV}{Y3_MzvKRrag`AKi4C&4aW>Jd=hnIJ zu3nC<@xml>p|b`BPSxkJ>y%&seqK8d>q93DRW1n^*Gu%$rE4opNB};OuC=)5YY+R0 z*;Qp3#X(6*^w*Hm+8(v(>)VIX`aPMRzbqfqSW*2u^>!!J7?uJu->Jnzqembp!*#xf zs;fLq-e5MM z`5J4rcGqQB*WIhOA;@_^Y2+o|Lt%1yn&~aOB%C}){!_PMcKnoxhm~cK5k|dDj+N=L zi88~w=1-LJlVxMAX^GXfs~j%KT2yOYn%8FYs_&=PZMz3x7}s(x?eb}I2UA@4-PZNV z;i<;$=>n2Sxv{wy1E{#KHrr*Xt_SShzBkNynJ!lP_yB*6XKTY+#kX;lJ%i8T#EpQ{ z`PMa!+r!KLtLwyAAHqBZeGaFCxsr)BzPAMZ_1Wb_$eWWfI^S;#Rc6!sb_DskabrTI zrJ2GY9%h~*J?pZ48TDUm?Qvjsw1*NYR2+<#)>iS*jXbN#zht+UNiezkYxe&D{vJol z83s&(3rWdEu1#ZZ%&d(@HajFmkcW|hEDo1Gb zd@2D4FDN{3!%%<9s8c7d>@C%3raZQ`wjDs%N`PiY;zh_LZa34$ssag(3di#jNj`V` zYL00ckrR+x9=n@srSGK#Y~sqHV>}MvTI21u)PW>oz#EYu7VsAEy#T|<8cJH+K;)zl z2c0k)R%rof-stz@SEibq)eMd~VvV`EVh)xAKtINUWI<7Qi;}-H9cU)R0MvYk!>wkC z5y}A}h4>5YMF-zQF|%2Ys;95nOd%#kVaDU7{I#nC*5H&|4K*Tx@+zv5rr+H_$e)QJ zjkMm{eUzZ$!7aEtfw8C+9x|m$f&treLBNurD6#Xk6!2S*i3eN%01-rU#vEUjfa%tQ zxH`ra4bAni=xPV6qqh35N(Z?%0ZqOlh(=}$$mrLin;WrPelHVLJTnbjZ@PiZTZ!ZL zP;e&3`}tHHK)An6s2{H8h#I#iZATuLpyg{J7TD2B2_B2-zO+O6dO^QiU;JnXJW66{ zqyeLQgUDXs^fXym?A&R4PH2hAIFjj(``b(LJ{GQf==F8)o)%cLBMvvenL3K$W4>09 zBC>6AH@@{SnOb2-WIAd-`mrjzzjoBk!Jin57Yr1QY;A76Yp%Bq^>%t~E5_x-k|`e* zhqp9Df<~5Mw&Sg>UZ?7MtlM1A1LMtzIpX&)VxB-%G67`+m^UQHbG^D$Uha>5c<1zL z`%l$BTzw6tgojgOm#E@FBUlEyRGmMX@on^X*7#UK{{WGxm5lOac5KDSKy4m5j##v{ zi#s$-zJ7|o!}_^@#NK>XQ|f=+&#e3895Fk3_Oy(Tc1avcY)G>4Wk4L-x35f|Thr?H zS;SGS*Wz+sA z7>S98iH`_mB4=hQ5ZLqv<$l_^Z}@fAFS}1`UJH=m1O~&CXic;qbxpRz%h|p>HCTAO zVg-FnZOc!T9}R_YwZ=@Q@*1j=ymbzG_#KUNbW6mQAd86An&ez>@i*LctksBp%R7W_ zLBBveY%Q**O4gd?ovX`!qV8)nr4W)7>-_Yup{BTxo!h=@f=NQD@i+c8(ZbYt)t!JF zoh?=~m$d%F{V$Cq*}dN(0~}(o!bk?rMcUWe!qw*c8{>xbk7t?nKp300zCyf>nKK~K zzEi2H10?aRVPia)ZACK`B;Z%oVgLl*`|m^*qahf9p!@{xM~xKqvRzSlu^JAVQ3^>& z3thMy8-wTPLC!3$gIf{Be7KGJ(LqNMpbf7gYz74+ z6;!tu^>o|eK&6y`Nz(cs8Vr|dacvIgVK#lhBd}d zWzGFAS-KzgX0?NlkBIAB_SNarvn>V(aaSW<8*e)0W3E@YxkP9@DB)d(E?|W=0bB$dX>u+{};_CNUXe1f$fb_EM;BMaL`D!t2}onVW0Mo?ooHfj7y; z#+ce)eS}I`>^P`%#lsI#KPdRsj(_nqz7SjMri&S)i?`w9gp9`@2+GRQwXO_^b@0^Q znMw6^&Tdp4*Xqvc+~j5|f!O-wBbzX_lrerp@drw?DSGwNVk(9tj#g~uEo%irZJ@s2 z3e%o55UR8Z=7ewyXaDr`=wzp0}63w+}g+Eu>~*cduR^3qTy?VQqXV8MP^;j}dIA zlqQ7NvKS}fkG}g4avdKJ*dff3};48uQE_QU+!*F>dWwa#hFI-vx%QWNK za$|_g@vk#j=%Ss_9vjD*Gwz~8* z0(T-KuPy#<%}@oEkaKZnzfEo|JSd^aJ;x61WjcE*GjC~-d8i~QhQ%Jl=q z&cfYCiSacQ+xk9kLfV^YdZ>>n4%a5gHc{01&;m&vSSuSg-~)XsfiOug#9i-Vch-PX z4l^amI^3ulA3C9Z)q-UMk5h0qze3c;Q0I}vo<_pg+?p;+5(P~yt?YO8RJ0Nlk(ibv zii-exRiLXK`FnP~v_2=wpd>9KL|FQcqwe#i4OVFu#dwprI?yK~$Se)i>U=7PqiV%T zEq}9GB1!oNCDhbXL<;HvzfZD+NJR_{tToW}6#~YpODQ1ReKnv-2;!^Af<>-$KV<W#gxy+Dm6w9>QFX1>t4-nW9|Jv@-p$al}uk$B1S}v z)&kZ9fKN*esfW`40FkA+m0dS}B9@Z>054C8tzq+fe#H1(LnLtM#JiEG zA1(Zjm6wk1nz+GfCQxHfSl4UX+8V`l)vN8;7eVf;@j9D=#EtX@y!&kHB6!B&d68wf zRBeTTzkvAGGOX{^J=9}ECch}xz!QBwHQTRD*FMeh9zou_jG0+ZN!w4lz52{PX8UHV z!M>HK=W0-qaUfEk_jH)cAYGg(*HUrEBaKTY)EUZYn9%@JhM?pZ;k&AEuTGuW7C=y_TFuXY%+yik` zER&%sqe%y+(sZ>j4=2ePFTIVAUm-wv#f6u1<)F7pihreCjfVdK#-af;#zkGhEEfu^12_YVL7 zRT>M9w91B=L9Y=O0_Ija3SdcwP|8#ip?+)lnxOH_<6t-eZ8W`10~sB*HYcS(JL}5# z>BRN5Q1w?QlUyH-0f$WpJ%7fc9IfDPdg(74>ag&$?X{{*kTvVNhhSd-! zEN$V?invi0ORtYwAcWZ4rLHO{PFImt-~4KhUPTxw*G*`J0hYzD;70WnE=*0w$^o^i zp?#$bVRaVe_Vl8fj_s=rS6U<>WcLk+%y*)s1F$wD#-bi|Yp$SSx|MpwloU) zkifo?&GzE8&wkmfuU}5vDLdvQea9G_q3RZBh}{mt)#jbo+b>+{l3`!j^ByV29Kfrn z^dG{&bqB3?xU(^d$Cj@d^cv|{!&y5m42fa5zwx9Q9{&LJ;%BMkyozcssQas~yWuXc zHSfPfD-vziI0fCrEYW{8vg(~={Jpk$l3sVJm7#M zH`Ef837$o7pD3lc$M0qN4qsjoi!yX&iBovcEfm=Ggh zoZid_j)2z;wU%@0F7%k`z%b^-@m&DdLTogynroEW;pBf-cll*^fmq(;IUXSEUjDr> z@OO4HH)ea>ljB`pN|L2vUTv%X74z{mzX*#Ytn68h*!8UCM8QD$Q7QaRqfas^74`-o zRmR4MDYC~H>NE-m-(NQQc1TWYjDYG-r_bX>6&`g~EI~^ffvE!8XnIi#3#$Opg2d=n z`dm;*hDJ99k0mxLD5*=To+n-Gd?+JiaptTD^=>?p z1Df(l>SJN37BmP&qfiupNg$oT`zoNyVv;2wpG~#7`^7~|hF*8|1JoN^UlUTP#I1rc zuw#F>%Agy@k^^p5I)QzU#(+{rQ~;VW+>h~~Xr51$fK+II%f_lI@-hSD0O#8vax4y> z09J&*bSjG&y{2zHMsR1hM(s_703=_d)S{z9WPWOMzO4e<^<@wwfxQLMP6de zQX?V-khu+FeqHaIEf|X)l!3^^k5TxVls+jC*bn|*H9^^w5n-oFfwyJ+R=&p7 zQ23dRfIl15QA0A2FK|DP+dxzxsV8Hw_|youTUcF2i$LRW2ai!e;UhPvP&`4k1DSs> zh`6_%2U(8#1sVa?phwh(+sdd^1h22~mNhGrW22S7J9JzEL}ZfdT7t{3?-4 zDrgPtRNYA5{*83ge_F=+<$2n&go>f`BSU)hIZC@&gD4}el@}&Uh6x^>`cTLc_H1dC zf`FZfHzM6?ud<7{eGA)iF3A`|bklR?Zz|WdT>e?c{k30kdO$!f$n4KTC+@;~L*xe){P* zPere0?Ec(}ilv)gDgn7a3me+G@4Ke4x$OP5AcvE2XCE$r+S(t6mBQ7^7u0>n*oEUP zc}Z(JokhA2D!RerpHuho`iW*suPggOzHKzUd%CoFdwU*#lPgUtIo*%Oy)oe0v0;4ZhtdqN9*G6Lu$79SQTI3+@Y) zJx;7VZ9puk6iQa((gDB5frOCCsxBMUNvas-xq5vzK4jG#h!~Tr5^t`Sw@s;(N66$z zZAI<}kKI-&V+j-mLtOx|Uk{Dwg2QN|7d-BCYxJn8Y6_5aC&*}PDruami$`zmwY2!_ zRRd|HXbhZfAO`38=}|zANac-Ni6Of9d~0424p#_dkw>Jr5!J7^@vDHwitH5uMHb|D z+}}zGqC;>msqoWF*k~#TPY4Ve%XS<{I^V?kQV7!VM3I$l+vsn%Q}CdK`6?t-l?zBN z!N9l-Isv`xYJ$r&p-5XZs0>Et$6{&-Pu!&gl(Cq3Ge$XTxBlQo`c=V{n4~vVE%*smKYB%yU3g0(2(XX}X1ISXGmq6Y-8e}KS9lGmlZT8d39+DEG z`jNOEGz2=_Ftb}x(twdM;uwxSC?q4P0B?HAh`F?Y>G>Ra0%0wofXZo2PnWsqaZ(T6j|t{X$AjjP$y*5%vThnMB$OP48j z7wA3%!o8ZzK6d+Np-Uo1eg^H;ygn7Ixzs0no0CMLm;2}(loFs~gfQqq`>M4cTXwvZ z%j~_sDmL`ZjSCBS@gLT{e$y4!Cn0}B@v&e75xs}TvJb(1v+Cqma!>T4k|{08c?-3e zC>FQG^`I%qPi;Jh1&I_h<~wM>Y`%rLZy7<30# zC(fvgl#&SIyE6b7m9?&Pwe8_oC|L4Q(MV#5`U7Kg(EKPSa|%?Iy|n=E=X#2bE=!q6 ze@hd_E$?zJC?L$)5l_Iew4|4k*0!I(DC^@|kq}l^k1(Xl?ibV~*2PYPQT=Mz7;`3% zDtIAaLV@dWLW}A^Z?>2ZN!ue6+sKcZcDobmQP%owDtH%B#D>J`!|xR;oXo)KdvzWr zsP05br%ec;ab;6>9LX9VjX>ie9vs&LUw)JokCe#4dUaf7Zfh0Bk zJhv7G)dRz*79^57(FR6SZ8g1!qNO7%4L82EoCIPlJa0hna@M_;-6%QTNwCw9)`$}@ zRD$iFiT3{h z&FQZlQ``0URrdb?rn|>}?-@^>nIv7C5yWugM8#fq02XIqvh)FK%lAIS>b{yze=m3V z&W*muTr<$b=Adq$O2lLN0vz+N@LiXLxLR#4LE7EZ5MF@~>96 zGcHzQwfMcxIb#G6PsWA?8OzGVi-TgKk#HQDadNfp2E1>7zVyk86K4=bv_fnGj=Pae zt^)mf@vyzlt*z{S8lCBr)f!x{b*@^=w&KiuuTgLV2%`HvFs`n8 z5_~J$ti$K;zE#uYugMmR^wLdt^UJaKIx5}Cx*Ev1em&$$xXJmjdH@Ia$)#|tz&J!#)0YqLKJ$)7CjBR z>p{p=1xFWU7v*gUzgu`3qo95=UDD;r^xr^5Q1)hNEC#na18_gU&;^ROB|<|6-MWso zM+SLVrTDQH;(P@I(aNag>*8t$I|dxMo+xa`�gfxmIPlP(e2~warl>G76EP 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 literal 0 HcmV?d00001 diff --git a/SpringBootHomework/src/main/resources/static/assets/images/users/2.jpg b/SpringBootHomework/src/main/resources/static/assets/images/users/2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0fc35cc4d6359383ab2afbcfe1771ecde2c497f2 GIT binary patch literal 101308 zcmaHSbzD?mxA&PDx*O>sMH-|*7*dcLx*H^h?q)zxLb?)k-0jWViLTLmk z$#;Iwd!OgtKi>Q9&zaBXoPE|>JI}08mvUf}mxIa%Ne8)m zxjXvVLWA7hJba~t97pr;ihcS4v7yNJLOXgdan}?;GslXB))t;miJS3CfPX_C79NelDIK(0?S_ z+Ijl>Jz~T3^#2aQ-RnPM|DSX9KM1w7{{N)z?*B}{zr_0b={f#)fB&C?eGP)W90m0p zeLeks>>V-W?Ef%(Nh|p{+WL9=7K?v+wjTD5>dKGUFmeQ3TpXmu6-8Bq#l#iGr9`BJg;m6*q=bZ&CB-DA zgjG}|#FWMU&8zHb@9*yD;rDM|hyUhP`d@kfQ3!W0Ov}oSJ}v={4yrz$?$Cb?T-xP- z?~By`D(}B|9sc*eDEzOyf|$+-{_}bN$LIcc6-I~tx&4pwVjljZ{*E3Po%g{g_uTCzf%AHVdwLZ<0x7wU9@RH-<}3fnUfaN0Wd}g7z-N$ z!3H3h)#@?6m%`KaLdj?ARYt`9v#G-z@?}7*a4fgdC6u zngfG#Kf9p{l>MuUiJgScIab?LU;x$7Siwd-?k$&l4Q%?T0!FH6iF}Ghz0x;j&zU*u zxWT94AswX)w&L^LXVF?bdG#uVX(i2F?VZaMlJNr!zo+8I?ZbVMqO2cc=e_ovv{zw*YH8@Xe`8h-&GHKQ+9rjFprb~2#}1| z!*7kA0lXE{E?YexIRkH=r;FPIOGW7P=KzjG6}C|23R3HX^TSP2CXFLv^E1hli}Lg z(r{2{pfoWyW*tACv@Qd<6>;)TP}pZ<+qOSo1dZt+c8^S8XPD1T3k{wzLbAptOlhUl{z# zAqlyOg(JgAuu|Ej)to3Wl)j?iqXhzLY*pqnHh;lz8I30k-_E9z;AN8k(!^P04PE)@ z3V2ne^Lefk0}>-y{VcHnKmanIgeXLDszFI-#Hc`@9`$e#K2rn@v-P31CIAqvj&`dI z9QOhJb9yu6JufL!sO{a{x*ak1lE&&Yeo8 z9E3zCHxnhL{*>`s9tlYYZ7Nbs*nj+XF-0af6=g&GxjY_JK9jZXJNv4S;6n#7&8#RO z^OyNW8Gtumw*d!Bp3EPH69WXp=9zB%;r=Kr^2>-^IQR*2ce55?eJO%AKarWl2~wgT zHcVQG-5KMMArb!8w|q5~ioa}NXec3_IEi9dXB>WTA)A7gt5KT~0zu;HX=_K1DGZ z>%nm(DEs4&$fHv5m4jePKETusEDpb71X>rDQyESEv@~yPVjIx5Qvo|s;VOU^&e;)4 z@waS^3-Tq&uZV0E0L{apdQRIEa|h%D&{zcyi(G)*-`Arn0mf@KbV@%7#2xOmy$ubX z1otY6p@6mFjUAl}IEdLQRaOFp^Ogf38L2>FB@1Eqb%+9G9)acH`Dp2FH4@HoCO6L( zA+V4dB9R_Oc=#c5eH;mSnIJZ~JBy@3vSTIZCN~3e3u|JN2eL^*k`+HoP8MfCV!V;fg`Ll)=08hiSmJC#7Hbelx+qh1EYNpd} zfZSZD1BJC7uzryMdywQ|G&FCG*grvGCCK|jl*bji>-v}^CR3e}lq&X22ZQ<}=A<%K zQE^8}Gy6rQfcP^6Mx|0sFte-oXZZ{Mw70pDF2|Q<`qNa7PM6S@xJFirR$Uu~ zbI2sX$3s6WUJNs3I|X^F&rg%_rR|6_anmWM71})Wv%SPy`fCu6llp3Q0GPnqOhkmQs@-sd3=>7zPIA&ps9eCTuuj5QW}PB{AL z5pF)fk*f;c>6--iQ&d~l$yR`2%KBp}nc>AqGG0jn3Hpp%1EfD2-x(rZ_1Pylt1guU zQ*%epOrOs5E}$^y3g}mD&zvkGC4CmpQMmWaF~%QRNK$7Iy$$_5WjJmUz(SB1@VgKh0FMJENPxm!o zn^VQb&O?tvp=)J<;6>J+f00@CuT&#MY4PC0cV~0a793gdMx#Qs=5tzzhmwKy?Kg8o z3H`gx`pL4q)#!y;5Y!cyXu-!hZz z9gb=0AH5)d%oOs6p|JLe;2ogVE8-f`uW-BYd!aNfPtLh3TKx<5ueJ`F&d{e60Y@B$ zcR*;kLD|Xa`7P>OkVDVHip-&#p_{;EM={$(#*3U9H`9Lm04FazTq`sE)`dtz`g3Kg z+;@&gIAB!#ekGmbtz~i9*Kf1m$uU zOG$uA2zbX364l0lDBG2pS3!j1(MgriI4_5#57kDG#(F-zwcVa8+rAmF_E5zg)q0(u zsw!rOk3~3-{5VQ;S*v9!{79wszW>Om#_%q58m98$6ry$Vh{q*M8nz{j5*c3k>br{z zuU(VB*>O-8Ce|80`ATl$(o%`Uvhe$Z0&xSlg9Au1vEdmY7JF>V8A*Sp(odh!x)cT-1|{jDjs10)5A!j zBs>}{IF^gTx^1;zIhfC0Q6>2VPzAIXpB1679PCyz-kJfwbku;wD|)~)rh4QQ4i=tS z(YTldQ}YQTSXjycFQca$eo#*s7CWa-N)jNtGenq}hS}@M&8=R%jY1J@t$E;kKb2nT z)90XM8|X=VXI+b@C&tz$pzUUkFhKe;1tnTP(ZqieoCv7SAcX;m`;Oc0hibUW&ZtD6 zDI~=ZcIPvDA7^0g9DAbAe7O$}l72ChXl>~Xn!&fNMVA47@OP&(yD$n03hXG>kf_oc{x?JS4U79*wCZ?={09V%8asb=7)_hgx2vL%LdJwCN!+6NkqWB z8ED`U2h!G4`0jai9M1jMhn!OpUvbP-Cnw~E(q%~W6oX3JtlcU-z2j%VA>S5#1?M}f zCx^qVd+h_lJifo)EBj;R`F*@9Hd;>ULBP+5$^Ptq|8?WPax&dZJ#6wt(&pO&(^v6J zPW$?z)~y4v7K3tTcK}?IjiX{@h{e~euUCeLDX`n<+RSj!;@a^J@Tj2(;Ggci?t1U& zu-WVXVekbB=UK0tEl*?IUn$jfj)b*Y#4Qsq=b;K=tEtay`VOrB;DS=~_h#TivPrv3 z)=!5~Ls^e|e8t*)T6_NJC*p|SN9`QB7HlDBHNJ68k29w~eFlG|N_$MDdmBB*uENt< zSA!E>$r9PnQAng&$u_)SiQ{)%xTD45eP+nW|3ysQ>~eeCTDn)?#py&v$0hxs5R|~! zs=1!<`khI{tlZ|qcYrjqW{AN9VJZ9Z@w8Cyz5@R7!xfqPUVHhij4uo3y=_wClqRyq zURi4kBcIgeEf#bq+Q)wx_1%J(hi$)RD^@3bZkRx)w(0AhQoi{@(aRiyi?}B_9hz zNwuaA>4kCLt&B9$dP_$vMWXMmtA^Xo1kCsk&InP;v*PVJ>mHnnd0_M8ofL7z1JxMle>^c7y^NWc;>az$pG)2mnJ7 z05r?r16!bw=bdnh2l}T}uzm*(I2aGDh*O-34+R(qa{7wmViN2v6G;Gg&WDd)!f~k^=602lRd13G zd#!memNuc)Pb7oCGy|dqAWF-#b_J?P)Pa2C0ID&V8+9fHe%mitvXd2FHfP-I%>$%& zZ7P6jxr`*x#2uGTa>HLnPXTKr*!w%~6NhC0mGfDLcuU_O6s}~d;u4`B8cAGBX-hqO= z6mKhsq>*_@C)hC&&g_N&>}BsOK&Gk%exMH~gv6gufcWqftu06m{xMY_J0cMdZfHku z!(z^Qdd;9DYp{luVWcFLZtu(_R&Y}zjt;(g)LDv%*|=fd$VcbT-4BrQEaIwO_d1BE zP4Uj=3~Aos5``pZ&o37Of&K?NFJ3w%-_P}dJ(sLu(E}kGA(H|DrO(q89t@|Tho2E! z;nm9y!*=O@Fi1`!f8~+IM1G5C;XKeBi1c$DoA5vv#O=JAdY@XfImpayCKixAHeoV8 zazMjV{O#><%;M>N3wHeFs{$IuW>NyIL>Vqd?kSp%595!6HWbIDVq8cIEBtCROP)mT zTZR<9eI*QeC_^cy8NBf{ouP^by0wG-xwRYFYnAnNuXZcf#DO~BZJNJF0v-CxPqX~x z#9mC`dFCadD*mc}@9|1mRUy~RTMu#`jn_`qk?x^O3;CI6%U996e6+ZNX#bbT*6Jkk z*XJ8rqx_Q;TETa~#z~d+0U}c8?TC_g`9)ZsT9?oFqS0YKL*0#h>^T(=39KWB4fC|_ zvDU2Tty(r&1y2sv7eX`aLM5NdzM-JLkWDMW;(KB?L}(7zPO3-i4gG@Dj=yKVdA%^y zeq>vv@TkPjpzF1$c};~B8Xok{o2`%BSo*w9c_%L&eRc;h9*TcPrhFeNw_X~Hbhwm? z`$)OHZu4p6%W$<}w}BsJv!oEq{l0_ll5PjCFeNdOB@M>UgdFd++SqfWP&DF4b;*gd zC%Pw{NmpcDT$&GkUmQ1l?(*+cF z3{~>)fNQsu2zyj(kAEAZV_0M(U4i<1_=tS#Q9Ax2H>V*hj7x;zf+4fxX!7u+YNqzm z!TW~L=-^)X5uKW_gUIvD<|y4@27Dt8nzgPQi5B>2r@W13-RK?Qy&pVCDW?KIb8dR= zmdv32WKIGyFjpB~wV0eY)vX`^NB?_oPyKG6?_o~cy7f` zMFDcBDNE4KLJwsQb*$VcFZzc^b{>>FblWt04Sz5Vn@~e??*-#3ma?dI|BZ|VOXjh_ z8`&;z!U9kvEpgod5i$|u$ti2x0k1H2LL&;aWQLS1fAL8VpjpQtsgoRywDL(%NlJvt zG7|q;ejrUbu1JBLA23QZwA})wP3m+G>;?iBPpSIAsFv$MD$tT)y?X^nGA}xS3WzLq zLAb*J1F`yUz#Aq$H3KYC_UcX{iMv(LP&garbzN|5>DTx);Pc6X<}uP(#%M5c&(BiU zfkvPEI<*xb*d!3Hisax3&=v__mZJi;44Ue%%~BZ^i2czvvfN~Elp5&sU0zDrzk^ih zqjc5O{HebwdZEBJ21#x!n=qWO5@eAqpI;Hw_eYa<`8b36ckI2lx5Au3mVOPpWiOuG z!%9nyXa*uCX9osrCCOT$6%Y*2S}L|DPYJ{8^?x6L!sYKk54-}0pv?e9(qAx~D$tG= zm{^j;m;q#aD%z)-3Yyb*WPXao+7k?Y7QO|lwBm?sQY}qf95_2dyMhT8-ex~e>OcDi zp;C?OqFH^+Zt49(vIA@k2$JM;% zI#^dWAH%wS>i%5)5M%i3r3xPu7pzL*O@3@!vS6=t+U<69BIbfK!|al`luu`SZaOQ& zJ`TdF1jvxPBU+x_0b;v4oHUJwdD+K0SJA-?rt#8^TL`Nv4piM)&i&>{hpQ%~qp&w` zo;wZq9kdVG#Xa-UY#|?=6XzfVRJ`T0X0K*^u@@~?1Bk4)V`Gus>HZV@-JQ5&M7JA^ z8^JGi-|;Y8rKd1=&1$t(w`Bd^o7-|J9&kPhbNg`6-AmZ6gxgKEWA8(yW*4~jwb0pn zll=tavXNX$0@ zn}-uuSGRCflRg-^xE-?S(b(D$v43q!dozCTqM3p>)D#P6Z74c6D9^Os!?>p`$;mx1 za`6tRVw+C!5f}6y6XY37CpS!(ND-kfkTAD!P&E?G@G6@fV$S`RC(6Bk9l>14M%~W8 zg!AZ~y#kgVw>McAJC1dudV9yIF!4{^*JoWl*&3Z9NsN{s8QKFXe!ruaVheb$*V4Td ztk8&axqqp3GIdsCR9op5*&#;CotPxrzEBFEdFIkXU;g{fdCJG_?(SDo%w524#{clW-!@3Psa*Knn!4sNPDC;Bwn5_>Z;i%%%JidmI0S90XEp_^x}n((H_B#t{jN1c=h{Ee!rqa0fMa&) zxH=)-`SPMkOTzH^eAHN^(J4W-1hq=Mzf;C}!G=ha<4w~O6y@hx_$T~Ewt;2pxv$zY z!(ub&y*0yRc#$sOC*V|pPW2tNz(+3o`8Gd}d zrCD5yiPqQE;SyY>RWrPW1hxzh6sg)OwXb9EFhM6{J05?hDfxNEy6O0%?S^-a-Hovs zjQS49TB-#RnarFt=}?|G5VznP-l*%WuA0L74Rf=e*j}5x=K^0=))GX+0y8A&@fRn? z8M$XvKi0p!jGB*JLKJRTp3kjUme*9@E;*>AKJ1atkj$aZDz=Dq+7NSLO&7beV@yoD zd_DTRGWZGGwj+)CDQDP7TXVbQam2F4n{(!C6H4~Cr70fVj%j!sU*lmjN1LNFvf&9i zt`Rv$JZghY1r;MBUov^N>=4Y}YU5P~f(|W?9p^>0*uE z$2CNJir;^+ux2wRi)`8tjWRNLn`VL;Qth24F}t$OQ9VLnJ)n`?JsR zjHK5_%Y9siJ!g5CJ(ZU?DPtWTEaJGgA z?toK5qumeJ!Jd;wx?z+eYo9XOhCc68k@CroLXkf|8E0qDsnTwTJnzmrKoqFBt|`z- zF32v1UL_PunOc;{Ix0KfdsZRNuv0!1WO$l;)UVQ{r}Leoea^yzlzK{N-qo4(+nSTY;Jh`c{I}VL2s4VDPAf2x2^A-H`0(Y zqwT2`=H08h(zjLojS(g{BeWErQgeCMb3TNIz?;c^ONg~G6LM*{SCedLPAUyG&UjtFZqwhP-$DfN5 z6oHpTf%oBoDDdR+pqVp_(5G=RDw$fZbCUJ-UQgbk`b$cCNB2&8;DF}jwxAibq&8;{ z1AhKe3IRN$8ar0Z;n;pck{ZW7ttk8VqzV}8i}XILJz~jKdJ-}qTu<7*!wq6cvw2}8 z^A`?zulU$Dl*tdJgtRar%xJ)X!GNJQ&Zor;6w?C`)WVIwOo-l3Pu2w!{{tV%_@l51 zM-#25HL<<78&KHs;i{MWFw#`g$!W6pS|cx#0B<7PlvseeMr@@5g>5(&zKvY93|x%D z>mybu$MusC1^Co0x5$v-z{^Q+z5dy;PpHYQ#J^JF!^rjI)9((zkM z{X7c82VPe+5w5KPE@zF;aI?d*@l2fiUO>|ab^<#7R9kH{yjYBrntzo0lPZy&X)oIC zE!=+9>Kq#D{y1mTNbh`SZj{M@+Il~Qmo$*=K@p#A0(|=uR=a**)1?|Zd68JOme*BT zhGb-)vztP&y{d1}pF^$$Ub4?4%P?Mg9zweRMoub;(B~%yfkGDcpwQ$qCx+v8X7ibx z%=z$)&>PhLQJt~B+N?fb(3+-+-WRfUHW~zEFl%7Gv7tqG^ZRl|Z1ti?C>Ln|H50mJ zwGT=s^yU>xG2_F4j)E_ghGf@H^Z!K zqCC?GQry!P`yb7c1}rGicjkpw92FL7mo+XWIgQI0iF>mBib@AA_j_Ugqf&Tv3BmIHH2X*^tE2ym1oAXhBe~J$xD}5TRWA%HFit#h6FR zd~%9vEY9Le->fh7aj9j{v%k|N>gCzS%v;aKGCuOh7ILJ2xc`9SV_)Q^o*yI0o7x|} zQOli|Zms&HDWel1XHC7E!gZ1EDdJ#C!M50Bc+7EFCjLfX1<-7pz1Ik^Zn;HA zbVpWdf8Z|Lv;0GW&n&mj&PM^3d`#~2*w({!X?A?>l)tsM>qO>3y}bO%gW4Y(Uth+3 z(w_elH)TZRMC>p8%=zyUWXv#JpxXb&h&q}+*!sop?aE}20cDp?XhxfpdXf}Tqu6?u zYPJ1ki>JDDbZO$Y53k%EK<8HPA0a=}na56a5;2y6zKVJHAz9g{q)r<`_NZa+ZSL+_ zJjw2~>!wv*{my+)ee5dFM8E0aWfARUA4A%d| zTcU3id5)6k{%fwXvgH!z9-WQlhsIKLcKLTSd)}CONT98WHu_%(psNKeoK_85-nB8!40T-SuQMG>?3&>Wf z(P)^D+&DvC$YjBR``$2;5wOn&_C$+lj2y6ZLaz^rhlZ$NRxLK{$@~dGI^mo!oEx|R z9_z1REKJe45UAdR226lih-(moFL6vRot7hggna}=QDD2b+RXrxL=hAACgFIoyoMxV zauY8HCt95^Mqz0Qk>w@ASp~}gvC-pWl+CD{0#1L#`m`>LI)CN8{i^*KyQIlC^*{+4 z22-Go>-TK&o~fC7%z-7ESK72VEk&|DZZ$r0DUZ)b?QJ5n=HPT^;V0v#E@jZhy%pxY z?`=39zn1BR;$AKvOUbSS0PB^2EfP&Y`w@k^rjmEmizc(@&(|4-t**_lH-zpa@~H2C%E z$oXOB=Fg3&msqaujBIEqqN*6}FJJ9zCbpxI)=!GtbZ(jqb8{)P8+d#!g%bC8oSvf2 zkAdp7(K!mWs(CHfku5FRnl|_(Upbnn^t}W?%21IuCB$MAI=oxMsA-*WHE3Me!DgBU zK}ABDNI{Z>$gTWq#JQM=dqL#AL67Vnt@<|>| zl_C6iG>Q~%hK8~=KWT4@l&rsC+ndwz&5)pV=q>9&tP1di2wdf!aw>P(yxYrI{T1*l zYW(9qyYL%unazY=Q>t3Kb;!Q&j)$2bx#7X3!KEaX+~MnIe+xYif-ZuJ*whN!J~B!@ zQRjKfZ>pdwON3w%gtygnPk8=5EB(=N2k88{iTkc?tpB--#>&aXg_9zCFzPGJNUowh z^o1q(lFqX}xy#skyeyz1rSi6-#4?|*HCgGt@8Cz(o0>+P91`W_9X^QIpb*aJhxq$P zb(9`0ZNHBG=CMAxfBu^F%h(IvS2>G%=c=-~VgB*o#U>jVYaVAgPIggR^_HXuj6=_^ zYhKAj_|@JEO9{b~dCs0XtzEOZp3bDc+0RHh_XOQkHO6^m=QRD}b;ffeM>~!Uh}im5 z|G@(NZ4Qd+PdlhlKezjTRB~Sah+plyLWyK;bo#7* z!vAw>teQt@U2-G8aziv*b5CG1IW)p|O^vk4x}SMB=lDR|k`hIlp=A$43MHTdhtW;|=th`>W(O2t50^MXPbNW9qS_w^O? zM8V(Yi4~6saUZ>kPlp|8DzK|;qHc?$AKwA4(N7Tu-OmlPMJ9?6f%#q1n4y|~+| z^${%eSY8dbt~S1&tNbwX7OVsqe#46X4;Y@w^6Vu&Kp9?(Nq2xjFsQr;am#!HuQXYA|Tk3H7f~=4{U0-}&U{jaNt!FqF>+huPNAP;G@H}(Ota(jz-IgA?97wAxLUYd~ zZQ)a3moVIo(B<3>6L~P~Qm<-B#_huOj9RmJEnIA+{kd_8Jw}}1(S(15Me-$ik(kz@ zBwrl+bq+L;vFTZctt|r9e+h22l-`MXJ~>_lDjqEq!d#rw-~z z@O5g)GZ4ylZu}dAF{JDkWj9Pn=1yZyEY>EFD_mMlxa2XlUWChE9y9jfTcQtwrrk(f zHkc4y_ALxpEPJY&we|GYB$`i(L*;DM@a5W-OVBg+Z1k*DB=Mn!`DKPc@z!{K+_^sE z$J8ZwFs5iCRYWhp+t{KnCMlNdVRpZ?S zE^>qscx~=SYt>AQCB5ItH>ZzgWTso`va{dZP>rFsTd)Hca~bsF8g@9WinpF_hq-_L zW<3@B(7jY-x4G4LkC`zUA?PV#qae{pf3di@gvr3|->9k{U)!AVkW)EFxLITtxWGqV z`fTLTWvL4@R@}7ld+z|;_IH54Z=i%x=C4+k_wq3onPYhe7a4cJJB6%$)kk|B>m!^6 z62B6vp35N4@uf&9J-_uDD?M4c?X4df5Z>EJL;DK<9QGf@e~|q3=ep3^piYnQeG-`1 z*E=9HNq{HmGT(aYR_Dt8_>^xh*pxjmd0wO>(*4y>m~|YzRQ#hS8;76eI$b+2X0F3; zQh2u`>o0Fh7SvVEJI>Uu%86vx5{MQA$#M#*T;Rz1BH7@24U-#0?c33injdXent^jm z@5V9>4(`#V+dox2(!qa+OLHs3aKKwFx?t$qq4}x2j;=hxrF@if^JDOLw_RWQ&I$Y4 zW=0P>g~=mkaD!r1LQUke$5M`U4>z7Zt$s*)4o!$pi*P+-EGBh)8X7g^5+E&(nhh<( zgohWlFGq?TgU`8$g5;NIC5T^|K6zi7j6-0gVVS0VCQ}!^j##WZbnR}v>Di3eIG0$t z_qRFd7|#bkEL5M%y--DhM z>TjLFQw*0mgaPj3BLk_!^WsAmaKJ|<0obHjc>*|i>3*mS!%c$H>_-~K+@^I4Clm5m zJgb|Dp>LEA2c$xt*awy+^XNBSL-89X61 zhQp~>xZQE``Y=4>+6rJG5dk9*?*{x&x?4m+ePXBdL2w9iw|r)ZX4UEy-s2Pu=$KKT zlLTO67IYPk=g@FeUWRRXGYOt)@EApJTS;-c$x`eF?kOX&3Bq00m1O9f=Ab-dYJd2_ zrf5PfM-3=J9E+D{B>{&ZD0c4D;?QvZt3fZA#dH6s>D!6SW1r+rGoDhdf&QGof#b?wwW6MX?Z`g*lI>v1Nc_EM(phCj zyfEOImDVG(Ilf%YPitp6`D;lEZ2hH-lBqh2_#N$Q*sYa&OX;GBZ}&^WjMs>!eI=GC zTMKA#I$G!VtOKf2H1{p@y&Jz#fkzJ57D+Gtt6l1Gh`SuKFD~M$iiiBjm$3C5Xm@$#P={)Uq#x_~R|tpMey zkl?V$k0@TGulta>F&emJ$uZ39AwL@r&$cT>h}5S(5-d9ER=9sp)bLbjK}yKR=|~v% zRjur4g0|MDV@B<>uAm@yv#tEy!v8GT6n z?#^9P+0FnfW75+To_L|c@7iCO#ofaD$s;{#9<2f{@>TC0^k!RM`kkEObgm40X77H> zbgP-$aJ;h8yfAIFllld+iAx#<`#EnCLP>YcB`V$grds|=f7{xhTgMJrdT4$0^0ha* z!=@K6Z{d9PoOasTY>!lMs%M4iarJO}k0Yni$61y&*V#W% z4LMwrQ*uuPKLl6dRKIu6HVTL+{3@<`IYW1WmlE?s_o1DvgG)}j+VeTNZ_~5oOS!jp z-$RJMbVo>EhSJ$zW~@mHZD-)a%HfQ9@zH?*zm%lnC zjb($WeNE}$Uew6z5{sA^79SA+QOR+zSfpw=kshipWdpYlj0?u{(5Sv^QbF z=dC}#)}YQ1?fdJY5ANgodZApbI=impTyO-=dFzIRSeto>-Tpowc?LmWJm+Q>}L$z)Tw;B8HhI` zvFL7A>3Wpf#k%CpzHJ(y-x-?YM&a`CTMz%A<&|YS-j6Xysqd8g@Qt&+aG9?}&nKI^ zoVFOvxgI<8w2LJe$TNBLrK&DQ{?S#j8>?uzb|(7>-2kz~La>$?BK&|DK^D1Yq*7>v zXdi{zpHgu3k{RY?gE*fHa+O8`MUocVx{SoC;Ps>jJZ9UnPmo6DX6RhN9Vv4-0|#V4 zC=}M$*kR-ph)?v0YMA{224Y-jp!q#}0_s;H#$<9N=d=sLMhK#3t%=o8ikCH2Vnb>zez1&JHDYPU4cOb@yZf8n>c&dRiytxRf7%qhLa`Xa(3Xq?(zB zu%nmS((|N+wV#&F*dbMhPx~dR5*mZB#AEUH5eI^I;hr;%Y&rME1Co;28f{8nEvb1z~3&lT?cuxZfu*H)TIe22Wq<-*pju0rjNg!0+w ztpc@fG!I?z3kGU4K1IS!2WF4>A=fYaJ~qFm`!XC`+opCJ$G8z0kNCPrB>2nt+2!=E z5FBY;q1$6muF5pntj1L`^NxE??bK^1R_hKf{zRa;f_|Q{j-0J~{bWDLaf%F*DbAy# zZjU>h(=aQojrKQvDEW$aNvch9-Ea2chhR0ji`aH10dw7!O0<)!U@d1s)X_>3iN=5s ziob(@ul4#G0rA-DSTJNxTD&q%Ag71YfUi4GwvBgZeb4p<)?zT3$-8D*ngI=e71h|c zjT8(LV9at)k?fsqav`AAFrL;XvjXU2*bo@sGG#WSCfdQ}M<*4}z5S80_dL~Xi}RlY z3%=v1K3xAC`xQTjUf*j+<)kw;7&KiApD<|C|J0-ZA}u8q`uZaCC1Y^fV|*$K0hOLZ zUE(`{wpXQuyEl{W@XKO^#`h}}{8h2P`b%{Q>n{f!){_ z$MPu?=)Ut3!jI%RpRAEKboK7ETJH}n_GR3wwtr8W^}b%y6W4JYjoaV_k>51eP}MlD z%l`0MB^({qI*y1j>z5m<++=C9=Zn>izFK{0+bSlQ##eSBv;2^}?RQ5}%YE)x zV19)=rn{4IFT$k1Jl#+3T1B1cefSsklY)pm53ys3TCv5gwfU1sCIXMQ?EE~8lqrJj zaof&MA`OGVLwvKQ9N>qQ{*2KV^9dcsI|c8KZwpr|8?ID?l8$9aT-)&3ed%fpJcxvsv6&~KRQ?sOi*tqXC2^ORJ+LMjKAGXXTL~B zJu~z7ygEH;x_I%2-8JC7m+F`Oc_ws*&Vaz4`uM;Bjo<<2jTVQ?gz;03n@tw|fb0&?4=R`jh9h9hN@sC!XjYMANUOE#$?Mdj7I_J|4eiZn_dg*Za zDu_;PY7+@$El{Q%arF_Vu%6T~_;orJ8J_w-F8-Lo_Y^Bzm~uk`i*GgAh~L&-J3;43 zX%Ti`iN#VjbFq8n(TWZxL$>w{>seAtJPJ#<9p{K5gpwYNwh|RxD+SeIqKHVm2OY$iut=glNF&jk0S-Fe zlBb7BlC+`6Uoj3f9AjMEWb-XCdlV{h1=<``N^y;)7Z@ z#^BUZQz>pkj&s9&gDdsohVC}|ryO}!MF<+BGUv@SnR|xAJXPL2OEkvJl?T?*x15*G)t?H){YyVv*%Tod1H3!wp4cj=U>RW zDrdh!28WOL2zGSsQXYU3YC^1|+^a-udhHfxzMMOa3VleVmH0R={HC;51WJ2?XW1b_ z^Yd3+2N4xIq$xpN(*eO|y*L!Su0(qfS=uBN-%)KHqc9c90j$1Cp7DjpenNSn-54!#oza$%^OK63WP;uWbm9){5+ zj6_$}c31o*)jRFIPO_i>so~=5xhUfXuP^eqFLL)F=`^U+m)lRuy~o;M?&40oYw2p+ z9q(K`Sf6tTP`j$|zd#@+4MvH3Da%wcl-znU>=76&`I&MCdk43{RW?K^+(Y}DdB5Ek z7^9SZ?WhFg?W$@EO*|XcNY;UpPrDb|>Wt+mq%5a|WhE4r%_Lc(x;j*&L87FQY&17? z>#yfE;n(=<(F%c^0Q$RWOuEv;zVs(5?Lw)Y@d~{fl~apBb2=lP?{vo)Dr~NmHsroH zSSdDE@KUGLka;5V3bo&;ZI>DU3i@&`pjaz(2edPlKkyz2z-RcOMtjbxl1uk3UW8jW z;5^vknAwWj>8R)Nwfu%|mub$$T!@;;)BbELB?FNRM`$96O`iL^hyE4&B3mrSnYok`#>x@o2-Y06kWw}y8 ztO*L&pJ&BS36uN~?+Va&S zOnbnBV|4OePng~A5ti!BV*m_I^EREd%>;Wy$mA;DcOYVnkMXu*`Bzd zHYt-J{*91&EnYLU>-(dlF^$sS0dgJ&1ns8d69f``7TL_`0d?YVkD8>*>@$g}x9oKq@iwv^1b+ox-jPtEJ!{?trMP8t49oz~1h6w5)` z!Qy$L_f99RhIW3zs{_6!?mfP>+Rv6{UVC8ZkAUomJ-;keztQ+MVeRy{E&xYc_H|H( zX-iW6hQv&=jd(6e$#7FI(@Ar}c+Huc#VcQ-AFmCByuI*oR@M#6?OgBueJK*-9qKw4k*2@^D+mn4RVQVRFsDf&_~hKoPVxf;p<$nHK)O5~+EK5r~vL5^u%0=?{Rz zDI`{s5*!eD)_MYj@E=^+2zHGw4LzJf|fVY-)bn)3}VmLRF3ep0Av!xd? zXEy&204PD%zBsl7-+rc$1hyqk)Bxzz?Y%G)+7|Pm0wHbz8V!X2DA#Y}K!XcqxUul2 z0Wc#|zghrGa$T+ujQ}c(X>IyY1EF-at!iL!T_^!I7wbR;#Im0O<3JqB)*UDTJ$(*_ zfCLskcIY>t4t5GTHORI2+fn#X1Q(pWoq>3W1yxvjxsp7uZ9f`PN)E}#%$Ct5_z`}8 zYLK?Ng2jDC;@WZZsJ2R~2Jt&|c*oqg?($R-EBaJ7Ql&|_Ad%&2rLxtM7jf>eW2t!; zkwFtefq18`>fAYTHgLM0AX{DZs+%sYWts1icZSD>PjCSz$aZ){NM!b{y_VoKol7v^ zVax4FIW3}HIQaaG_iu_uW1rlhX~(K4;U?@uu;TJDvKMIr`kO(=>1Llwme{oI-M(f_ zp6lIlGBMUx{{YuWl>-mb2nc@OCd3BXMC>^3lklncziHesNYg)rr9)YRpRlJpOjSeO?nH&HOwHCSZ`gN@op^s(y6VZJ- zf!9jCBRgZOYg@xgnjp@&+j?L$>#r)!d42XYE8CBtFCb4N+XiF+@Obn@}BqFGQVZqfA)KG7FjXm1CT7& zFB@C#zm4_MuHE5k-%jdc-lcWfYFZx$r*_QW+@kj$-6_bNtGhzHOpO|;E=c`W0k=1{ z_pdXzRjY2xBXw<7ik{_%25upSBYb9le$=FvidhdOkQU^tcDW6)9M<9VJ2YL@_da9# zuTPI|g*z$G^I~Sg%$zAJlB99r>WXDs@<&6zPft(EyXr4h>G~M*nSI(mO^cNu?Xp-Z z8~Q=ydV%+E!%H3fY;`>U03*V6ebxB*`1CYu-8f~xd+mucg~S#)_3i&h#fwLKY`%8L|CS1KbL3z-9wyv?}ZkN^ST7S+?&Yedz_MXI`t zoN1*%t9L>VKXU%izuUm-Km%=bt5(FH#F6b4Bc2B{V#blf))gV*I`8Q>{OWz`$}P{Y zQFeM3iue;n#gxM}!h+18o9YMv-0!dW)iGrKQ8_K6hA@whkP#Kb2QGopy4u#bHX8M; z&dz3~i7upwuvZZqA}CB}+bW;8k%S5@=oUgxs^<4JectB}^W=-9aC&F<=e@e%CObKn zMf9*+77^I6ei}CV4ji`B)?KuVHc_!2fs304Ola`1WgzM`7r7dp4aK#nJYc2=K@G@* z^gSs665OZ&-unG$00FoJ9Sr~s%g9`AC;=62qVxczIt?vA2&Y}FX#k`(v^{78g~+|> zf!uZ1Px7DyU^yGm2N7iy01S7wlz>C9^PmAeO{f5P*k8thh*y8$X#mtkc!6zq)_@O< z$v3}^ARGfhae81Jcks2S0Qq@-G{9R6?R#%Pf>Z?C#()ceU!b4`U=P$C=m9vjt$lpx z0mV=);x{zFBD#Wa^q>T>D8x`9RW7%n4hld5ki|B=j?};xwX~oCEUJuH*+3<&zLX#; z8a%$`JiO#=d2fph6wJ5#5i6 zN{h(W2oq&ZI~9Rdy}L&w%y|fy*s*47T~!pZ3t-v-aN1Vdd=}QR$QhZCDG3yk2!ojK z5*IJ2^o6j$BH#9nZf#UD+NNjoq=O$WN6lF>JBKIYVOyp&ewH`5RlSh6D{Y|Km7JpL zuR@nEw=Z#+<~~a@o+58`gEJ!pD0I`0Ca|#}okuMxX0nSDMYJ81v4=M;W5w;5OK7pA z4-{vR3SMB|sV(a#m)>pCq^#O2vr8PZ56nJOE^D6Kh9Jzrc-kzMHiMXK-|>VPLY> zaC!%1!XU(D$qgmLb9Nr4Yc{Ayq_F^-J6m9FR5vVd3xi#a7?NIb+u0+~6aYTDRkc#g z)^NScG)5YofY5pW01DEPmdua=D`0JZ&a6d3-opJyhV;Y>Gj24uhP%>jjUl2yusYvE zP$n|+I;c@{KbW0$^ZpeU$)p1@RotHed!01iqQ;2%QZk^j@Hga5{0`bwEXmaoPq+gJ z?pbac`j#zl1@CJLth44-<)rC9vhEf%2a+(qO^1!V>ZYNWQKqD;$j6E(-Q2JO{BO|O z-~;&7OOr8u{{XW^BQm;%1bW4{U=D*#_4?M08(m9bSss1eAeRnO8bI!(EE$Rj4af92 zI^NoAUEMZUTzuE}Mq8*Xp~}GTy{rAVxe~0R#M;I-8WusPBxL}dZ~0bRQvN>9`f>63 zhAyF)PUqY6dj@fZkGTNS8HM<|9frT~E4im_Jc`d=rVG*QWtdod-XqFbE?i+$5;PzS ze^76?>ip{~ofePyzl?u^Z7qx3?$6#kk7&*Z9ZJs>Q$;o_-sBkF3ute2M>b_WDel!> zm6yZemDR=zybqI^)Jo1o)e>TcSG39WQ4M(9uvZ)FcN`Z2!6j*?D)Yg6f0LNC@ zuO#*P4Po$J{__Vu4pMQFC%^R&i>L&fspZk{6 zFNGivMzI4yrRjj;+Wbf2Xb_}tYGER+hUe=@1B?TE-~LpX66#t;Nx4imH=O0 z`0}XRf>q=cD3Y!_WP7s?DBj@z0P{Ig3o2Xh`sqm$WE`A{Ck+v3;)IhJW+6c`C~hi* z0RI4OxbN3mjhvFIf~~oZ+#E($A!MAX{+yBDRsp!303?z;wce<^g@Z*@yo{NrigXy| z+b1oNVVxD22-?F!MuAgXTUH}_r84f^5ns1L&oprcW<`*cHzrvw666zh45aa1R&6io z3sRP_H0L9@owo-9Oq}`V5G*qf+!lMuBeHq}v9QoO`gT#^cX0ZN-f)2L{m;0@Wz3DZ z#21Hd^eY}B!DJ{!`AEf&TMKMST6eU3gI2lunW*sP&yBluQ4^VyDm%!-Tzqn_lHG_@ z=I-XeXe>)w)}o42lI!2KuR`Qxi$0?VcM}{#)V=BoQC)3sW&3}4LAP)l}3sMveL`EIFS)nHL@tOs6XXesEn6n zwH8fB*IWMp8nG0FBl z0~2jc{AvubVHA0>$WWVw0{3IHAJuW=<3&rV%)iLH1Q`(|gNTxFISX=E*HdtM1Nqj^ zAA6(r8(r8uOWH*>gfHAI}X*}Q9En0 zxRMC6FkFDZ7h5u3{-7Kc*13+mG(Pp~46!wJ48ixF&D?t)RC6Mf0CD7(&~yxX{cE@5 z`4rz+FznXo>+x|X3$t3H1 zK1}|8CU0n$o1b<&9uEgTR=$MXEytL>Y}I;hP_X^VEn88OuzpUN4;xHcDAvL@fbnRB zt#l`^QV#W>Z-nbHm+#cJo0YjO*STiN9pwp~j(*uJJwZ+VX|0crm5c0AJbf?Yg5Kxz zL>!*i@$BbPd1JX^%EX0Zq0`(Ri`?ogEm|qNcE5G;(5lp>y^7ZCUm@)e?_&FsL#cAR z_-SkM7T0Rhyq!CgTMVo1UXD>cJLWBco18NdXO=K{bKQf)ZN&A{dZqZ5>6P)+v2IVE zOPDg`UM~?tiX$%bMJKj&KW+UyocUH~sXl*qqeZ>V78w2K5>5hAeT88mQmD>(4FPrq zt!|>A{A(|meZ?i`p^Q6 zM%qvZ6#!UlXaG9ifCk2Z6@aw>A=K+Y0K$MfVL$-G!jK4WY5;A9w-kmhhh6E2WR5_1 z)J8a~Vm$Yt2Q6W1+S>|Z4KHi>(?AekJDLDqD`S7d&VV^hhM%1PI03L7C;`D?wxWRp zWMOUTj4*(8paU!b9ux>c&rX7X2!U@p00ywPf!=@vPMs(i4qP2AZK(kpCQF_yp~j>w z#^r6Q{;QLv>K81bSs|Ufr|zSTqK_{fK%B-}INB?Qe@M4GKkEKV-=!|%afl%0wmi_} zV`j>WlN7N&48@uKWq5~TA|WPwzcp5Fn+pn!nusi-b0X3CT{CQnb+#b}rP!Y)Y|A_%4=D>HxOcWBj@ zlCks=)9o7Erps!dLm?JG%$?xHlibPlBu&rTGRUp3xLC6+Xc(3yiLkjFUJ)-Qmitj_ z+IxH*n;^}Z%Qw2jr}pti3~3_7;bf6ivXcyU;GCE#BbCqJRy3D96uUd{TJ{Wiq@~=BdGR> zx-(shfCZM|*b9#;gDqTcs<2t_J}9az-pv!O^*B23#JItV#n;G>RK_u zbg%(Q0^KjAIV7G;XUH+5&iT816w|5L)``eB$aj}*O3_jsbCOI1X1d2_+smJt^FZk9? z+AX5})ZwZ4`2{Ylq4H(B*Tbg6nV%gAKx{(vwaK^B{snY=f8-U^Tat~MBPfcQ)8nD- z-O?j0AEdV>Ww^g2V`3`Dsaf~yaLW6d#fD$7z~ypaVUv!1Qh{}qMUDR7x}?0OzMCk2 zkqc?+h`qNbI|n6z0m=q4#UbDi081-s7N=jSFQOln~b@uj8HHz5HjqV?#V&(9Vry#&AokBWTDSwG0Tc z*Z9^=+Ut7v*Okb>b{XvblQ8!#*(bgWLy*p>t`$LqfCYlH5vexhYZH!!W}0OO$C@s~ z^ErD|lM@GUhuno(7zpHygb=KaV8e!>FWLoM=G0HncFE`r2>J@7tYR>4C4pPHx%@Ps z0t@0O0T_)f^&)|tbKziU0S$=SfH(jxf5w11!^1&906-@8wE!)=C;9 zmUW=u@Bc^?p%o=soM8UN9 z?iAr7652V* zkwX<$!0-6$r*}+1o3cp43pd{cL=Klb9+$ewtfgWUmeb1JZpmGFos4V0bZGrF} zSEP{Lg%F?{1+gSr`yDSt1hNKFnHU9Y1trSd1EJGf?Q>OICG^1pZCQGVc*v()7B|<- z5A>>=EnleI(Wu8xKmZNOeW2-mhfCbvlUN#gBIK*H-cmw-~x=@MTma8-r}_DzC_fNnH`EZ5@g1J5THuI zfNK+bfOXSL*4lXuVU=52Wp{e+d6-We?#4xw6?p}%B9I6Vzo}~N8f&sw595N3jnsC%ZqUd=wTVCY$?BvX59d~@TU*ThdX;x3RW3SWWUwKz9fj4`rk5O$=z4V( zrM~+A0M+s8SKANJvwqQqnuv0VOWh#uSite*S4Cic*EhA8e+_FY+kJ28{A$TM*2^Vs zZ^N?Se|sDpnEeeK!P<4lm`Go*}l zGRD!cT}{b6R<6H^YpGwBNY{UE8Kphn7-Ga_ZhqyI2D=sEb{tq*>b*}8zGkp58q<%D zkLq9dYt%@yi$sBPd1I~AI$7+jPJ}5Sj}c+@ruDZ`_hO-0Yjhvi9 z#_j@@WF>S5)wQ}1JwTJ=T)n;;r>Ux&yNle{?s*>+!p<=`?a3h+*$USMoZZ)n;(2;N z@Tx0CU5#}P*#5I-jxMNW&@qatJ(bcFb-co45CyGbUYR1mCeq!Xc1 zEm`kk{dFpGe{A^@FSs6A3~3Q$C(Z*g33 zTd8IbR`|>lmohluU3fVAwLZ2beMd&uPsX`ZoEvPgZo5=Uk%J)B_aJM1HNM1}x`s`! z(9pu1Z^u#LTI!58a!CM$(@ul_EmkfHpCZ_gr-e8X+(qqs4*|XRH#9&UY!V~L>LV&tg*=79xb%x_w?R;E1k%Y4VuCMllBx$L zvk*N)UY!M3V(Ov{lRHE1!~-qLf(f@RK^}gi)O4z!1*v8R<|t3LpvqY|u9pFM-_*ou zZX~aSi+}?g2^o}JgQ}Yyb^ib=gJrctQ4pxkJ#q_<2XlRfgMUb*FyLFb zD&X~RUajxjK<9^rmQpA%YBrP8&Vdx;Ms2_4v`+=g9yLM!k9!S-B$7?)B=T4TsqmM&v zFIx2PYQ=Y|X!ET8-ILm9^Cm2+3nLTGFi0vmvXIIydfZn(Z}Gcnl)IPb z{-u@jXvL<9X8n$mTV5>p_;~I7Eg0a6TP}0Ayhiw zSIDw!Vg%TESQEzBtLt5Pk#BSA0XD1avbSGX`xQF6ydI0$zC!t*4DUUW;r*nL;~bTR z&lVDwOM|HT&;!A42l1vMNz@7eGythI0JawY02%;QKc>_H+H%|JKnJa@ zOa}$YwYH!_*jrIR1X{pp^q>y8I@*8Pm z*v4hLx~mRcmyY!+v=*b1hrE2M9B8B&8FK#I#=gobD2Ob8$U#CGR_YZ(n{(s}YjIMo z9k?4wbTFOI=3Udh<#!Bjz^ZX&KeWlnksWgkaQkmNLnP%ED3McwD@YuWFXg_P*0}C@ z_>aV?uI21uv*Z~WIdWkmP9}|nnNFZZjR=in0s-j}4@gdBiQ~s!ru6WW{{VlO-CsiA zvtl_&@WaU@^2}rI6A1ucb~%xuMrH=hd&z&~ANLcU_Lf;xlF4cDO#cAicS$h2c06eb zv@*{CB+VFdT3I9{7WW>^#>1AHTZ)SOl+{V;Nx40TwBf{kxfMWn^+@97MYLT7_prIH zeNlC+&1M`*2Q#QssOT+PsEj)-T0*O^(%V*wqb->6OXxTP4v*63+F z5>+B)N~>jzf?bGE*C4j$_VN`AKSIhPyCO$n8CGG#)a3HJDcJb*wXABU%c_wYW#bxz zJkyxBCIL;&&4BveqRS8<6vO832fDuJCQ>ez8-FojV@a$8&5Gy9Y4RDAH??qX2c+@V z%i?v?pjxX4lZonuLmwi162lW{|h6n;-MAwzW3Pdx-hL zRH_8gjjX*X)M%~A#&jlC^s?%$(1D@7T}yNmW>dXjtdX+&V55sk5x1;=GM`(Y@+tuX8UmbtRgJy#}pNz^(G9gTe$qy4< zTH|qJ)LOUezg5AO)#y`80)kyXF`@qe>^3#ASjy^JD;jZsYUB=lY{LF` ztoG4crrIo5Yl7z&k<@A|ZBkmP6B32pZ&4Q`CTC`n6-iru794=k*-6xsL#omQ)Kc}$zmO~3ZT<15{cMA`Ba z3;RVF0n98%++_?1;v|jAoi)EpYm3R*+Tjk?!Rr42D#pKKgZAUvY#f|fVT>vE?;Oek zSX$}_O2n-NRZ__r4F)I4yL_sBUCJDcXS&?6fGn|&T3dM!ojR;CJqvRmr%$a!M{ljE z0mVhH(t!ZvD6kq(Fi8Y>Pyp~DchZ4~x4rN9Py&(-yl4Rl*3) z*k69MfIt8~Gy%W@PPV245wSNcbR8-K3zJ^w?WO~$M;nd2XcH70f2{y2wS|o^3;}EY zbO1`AwframfVuFX0sz?fQv;9<@2^S#B5r69qQw0-pa%fbn1mz{Mf9LxNXV=8=sMD4 zL}vk{9N3Z6Y!_SG@v7S zmpdJqe`Pwr%$U&s0Q%boFYPk37Bcg2q>daBci)X`)ksBKGw<>7?qqVi7k$W;yI?YQ z{A?-581j}#&pDw-j(IYVxQ!~HJXP6TdO}+EU6pi2P2<&%c23!!+@5Lsw{VQfGG}Bw zZj$6SLbJgV%+DG~tQ~zUQ|%zJxh+-hvgl5qPs{Ksdyo5c9kt>t@Ck%$kSGl^yD%|I zWhLWLDfGxV+8;uKp2Hj=|Zt-OB<(MT}tmQ9E4wf5Hk0P9!OqQc}) z95KAFek-H(01ICJ8{VYc3aVTgzU}j@TopdtEg|6yjD>_!ds3^OVO!LkIBU&E;k`lL z3#*~qEP+4I1I&UPc^Muu=5c7zN2DjY?p=!#*7R~6YA(%|Eh!bbzubWgD)Y2h_K|`2 zSy0Qt%CEE?_ij4!)5BU*XTdMERmj)>0QESe_Xn~60P6CjSt}ftbM9OYA(aWS9X6q> z4Qa2ay|??J+A}j0-PenIY+MpAW4-v5I&W%=t&_6vq;&_Tg+Uh2MzcV3N z+uV_D8uB(pzV_+iO47oRiu;v^h#Z_7EB&QN^%L|aqFdBS?4PIVwYLUX`}KdLO5i4FrP9jKP}xMuh40@uC7qStS*T`)*IK zeka7$l|WTbjExz+nQdWx^y{TwtpLogckMQ2DutH(_}q>xKT;8>YUt_SReDKL9BY&& z#mR^>$r;CwFhsIUkuxCz#>K}d&|Oa?*4i6Z)pt*-ujaacr}r}7T$ujn@r;y_Wkn2* z3#`h2ryv*EtOfMzYU%0oE5rW)VF00ACk?Jbe2v`uTqTW@J?W%eF%T*Z6owhME9ESpD zHYL%Ja#Qx3o;+LJ4frbz->_&L47A%iU1+VX?-XW+Yw_-0$uEAfDXpm&;h9;_WURS)Tp;w z03dbHX-onG%Jc|OHU9uA0438yKm<0mF$h54p!>hlkjV2JDUgeuf{uXnsIo{0HcMZW zmOOydQ?b9&pzuj$kg}N^e%p5-u>p$Q5pova_UTpII4!0!Vw~c@CpkCB%Er7?BD(^` ztO<_GuH(n+rK=Uvm`6gg;g!#bG17djg&7Q>hQT&MUATa4&=u;2{#)8A3ubsJyT)?I zJ_mQ_`|PMs2)oLury>{ZO{Y<8Bb*8S)5%|-|;{2D$eyJ z7OOQTBji6b?h<858xLs_*kfX&DQ`o^3$&_uvlcS5pgceedX23pzgCq~J0zbXF}M4E zHQYjKm%7^t=VCgSGAUu}hD+2YsnE~Vw0zRmNw zJ(%IlaAiUlk`Tf8?`BScv^ouI1@yJY1<59AaJz(g5)dEU9Jn)hUqf&$;iYFKWeAq? zw3DjDfn9}^wZ{uEC5?`j-j9(Kp=61Zc;3qVUQ=S@OaA~X0du$=b?Z=NwaH&3rP@}z zBLqKnj>FZhG>PzC_bvuSjIF{bMkhuV7QO!f0n&%bM!X`PS))?U85LAoG66q^zsB`6 ziOC*Z_`SAi93+Y?#0_nI0Q@RyjEW=4-TQoQdB{Dxjc=gqZG0-lrq7_87(M&8IY0X- zO^Fv_b79a_-;ZxWccA6Z?Xr7q6ujk;iIy%uZLBP&=HUG(`%MRXBTpn{Y|mhH1Zo#w z_`M}kO2irBX;#xH3{8u8p0#CMJQKqxv->z->ib}*HVVU#)2^H8zm;s)zoeDgsG-VC zj47H#v4VS68|RHN}XOAy={OB)koZ?@pp%6YPiEu+v(UcoGA%(8FtlWz3O^7yDH|t|re2PEY`Hg)@^}hGq@u&E_vc)Gh z_6x?u-Gec*Zf*#l?DSp{!=bIv6bJ@>VMY$RFfdFC8%M09SPRQ ze>#y^jeF~{pl2?`{#1ZQ9ef1>8XA+X;(?q8P0Fl3109)!WKnTDa&;)k57YFN68Oa&zuay9Ixn?Q`v;en0l4*!Ih`I6c zpa+N-2G`SCU@Gc-1pqG(3P3qyrM0F35o>Eej*j;y#()%yYA68IUtbCU3C_xP-v0nf z7||YPWhiv?vYmRCVQPaUfj2M*09Yw&TEgK;8u{L!$s#P+IWo>#H9^QLw3ojS(U1kn zzOAqo3s<5nt(Q|h@_ZTlc3fTG3w!BE--^;D*KI-=5*P{K)wUx1B zN0k~#FC0!xj0%!X!5qT4E~N=ROg|dWZVd^;Ge02h@yZfOL`e)q$sqdJ0KSr>jzDof zg%-8{01}sI(NtweWND;mii0zfL= z{@*OKc6OdEt=c`@SJ81Bn~(S9SZIId}&{8S{kE9)3KLg++*w+7#NYjVzHaaARzDt+Srmn2hO6AP3@68q;dvSEU}WT%ucp@0#2ac zOMjP*D-+h&CSB)YI5CAW7Plt=olWfCAn)X9q+ZFnJxmUPD}(KH1-}JC&m@t0UY3O{{l19lsjq z?eQ(ICW`G=7eBYhByJr?87+1on;#waJ07;E>)6vo+LJjZD})Nio7^g)--saFU%P7F zu8J(W6*KqwFem-F+U3qRHF-%V61+m){1y- zJk+k+lj>zV$9~6^q=Yp2FA|8LmO!m_O8`l*YY((}S5Hrl)HevtZHu7CYL~g>7{a@& zJ1F9sU6lGt^)IfZ8lL4!$hFHoE8}rS_z#BW?5gj`STd+vsUPp%%0(!g&+1Tq%K%fgVw7rl?;KmrE4c~CHk z0BOAf0NjE8MvqwA9Q`$oTs-jfV+%vJeRMHrgW?xW}X5vU*c0`Ml9#*~fBgVP!(H$zMZbOr{$0TxP zJH~iOvWuv*^R>0Q>J5d5)2$_3NO$H8{%2yr$7vlHG`S8{B1J12aRrDPiwoM^wzWd{ zX02_rCEb=Vkz`G1{hoJbx`r>{Nnc0?*V6i)wJmm>BTPb;dC$r+J^bXKM_6T#*)PF? zSjgfZfC%EiUfcNBcf?VHndRk4cZWFcIo+G%`OcGKsMG z>MBWc(M_B|?%&&~%>9vOG8s#v5JMYTz_$=>w~cbDvdunI$~KOYKk6)O7RRpCk} z?A8h_SpHSl(crG8ZN67;20Jq|J0f>I&p4nrcT|2n^yqcD@~)P>RZHndKKrcsWCVWE z7DEE&SnueYTieVV?^-)7(OR-hxb5xQ3pfBd1$Y2=z)2methN_E|Bo9Vd=5 zVJG_N7;)Ft$vWHvsJ8zAm0{gSbq39L?cntu(TfgVGD(jp$c4Zt;QB(a)E@#4mBZMY zaM8ZEFCpz*7R?xAp+Y@PVdPCxKJ;34{@oGC_Z}h&HI0h?t(acKY4sHzNLtu5G2)b8 z>8gtxw1faxp5$oFp!2uT)rv|d)UNK)G>|;XRM>IkOLDQd5L8`tvD}XfRd(V_wLHOy z&y=Lj6@`#kAlqL%)tc)l(8|oL^02VlM%7f#GYQEbJp5c`fg@-treLAv0~m#r!1h`?lwJ5{@ z2G;Pbo==Yty1W-^zeYQm7`)Q)<7*B_^oAA#{{XQX8iu#RCu0rYyM$8DFT55fSi%QI z3fu|1Y6#?foA9pBkFBJmCLOIwmsG?VBxEu5I}S(C#_ z6*+Ptq>)*O7WD*RN!r&sRVw|~`ib_WutUk0D6uIA^owya@*#Oz{6)`8-mapru1egF zV5~Ao71lR){+Nje814vLu^Jt(r`Dsfwa5CBs!Y-Ln2DTB%)ZnolB#-;TVOcfj~zFz ze(Pd7vqcek2Yrom6yv)Gu>p`3y@sINRy%m_ws;riE!xXdlzTVEyN)+^$cH{S?w-dKWw7?-u=fz`d{xkp#Z{vNa7z_wD@!pUG02Ba*+=q<-3G<*18&C%u+JF&3wE!ZE z&;YU2&;ohTFiq$JHO;~B8=8p1Hn_OnfE76drsqH@h1rf zB<=|pvYT9;v^MEg-o)yMBE_A!mgFP8s(K4=(|b`5@En6YczDr~D|6JefLv-Vt8u^Z z(9&?QH7us?8Sjtpe%L-nT76EVmg%`CvW3Ww34n_o$k`A zT~^P@Bax(DWl;|xd0Z;`SwYdd>(Z%u<0h(FOh3q_Sly>CR%IM9)VOoZ-_-UIU(ySD zRhHxi7B#O$Qc}1qvu+bSh(4%J?}aP8A-)qa?nVc2^G`^MqZ7!+xTs2seMMuQ6s=UWAdKomy<3QF_EKU zSjwXJUD<+yc-z9e9w(1g^)jC$b67@B7&9|-6A!YarKKeaKugPgZouE`U0O1af4>8{^K0+s%shQ+on< z{+suk3RmC%)1>NTH@m)a#DmphOZY;%3>@={_{VRmjGfUvocJ!9lEphgr zpa74il(;Hw7m(t_(cGxyHA1%*KV5Bq8n(4iQERl|sqfsqu2w8w!rB|y-A>z+RO~cp zJjcF0rIUq}$H`dp3%8e3uS(J5uTxdHGV|oSa!_rl)Qb`ijdbZqGue=(bWTOizJ4{L zwUVb}H{Uz7P{hD`pIZv(`1)m;w(Nr+BF~n6$0Up2kLe#u>L#m%Vsl}MmKf6e>H`7N z_aDI3m6pgjNN*pzO@T0z7a^i>+bPpcbrmaUS5ajoR@YaCdJn|^0J>Inhq>8Bw8&Fr z1HqQZf30x5&*AYj{)aX!BRq?kz-@8*4x#0*H_9XTQpijg^}D%=ErAN5=riYLN~UB z*!XCwYb&~@6D*GINmv+v9>(_GX?c6mquM{}kgu;Bt6Db}*5>|IUd@}W!ubB=t6Cz? z7wzgMBhnbE#I|DP$+0XSkSG@Va}}D(`1tt#g~|y~JVD)ANCdHsz}CY2bl1mjUyW5{ zO)|^0X1sYqHVwgw`hg^FJvv)!-|JNFq}E4Qli$C!@R=}6sT>o~NU#I|0QBw-gG%E6 z0LhT@4Zup`4d0RzNdn2xpR0S5Ze0NZoYfDqCHg~_Hcc!G7L05_JD3_*Q7 zC;*uHY&W1ls3L$6jn9n$4TxR7f`NcQ(tsKYMYYqZsEj@$*8HdtNf`%ATct1@0{|*P z)xJY>Oa(RyH2MkvM;G5}Kso`q9R)E8E=iyRBI9jn0Rrn`(trzy1H|t@g!Jrw?+O6s zT?sxE42%yJC3Hc16S49B6xnb<-ku>#3%P2{BRf6q*}x~qliYS%|)HsGN_G({WT zjOWIG_NS3p`*9LL^)=STe@=vrhV=xRQ`Eh*{{Z|-zWSm<)661_tZT&yw0uRlo!8Xt ztHnXnZAqxv2 zWo^qxoMmIrK2paTvr8k0&?xl+$5IBm*IQkZteAHu+!}t}l(A-Kj98+d9~vgWVeZ8f zthvD=n;{~y$sqofxTy5md3c(x{)Im=>r;FmMSpJ!j?EUKt~Au>)&u;lT+Ljv-!qe3 zmnz}CMQp)WaC&%aSEB2SJ*p* z-MHi9A7c@J@-&>Jm0SQU6>iSQiQ{ki)M*SE zp41;b{{a2L{{V1g?^%)dTxjHvx5CRKNXk_uu=H^UTMOS>?td5KN7nf>?RbK(`)Ato zb5BT#Prp{r4(T(oO zrr*tK^ZVhsMyG^&ZXP(|jO*$a`q&HJsxr5d))WCbbm~R)t0;YT#J_O|bAt&iDRnHN3Q%PWJbt^VgX*j3ftS7lCb=x1}!LYMYfnaa-uqEZc* z5oXkHT6^7jP*=$2PsVbfz)s_Y{{A^7Wm{RJWw#|^QLmDnyKRO`vl5FRiu|iLwoV9R z!sDD|_-s@it3R3H*J>~EyoX1g4{G@D$fNE!e(uq*JV~)OJGHtG3i3WrjP=?M*1Pv9 zEc=!`IatpN4ndZ};B^&7ySlW=H6|x7u%;GMPK2T22~9Te($&iWd!9m+vrtUZ`u1A*=70vc}+gpOeaCRiYwmn26S{9KzqGN&G#Bfg9KzZ{XFQ z>kdgCtNpC+2N${i)vma?NzIPnyjOFt>Gan-YRr+^rl+u_t)l_~w;{HbQIPE$YY{*R z(*FRF=|Bng=yg6c0oDaHpa8M!KnuiLfC9v8<49+3qY7Xr5(x050u`~n^q>v_fbyUL zARoej1cFb~N&ptPI_hW`(CPj(fLoAtpaSsHfEQ8qpaNpNc{fS`UsoV@zQTYHn_tS9 zgDk*Y4x7*cDLg?tPzN&$8}4WWh3qH+2rT!xuph>N7E6Jpu10|Atqf?Y?sK;Uf;J1! zS9aFXt9tGK08!~#cH4wsuDwaPP{7D>AAmk=7`)Cs1`K(mu65M4Tfn@*^}E(ZK-{7Lkr*hm!>3a!tT%8?ZOA z=uMW@8f%tmSBlAl@0ru)LMIT*kq%1#081iI{LWXAaW%_(n#egnj*8aQYDrHyB}rA| z2+HMQrUn$5VnmlH1cx6PR5j+D5&`FP=m+#%>C<}Kt@l4;F4rG1&clf&I^p)_nPdW1 z%bFsxdxMiot zO=S5Hz@g_-sJA6RKD!I)U~5CNT$mMG;H%BTOomPexLY8A>l``@4y@|H1LoRP9aH}R zsJ6Cs=d&LF0N{_G@$9VB=ME%r&kUD>ER4AoimjKMdmPol6d(Scvn`Bnb_e$;w=f>R(?NOy7*)%@T-t#u$%p)=lql2KE;t#;C88WX(N@j-M6H!NgaOFe#D2 z9D=bRT>Ze7(`#DQWxSG&0sDVkW?u9SN@TuV!zbns@Lst z(A2{h8xn8)#+($%V5&eQZhS@R^ibKJ?~fQs4;?@tlc57`#bns>Z_>CtW92dvGlbPx z=<03=`uN_u9uhR{;LFO7z*|b|)uSDeLEO7E`6Z^EieSZZ2UlTRHF*lSU%8p@u5$P@ zulr)?BS#I-RzGMJX(EDH(zU^~e zf8%_0U6~prfL0kQ!_~&cxx%s)h&Uo>=cW1_ydC)Nv=E)+mFUU9MxWyyndijrkxi~Nj*H8nV7{#emtCuwfxTfjh52mBQq-v2`UJQ~Y}RAI#->PbkXE731S^$q%Og07~eqWX9GD-q{3fkjiyOUu=dW zaclnotzq3~Ef?$IGRj;g#g&`dur?01z5f8~*Ziw3cK0YRb&Q>p61a|KBI$bq2t04K zhQxSLOT%a^i@wP^%gQzi(a5(d#=uzIR$n5qlFe+Jor5MkF|du}f$tECt1l zx8F~~s;0$f?oI~rGI+lkM;9M*-_!v8W1$r9Pe7A@@LuFFv!MOQDLA(wFtaVVkcYqx zY}fw)=b7Z!GKs@#4}QgvO$x~y1`I(y1Rc-gdd{+7Y6sKk7W;}~6saf1)Bu_t_vt_! z$B(2_07$sCAR8JBQUOlJm>h0&parqofCbdrkRdEU6u@bfgIsM$X8^=%XaPM}pawwF zkj~VxzSICg2^vrWzJO2yhCl!!^Z;LTT>caQ;@FB{7bO>6^wxn0rI=iA{uBT}6MLJ` z0s2PNz(QK%{-bZ{2c((sE&1D12ho^5v|Tj)GAtEh^s$1lWNuj)Jh0F7C}02?YeG3Cf4qTH!{4T9e6 z0Ofsly;HXEi?z~Oor@kU%z( zQXpvzKr6<#ZX(v=HSqI30jBz~z9GP?Un3VVdx zhyvu1sB2o9(&V<5?#v#0k=>7U$H~b=%SrO@iyj8A-6@D7}?o z8nxMKbir`=+<)1ac2c4(dUB%sOUk8|3F zG(Ns8xiT?Jb@ut1V+Z+VuWl~{8I$H7@T&R2|trwz@JTz4sb2S1DQz4*+>6^qZ0|V^Dj2Q8nYYm65EeyJmMHQ<|{* zuWfhKgL@vdozohns#ZQXYKAcyk4h84NhNG|1UD@&;ZSx(sWw(+Wn+K@amVjipe{Kb ze6$=^#)JCAvZy_kzDUgG?B7BnKO zY-YC`5;!5@7~*sQ4FIbk%G|N!UNj(Nlf*_xTDzfFQ#Ic`ziw7GYXh(*_xx)W`8pbB z2af!M+hlcLxDrQByH@`I7E?7`pjg?^9i_(|ajl z+X^a*=)N!9@)@5lFsSHSBr9}d_#0lWx0g!()+*_3WXnT@itg_q`}u_g-~P})g>bxzzU~dQWPbS}IIg2|bm`Wg zj=rfUZVx5-ac1u_C;`8utA7E>P3zP6Sl9TRpC|Ve%O5FZTVCsZ`h&;{(%d6F8V`s| z6wtO5oDrwu(JYEda)js)se1LUf1a9s>!E*+`aY%h8YE2kS<#4Xa}yODRfq>c{DdD+ z2hw%g_UG)huIf4X{Y?o&hC|KAI2jC?5rjeMmM}F_{K2j2`t=oVy`OPP6|367#Z!%y z98f2?k`QBSlY8vITCB6~tiDLBJQ`S~S&i00(5DqLo>D4+zyoi&QpKC?C(5w39P(P2 z)^BW^n2^KG8qAIk#Pm|8+Fxp&H!dV?79SMun0UGCiJf?{WjrKe#dzFwBsP{H*@l&0 zk*V2tAWjc`_||ODh;a;!FmQiwF=EO}k5Upv?ci>0wQ`mjPQ;!~WG*B{xZ>6akA?aQ znkaZ21#ib<1?@~ieSZo79zI&$=kcTm9j$F>0k^m1KnlPSeT@JJ7Sn0~Pzl!b0Iaqi zGypg2y#O}t>L6-&q%khPjQ|63>Ae6msJHmi8Q0c;96-cg^Z-nBvFktr2Zr7h0OGEn z=S&3_y}AkjUIyff1UQ1gc=ezdU|8rWh+7S>buH-~ z4%JT9S*;a)o(GX5Cy-UU7S`Mk=^>5$392=tM#f#n-_uj~5_uc-2SIyutu^4yZc47_ znIgCBppy9ya#SE=YaQ-IfHuEcuV%=?F4sxR2P{ABqE#+z>a!vZro=~shUXR zSd_^$^4ibCcDQC2u?F|o(rQ+Hs{_?Xdrglpm$GJePUjXZp6)zE2{KuO8UD}_5U3?W zfuL5suX{HlYI`G&P4$YY9LdJSl26*=N{%s63Pp=~dFf>J>Nx-zi8}6Yu{9~>lkPH~ zAf67>+~P-!WpRj0Jc)TklUxX4l2&!)!a?e`mje8>QP9&?>&ceZQ!sh)P62?T55dsjPBCFL5=-0>=#^3)v&Bd<}lYVL!d*(Y7! z?a*A=j>6qVsK`P=FQkG=VssZj;3;0hm!Tmx z6vv8|{D+-N*vT5H!Ib$V^GAlkE*?)vVPRlR{{X_WSmJi(MW5}}lzD6`KYSDI7C1zFSTC!g{aShXQ+JX*qeUf)i^fi; z?IaQYwJA@KB|+RWRm(E4Cr0o!TcYSTgE?4IBSh%DSQ{x88lNtMr8KOZkaZc0AGgNd zh{3re02ElC0tLVx0<3#1`6^oBko$yk${Aqvm1F8*peIsl&2~$Wbt+}-`FQe-sAOMw zsaFUEm>t1gn@ZHT*2}f55bPernN^FVO$a--KdlM#i29fEs@XR*UMg{{YFU%Idy4kyc-}#93fWcn&5*I%MCTCtha0f>7z57lg_d~+F1F&zJu73yU5(X-zi1IHQP`wr$9-)j;h!36^F=QRHADuDD}?Q-)6|h zU)|!lVP_8zEpfn-K(?*OFyf5WTC!$4QW;=7lrB?&F2|8YQl6p#^a4(&>G;tkdr2_M zGp*%>z}EX6m5BcU^a&qbX^|WY>Kg7f=su(W0GeQO*e$JK4FEMExi;ywCI?)dO#pV= zPy(xfEOh)R0Y;-r00#tZKn*`jZYd1lx3#DMTFQ0n;Xn+o)P^Fp$rJ$OYpFNTPyvt| z&VUe&r~`pCz;R819Zdob`rE>Q2p|4wh~V1kNMQqeo9#?Of_VXL!6WdXWf#eKA|V%M zenD(ai2~g%r>dyk(7#C+w3Ukw9px%=Bv@iLC9Y&Byg?V%&DN`;$z|DbF_n;rKxuf8 zJQUm=Zg#7z;HIcx1;=082E51Ck`=oJxCeo~?spvk-m_Z$4Hd6ZsWG8^@pyytQSGE; z4iD-s%%Fg8pw^?>or@KksXw^Cv5Zm^#pkdtEJRU&P094}3NK@>yVcjih18>7T)u`5 zXa4|n&N-$LD2bt5Ph~3{}8qIsQ;N429)OWh1*j<`YgEYrGG!v1K zsGQ7JKH(&S5p0+HzfHBZM=Jzr#T;B!gN1Ex%<>D&TTL|E zz!c4(zqWZi*C@-7(=YK{ecP`iarswIULmtS%;3j-m7+ZH;cw{1 zid0-R-GaP~NB~^;bhWFep>=0Bb(af+S^b=pu0yD9B$4^;T<_%92UGax^t0)&j%fnN z_7>{50^<7K{cD@7d%2TLi*P*u058h5Bw=hTGiXh=-~6e>i-E*Tf2q{ek|5aSh3UZ= z8)5@!HR(}gk-fu6!GBF7t99;UYPug1gQhQtEJ4U2|{hSsx5O9GD^?#UavW^@EX3lki=Btb zqg7BBfxVt1`r}|uo(9`(U9Vf$*0%W1xhkf;VbwyRT zN5S34ww@{OH#L!eqc(&{gHSKyZEAXV`gG+E^dP1le`^bqj^)eTy08BLkBPAS#cBJL z*@joz>yuO4dzLqFl))_WEK_i9Ol@}ndWr%zVtCk!!?#n{l(;Rer;}CNdl!GgnGP}* zjFD$q4;KZ14PXb3ymzb{cGBxSmer$QjodrV23&2Qg(glsu{%P2YZ_lwX8>D@+g&Rq zYgoYSli<_#pPc+}E!roT;*dC)oeSfmg4YQqoE7)!y-m@hEw!{?NAIhw*b}S5Re7qh zpB+dV0k0^El2M_F>_Dr~)`PThvA> z*lKq)z;F?;A6fu%zz_4L026I~lmLfogY~2W#8{v3pa-vG{#3*j#kSgj0Jnj)13EH! z>UZft4#-BA-i9Plch{5KfmB_ZWgBP*sOx>c+RwLxMxIFcIK^@C%LbF#DJ6yOBnVCT zod{jkjaNqsOKp~0K5OGbWM%-$I71bI)Zf)}_i1fTf{W~ERH9^TRh<#$bPbY6AdGnu zNFWn$;58w$5?TuIR}7bHi(6l%snPv;C3PC` zP0yWjvlj`1v@EP8CCZdB6$FUb{oIeFuP+UaP1_}PtSKU5;$wS~aU5a_-?{fayIHJH zG7Gwy7pS$o2sWx}lF4nG;L7*pOzerWq++S)xNf%!jh3`tpi=VfCfHz3D=B(Sx#QMLZxI-ZJ`+XtTae2D~WisOt^6-S6@c@J9# zHV2pid33#X^e(0y&Qug##BywfaMHI4X@?W-2m+{Y(eMi{k0vNA#X#l;)+&~8Z0K&Oi*>>uhIGJzt-u`u^GYydV zu=4Y%m9W7(b@8S}h7Hb}(;{)OzO(?Bww-B6-~+b5jYMK`8=a_u$;?Oq+yE`o_aB`x z1$6Py>7k%9A0SSKq(%-Ld7BM-nmUI;jItFCj(~4axn{hcbMqO*ssJ}w?k(qiezlcy zbu_3)muAR@XW}o&>3!@ruCAqlUF3HifkSN$)a}U>SmC<@FS*}m{5Zbe;GYIW#hD-=yv;zbjh3TKM^fw+!CpM~j({ z3t~!Rjn+8v<7s(5K0!J|$+h5b=)Sf)kQ%sE?ya2V_4i)C=lzYY8Z*XBj0~X5b?Gv% zrCeWs# zV?G0sa80-{HwVQ?sqWUT^;Z@lOEr#$&k#c_0!1r4E}?G7HL<>=f&&sgT7MB-w`QC? zGejap{{RAuGa0+5WRsepPFUvt>|~p8l~jK=&)4uZbv)L-o0azDnem?c-Md7G5lL4L zOqeqg!srO(jc^YTK_RSdv8e8)Zl|ZH;!jZczt3=cqb3CNBC~Q=#mJ46GU}W|Gb#cU zi^qL|u|0C%Q?7YMHltZD@;(RgoXFXt#*Q>|swg2rWh=@e2r-_amZGltM1JMEnBL{_ zzm|MncFXL%vwK=ObBm~%3!AmYQdtMdles~2Ve0CpKJ`7~b}?tG6wOUX^HKGL@)tF>KRG8RU^3Q6QblZ6=x{{WC7y6dr0K-^Lw$s8^Ibc6^? zbkI--8y)BY9FQ~=04m1buMgos3!(70od6+>9e**>fEq7wM%0ENvWspF05UD0Kb1sh zX?0P z6aX?7;zjI8>-bV&if@rgB6j}(LIW#VVCBp1Hy)cC+-X#8;L)XIl^aKch6^(BOTI^^ z)EdITj}SjSDz}79F6LLml=+2wgtIDOm;RgqL68vKMakGTfv~=(N{%8~WJVVxF6-St zd66$@#K@XBi-pWFFB4*|cw><9v0|s2fAtj?W=^z8O9D7@6T6uEd~NMOA&59;;~qFx zL1h-u78`9*=FSPX^yID1`EE8=Q(`QFBO1mfG9Vn4326c|kfDNx)SW!(IdDq4;F9?m z@b|WA5d1^sgb|aq8UK z--ne|%l9>^q>L|d%g%;;i7oAk)uNRO{{U7*aj&Ozz4RJZ{Yf}PY|MXi?(h4kpNbZb zCDjQWxjPuaU0H>Y8~N8$T|S?{=WM=z5*Kied_39lOOJ9FcxGs<%1mwPD9SCwY1HZ~ zR<|iLCHZBK_U|CW@r{UsS=Md-ImOSael;V>iy5`bgTaW^PRD;L z;%heVSv3$AE8~5^^Q~1dUL=*_{{S0Q%0&ct&>_Iq+phQNQj#qI&Ph6G4xWGUdW&O7 z;A}PP(vTf>u|5>S24OA)@_HJYy{S6YO5-*UxfWswbv?oV3j>Ayl7 zDo2KCRzL^ayI!w#Osz8G5@apQ^o{&$J?P2S#e`C)BFc3-5)Dx5%VeF6DzlNTuV8i+ zTSSQxfpWkL9mj>LC=lPZ$+Z{U->C=6oP?3)LOn*{17Hm_#zwIh>Od#({xxC<8j!Oo zzKlhNgIb+dL6PzRBo!nzt$n!Lr=440a<+=;oG&8QLNz4xwzYCaZ60~^754HGk-cs% z;D6QVBwwbL-0)nioWCoQhEjO@1YN|E#-T>x&n3OQSaGdO*V!3u=rxX(b&@iDxyFNg zk<;r%-$&3%bv0e9xqjA1j%bEvJkf=l9m!vQAJnRJWR(x75PE$La`$TP%5c;EkNh)D zZ3K?!CdG~{!6SDL!IZ&Z%a+Y7QlGjRJs^SltiO;ExKj%eh6rsMGWUY<&W;Pz$B(1q>EfDrR`?38`}0ZHryH-dfX9p z^e5!@1CIhr8vg*fcHG0lEbngeMu*Z&(G6dYClV5WIf0fM|={ZRbb=*=>C(fgFVZ+wi1F3pZK-XsaKz>(tT!;@3t5 z5xMc82YBAz0)RMMezX7$$Q$_dpafEHpa$JK&;yalbLtl&fD99@^ri!fG!zIxI`~jC zi9IL*xyjP}*({!=(DR(!>9S-~57@8Bxnk|fx@<;<{-QRkYgCbZ znSTA15>A-XhyB#5vTPfPLtwI8>t(*1u9mIdJsVTd&$h~7rJD(T^g+l%&eBgCqVY>9 zC{>BSCkk(W3fW8G&3b)Cd%0vnGNg24D#)tt3AMS4@#4x^NMPFaxHZ38aEv!zZT>B81*awxzmlb>Hh%DdF^LYefvswzIrc<>ApjEE+kf$^B&)PFkRF2m17E_4BI+Z|2E4bh)9XpGs(@!(^uC}2 zx1H)e!|ge;Lhf}N4;mfAu&mGTnE2}K&wBtY4#&dPTe)>KwqyJ6%)%v*f-F^m9Z0`Z zr6pHmUcD)DVxQ#m=4A*&miHTF>u#F)3bp8kEWI?iJ$K=qnK658c`kuxm|R#}(st7O zo&NwDTI)GEzE0V+8e8-`Rpvm%h^KE+7rjY1Bih-M`3H4mc13FtP3s=ZWa#MCgCpH$ z85G2VgoMtxXexJ9+w!jG zflPiUBg=Uy+BBADOWH|A&@m#;1<{Z36{1>SBQsea?J%U_;w}*69%`%z;Ub$j*a2q$ z02-&rZn^aR2dz#$OXzVLY+&)dvLVscMT)T3e>+z?+dFL!hG|ulISyu4G!qzN5=SWZ z^KnSBOu7-E8a2nIhgwdRvr^(XeuBy?WbMchWp=r}%wu*cG?E4clCFz;E}9kepDNI{ z{{Y8g`oCX~>+>t^>rnA?0dVt18*pci#2b2jL+x#Tl&`Khe}L<9-Ftf^Co2jM3tUd#6;f%e^Dwht{;LzF-;GUFt+IFkY%NkEai9RP)b*eQCx{mpy&w>s zH=qG6<3IpS_Ml*u3;@2gfF1_^Q~)KeZQ(%15kRPb=KE6smf#ESXaKKF4q>jMfB>ij z8*AlA0zxm~2VS%QYQv`Vz%!=W_=*H@)L08p0`aliN&pE$h7GA@AS(X=)N}{<(qlzt zWYaDxe%<-EH3wTYxq!`UuS@mb)lG}(?q(KDHqXeK9zM{Q+J+)droc$T*R{_6diAW^ z9!-@_1nqI2@1HwK8pfE%`i;Ypvi+(V?xlQq4NC88QjEeSXWENDl6MG)Z!jZ>-QjL! z7Q!_)TY%jMEw6Lo;8~&?YUWI)e9&U9SM9jD5@R5Z4!jBvQmwTm(&nmZJQ^!Aknr;Y zcBO=Y96%+p(Tcwy#aRhrOMg+9U#+yNc5=zpWY2fDY`)j(t-sEtt)0tKV zKS^GvQs5e%y>g|JcY+LYt~3(nWJSUV)vpAsTsQ}3*swfxHx|F9_B9uqLgbR*#b$he zGG6xi?>06@GpD#chiH_nfG@QgmAZtuUB8WVzWr-X)SQ{tw(Tse`8>&shm(ngF?Mz_ zn;=lip@qluXlb@w@C)Ono8 z5^T$$VXnPxaaSuzL)QeDvRsZ}0)*TP_-JjW^)+I?6Kn z0y)^;#1%W={3;H_l?c=4qN5vtM(yToZFBXdB$Wzowbg6uCu_ZP0GWLTz284fN~#I*58do zR>rNK30}A{)6XV6-r%@KJr3P$1$EU`k)2u@rR?48I)Ns(&|ht92LAvb(A7)HsDmsO zM=f%7TXX}$x%Q!PJ|~kxJ!))jcekHfp`nE8j7tG?xVD<~y$EA6sMlZy=G_mCO(2p4 z!F1Glj|)}x6J$B9a0b@b>sHi*Dl_D>gMYTS(O8@gSR}wbuKKTh5}|?{$4hMAbA%frsur*kn9q zZ*mD#5L#8YCDe~wDca*v=T%)|A5MN>;47DdQSq$&Y`Fx{D;%T*%M$2V0Cn75Z@B$E zJS&gpYIIQl0B^^~xwB2Xxa7a?A0A0qEgH?YK=jucIrR=aS>I`?Jd%n=k{m|l*zs^K z+~&o(A#bAuCx}1Ir8?T&H~51^x5slmjHuC=dvo$w$-RMN(XK2$zmckZic0wotkO%_ z##)T114yxsEgDD7xb*;wi{8L6A6m;zk%DcSf9>~a5K1FqBQ!v?W?N`W6=UfdXgbkn z-DxxKwhv5QtU(si)nSY#pg>sAFir132u1Bk0l2=@03_LU-hc;=zghrNK;D1_Pg6)> z7|GXa0AqSX4O9-a07rf4fU9G^v;eL_(ts0>sGDm*3L___z@P^ZX{gqL3IHFC04oFd zPyjT94X79f=HQEyw~6Q~EM-@Bo-g*vvRXmHCyqp9BbW3@Cqr>|Z>F2oHZRt)V<(Z} z!;TIs6!{Wyk$tgrcGZrhi*KmEu5_H~vz8 zg+nO`uI6U@pM7cZq_lwR0fmTAtVOu)cIrZ{Wy|2cBZIqH#f1dfK9iG{ zz|6+p+L+}*AX9%zHORTvpx#Gh$a8lbStQ8Eo-p30Slp;QMYwVt0pZTqSGM-?H3e95 zP4R(_*EUSZa3-1a0$t}X#x_oFBwMY|CTEX8Sn{{>-9fixWpF`LKIJFPVM!O*$d}s0 z$0;C=#F9%3Dn^$H7*nR38~D-VH#60i+91#4C)Up(x(cw!L`` zHW$}=+6t)CWe>|RPF;c3`;R@>v^^k~Sb6eI_HzUZZ;1;#=xT@@4XPaAG9w zzTacP&$ug-E=(ao)O!LWdk&YBTDq#=Q%5zd5`HHvhr41c4L#9&b+)#p+YY zcz!k2)8oRHX1>_MC;VUI6Xi^^WL&X7k-n8rmES!LcJy6@j0?wBzdpn>L%ZhZrj0K0;;zNsUxRUalH{{X(2(@J5V2Py>`Nhypn zi*M-!xA3h`#MsoPnAV!6T+8y9^80X`9#ozgh0;jQnr=LASuI;94-B1XlQG@PyhzT& zQ-2!KuTf>$Sr&VTkF<)lkw$Zqf3nl zH`iK&s5W%$oK1-64~D%eNfDB>D!_s?0`+x471!3=Fsn&2pS!=I#^$u?St+^X9sIKQ z{ui(S3*V^JSE=!T^+~|;pZ-FBVa<~YStFHs#Ov*3rG?o+v9Pxd7w*9v0@?>VyE0xMNeT(FH`B;$7 zXA!)KaWaxrfw&}wC~kEJ{40m$cy^_lN`5~xcD>5WA$L4%446uBUIypdd$K8Q%x$X+ z0D4=*UZbaF=>9)3+Nqfi>DrY^F~kDsI5~4~3q9>!eH-VNX1=nipvW#JR3dovkejPm z>_cBtHm!>4BcVg9F1ts4%#BQMBf5evA47H8*WR;k@#^xCWiH9XxFIUCOk6dJP6e%h z({s1wRjpo#pK)m(R!N7{v5?@gUMk#{_U5GBfd}rl*IKW&Nhvp91n*6kEM2}?nO5Z@ z3P=gaTH?pA@UDN8tF_4O#GbYB?%24B*$x8E_eTH$pgl*4>rvNO$&Y2{1$pXaGqZcGiFeO^&^Gq%esGdSW4gVXn0jLD+Hn z&;qL6O^);cVJra@z*2V8S^!Y1Zd3?W*qQ)6PMs(NfVP5w5b4%{0E@T)&;nfhWCryr zlAvx5p-m!2bL9QbSaG3)nnx&Al4orQ;cjGwvDJr916j6M)uxhU&+e!07$!LQlQNO- z#z<8l6_o0#b+H5g0Gg_W*j zf3<#WdaIc-ou3=tpNvRM82*y&YjRPht-Y*z+M#*sYHksvf-WtQ$-i`A0!4{{Qpi=7 z{6>b{wH2SK2f-I71{O&F0B;YylN7N-4nmF#B9>)KmA`}PMyB0uO|~S&?|t94_S|P~ z*&JeNWM_HZRIHj??A_iBk(R2OA?lDDgk1;ZLrpxMY^6yJ+^q{#EIEnD8M8oz_PDjR=sHxzb8#0 zZcLYU&|K&Sw>#MM-+E+99^sfHNB5*G!`Hx*)Bpy{abx^C)s?KWXvX($@{yyrJ|zd< z+6@J-;iYsm=xvJEg9qF@=2vi(#fiydCdN~Hk>%lCoqj!Nrp7DncEU6t7x)_5;TkhNB}=`TktnM1s&}hHSA4fq=h?P z8^|P&+7f9h$DjwtjSkJ0y12of?!^*PBAFzJlfl91<~mlbKO&oz-_eaP%o2KDw5eqc z71@2h9G49_GF$9J_K(7}QvJLN1|#e^CSfPHW=)ElUaWhZK$R4ikjhm=Kxu1gZ}h4o zGD(h1jV14WKI49#RXX5QApHx}zq?EsEb@fuv7gy=!=rvibNW_H&8 zBzcNs7?Z03sqvRkn;k7$wKzp~Ja^=6%j9#Bs04sMo}clrS>k``N1yV4_OezB z12UE;*RLkmQ{(4UZCE8%PKUc?_S~eF5E>yOys(p}E+i{k?bz7q_=96v?WVgc50XyK zuLj!>y8>i2GhF>p?SM<%y{Kf<27F1Q;h zGBF5pk)C%vT}AArwgek(YTHZVSyhIi#C6rmI(1fKZ}|Lb*RVT8{i}0%05K-MhY!K_ zutQ^Z{{V~Cs_GzvsV@#jg}tUnXN`mVO}wCru~; zFQotj4QK%l)PM#64d?)GVh8b{4r^=YKmfl=LkQaUrXnvAPtu}DAwUML({DNeUvOUD zG{ADh>p+CCCy#{yaqtujGz5!p<3b{H9e1E;L89F1XaN8`wb=gvjQ}Su0JB(waI0>< z6qzJ>$IWt*e7WO5Br!U{Ap-1-pVVCe9+GZ3b=ShPTNaalj=qvkAFe!=svXy)>#X@U^DxCSImMq<}pC{zU+nA#{-#tW`zO|Bje(5?GSV1;p0|j2Xa($-(H>-7{MoLvnp~+$Rq_x4!opd4bT!) z-A67~Bc}8sd>GG`=A3tsDIiCxF(%*vYhO;iD|d~rxsGsoR!&A=ddwj&`%uo!GO6Gz;oo2-oO!=~g1EHWS9S0^h@5Ds2K~ z7j~Wj%1JC$Z)VlFkSquv;Z)wnjdf?6{DH7ZV3Ca&koUPazn_ndEo|LX;KkrpDbhs}|C?P}d#!o15#f3tXMH z1F1iaG!jjLQPR$A7xA?w@&r80RWUS*E*DlFf1O=RWK7S^jU+Ohh&Rx(bRxB@CZUkw z$}f9HV$T@rZ)Q`akC?1G_4cz}FDSZ4^xDT#Em>fkhQx~xD}&V2KoWu!T=W;HwgWRB zM2pyp5Tvijh!tl1YWmxu8y*?mpWN=5QxDZ4Z=mFB+2~QNFJsPbb9T!P+P>-*&^$yk zf_DJi{$EPZy9}K&O3x9H8G|&DZt?xWSl^Jb@~ryX{-o^;lYt*=7DFVcCQ{Letnvk3 zt{d7wx@tx0t*-uy9~k5m78qH*#~N-JlNsV1SS#7cy^ko$k$r0>-E^{>D1RK5)wRK) z#`zv;h(j?AZ453N+*pPH7Ch7)N%d=7`}nn)MeAb+BfBgrUUhUtvm*xNtVprBP^>rF zois~?4*sJN=U}_UQzd3qAjpqyLgzuzmrnv}Z&lRFfh#XjRy=tMg>P?$njUF(H}bJQ zH7T+hg3A*YRbU!2`VtBf%dhf+c~w@r=t&2a+EQg>9E41R({XSw<~IB)diOQT!5dac zaY>PjI;^S>v~CLM+W~XaYx((BhLx5I<)hyJ0Jpy_e7@Xq5i+z&RDz@e2-FaDxIPDZMIzg+AP|}W6KfmL0CFG; z@8d`W3#IRS&;YQY00#St08K&Gkj~U=YfuLRalHUB!~yl`NMfqk-hdndPN%Naz)+*Y zfdnjC!(q~ZIY8xe(ts3!Yp(PFA)k?;1#oYA0Sjx5e<}c8KC#w-2Fc7TY6BMALvFu? z13ZDUo__0@6SF%UhGhYQg6Q6c2G7fivybtt`!V>PIxH`d1N(v9)b_}GUOuKU%F~}w zU~TRmM#XFx00^-S{{T%t7Mbq!CXtDkEb@sgT0>%0NEQpOhg(&hoU=rl3{K;PkB!Yp ze1phE$Y`jmVAcoJ%*62o_+GKvjj^&$6o)@6+U{){#XeHxNADozb%~g1Z$dXNR_SV1 z!pETokz?{CnjBm#EZK;bWGw3lJXNGCDfb`JuB zloGSTgULU+vN}bOLh)jx05!O86V|%F#;LL=vlJ?O4{eSf-42$10O{s0deP)=ZtSj< z!K&;X)3)Q!?32z#u>$`9XwaI$yIr11`y1?UllDlId)X=K(_ha0JZmzm^da_a_(go-6jhcN4)56@Dkk8KT8LUzURSW?)9v8K$henyc zx^GpIl5W?C@iQkAYm#^IHDa?ubt^LabTNjz01fs!TgI-X+aUFoQmPgy9D_|jy=vDy zvYYB7Iy&5i-@@1YD@|ELq0y|o?*5bE^{Gg^Nl=n4YwOp*(g-Alxb=FyHnG!FN0{ z^<6J=7jUHTSxA#2W3gsnZ{jqsZ(LO#ak*@p+T{phm5B_*Q-DWfoEOFEb%j zmN!1AfK-%e>Q@8Hp|xP8rAJchD9KZtWyb!jv82NG4sU0S{e&{{VQUp5mg2N)i(zBq z;gsJ5j6ajef+QHIAdO0hQRKNj4drRAZ~8#0ws>jIbNGK~9d^NekMjh`iB}>PW3joo zv9`loYNK9N&%c1`@Xa;fJfg}x##=TM{{T)-M8rUKJd}$V&BGDM*q^AXJ3s1KEScbm zKWvvFec=d(KnX7$z&0PsG#`aoUCOwbBIzV(u=|P@jJ2&|2s~_d-md$Uc_Z4xi@j&# zo-%Tc#-Z0hz}yq$YH!D-xX6{-F4yEDMYNVjBhuB4D{dBDB#*PVhjLF;;@(QKa zM&)>=vwBG&C~r?IEw!~+wL+eP?&x|y_P%_P-|$2~_&}EKMhN_Aup!X zfE#q626oULJZTId2p8&hpaLE}M~yHK{x3ir30<$RS^yxL+|Vf(rt|^U7TWiq0w7Zm zi>NoCXKUB3AR6N6whdrgL9bKN*Xcmd9?p^A`6gn806@}YLd#+qWiGbd>VzG9YK^KF z%<1ZLRC)gZam`$)<;!3_$)%Om)ZM+YvhpL576jV$vXt%mek8S#aU0ytRYI-7c`-jr z>7naTx{8xoWrO4=xddUwYT85njZgBRY3vH!8|*yqk?xu|rZS zJe7~}HOqLVm^@K~As3rhirl?=as>hpwa7o?Q{M^~CFy#RyO(ii_OPNz;)xfOPzC!L z_7+<&JqJw>&{(ButOR_%k_~PBVR{1UtG! zNIZs)ti?i}EWCqk2j_a|(vev(TGGh0gES6w3J5Z z>0CCuY|*vnCC*TeMG_TY-~yofysS6gq{6rh(4DmwO;td-BK-l}Z}?Mu5zlr8AV80i z6~J4DEH)&9PQ>rZqKR4Xd2jbSw}~26i3c4CAc8J>U+Y`^3#!<^nic)81kc-|U5g7F zZ*Rh-w`5$3;Kh8`xA%VAoHL*dkn$#FUV}l?rFDEAw7q*@CT*(8$})K$CGPT0ki#<$ zeRsF#T?OOODQKqtW#$pM_}9b!RoweTeb4tYk9J`kD|-fBTnlO7+I|(v@_emyzh`el zR-N{0U5`iY{{Y(V^xg7q()n_O6l*Uq!|Y*UsTTXRu64Jzu~jCA=A}hxD?5k8yZ-=h z?ne!>mA;N(RlCAKaI2kCtcU0rpz87KE@L_a0TPqoO_=KX5V{$$A8Vk2aH zgDP@)x$*$%S5wDGrrSLR(>_wyLT)#(y{hG{6j_p2xa9$VSROn{8h#Xgv{v9Y?^30V zgjjA^TBN*m_$zQq#rYO1uo8i96gQ|_#cP3JwuiXk$^%B?-W_ghJJn^#fXSLG@m*Nj z>*G?bSr*Fv6n{9)7@r=>b70QA6QQ}-R?p*g z_wGoe$+vA8;uj~?xnf)KHSG^RSa#y2xRtt3dy~<;YcB3SMYLwc5lPi6$8OO8Z zu~x;D%8YDmx~bTHCZqS?7Em3D@LTrY&4nl&=bAFVaS@g${J)K4-Q-tdVQE;I{~q+h4h>e&ZF7w;g~4t0j)!lX|aeqs569@?V9!>5gAGadNS8OLe>LqGv0sCv=? zt!?E%1JiH9fD-=z{7^HkdITlMD^Le<*8M0L$T!-eFqrFOOa(*BTj@vx7Pj=na0l_A zVF7dMKZOD~@$0PsDgmvi0FAFqLJcVZw8lrAJ=LSQDoY!6JQxf9G=_OM_ZC=UpCU2J z2-y>uLFf+A7GuWiW6jWMeKpr=NllH~I6Qr)Z`$yX+2c}5^$g8p{0(#+bAt5A*fIMU za%3B;k#&9}Tia{gXbtXk)2(CMmj$W8Dj2ddCXO^fv4DNWUL>v06Ye#~r0MCtx40Ee znn-abyR!URe3*EjY-6yIa*H5Ujg5+`Y`kRQZcAgt+r%7OH&(goCp;QlsW2mH4=2dT z_JEdKa*i<=jI-VB2mmkRVQR+hYZ9$v*vt3q{MqMq9uUzi4Ll~pQjt0 zFVdw-CCOz)!AtV6+YmG;!o=3-}wY^q=a$)}ft-*D+ ziZ5_A*Fp})o8U{5EG#|FKHcmOxaUoLt$lA%B+O^b`*JohkPTktwA_nz>sD#BSkbM@ zf{WtzB~ynx9t#=RlY0$3yejSd$eK0{@hn`-Ot@!-9Vb$&q3iXr=~YtJtCUjqWckbH z9~qb9J=R8e%((c^dw_jWxB6G9@qCZHSnAB)UXI1yziISO_KW0rozvlcvUxa$%$8TN zvay&--1HwpY%7K4YwX)wVeZ+X_%TreW0Q5PYg|^#OcqR7VhPw8dr;$IUAEZda z;hgAgS@v(Wob(}mtGWtK;qX+-?KrGuSf$93+1>UD8W!XHEIdta)8;zg*so>O{Er3s z9Mj=vvB#C8bz-(tZI55dy?>0A>y&Z#ZE4DIKid9VmlA_1vzBRcm-;f7Ybm%R%DL5fMwlM>wj)P{%#9{u z_V5R9;Z*s%CjS5;?Ny4GgI4k#I@Vr;V_8diqKNgmZ!ZtdrA`|n$6}9+S2iWS-=#v& zB$4Mo-M;Fv<6__`)!Uqd$PsGqe+Qy$?sGqp*%e6hh}Q5SBU_RG03V%t8$6t}uuARR zjD{N)B=S+$&-hhaxRP`=SlNpvQse{bvTAhX6$0OX0cNg7%0h!(Y#+;eWFSYAHRQ#W zd1K7FI_v5}NY{=302+sdx#p|)E=caDSHVO3Xz`_4uyPh)N7%%qoo(p`&!F8&9V=_I zvWp`+#|4fDewxP@*+>iSH}_MMEsm>jrHBWh(z0!BFH+hvUTb8+%N(*5iODfD z4oFG3xg$_|Yx&eQD%na|C1ytMc@kzqUPltl7lP^ohePS)N8U)VzW)GP)2h9%(1Um) zd^NjXH+IR(?y@Rl!vwM_Ny^VKAR<{kO?GXUrOj&cRjov;%>G4740KJK@_z4)jT~q9 z83sITXcUqGYb~zCg#_=?^pzH>wl?JYgX3Ql?cKgLf7>cg5~K+?CSv9^R4>Zvt%_ai|kWCnt(nhy+ zYqz#q+;qQM#j&c%XC}|%xRBv0SraEM<3T5^@L3f4xB@pK*8Fc=t@~x;2)$PsG%btV z*#tp>=2)0njqDX$WU|J;)KR9FHmtp~m%w*b5nCq*wzx_1rDl=?oWN z0-k1?m%y^hrbl?#g;?=YS1_2zrIc7RaXna(zPGC1^(|bKSsC~;r?j&XjEX(UFLrA$ zE+XGu*z*1rZ8g4H$n9@JiWG`>Je!Pe_ef36gIp7T8{5@doURIx-*>@^6D08@(ai)$ zgQpn?m5&8yU>4DlV0WuDUU0~4tYogkjTRVUAw;byaiKg=T$}OrYQnCwn>I$ODu`xG zNuMH2mvYgo`z*VON#ul)H? zL(S3MsayV#(RJMFeF=wHh#9g>ourvLvLX;kpuSZXoJ+zO^*)D9IX3 zgpNURW1$EwVsEMGa4Id0R!YB>q;CTm8$}FN4aLRmdi2ttQq3k);E=Sv%2DZK8#J5+ ziQ2qgwcJ-A1uL666S5-z$8NxzNtJ~diKM$EVO8{x2bEH%tX{mEfc9aRBRokMw6 zom(9q4PGYX{)=$W3}1uy{=@QY4(0Lula7#0?&HYTkzjHNu}9>L4eTyHwb`$oO`6?q zrT(T*EBNQG-PQfSq3fU8kC6Q19zT#~_h|Av$7>S%hG6k4q~HMJBw~y0l(vhYu(e?F zR=(BSgFUG&Daq(R9Ql?z%PH=}V9Ai-aFMQ2L}QYm40gHYpsA_--3l+N)v9fBT4Ybnc!8$(r)w1|l+nBx z*|SDQjVHMv+g<|IO(8PtO_AOCBa^bcQUFZG=aA}ktFQY=YL$6LW8~S8_V0?b%_sCA zM0o|ZQ7;f#y6DeQtsSDPlKpOWNne@YFrxU%F_j~V9udVI?7pSd?sw+x{*_m2x6)jy z)#Sqb>*xKyv-Z;vb@x^RVnWt(I)Dd9dg=H+6}Ht ze-o{HTB_?%a@B3KgK_Zx0EH#jFFkzXjE&Eoa=hO?{@R^SAH+*6^n45$A&%;nzRRV6 z6~WoD*_)MMkDm$2%8Lux-}8*duLu}x&Qyqd1nBpEPE+OxtmF5IGLMFiM-WL5x>Kp)L(X!4rqCcs`TE}448f#U(N&Lwx8jM`H@-c)@{b(gW)Eeu5R=j+LbL~f0D-9Q? zD9Oz#N8QdgF)E5x16;6R8tPA;pjTRob;~H?&`IunuOa)4*qCrUxeqjJ9B8*UanKLc zNdONTJbjC`Ht_?x&JTY6&;I~wm#{`V&v%4>yhsYi5wnOC@8j!XxxSkYx90g?TiJ#C zN-WP(QN#hc1M9ZcjDWVa04)Fsz32mvl>i~Nr~$Kc){p{FngC`<{aW7Ch8}boAm~e1z64cS|(v#3)>iG%B-5M+93e0IA(qTyrduL>^W%L z1EsB8jnerv)bu{fi;LSMj0JgRlyPZ4S1mU%@KBy zad6zbyG8bwQK`5z zm#0E`W^20l6z($QV!~uDt~gIDmQspV%*Y4ar^9;-Rn@O=)GuP8`{qo2!fe8k}>7kkY?dYUJ`2PjSAjhRM!O)Bsa2hhu@`|@9NCuB$j6FCHRg+bEv2o# zx^y+CRi`})?fH~YWE^+r5-+>%DZHuzT-xA+do7Ro*7aWQN*jfPJCNrWItj65Ej&^O z<_^R=SaR#>8`n;i?yF5YsjciDFQPS$3huN^V>?X+F-wHlhI;@eWApF!oiN@0zbyAO9lsQl7whs z3;zJ)wTL$t>1$Mq=RW3Fx_o06X`Du?Ba-~>Va2xu>9N~tXHQR*<0XC!9pA8zW*Ejs z0VGS0$3_QJYkhjsb23W$HEzm%wk*4^$~!dOy`8RUyy}A|sT|K!;NF_WY72F4R&Bm9vOO=$}v^P9_cA11o z*W?IG+d_ORrK|1L_awW%MON`P-e-aW{Asdse{r2OnN!#fQn7s$Xf@WffAw~#s#QT> zY&7T&qON0|6VrL9!g!GZxCG+TYYO{)qX0v4+%#g5v2}Y`TQFB2dCb1jI)c1P+(} zHC3NZq|zlM=LI5MVhl_J1NW$D3Hzo=!T^i-QvoB?*o_ZbKspgg*G+UEN@5F3?LY;uhV%$dHfx=z7+M`@1BHj3 zy3hx3*nvO?uUcXNi|9wETm5Jm6S-i+mV@0=>H~UudX%9*TREi3Rl(pNDeRBhd!Bv} zj3hZ35y=x?%1mDBs1_Hw_l;RwwxW1CTH3NqvG~8ovSk8bsT3sgGrg|BE7*-Ls7ly$ zxbm)lk+Mw^s%>6;Uf9VVDh#Pdsi$J4LUK22F(6*#5Ovjd>6I@+59;K~=XVa_k(Dl1 zasL3<0JIpa2w+G4K6WRfivzBQOJ18xr#_{XP>S4~x$~3VaqLeJ;?Z$K$pyf$K%}=3 zYioXor4WfM6nP1ojXpehvD!XCkxhUv5o%9uI?PPuF1&K2yn}>@W+@+h| zkyNyBpt21G%bh}-{{Rl6x9h!{!h#Jc^(nLR6WMf_C??@8vH;x;_3PtX^wT&f*=!lC z+?ZBbCj}ksERcechGB9w^%A$%y1MH4FkP-qFZSo=6MTQaAe58a+tOmXkffivc@b+9 zbM&nKcZ#;sSMDdHZ)=Ca^oA}%%@?}Obd?p5jh$_9LjkSp%w-)fkmf-~0ktmMUv8Jv z@T4>`i6AY(i3$rI2mW1XL$VSmn;uyi0RS)p*0>rQYqqBKC4s!7PmKP6FLiB*u>^S? zy4A^(*Hai=1qDv_H5Qb(wte%Hk^NiRKcI&;V zs~2`Yq+GcBVfB!{=_`2v7qB~Pd(ndJcDbJJkaqZ?RfZvXZVG@10G>wR{ifOq5;p6- z-z8sg$H#eu26=yCO8ZxBV+=*quU)EZ*s`@vORAESC%533_#aBfEyr6}HHcenrq`?K zW=&ST5-BI`m;piIW*>R!zm00H%Mx|3qAKz*;1YjL0Kb5(G_!n^-?b4X#9}trrD&@& z-o%dI+DjjDL1j~Wc+__8j3YIfq>3&os~8qGC+TYETGH}D2{DBOk<$0L@%(BGWG>|) zk(UWis$=W&jDM|Ltw+`9Mdt;kDhT2W`a;=9h^$v~%Rw&E8w~~Mh!CLMi|OUokinX0 z;zo8nRdp+f95owQ_ug_T2vf z#r%AKLq#0?$UiFW%N&lvHaSu_Z0H5JT#X9az{$v)kTt*7w0L`^W#gyEp;p>K1GI=| zhD1gz(VOvMX9r_{#8vy|tu{iC%Y1wp9a=GVJbvIl&^&7;wk49(hO#?a!_OWqTIu_S zw#484D$4GhzrYm>{{Vt^8G(~2P+eSzOAx%A^t)JiR!=*8#Y<^eN2mN#3G?gc~K;o@&=8-BJ^Y%M?>2j@Tvd?)}I8`1$hJWT)&wx9rGZRi0D4UHjy*ZR-^1R9?T zLl20zk){GD9IU777?oO5#9(vFKz3wfzpl6+bb9+V`ONZQMM*frVm)kaO3<)>?0J(V!`3i-b zNyk%fi)_J&Y_8&5M2qQ>6vF7lgBptl<}c~urEj>gA9ZE6waYpQu7&iG;`ZDKCC&E# z0COrUqznQB$5`E!iQtC!RXUwnv^7_2Wqs1{Ri|(6UD8i}RkYGcBP4frxOF8OP+7RE za0*Em7aYAjR-KYc7Xwy;Vfg$lg9^<%BjoapvVcI5&SQ4GX7*^|F@)kQZr3K_W_helPlNx=|hT`2%ncA~j)62)9ZEg6D{@y%AmM-6q z##y6q*)syp_f%2>-}-!%2Dv_Z-l^~E#}ZR_F%qnfl9@7Chn?Tn>_zyVO?GRk`;X;L zt-q0SP-eTfTCO`q8Wd?k5d__f8;b#Q+)rEnLbYk6xeHnmobF70lCl+s5apc|0$Gm` zKv8k}e!e=I=xJHTSw*%sWmWZiZc7t;>B|2AooK4yrS&~i`#1f=Y1Tf&oa#;OjP7k= ztCqPVZLQ~AU*&uVe{!bJ6Udbe_O!ceYa;QphTI)}N6xqg={aL{n26ZwZV37TK-=Y`I#9WY1()}uEgSHDr901T-{+|sGfYWNUq(6N*g=M)cZD1@w*8c#NG{xG* ze1OA4V{^jboADa${3vWnr4M+=_hKXxl4?YVc%5yz>$O3%UYqu_3*582-X!dyz0ft+ zTXh@OjeW0^p<7X+mS2$PDL(43>8{(>s_9RH#bgYhBgk=}*VCvYrB1#&4)jEmyp}8+ z5XQ&Gt*(&!i4j}4LQf5RtTj5-t5Yks(2<0V#yDB8u_D^kxaE{zVI@0rI~JG(TWmVi zEw|9mYmdbWfol*hE-kgHw_+rL!CJ|1Hex@*s?Sk{%K8y&c+mnQV?t)hl6DrjP`4U! z@V}2*mdiz8RVPU9LlL-kj|aM@)|H)oZxC66p4At()iUM*{*uD1uy{x!_ryO(LE zjtx(@1hA}X-0|hR@pZG6Vc;wYU)9IzI@^(HPI|A8_B5=bqJGaVGbTg?$q7={7dJz2 zLk^pL4QQ{Bt%rtI^~O;v4-K)PkGWvT3L!Qmuxw&TQ^iWtaMjBPh7; z85q6GAJpsnz`R{KUtIy#!$#^3okhCj)mv+S_LexYoyWi_-9(DYt2A#L^Cs+LQsA54 z)ZBR2LG7AHp+{snF7aMv!V*WMgpi;c8|$~3tanSg9|ennp51`+w6VUjOC_dj`gwp! zA-__nJWaN#ZQ0tBUx7V!Js;z}qAZy4uuLUjjzj%qYZBw`AdlrW%)Os;eOT>iMVET` zZ+?m(u($3p;}^$i05T(N0+q9>k1gujUO7c|*;n%@M|1gK#}-Lo#GR5Dz&RN9WDRCh z%-Ph~`mDq82DNHbyP1JqNv`<6_n)ulQ`zI%zUa*L z`W}*u89_!2q+M7Wfp%#nS^(x2HxvLZVs+Ah z8)17=8WUcWzyT>b0i~)V6klR*)YAb*qz!zI29Uf4G>fH*bPN zAH4)}6OjN=%uzvWs5%p;@u=9*RiB zY7;|mNru%^c1;F1V?Fh!l1|uTf;lB@oY}I!q9$HSg`<@%C$w+I?ZV$$rzvABi@IHZ z2sAku_}Bv;c-s`T<>fL$J*-0O#y69lxBSB?77B12HN>S=8)oZ+fQiq@7o(Uy;~~ELmO3ZWE_Biyw!f0B&G~_48%Dn_C4t zUbEiaycbc)U)_6|{nJBtl16k^E5z{yt;uvFkDaut>#e-9<;DtsYG#~Cz|P9N(jXel z4qH;!5V(YEP0tw8CRAjCPdRc#fwCRxPo^i zXf0YPwrZcNMHi$ty^Q82MA(zZl>-!#CJd~*f)7JmZ&hUs&sNiveG&b#{^Ab(f|xnX zvG*Khv}_p=O&9wc|YWQAGG_c`%cG=zq<_dylK)xBuC;&1CjLWp*H;M zkZLZmECFG&d3bMs^{XmTV#9-GLN@3P>e3Q{5ZRXPW!+7M!Rff`^rRAVGW*~5 z++5z^jsCh&9SZD^YDM74(f~>a8!6X%i!7>W&G$@L0e7~lIW_JH18q*%9X6zJgEvB1o%dV9m z30PPjq+9W!p`7uT^e0j3K1PyoCQ0EMpyDrJH2(mCYKGfnk~t9Tezcn;gm*~Lvk(B( zlb{3ZLQRCh=D$1s;Y6tTJ*rMp?JVPAo$~1V3hWJY%xXMQ%h}P&9{K__l z$40Jh&gE$6X;9RXuyQQlvzA6!19C$XastbLNj|kCew+UQjZwC<^)7wMRrE9+tGLFJ z!kx)N7xY7ur?%>Un${OQYjMK9`IziN*fNhgDvt0`IWl}S?`!NDYQ zAN(GKV_W-_Kk7GF;K^q{vdtzvf+KN~ElVZ#0GnyyeR_1RrnNX_Hpd5k=N?cS+y%h} zv^G}gM~8(SjdT>IH9vNee8h_${@gA-lm}mVfaFE3_MJspT}ri=*YqPfJqO`kqCCO@ zV)5aJjX@xDnZO2AH|4mtyAjk^Bg)v<{{Xkd7fd74p~J<)p9%=VqzNKNDH{%2N1*Cn zvez#qEy`uqXMOGX(>5ftFTbVHJwy--0&H|T0r-m0nNp)_NL}yc{{RyB?{5+JeAG$U zb6j|dFDq~9jdk@O9V@KO6jg`HuOZ@;P;N%fe&xM$HIV?jsyxBwPquBI-Ne~l>iaG)Bqeo>p&bV2DAVY6Jc(&3;+SYOYKN!4GB74fDSv5dI|(C zp)G6B1By+x6bMiVxzkEuA=G+x^P~cTNF6DFx7NV@XaPYdZKwf2>G>L9BLW!dr631w zC>fdgqce87p;-iM@Jv(&u_cN}ZJOYT2>hxRW!isn<~V)V9L{DqGE10mhyzFiGLThK zqY;I$<#GQ2z^wZhPKQlZl23Qbk~#BMG2DM;1I657Yb;U!04Es1Zx3yMr?Au=DJ@gU z8A!PJ-a1W`co?$g%8g$mCK4pZg^{9=#tN!}#TR83YYXXXQMJY!2kL0^`|oP(_)57f zvA9s-B3@3*%F*!RZ*+Tlt}F=gswKQv1XU&E!esZ{zV784k`fCDq72C%fHN~F*5lRZ zrLWe$$jPc8JgB3_l+7v$rIdRZ(7>MM-oTbO7GtsFvg%t~3Uye)9^m`j>)G%QQ%`7L~57sBA)YJuRqusojA)OFZyl)NL%wzWHa-}%Ysk@RC+$d&J z4utr1@UE)a3QV!kz3#9v&+U+7z?jo29C)ONtnZU0%(|p%32qalVDYnCtw&4x8-L(; z+9FsTSsV2JI%(6TT8h~w zIKeDPGBFzMuDwl7A`O7}caPf$2v8I-HWt3t{3&*VxfWjAC$`2dCKh(E90=H0fVU>! zg(p&LW^!jI#?6tW=ZgNleZ%Ssp{>XhuR&^r8k1h7Rz?&m>k`J?--uQuwb_S|waFa~ zN=sHs?6d+_LNx@(AoUJ59anuSb!3vk1d$QqrCG1)Z{-I;Yt_7iLlO{QmBq-lxAkpS zSAr}H*?_&txhDNL)~#F>F}Vxbf}5%7wYpT$h~OSpu_`v)e~m~75eXaWcQ*Z18!#or zffU@_oo!Uwz>uuEaMHXb!*y>`2WmMd8$Eb;G}{{V5b zdxM-#-cCLrS3i4Ny=U?N0L52Y?zU`ke7`l@>8=rt2U`Q?>~%M;!GuKwlW)1d%+Lm+ zOeTZ3;^UEN4T({&BHG`5`d2Y*R=a%-im_CRY_zoCYD*J;@~wK_3NOiJk0Fot_>$S9 zRc~+*r+|=iHegNk0k^+OqUvVIns8a-%_2ffS1AeOGO_3FSo&ES*W$&F!>wf5RNi|2 zWwm9j5e$rTED8jnKoNt+#0}J+^{iKYt{(-EOg@LmS_o zgnd4@%ezzVcCHyJ+Yrr1XwH#k_9B_Ph9bBb7*2h>jB*Gd#!l+Iw6V9~MRNR&N+qt> z>(Ttnt70F2?Ge1Mmw^7{N0^lg@oNLBvVN0cq5NuoKKEay-+=8|$&i($#aB1yBmV$R zKo;bB6Zzh{$t#(hqRZo*s#hpr9_DUDh7524W(1owni1FS*LtVO+tKi{{{X=%s68{b ze1o+1DWi@aLL59;@q=;YCPa+P=1xEWJtPy!Z?=`mwJozfTWptTeb40CnM)F4!s!gE zvWByBNrBavi?^YN`ckHaURf%kp3Cqrm3NHkPDI8iqa)mqw;PxBU3lG_#Q z^5fI;rU3KQ&;ltW>p&dM#O-^~0Q2z_fa1sLKmtVob*-%cA=>`{l>j%)Hoa*8Hf~qi zfr16W>S!21SOII>b3la#-7ZZ4AC-s{07MW$2J{H)k`43&tuPfv;@WRO1a!T{03hOT z;Xnijq;b6fAOiQ^)Bu{?`OpBmn_KgwGdc3;VmR;@jJq?kdQGh#4sUb%MdKRusM$&` z)Zv~}A8yLWnoJzq!m&FfrI8tu#_SZg*5uz#wVz|m^*WVltOpmrnEwE`$Bl8Z@a8DbRwD>y=Vgv-VZ@x% zAp4w|6aeJN09GWi2W8|&wUY5HZQ!|!+mkt^lq|l@m0T+s6%DSaLs;?x*SHtgOVusn z1qL(ZUBU7@lyUKsCL|}?g$U)z!Q$YKNoBqGs*NvwNUge(?H_CnONjs|m@-K;C6vm{ zJ-22Ks9nX+rp;s^jZcxGKCEOF?fg@mWA2^o^4P$q(h=`)B-9?9cGFTS?)4y+3a;+3 z&ZqFKF=YQl~6CfYB6Mt3wHm^J7_`R>Xyc-jgdWH^i zNSuQXCd4=(^1k(nGA$P|w=-Y{hTu1s;Z~+n$!lUqr&d0$fPHGjRL4qy2Z8Bolo64P zoOqucrGYF)r>35M6&oc4>1LT-l8}yT5}VyeA)=`1Z@_;Vs>r^x)Thi`Td*oizb9d# zx{Wyl;zok?TV{%;XLGxL1jV?gxf(Db7z?Rw$>p_5w`jdjQoerQ7Ztj%6Ms{HMTVc{ zR@Uqp2O}3AFl?%z3+Zux{@pEC*6omJt)0g{7WEP8xBPXh>X{aVR6Cu<)Y}m1AtzIE zZ&kJfro-#wRgy(_c<(sa5HylC*nNq8NvrgD_SoSNz13DvB>7*+^Lwn!9mvO1c;Wpc z!%n8XSB2tNQpYDJ$lUJCR!P1!#hc(YvG>*q>bU?8!^d3~kH)meY_ z@YQwpv%j&R9ni&f+GuTc2 zH&x|e=uaD1^&-Oh3)XdI&!FI37_tn$*kKp66vs2jRg?=6Vk}pS4q9pDP}tN@udvc5 zw|UEh9v|zLVWQ}CxVF9^R&V}#*}N8a!2>lQ%E=BGdR0ufxVaHLMY|HeY;a z9!ckqCmhKdMj9xBTr#QxH1On2Wb&=ryICqJH=h;w4Bh@X^0Pnn*OwL2-)lD@2al(7 zSnai^+fcRDQRyw%aC>eK?Qv8LnS%wG*`HCX55O9x)rIa+_ZxEfFFRfYJ--og;sc8A z-C2*^Tg;l%TEZy3rO7iw51xkgBt%Xk{{ZJq1UJ6)01OmrH|t0O{{T8*Ew#M>4Xu4B z0U1gE06IV-kH&x$5v{eg00HU&pa%2;#A`@rF!Yh-OhaRm-r7aCs4uC| zQxNL1o}^F$f%$pRAyI+2I?xAl^=bH10D_aLH}RkZ(~m24paLe!CG+xe z5-+_2EBo9HJ`|9p`LOg`#A+|Tmjit&HsGBcGt53$+Hx8R2v-qgMRs*kRB6qx`iST0 zCA_OM#iZ!zwjj;pw7Ca_K8al#YnHNzg@+CQ08<{Ks=Z^L5wb>^7Hk>um3_8_!x=dS z1dsyRNWZ6(6UDWqFwmOnN$r@pxu3X@Ovm=BvAiX3C$R``QDf=h=qK&Cw$!#bf)fSq zR!&4w%#yrV@sJsD)Y>IhLiaZQp$??j19sDwKr%y-!YQZu76wOQ5*(IK-n6kr1H`D( ztW9TSd+74tf~#NCa5go1((7(GAu>>Z?3|{O8N#%D+2vL!p7rj^IcgOb)7Ph+S%k7! zN+MaZAu2&kyQEBPcq+_L@+5uSl-r5=-k}jur;>7+V#StNqU4DwMn>huh3rE&5Wo=Y zdwz8qto{Rh8I0UmVa$lmjU$q)n}B(qq(_2XSVc73nosY72;B7Vo+Fg`tz z*@iRY%`O-Iyrq=`U5RABq_mEqG`8nzvsTL6YP|I!b@aiL?a3xwvG&}|c=2TJ;%Q`! z63LG&ay(oWTkQwh<@nmV+n;aNoc2fJx&G!|N`9Br$Yl2Hj4ZiImT4htNC>e5qg(k+ zbt|!6tK7=!>c?e^?8r@HWaQ)dP3^5JzJ-luORmuwu<#q!P3E0Q(P9>jm6VlXs6Ga; z-zJogOZd0VOM7_v>=s4QBqZu|0{1n?-{Qt z5J%iw%fkNvTCrHE(0Q{XNZHNQfpSK+wzvGMedIpexFSA4Dy5i##^rQ68{1NCuU#rG z#j2%FZfH(!?RC+FOXaB`-%aYK%@nCgFLPIC*#I15Z7$?#VWs!llozVOUzL#35*+a% zKxH}-S6(Bns&z!tBFmFtQ9wLYdP>|I>8<|&%C4$HWG!RP{zsK0lCgFy z$E|n#S|qSw-E5gGp?i~EN*OFrWhL?lpGx0HgB{jDW6DJU`bYRvTnW6IkA>khoy7zdp2OPEEQU^<18iUPQC&>0xh_dOVV6hr& z#^jOs+SOeXfMTRZSjmf9l|f-+%VVVz4KVmU3v04?vn-V^|h z#`<)i1oJ!iP%*jFlGvMnFV^DMq{fVwe(j-gvLTIbvoV?rTyT}Nl|_cc4q%hL{3?yL zlxov>a(R{?{=aiXajK~dz*v-G-mWCys+!HSH9D(-*>K{HX(uE!5jc~KiNrX)iy4^k>-P??k zD4KTSS7ph29y@U$Rl8+b{Cr@Bz6Nq~zh#PJigA%EgRk29TE@&8%1z$iLE}}@z0P2| z+(BjA<4Cb&%a+aUV-XpRL;D2CQACL7!IYAAJeH$uxCSxpGxiM3jXkxUo@%%QRB-0?Q{raz?G z*17Snf03qhP=k3Nb%=!^*{`kl@vK4HBd5A59!TH=05Cz%zOlHzno~?W3i&&nNytAI zTb3ztW7or}I*JQbN_@`nEI5!kE$l!R*HKfg8DdaXj_AfjWl~v9{lLSIAav05=~n%+ zK)zvD;#iQ@E=HE>H>Rj2!EWILtFn;H#>Ut68(fjD^?h}+s}QD~C^q#LHy{yf=ry%o zkpYfO+7BI1m*GQ!kH#!6#1HfGs#^&gno9;fdJEG?Mt8Z!SFYkrhhV-ek(-IU+y zU7ZRMi)L9%mlw8&sUu3+M=Z}|XET(m7CW%8@v*Lkwqn?ZBGiiy{wi#RPe=aWcKamK z6&w@?B`t<7@IQ z{{U*PmCL$Gzig9E5$rexGncBNT)5%&w*Yjh)8 z)QVUjYC|1-LDXw-C;`C4{c1u4uN?T<{Ad9V_Mij;+7mzm+Ii3bauk3d z0Tck5fK324T|fl&&`<)9dQbomP5%Im05NA84Ls^3gdpF3Q~=_QM!Ro7hm(sPMY!x~ zgA9>vX^0>|{{T7w;rCzipapB`)X)NIH9Pd61Z%aeKnZZYe;+yk;6U{Cq%n6lJt=@P z5NQDiE(MWFl?|^T#9qgt8jV4ySxGv$JhSCkGUE57$Y6pLKWPB1hopc{OEEq*jlNOW z($lF|-Lqeek;v|bIOJ83k-#Oa5tNQLI$KW~u8GNWt_b<8(nO6RXyKH@G?3oNLYtug zapa(r#*)JXQvU#PWK-F(aA6EnCn+QMRx-u726f`r=okP6Xz&--?D`^|{6LA2()Wn7 zlrorOGb9B9#Ii8r%%GcU%+0ps^`&X;k5EYz`6ng2#3jiu8YxuJ3*6sb7eV8_Swxi> z?a6)IGNb*rHZC|)xiYlKVLY5KiD9a%j!47C^+hX|*(S*i963MkN@N(Y&m{0I&=tBW zOU;U^57%w4tqxPGmQxR5gI@wO@LMpSF zg5Ts&_H^yA_X(zrR|-Z`g#Z$ysT^WPQ*g*{Dh2yUu)Qx4+qtF7A+=-J^LCaDiR6cn z5y}=(8*=9ypq6N#+y#RI=Wj{VO75i6Ova(OAz%;MW*i)nf7|m%v>XyRFk#ucxb$%c9BTuFFz8M|ipC7q2c?)UQPil42%t*cT14iDiO-rpHd zLfFQ1y}S)$+T_`-8VnUA0Dj%82EzKH));{R8);c>Vtu5@aLXyahox0(jtjgj{MhXq zv1JMZp1OGW{xzP-F+lvi$y%5ZAY>&u`&Y+gd{JIr3bR9^|&RCvJj;uh1RD=Pwme z>H^(0xD_ZwWOX5SH``BD{{V@oyFd~WE-QB4sdmUnGChX&@T7)8$dcgl*lud-p&8EW zIRM*Q=;*0U*_X(($VpNBYo$yhC5o=%G}l3E8q=tz=2y9K_czpyzLnI~!GmuhcFbdw zlN1rJsgJ3N00HJnwHt5SR@k-HTpp+KWw&OT)-f8bhZQ`F7F~H0zxi6czncF5@}zcj z;)6MOh91}4)-)sf#vn(E@*Gbai|kLGSxe37K9WVRrJ1ZrQJ6;R6$0{+taZ5_2U~bo zO6l^9sfr}_q_cy;8J0_t>J4#zoAjjApqLIw*k;Hy45b}yW*=xe-+k&S{U|z`e3nIr z1yrAEG*cpjsK2OK?_sXh%%W}B)ou|Zx+F3NlGavaAvt=N(#-vKIvT4>YXiJ6v9aX# zbMDfqH7mpo2-;`+PZaqzfY0%(6zn zSe`Ga~xcH_C9mhTcGTj~V%wc%H1#kSFMV)M*j|#!NDG9hePqfPk z#van~TN_`mUAMNiEnFEcvRWw?8sDL-ih&jmZMXcdOaisXg)juEB#Z0PkQ@@$7uT&Y zI`$UnKng+7_)rI5)1?3*wd_p*2ti|Q=>f<80MRtS>#gnlX#fOT)Bq$<0t4bUpau(* z(%v_yk`+KE!%yZkz%&BqPoSU&K)UT}1QAdGx!Rb81O8M1qe6Uo&;UEI*lEk%=Pv zWg5^qVPPARP~XRYpsXAJ0Cb%l7KJCDX2B$pNeuD-09qz7$!rF8Zna#) zlX}SvMg3F)UQsJ3DY#|?+4wg=4wtDm1yA<|Y2nN5@cqW+1 zCRCSiYy%ipR9#dQ^6OAsrR)=eH*3W080WaWgygm|*-;Yc3bAfBYX@Gxja_?N>GvXl z%Fl{lkK{v_kCW^y5hLVtPg_RDMpaUOr+Cy7LGr6LRyHP@nIn1aXP)TShGsxx{?mMrIYF_y{Rt9>0i*nY+8Ll&WZBz6DfhZmV$d&FStERZ8YY)->q4x z_S?7d`1u9ba*|VDxMO2?6Qkp*!InktR1ZX~Zgsdf`gmAU{{YtAJ#xRnI{ivX*fFxP z3@$;l0kQL{b~8;2{3SbhY7doR*vrvr3mv-ktd~WoxW(dQ78;%FEx@sYEr{!``fF6S z1fOYG6*kn6LDu4uv=Oo^^1D7Oo2ryL-+{0`7tsFz3e!&}$cJfPH)gQ^0LpKDii*)+ zC)kf`BOck1J$%%k3m&y+{{Tfr0$Ue)OS956V+L8k4^Z*amm>8l-#^*9I(EM%c!v5?XNZFINMfrwJ)WivlP+%YCKg= zK_q67fH^UgiP=ZG?(Tk{p#-9^VIr4~Twou!L!biAEqjelwc2(1S&6)blo^z(&39C;<+G z>$Lz23n=lR1q5mjS^!?Qpa5kYt`78o;Gi8&qJRX0y#OgsO#lZX1&sh8w~YWHU=D)j zfFr2Azs90Sa3z@Z@U<`$at*b}-^zgoysvhk0xl2ZKm~9X_SZc}=u^^3H0L^iW^4*jr~{zM%J)H3L2>^8j!41P zcQ>T}0CXZPW0O_znLXS&v2wd(V`BGAc9b>BM6Vhi97`5{EgK_R`r517lDd~L$mh0J z2z{0qGDAxQ#sHfc-_~=H_!Q=h@NlciTQ|GsG$erFC*&RsZGz0}zb8bV25D$f` z(s=OYB_5xN&b}k5I|?=SVtJ#K;ddg?wEo|rC5&H}E00=wd05-8TU0MSIjLo1`ia?# z_U`E>CSd~}W--ak6&y(yz1NnHW&)?aHdDI1q3ilwGV$cHIRvl!>`u$0SNqVZK*nwYLX(xok1iK(x#YzD1cah#+4~zf+VV%3tL?cTTwJ{ ztbh%H{A*1rCQ|0)awH3y*{+a5vaUre z_EB~>xE@uhGPXvTh-13gzQphNRh7vLV5Z59nO}&!MBJtR)8ks`{{X3;$j|1&i6C=x zC7ELu@fQC86I=CKQIBPES$3Q++2FL25${NScCr3H^ww`9XMLe?U8bF?S-AM9VcKO# z*#7|SWF%9i?5Gi2i+wI@jpnbdH_;n3yfWqt2v230#tuA@E3CoZ`}@A2E)NsH3v{g3 zyZei($Mz+{Jgc}o5qD-}{{X_plpU-IHai`Sje1Qo_4}AMLa^6xl&(@rPb8FaaC}!o z{B^17Q&=H)lK%j=WC>)#F)tK`6^ceSC8Sd1ojjREV%=CydcW{pt(RE}f8X(9kAH3@ z^o@v5D#J(r0EM^e%ir!si?-my?_^2u6U1tW6oLsl4q7Q#&n@>AiuZ7o7e+$vM3;7q z-Q#yst8G9bMTk2Gu;kiW)V0?HY|D<>itmmc<#lkO47TRP$PY6jlgifRwfyTX?4^>9 zg_>kXg^2S*6|)hS79y5GB&??C#eibGTIcepQmwr4{fJv8b+h8_zaV&KnVuNlJV_3x zgm=CEpuXN!uk8KJcwXS_dY{C*ylLDM0f}Q7e{Mt6Fc$}Fm0&BLr82#>l_vE1wCT%F z8o0(dP>`Wbfa}tn2rxC*tuQ#)>G;q93z9|u015!&1%=J%1BkG_=mVF+fH;d#0x-3j z)BvT$04AG_C;_Gy`qBVw!|Ol*#FM6!hBm54=Xyg8WD17h-t@#MEqjq`_|O3>5~D+E z0OAiK05>!ML)B}7K;OcE8H-E z@m5txP1)U5q+$Z1vjKDBe5#kWTq8|9cM{4T+uU=d%E}Q$$&ZDUXUCGxWPUPm0woGm zlDE1407`|FK5}VwP`%N4iVDY{hN|*MBfPB7GMDzb0HvmF7)k1O>tZOpcS7n^rW1V( z+)(00Bf~fKA(5IhJbDs~$yPW7wuAgA8~l1s|YbNF>{TRZ;%{^j|Tz6)rmqL67mgmITKTg~A1q zq!Gm+<;1Ijt11>#Z?%Ti4^pw}Ia$ z589N2HaO=G5-jLIxYP9!uaAvpvQ@OM8Fg7N4TGYdL6m?^`dn2T6f*jjYL2L^N2HDa z0EK0^-Hk%e{rKdEPplx?%~aTB!&Gi63|jVlP_BJ8ZL_BH^IyVMT#$<n~s;gdcPk13>#4&F#Fi?w;|rAmm7mwA9b2t2~Jqt809idUhra(Mj6<11)BCn zF?+ACO`XsYz8A-|*J7_V&@Pq!N~Adwe4&x_1euK_a+!NL#BG{+)%vBhz;B zt+#!&taKsEH(w7qKkYI|T()O#%2<@xmSBJ~@;yrfV_e@QF6Cv{BcJ%Q*n33AY)IUT z5-tak)|R&@#dQpx2l!Ql0R-O7y&wb~MIaP`eJOy3)Bu(iz32mmru}+Q0TFOPpaCMr z)Bp|#E8kH_1XF&tGyp`X>vKR27O?zi0T^FVwE!^gKm-xwDkP2sojRHTBV)PL_)r6- zg06?kn1K>;ZogUp;~_EeQZ!?z`U+AqEG;AC%KW`H;<1fDu_KkwkA+6BB$~k}0#{cG z4x7}7iN$sPrTi=n05dG8rrfRNNwL9!?|(FWOs9q9_TcwfS=3yc8wK+7sCL@esjixo zOEtZxAt%9#K_Ftl5Wo|A{lCJhuel4aU?wt~#57~iNRholl|cdFv1w1L9zNe6R+ zRvby0EfG+_vptCb=nb!}I@N{hyI|E~MJ&d$%$y zhIZdm6dPVx}y4l2}-UV4?>%7Z&?p>EraO9N9Gg022C^IQmI&Kc>W$2YVBJYc=>T zsci@TA;|h}MXk2CtajwJ1nR$}-rHJ|21>*ru>}4VRnW^w)Qx|QQzBuxu)hBQO=v_x zJ6vmT9Mo*!S@dmZ*H4-RG@&%$)Pmhk}GnbaaYj^va)v9 zKz!}ewN()#NP^ZQ@$st@21J`n{{Sf#y<1WwLjZmECqO(Z)o3En)8V|Y?S~-+cwQam9MtZElpzS&N84rcqOe+>FQb@;vH*jCwv!1+8#<6(` zD!Wd85pJdR7oCi>*}0iOn>@uri?ySTOEItp<)u#=8>Cd&@p1e4DXxIM{GNhH7!<+lNSK=bhF>H1cE zwn;b|ME>R6;lu4xq;mfN?3H;Yk~64K!_jkapz$`+#>U+$8nruH*oB!>+wz&`%2r^? zhCU=43$h0MJuPbw3emQhUg1XtW+pIZSg|s}fo5hCBfHt;V|NJOZ>GZBbpu=0owvqU zLb@)eq;^=dFk_Fj;$x?Ad8YUBvXhiWq~mKhKS=cGIM*+2mE)k|C9}{wE@ol{6XCo7 z0EPLhFDqX_E!V9@V9j*BO$wWU*WaaDQWI(@02Oq&GytR?rhqsAO#mk!3IIg}8y&hD z046j5H`3(mKn;D@xugPE{d_0@N|Ucz09y^um8k`y(X_vt_m2e|^) z^ArH*r;e1wBLSuQbfhx4rJ+MKzZUq1bHy%ul<~y}9x%j$ zLp6@Sd2&DprnH?ExxrocFZh-{(*Q=HF?~`mr9(trn*JwiXg8{FRJb0yPbF?Y!|`$A zd6qwSIz|M|C;%fJOL4dW=sfBUV7Ko}_883g@K9|qY=StWeaHzW=Z=@tZEB{Vv2Bwl z4i9Yq0C9pTn$yNaaXhB$%aPRiYu2Q%Zk!q|#F`uosTxi(#Fxlu(;?O{lA5 z)QyY3pFo*?nRA-=%t+cmfL$^IS)*=C%T_+0Kdn})+i=xq5P9ApgAw41FAY zdQR-B%!|v?z%S{wx2tzm%Z6yyVi*&DD0K`jD$r1*Q|g-RTQM`-w7T<2!1+l%`1>{Z%~0G4Gu=B&GSu?lc9B!Eym3uih7++zo|#S^5>1vCN2YT=p#TuZa}E zoP3mMZ6ysqx6 z;r{?bT~&h(vh_4RAE8 zDj*5C7u0yv$c)NOt$)Uv8C{UVHAGnng4@jW6>NxYkddJx{y*hXOk_EuHn&e2 zwycW}8wut%KuP}qr&260^w?6i$P^2g7Ct0kI|q=PkcVJ3AhEu`g%q>9#{zgLdz`AG zOu0i7E0$8@*CRHkPse)MsW4b_{H)W%Jdz|*9ElYHHxfo81dbzNaiQM275ZT= zhF6@Pr||cRKZZoANd1G$5O4`Zk%=+_KT8f=Z?(mF{{TK-=l=k4t4hHC0CtWj6=G#F z$rNQ-Q~)kR1tP`0Kh(MMteTr|(9+bYFxl8qt_zd}VdUrwcn!547Ovi{kGtH`#CX4awLzFD#%Uk>19)|=Um?-DiicIYvi{0 z^fE!%#LZ=Si!*4zs`9%qWek5$r~Y-D%CffDT?y+^QqByB<#}MnMu{>6Ys;Gx?WLQ7 z++T++PeZj)W!k0mCCR4ku)J9Q?2IGI$#Pcykh*aiw;qJpj=I-3Wv0-$MXQXMFOYX* zpWO0&pGG-Bc2Eg1ApmGC`Zc$mcRX!9lvB_5GG5Zl507_q2Wg)ufRak?UB~H7xTre~ zZS>Nr@-)d99H~WPv#aiZ*8ozk}Am?--v&3yRHMr9zv#c zC^S;mbq9SwzMgf@-Qy(XV3Vq{J$teD{2ud$C5(h|yhPlFI`rPL`!hZ0>dW+HU>IsD z!k~=+2vRmWcu)d3>L>%3TX@h1Yu8EuE`(43ixr>%vkd^aqyX3{Bz2$!FQvx*6amYs z`HqwT*=6OflmXA<;Xn}yu&^3bNea5LJ#9b=4V!&@C;{7o1po;k6W7XsDsz=#?zr>G zCkQ1`6s}l-9gA6j+UJ)Vi)8DRWxFJ~{kOH__PCgwh;k*zRAIn~1f_tGk5b+sSdmfP zY1rANR#cj?EbS;nzZI}maMu8R3D@e?TeIj_+Pae>ibr6n8qF~Kf}-er?ydeb(z7Ed zvV#*L8q-Ch+Q_y$kH89=*5@dTy6DG_J1}4ADqCxwEw6!F8g7r!UEbiamNEi@2Z?K& zo`XYBa)~HpEUejJVp?m3+zV^uE(KF|)8w|bO>j|nKIrAt6=i8IL6$xvZ4K3~I#m~D zopeTjKfC4nREBP9N}`j+wbta2z*TEKO$vyGg0XOXvVboV(Q+g(bLc!elD~4?> zMWm(4k>ZXnA;D=!yo^01Ls%=`<(FIA@ufvFU1U9#jT{-i(nuv%F_tz^Bu-80Mj(|7 z#d`SbMI6*tt5fYs z^dRjo1P_hR?&NnkGh`DG&HIUEC!70(1~<1O#n5UsKT6T%Cl#_Q*VPz~^@}DpYF&c` zVu~A929bF~xnyB~PW)_m>HY?}-d$ZS+`ki6rz#5+iNRlg)jTXwucn;{1ItRz?f(Ez z480au?IMfVa5n(`!_QM$ZjoYSxR@~Y8x6q%=Bj9IlVgR@+*(BSa&$a^3P2={z`5Lt zs>l_IQ1A@EoetGg8y>g|*Oy92Lr&|)+Jn}nkcL>Ti8`BUQ$iam+;!akRWV4>O+dfm zYH5g%Kcs(!N}yItxnZqpsS%+WJq^y@RVe{kRTYT46TcB<2g9u?kbtp9W0F$d+6y@< zIHmQmeKqpb(RWb^H1Ne6nA?dHV7xeaFPsOx|9uRZ7OR@*C~rmMDt-Rfn?@0l{M zApwwuc{Oe0Ub3tsM!LmJUvZ580JfNcbqxOEql+6b)9a;m^;_#GvcZVV!gYLn zyKxeNLk%_8{VTVtVrkUpY_4S2cEpn}0(jt7{q|EVD;rsOyoXDjN873BI@c$2Rl1+r zvTN4nt@SOQRL8>olq34E1&!{^7no8wpVHdC_Ul40rT*h))x5RPSEQp>s%9Hum$?t@_BF>t{Yh9BT?ibtAH-`|=%;MH zg^m3se|AiT7|eLTyAm@q0uLqhn_ArftMt0L`IWT6gSuqnu@1(}bSO{MjX|evRj`$s zG+npm{mTm~*trEbuwbw1BEWQ8bgXyqYh^7Kea?rYe1H4LpBjb95z2#G^5ASwOWv?- z@asD^NZ}(5*SwIP8Xqf4C7X$wQvfi`0S#pRyFQKEr`3Ggr7R1bsR_dzPKbG{Q zgQbx@2rF=JdSn5;n`%IDX0`9N04o!{seqOy)Bv1)UrGQM2mGl3*(B|~04jh5_C06- zSwR|ay#OwRTf%@LAFzULeQG3y8rWa!^q>a_P;3P-7Q=n-Kn!KcBydY2DR)KW6lu3X zezcg;nVaMo9n%BZnPkQ@CH-RFpnlWlr*MA}RbKtPnklKwqaWS-na1y!88b}L705iw zo*;t@qcegvyI7la(v5#owmN@vO0FRG9?5|e-M<=VkT_)@(~s@B+foPct99#9CqHGJ zmr=rz4l#>gdvEyF$wviE$a)4mxALYTNDM4MG=?)YSB!|j7q9~Q8`LdaU}>4&=iD$b zOq0&YNDRn@RgJk2Tf_>(vdXO6u9mhDfbPF3hbBe{f1uuy`Vqat$NbVC{{Tb{P3o0L zY`>56H`iZkDxqXKKe?I7M2t&v3nXf!E&l+|V^i&M2%B(E!N`2vd}!g0TzF%U$&%%Q z#L<#a>Cu6{qy1_vD$iCytmF>o{_7reJ)^b(J0w2R5}XTJIY`qnR`i(ACYB|ST@78O zCZ+s*itWUe9n1FFi85zG(j<8DO9F##Su6=x7UF#+HMO?#sq1d99Z5BWPwbgJ!xCIB z=`Kl=ldMuSc0aeqh=>|J16jDZI)USQg}O(eSxT}C-|h~v#|&^rxlk8LIm&qt zWnpeooftCS`i>&rHY-DqQX21tIWoQR@)r&)&I`aaa&c>qxvc2MYjScq~~Y?g?{$0=E*X;E0M_eDSt+;3vqjnC5eOiJO9s~*eb z(wwQA(JL!SBB=@(k;!bKR?Ilw)f#aNk=p|X9BfaM$1+H~@-Aagq(*rHt;pQlTa#AH zzKHZA5puWX9hdhDJg~+6P@->beJH-z)L4R9t;t5an$_U>9k83n1zV{(Ms9fVm$!){ z%p)(9Qb_@XvLM(J*CCCVX=>_Hd$O^UEw~@;`6CKQ*$sv}v}BaGA#iNM=KO9t)qAPl zv(&d+gKZ1NI{Sj}8;h$RA-JA~*85I`3gTTlxHhLFu%wWa!0}eMA-Fc!5mB|1BuP^f zD6uiP>Bi&m*5a#UB&aqPI_z5dc-1VDBnjP|ytjD{M;0vj@4 zPPh70pal*Z_Z9$CfB>74LH_`iO%WKC!jf-RBqAP6x@c}UBCMhj3<$^tn8q*aDy4{9 zbQ@l+$e8(x0=I;_Ms2BHB#U3KUkZzFsL{-kDzSuui+*9vxewB*ZFy2nzCn#;W~`71 z$|@?7Syto~h3iBi{HdP^4+g=-eE0cXc_+9$XfyK;w+U(1+O~8nlgVt*Jdv z0c9$eR{RDrzk1$<> zxJwx#9S{ygOr7r zhFoE{5=LYe{8&`GA5_QOYd$so!TE1znL_t5or*PVY=g{O$^PN_)@_<-))WU~XRG{o z`6%o7`KS4#M@%*qt6q?Vpx^_ z*P~kH_ZcjlIpK0UhEmHc;;q- zV5LHh6-V)`)x0EGf=_3Ryay#62LxSO{} zmD=zdA|;YuMht{@CP`SSyEhvK9Mkfs+S8J{xNR91#>hCow`jwDU~ej~m}{4g`%Ca(0dySw7P0 zJ!RcFlovXkM_S(8FRL~D%CcBbk37ApAZJX3K`ID16mM|~ESeF^LW5eNKHK_ao60Nl zp#8z^`H}iwDI*e05Q6K-a%}~Thc6+=&aT$`d#ddZPlZ?`3#@AA;u_278GAInLY(U~|%l_+)tE=N~?nyH~ z$~0%@jbM<=#iL2gZS6VragshokK@v}r`)5{{FJOYH9sEiOB%-nge+`Amp3*94kRvu z-5bXB%ks3$waK$xjU0&aFlE06)eCK*)mU}4b86(c9$=y2qitiTy*M0_B9*UVLA9=S zzlarGkt9h+TU%@Gb9$}@#a147K7D9`2njd2Hyc`*hRZ&;*i@hdSuMHW!leQjnfV*^ z8&#B0K#Zn2O9dp@+dy^k*J`oK0FjwZh3}xg{b@0d2_!;oV&?0_Xh1zLu&6|gZ!Xcd zwyvzepcWTW!q>3c!)u-DbW@QKCc9qxfNpQC&y8JCG8R?15!Cdn>B$CD<|roHbggtN zu~#9nvZp5pOX@6qt3pK#^nTNc4{7WT-lYrgE-Yj*Wj^DvV-k99qyWI%YmXybPa^MT z-?qI==?O`n_;hmQcPX-52SLh7NV=Y9S73GuIcsg}Px1{{TB;2>vFm-7DC5t~kRwZv z77N2DW(&q+G1YxhqWVZ$Sjz7k=_;#{f zVqmt}BK%Jl{f#kXWpNO4=Rg7GQ~-MDD{qs3{F01`K}{4Wvq-GWxZ&Mn3M_4ZzQb@< z`kJ=(pP4$;7m8Of;}Xjpj#-!z6?FcgAaBVnZ#p}Ym+|fSgmfsrW8P->y_ktbWeSQL zM1+2mZSFj4Z-L{em+;K~M#sVzv_O;g$vw*h0SrdlYB>HB_uIDk>MALzGdTp9l0u7n zD4#*FQvwnUZ)nHz;{M|Zso%;l(~vk2)-y7sTcnM^lN=JO>@bb_Q>yV5zP)l zw1h^oDGQ~z$;AmI?V+W&4Fz(9#4z2E+_*Nm+skh%cT5v4A%^kj6o765n{WJUJ9#FF z*mx+Q$hKr{9bA?J{KZv!NhHhMY#cd2MBuX9m$u5p5#pxe;MQA8^(L7cHw`h~**J%R z{ZWOnA5pbRviM;ruA8)Wtdq(twvOMRf=}mbRf}%Q@`VZY9qqVT-KKLs4|H*+sT{8f zV0soqaYgp4sI`B%yM4`%VgBa#?%q~8vnFDfxRsM8GEa#iWd1dd{yKTD_#2{pp2P7^ zoA$o_h>nh_mv8H1>vcXN{VNrdtAXmP z;b)I{uvx@2&E?O_#*_b+mmZE)xK{t^S*v0=n{0eOldMi>!rUe{(P^o{=j3Rc{bMt`+?KT|dGFO_6V z5f}~Z!zZSB+>!`7X=|$e-7i_Kx4FVL>G7lY9&?^@GI1r$|-TzCuv*#%O&>(gio0e6?vIzp%&J?+&&7^3@5YXP z!d5(Z%^__a+>cXnD$V$K3ZCToeL~p5Rq_Oheo>0CtWe|0E-x8LJj929*gy-2^1w_48Y^+B?`8>E!jzp-A!n%NH1K_bNM5Rm)PvxKoiNpI>jR&PJX ziZ>;fS;1TK=bsC{=HwzVnncHnQp^XuhBYi2#>x;$!$s7ty56-arjn8xo($xfP($52 ze{o67m^f1+F%}C1LQ^XiWeULZYusFYdlfF)!Qf zJ6)TT7H)0H8qHO=^=ITtyd548lN7VKSn-%i6fy$J#B0aWbYeq&c~V<5^BYB1%q2MA zHeTU~5#xCMt{@X|0+30#TiEd)UrO2GrGFjK`uu;Ai^{To#EjI7Isoxp&bE=Gem8Zo z1vu+_kai>OI@NmHrL(~|lwiA_3?<|Tlu}5c*O@GrSpYUW@d_)ur(=cG$$FA|JXsEn z3L{8;vnr%uHPK1+HMR;tI_p($X=JxkHXVy147fjODw~mT;f?MNgkMfe)5}Wa`4x11 z-3=&~ah^GZPQvavavPQYZGM$UbmW+V*CkG-;^)GFp;V1J+dyeFNOO_c3tL_3K^Y6& zBIB1I4!Y3*14#Poe-lmtoY&$me}yzAF(Rp35J>B;^+A$#i8465OahrUAV}O|_-Je`Q>A z`W41Y@9u|ko;SnnRM7fW4^-3-*=hmSiPc1;>w8}cSZtFaFN7Aj4kOSd$A4q)b(DYqqR4696_0)4n{xidtM@e%*q;OVPXQ7V0e&E+y=E`eb;Pd zcXG>ID4IzW8LjQ2@9Dml=mzz6oqg^X1aD|YDq`88WwE`>7V%;C5B}BJs_ems_Zm-% zo>Hh*P-Gs_1Os!%=zj|u=lQr_ESfZu@?&u)A>hm;*G2?2k50PPdfo|L7|!UAhcdeY zl3WBJdPU9F;ENjUXnpDo8!*ZJy+Y&X>Jn#+C5gJ+04^`Cz|}imYw0AZ)UAss#Vl_b z4oE(PVsCBlrNv(BD6 z8`xO-md4(%sTy9Wx{^rKcJA|mn4a9xpK`=EA_ybTrDVRhUI`)xaro{et?xs|E?=Oq zDtyO)Y$VS0l7#k2JMjL*sbHJL2!E(9^j`+~8)Gaf(Gka7w`9z2-q zt6TM6*EO=1?kiU9Sul&*bEVGqQt-I5kl>F&*ruGAHoQpF&f3<8u~lTTXM@uIH~qcr z*qEa$xMV&=rtcmxTPm;@K+*ciW!u-L_0QerK7^8Ho4DkpYQMH$Wd|NU+2X}^AJo3O zcxX1P4rIEODJI8WZe{+yOw6V%2>D2Vs6h_I+}PVo{c75#$vY*4C;MD^S;_7&nb7+& z#!Zn4xh=U~PH%55ZF72`+;yy1`jDQb#&%8@$Gdy?7YX}?jHVPMdIu0ebAE>Brhwb4 zSyGPeRdpdf-0)^TEsfp#fWyeWrk^>dGD`O3Zltjb>Rw!cQNM7-rb7P!4DA1&Ben8JpeqsZLLt!MoV7SW)tR^P>$h`kchH9{{V6$B&casxUz#| z>EeJBZS6}{p*-?!*OXdduS!QL0sJSj^7keg$L4Y z#5YZezxh_JbTDkYEfNHdJ2QF-EG|XvP5SR@(5nV^%$IkQ5chyHBldA!6pWL^vN$9o zTFt1qJ84+jPUh;$*MgxtcWjsU`GX_h$o8)kN~-y^=*?X)aF{UTJH1@dB&Z{^fDc z=o~W7vt-2&e{SD1doalD63UyZlj^Y@M^CM1*;%5wJ8=a^$|Dl@?4%FE6o1^~swfH! zV4$(u?H>g2J+ZOIL<1%W z@uZDOG4p5l?|m6o+->1;rF3^E54F$sE7tO9`)*crrC`F6Wk9g7J{=!!`oeLuOn->fu|3Vf`&+(x^8?x zU^;AXQh7pPe&MV^Cy6?*LVRsf>_U^4cD|MrIs~2W@+9r_qqYYj1~&wfe7C58j==0V z>!WYKN@!3C1h*n?PUmw@LIu5#_)_GN9&=(A*SYD`)s#XSm?^O=8rM|-TEHC-<9eDR zFl}?;$%5#wXxPo0sFk;mam$>W2c?M4gtUhCH_O3YmO6|#o?%9o^7zs>HIIN17zYz92isX5A{{YL*7X`I{N$5Ww zj&JruAG!tE=R#~=RArDb3vO4p7UlR>Rl_OV{-k66P?E>pyFV2XiLvL0n6Vr^$kY?z zcQ)3g;2l|>7jFR`q%O8vxpP?_CcKRnaxn z%eu}=j?VmZWXG@|pLR5`H@4^pj}u!rsj7d0O&(y-VF2Pl9ls;tcP26Fw~j?|W62)P zaD3~ZvG>zH=BlVQ5k> zbR^ePRl99H3|CU1t;nAv1!Cd)iaX!KVm}@=qP4B&N}F{e<>6!K@JK{&c8#0BjREr& zWiI-xk+ML+E=okfos4U-1dt6Dty>yworB+UA|N|*3Vz@P{{R}NXO5o)>vL6u@^Qp- zA&`p^(%)L=-^MRiETHdrKHs{N2xdd+B;SzmHAS@AcqXigl6iK6R;P(W8338WR0Pow~3IlL>yY=T&VLELMUi@GCFTeLb$ls@Sq0SHM#oG z02Ba|dP9=(G_4R+It4Hmn2t0I&HS&lLp+dYp)h7c>5C~>kyCI$a6ahUW(P{6ZF-mK zykPUsmal!t$2kKDWX;DfCQku(F@?~W*oU_va8mZ^rDfQ={$~9RQ?40+f0M)!3&=5N z#co3yNq*wP(!nI?3E5BK)~Wk%=4(w4W_*d48cf!g7EEbVgyj{XnN5z8D%n|0?Zr;I z9)_m97bH7llDiwZ;YTB8WF%!~B4jbjSzL{|sB5ngpjI}ev031@i5B?3CCSQ}3%H3% z^r#$BBfs43yB0rR#;AHyEl|tIE$ep*C*3(1-g=MEmrHNdzM!1E;<%}3GLZ4%ALI)SBTx;Qe zwbSu*S6;V!egqw}+K*2D+ji5B+t()|DAG51TL_i2@nujBnkn@309HG>w3Y9-Ls^j0 zPcT@B_dPdpuEN??Z!Doh|+ac2$~sTwY$MpAtID_tw@ zWVI0rZD^gG@Bubp%GC=}zk_>?p#_G4@qsRfaq>@-w zHJN1G#F6`W_IsQw9y?-w;UxX4s}^2deIAewgd2~gJJxE(tX{|4ai_#=WdX9@R{g}# zDPri$p>o7qlENV4;5@oSEScC}Huko%V&sy|PU za?0LOW7}bvcPwnE?(f^noVex+RzyI3EuyJm_TR>{Ug;*9{oEF%D1nzUO^n&bJ_|L} z5LhtcIR#|%zaiu*&2)3xO4forJ-hckwWWpm2*X)nD!e$_ON$Hr&vEsz6?53@Xn&bo zhFEs#(O*a!as2*CJa|#Bo=@8xf^|+N#=`eaLDG8GaqwVaol`S2A2X!n#Cm z4cl80q3N}2U&w50w1U%Fkl(ywV!^`~7ld{Q&Oxyt1qYziFYu_X7Q34=X{0tggt=n! zJ@xe100+ zo2e{YKr{o!q_Pl4W^P4^*c}gB)yZH?=*{6^SyTpA0R6t11dJK zHq!N@TPt8=MH|eB-XK`tjsF1ZwzeCaRP5S9HvPjd_P+?3_(I-3$e-|aT=uEka|CXZ(Lh7T^&k0hwE ze%lQZrA4s>0`Jb}?!Cb^=Qh6Wmie*W!b{ZC{5uvnyJighzoyag2ydd?^!iknGR)iG z)X|XnlyS%MNB89s;Khvad+q6rx4RoGH?jNp?oArghO3wU=B;*`DfK+_<-L|($Ma0w z31i`pm&Nhp7di_S0N7tkitK2=c9rW=xt#iy{k1)=>nxTNBo=a)7UDp;9ESGVr?Jga z;y^!{cDS?ncPN;bl2?LWY#WSGM1dKYcvy|PRlX+IU!{~@vU&4!#_o_$ZY&8&2KKPA z2G*{^`l!*J;ihfI0DLGc*XCX&W$2^&tN#G)R~hV!KaXQ=Rs_fik?$?fCKhmfS#5eL zHHJ5mnrNip6;zo4=C}Kta^rPAJeyHlYSEU+9_icg`+$K$2y(rlBf{hWY%g>=TK@pc z`FK>dZM7%Tem~re=$S`9W|=OKw;+Ikr>*rWZ*H}+yVK;U>SPRPCx%cNSqoegBa*h8 zTYYNlSu|Fv(=24{GODEbk}gziR5VNf0F@l?8zBLYkx^?^3&>nsAE(TpV6ox|B{91) z6(q_v0WG+>>(Z0Ia+EZnc^@Z`B{?bC!1VtB%ByOnib>e)CA>jKg5X$-w_2vkGEHQ) z#)~NwAW{JEu-C(S&3jjpYOK7*k0I0BcVbTQ-9a8ia;%nVW(yK5al0UJ2v=4*5K0UF zI{yHTRQHEz9$$}16o-N^C#hgh@T*q&L>)<;y9+uQ6ve_f2Yt=F38>!5@{4(dI$YsVNC8gWG?-_23+wJU5@d~(Ryxt~MM{ul9_ zoX+P25)?T(EOipKG_IeKxit%fCG_Q<bpV>}SA^l`nP=?i+peHvRr=^b(Y9w}`7d$qS#Ft*hZ=O? z(OSrjvRje0{Z=e@2A<7-Pq}SUuK?p?CKUM*G=ZY9jTDOj7x^_%eJ0iy*M67DX5LLL z$|XD#NrHJ2(;-!rlSPqG+&qAPDviI$3*Aek{fyQ`GmKv-s)EpRFQZ_UPeAYAAjv80CS z?c_#Oa#N@3u{I-m?*9NCrCPR?!(Y&acHtu-7jS|u>;B&T$M?9IHjfj#ISC|@{mSpk z*I#pz-05*^fGO?MDcLA%lwYp>8M5tJnNQn&yn;V;;KH)Zye}G(No~{>Jg(b#>8)_Q zjcdQ@Y+yO#GjiquBIpg;<6DhM8~N0e*4J|S zUs6)K86k^}lJbmu#g<6_0Mt{-U5=m9X0ST`ldnNtC3`5GuV3;+>~;170;EVS#kSV^ z+#P7XNh043+e6CWiyoH;p{$og&~rh-%O=fYJpR8;sVhhfFeWxremmT3KA_asA|p6U z*qtrXtV0k8xPZ4Ot?foeNyk;S_}blStFlQF6>p{OrBc}_6t0?nB+!@<^o_boHn1-bceLs$r>Hxd}q2YV5)}*fvNWmWfE;G%M zB#jd)l!2pV8(r2@-f?A z#II$e3zN`3IopDKcPvWgW+{-Sb{8zANWYbGs^(h2w_EB+xcJ;r4#R*WQDGQmu^Q-l z->vG(@Kd?{Y{p^5k)87Vw1yyX=AJxRqLe4?iepM-c60=|V8xVzJzTF+oF(}6G(1!A z{YanRpN%p90B`R&$U%b8I|l#|qmudoy79jgVb=A(!`a&5^(fHhQRWI@XBj9NOo3yO z1+*);H~n4}s#?Kwt_u#=jF9I0ZOAKwBx}hEJjy?$8CdMg$xZs2FLh-<9_296lleDh z3z?MIzyxRaAlG$mIbZ&vuj5<%UHDQ$^er&en*$x0?jiuc6Jn#&9qr+E0jnm@-u=tz z!2&#$Ug0tpynf^A4UZd@-mY}|5gzQ3`-oy!CM%YT>!rXdbq#)(t2DlhhQ-u}-7<3; zUv6DoA_pz2xFeOzoo}sOs!b3w z<|>=rqDdAB+88S=N(#%y{6Vlf@wxG;Uhh&}g8u-wBICyt>fA#XLgSF-eMk+V{6#;w z=1~^CL&W&Za$KSwEK50GOE;B=rr(7t`46iFR7yV*VDZYY?Kxq~UW8cq)o;n^$s~zs z@y_EF{j~QKeYd}-%>MxKRK3-FmMA9T;LfMj0$+PM7e7ndsquh~Hnz3S^%hMTzWecx(cPhtWn+hCQV^-Iu)V?I zYpWBey;W+aT}_U?PapY5_U}8j$&R>LPH~)&R&mKq@96^V#e6JlExwn*(AT%U9!2tq zB**S@Vn5v(Q>L07di1Rto+LIhcW9k){h8h+vfL^rgqxHtsXm|@=Pu8jK&&X*(Z}YJuW8vYi^>N}q(4CZfgusDr+5kN=3)^~LJIlAJ7$5%J_QMM0 zcdU!@AJWGI(yhntzx@KQyON!@=r!_Rkj>m?DU5C-Z%mf66W}}+g|Dj(cq!z5N;w<( z6QC!5<5SkjUZak)#IBAw$Ur3sw-P?zFx`A=c#J4BJr6re(~-c?|tz_#t$F?v+2}y z=~gRAMT^`BfyzlpJf1!sZaB5cH|y%&tE$MX{*v@zD?t2#DIf&LZlkZ(uT{ZEc1c*U z6r4x}n2S4H+Q8^7ef8eeI;bGoQwaA|(@37?MJ_IW8;$v|z$sLtRLR7a;a0a&CbsrDKb+3EPt?~F1+qzsX5wrOJ z0LgH%mjGrtmGWhp1!lU2jy@-YGO#-pu?FI~UPp^*v#P>Lm#e0snlA0}%v{`9NjmE(Y@8<1o+bc*!eFS z`)+>!0B&V#NgIwub+A^to2b*Fz1L-BVf9}a{{TGlMyaQg@44bP?z?_!WG*DmdE?GV zc-NCyt;qE%i|XUk_S~HYDmbgFQocSgT%Keef}hAqySwR?e}_s*Imc_ z&3gOwo%#>uyG)Jh0hI}h?2s4Jny$QTNVWFq(x+CRBuJSUQOFU# z*E*FN0M$C(p`D~RJKTQqR<<3y@u42 z6cJ^JYpwjM+Sp8Bs`3M`g;<#pL~g7Y8xTRif$2n`gPR6t-84BUq>f};+)y;J@ce5I+PX6OzT|dSW;qi-GkF@#3y-zqItzc>ptV^|(2DG` zMqbUC@0h)jDNcZTw5h$SCSXuVTnR(o6l4QOTVBWU)~b6wNvf83c=?Jg$K76|P=6k^ zMXZTIdyS65!NCJdDb}-Eo>e z!m96LlxSe>F(l7&00%%6TB=Nou_OJP5^#OU)$ih?T5?CZgZ}{Z-)~ms5;ROY#>Ibz z)JXf-=leOez4-{17M z28P=8pa&q#ng<%_I?@9{jgcJCtB#{u2%3t}RCVYBuRw%5P%*zBIzuB&5fP*yo&b;r zr||1hXp#V+P*iPeU&o~;N=)~D?NH_5fhEghza(8XBS1C&YuoXvHd0Z3tHVBH{_J*^ z!TBP|U_WsgBp^HiRx893bszzHG~q$5+DN^&({`90R?Uqxi8ZV=WD+UY^$@H8@}crr znd#>P5?1wYGub==hv2wmKg;FPy=o!U=rafk@S+yGdpy|=aX zw}n*KB$L7;WcLNnf+#)D{kF-So)D};M#4DO$6MW!_NnSoQQsE)4OejCgV{fC4VEaP z3J4(I!}H#+sxY@K#DE6FP0d_dhcQ?K=>y!jD#TvI5OfEvRdmyoTUMHeImGik+uUcl z=5OjI`rOpjr4V(3!?z5WqW3tf<0F)0djWX`&s+YVr;S5mOi9BOEci3T_>9ksGlr5o z=@T6}pwMZt@fDr=JQt_jjdyRHWa5cH<09!iR`n9mb?JNm z0HqrJNbU4AxW*#3O+eh8bvm1UD^*%EG4zNmoV7Yy-{(_EgJviD(}X*Rz;f{Y-)Y)R zcMKbevP`T^hp6rLuBWA6r*CD`C#th!=3f5*@;GoC{kOBL7-0yRZko?3*z$!~63i7z z^$izm`1L$r5$yi}$+MToqW3iH+uFNoXL4m%d~E)1*itLQ7?p!OX27zs^JnF8xxKpA zLaPqH@+h3iW!!RdQ{x@BSS7YbK1}RgdKXC5SoHk{v+AvW^^;g>e{$Qm+L|`s4Ec6O zbU6K+xMcg0WkD2g?YFHiNmmR(4 zMS=6z!^X4Q1fY>0A>apw`&1at1CU{24_Y_@mye5Ut@YQ+q@Dl~#NV%HE97CLKd>U^p$!$=1JHORT>d_1Y95DF=`f!^L!+Y}P}c07~!81TcqO)9b@ zs+Mj<5L752g4$7RDJ!$Yp0Du^#ev!I=EsBql+rADl8sAA9B2oR5EtzRiEopay8X^a zK49w~WRYYjV#tyh!!ZlQ`-(@_+OSvRg;Wy#|ZabNea9MxAL&4rHl!` zsLA&3+mZ4-ym=gZeU}2jHHg#zN~as$n`Y2)U&uNsS^ofYMeMcl`+~h8`JJYHBrb0uwu*VwP?_nb0#>_dG%m0j!FI23u(5w&KvwV5N<)Jv5_+3SB#VP+tqK%_wuOO5=`-r?|;Lj%XDN(?D=DFj;H+I1UmQ<7mtjMuo|aA<6DT1NuRpu335U+xzg?sV3(H0treVzPXb zBgBA5D}od&o1idL%W$)c~lN$9{`mKI?A@;t z3`R+_^W+e4n(oUV7iX9#Rz8z!kUc#HwmLk03irD1~IlTxg>s~ z)+KE$gOC<74fMDgbg=F#Rn{M0giE!RJO+>}afVp^yXr!PVpQ9y>9uK|y-43-)x2)SHw@vZ!{mIugXoj<-=p|B%#!|vHUI2!$C44^7 zrSz*^VaKqOoSUB6@^%rfE@S@yOoC29SC&ZJg05V%6Cz9Z%C{;Q@&Fp-?a<~|$M|cZ zqOe_mx=)P{?Q<1ZD;?HlW@GHKaUfa#=82Giyt!NHwl}F+%Kfc;em^4Vz#YFg6Fw&P z2m5wXkR}8F02YYBlFN2gb8QX9^}R=Kw@06;eq^fT@7s@fnB!)V4d?clG)Gb!j|=g? zjp**if7F^LK-U3TgiWDRgGUDYo|+N2g;Qc=rGy>9WyiyxO&e8jF?5`eDsS9=B(Vj%u z?sd|@(Q7)E=wDFOU9Y|TnguyCHZNr=6hR-Qrz#ED73f%86Q_rbMzTuQtvJn%55{AH z4%HSWJ1aIjJaZ~o1Zdc!F8=`Z^ru3t-@1KE%wx@7%tC|fEVd@w?`u`HDY4`q-7HK< zdx}Gf*I!#n8#p`|@fWv6emB%_t!U8Unl-suFl`7SE(v=ON0(2^wJQzOU)nl)q+1J) zDs%@>FMfb>*TRck1!_rbSIK3^D#Ao1jHHo!0!jg6#9VrM-&0w8`t&rV+EYP^54n>o zN2yTZFLDw_W#&}>03h3~X|>!WMDxs^(D^ScxU3}@+@5v^L{)VKh~Iav_PyPyC)B~R zlayR`&u=m~(Nvh?^(@hVc-#5cW5&c9%egwX{Yxn260slKnp`;mXooLk-uH}>6asB_ zP=AF{va*$tbst7H(2RBqI`ZXX6oA=eUj`i?&ZMo~$NPVvI-9?be3ZkF#tDgyY)BR_ z8PM64zx~?5w@z{qCbRwP8z@I7xD|}IG(rh-BUxP=ON*({?@>Z5dt47A zsUppLAIGT`7R1Y3h@x2J=6FUBMm%{jwf_K(L9!^5BiTSdao*cst*Ib89RWXDVr0mp zyo}v60-8c&*4Ba{0BM2TXaE^#0htqf&;)5Cpb2pySk%%Htz&RSXetp2;)kx^l^`4@ zm;y~81&suf8@|+rHzKK0d^V)UhKaD(!lE*}I|e+wcgJPFA;jNe4_=*oDlJJm+7Fk% zxWC)(;qgB9a-)d81kK7hP#y|T>GB6rttIHql)8Bs_>Xyu7cHTg%3Yt(fJGX zC;6Ai)Dwd07yE(rDLy=Uc`BNltN+hyoF?N-*v&uX&z7A$!%DlKKd zr(dUyX{kdzL;Kl~-Ns3y#YB9ZJ}R=dzJvb&l}4jhTMcVRi)g-he+bh`{U?EC=VZ+1 z-N<%w>=~V!N8)dLu{N>3!n>8KT>?hd80JE{E|F1Q8bAd;1ggxzO_}EB5FpeJtK(o8`Uk0kf4yKmA{*%FR72(;NPqRf{V zGQfS101~RTn~vAEhf~*DtqTOM%i8CcKOdFlj`y8bCXtdby823~*7g8xy-jBYJ9Z?b z^p@_}5cbINv9R(aWmSYI$1#s=fGh;99r+Cbs~-?@;kPZ2F{b%naa?l-G#JSulQ+CQ z<@Xnh4?w-TkGoGgNfLdilK%h;#7udzBxy2pqjmPAm4HxY@24&rt0kG+EEkfX`+>v`I_Isyu!?KU+CQ2$PP^l{YrK|%vaKw>C zR9Tb0YM7BKQ79WFtR2%7}pnNkVkv+zQ1v?`c}1=vt0BV+O5WzBor53)k#+|{Z}$_@sIzu(T`H(2o@3nP z&6KpC)oC0bNp3~1NWZ63b5^<~NJS~O$|D*?v*jwX1W&R1$qELAA?lbU%UVL_j*hroqJE3l=Xk1?2l^HUq$UP>P!;s#$-HG9g%h&VdF6 z04=RR2v&d@kvE_Q3Y*Xb&u+-0zzPVO8|zmPI`#+1&;fGNfdX2BPzf}E5`QWHM%dCA z!;4#8x>6X}0E4chW8q2$Q+$)OV|PB?G#OB=%PN(4*jzGL>E+ae(9~KdOF{Eb%YGG` z@$Tl(2IbrGnEu}(t^&96Ir??$zl}uOOUTwYaPHVr!wzF`Di5&I09AoH*|k&S^{VYz z;I%Ye#;on`0~}Q+xUJ}2qoM}iaFwvIbxNGj=^0>EWH3=->3Le?tp~N z1~18Q7uPi79zm>;vKuf24H($(wXgY9lPb2RX!~z;?K8$5G9!BdyMn`g$TT|@J$Cdi zA?|&!DZWg1QF5q5HLtyv=9h9K_U-5c_f&RcjT%%T91FBC9l-B?Z+dM z^G*q`+(BdKrSz%Ps^*6pHDnxx{{X_RNTspaA&jGQ`$!<%n_8R-NH|yslHc1@KyHy+ zO{@tYg}~`mszWC4B;5Sv!o-&$@5U5oDo%vkL48j3aa>8_oyjE3X=a&!sW~ksgHqbq z`2A{iaB4@0e4Dk&+dJD~us+K;Y;tzsz}S8pSARy%`cG0Zk))2r2s+z-m$|0wO(Ne3 z6_hKWZzjEf{{WL54jVNV~%_&JtvedO`SovEzXDdiW^s6;#e*5C5`=YoBseZj~dBz z)){hTf=EcvowX$Ns#+L+@{0xhNgu;nU7&^tk+lNm=F~QcqQf33l~?ULYJ3f6vqXup zE7_QzO}5-^RkkunSc?I*hM?79kaDDp+vKclG}Ec4UPOux2UAi{A=UA^Str>q!)w&pS+s>%5A9rb|1_1OR*q7W`>71d|iE1G<1|Y|VNQrpA8t+7fJa z2R8|R)45S{N9KQst7~twvLEfS7Q5^2h~1;O&x$?BZ4|%)(Shk?Cgd{T^sxMmPkyy* zJ_ypspkQ}S)7-my{_#X|%A_TaA6Ob#_0wM)S0>u+OG4njXCrfVnV|+)ipv=!Tm3~v z+DjF^NMp3%%KGw#L#r=A=YF*Q{g8I1NsqHK0-pJFBy4SeE1TM)_ogT$CJsJ4aVd<< zLFaugt=H5*YOU>WtOsd-*yVyrWM=0pJ1?Z23BJCTC2lk~0<+z*GUA%3t@iii_`3wDe&;bo-5a=3H5V}(V2%tkU4+=vDG$nwf5=wEs z0xlW))ucsMz53i!6BIX%A%ae{0oR}eGy%qdBfr{yw22MsYzI;)0PL`>DhfTchJP(CIqS{>Y{I7-gZqissiT?H3So*Nse_A2`08jJn`gQ41 zk3&M(pCvPPpN~!I?fu6qwmP0E4n#6A1Y8wU>ag-HQGX)UYYt&!XZytjZ=EOG6p0h3 zA+ROAO27V1aP5Nwhnxw{Pps=f!tr368eJ}t;m0VY@Hne1VU1rCyW z=beYYsrr*1?B$$NMbo33fJOob+met zPERz87!siBIFHWN(046Jwa1IVcmq^g#ivHrzqsNyBmv!3-+I=zJ`-YOu{Pzx5FGzw-(b zR#5r;gDA9zGm@JdGMg|zZT|quvfEr1D-ZkqJv@%A3DTnkkmfw30y$q@>bumMWyUn1 zs2iTOlE{%NH?kHafDhYm@T%Gv+_Hmv8|ki_Q%DGtIo?l` z54NYP#}siQ#}X`YAPSMF3aSQx05k%kbEI>nx|#r9BT8T)URrEU#()9wVk}P|Qx8)O z3mvt!CsC$S;p4O!c`yW#VkDUP^5Lf83tOXKLE}_btruF-lLO>G?W@`*OzgDAjzMI3 zB{6!2)+)$v;Z~|Q!5TLwnEbotxZfbe?O2NU%EM><-bSjDIbJHp_S283>EZ=x(w$S3 zTlV3}KqP#L6%%a&s08YC>vCG9+ZiV%gjmXS8iAm0gn3`aqa;}5IKnP%)C&!cr%t|9 zHy~Afigk|~FytRsBE3japc)_5YIMuNIwGeMe3_FcI(bFqP!dCMgoNRLNZXEwO?=3; zO7&8ziwU!KX*;)U;1G!&8ccF}kzm5z3lUD2>}7U&Jo^OA+WY;Sae{W>RE-1MiMaC> z)Vyrf?uc=3nPu`Xib#(6y}R7@rM!{GpdJL-ih?w=I*+AO<9Ug$+lywtsD<&#Ow-HS z^BaVDfujNLOnE9fqbLBjzi$vOO@@_kkyMv`dVYj!XTv05_pJPMIE9RgE*dGX%~%_8 z<>hY+)pyrdl4!Zd?{LY*GGj2ysZ!#`;9lXj{EcP4pG=ZgCYhq+?jJ(fdY47|+s?DS zZ=p4De|e1*mzBVfew(Nyd2(f{-n&6QMknAzEY<1-;&yRDDaNd~IDEV(Pa)E=dY zfC4F%xm!_TVYR4LGFrjR{76&K=~7}14wt_42!1j~l+c*zHWb7tI#2==NC0iA0OTq! ze+mF6AOcMc3r0FsghYkUxo@bU0}l2kfD@Lq078%)ccuq^6agMUO~4e1A+#1`UoubO zKoWXTA&jhbk#!fLp{7)vP_k$=6%tZL&g`APDPP@%OGu?!KmdC-_G(Z`S)wdGiv|!? zU;#$MT|S!WQSBw(!pX&QmbK|XCRH$Wa1BM0MaCL4AiWSpvU(vFrvzj+UBwUu=WkGP z)9F^#V6McQ3X~BPry*)^5_$K|4ZEysU^v7HKUOsY+L^F5@}QiSIGAzd!7LK3emVjU;^X+x_CDzx z4NHKjAW*>Q7&_`LV0X~|bv3g9kjt46*>zHVK#e~tl1Yqp4m*+QwbU!A*q)z|sJTD` z_S;Bgh1nd~UiSyc+j~>{xQ2mLaRjJ^XF{XLUN`das+>LvB4j8;T){~!KvXU2KfqNs zdGscU(9Mw=-bLaKwASC9QEI2bG|4TIESBLL8*~ay>a|pdBWsf(z1z{@ZSPWaf=C>J z=>%#`iBZ<{AS>QGU6^Pur~1~4*o!RwDe?2(enW+XR`5vv=1Bhl`Dv>U$L;)Tea3zF z?4xJVk;ak6v7&`U0aZY-0B8ULk;8dAtq=l>&;eSQq(%nD-*Fm!XbA|A1*ZK zs%*%y?2J`ZVsup(Em4t}ZuHHSl;LFJi}%Pzk&9bjJ6^2UWU^>V5l&t5QN$|Z9kEe$ zx<~f5!1{{nYf?(DJoO^p4_oYgy+7ITlZ4_q;$<+N6lHoxN7;Lj*d0 z(Lf1E0FaMJ@&5n{U_B7BU#Zmp0F@vb%YHH2sh|;VbsMfUZg0JrVq`U)!A5V0_z@TtKGDtqV1 zF?&o5&;41*{+uIwor@leQEmxVvU!hi?l~FRa%E&UDP%V`761)^9s;6Wz|?LTtbZCz zW`nguXw>Pb)PcSF)I`~e{_^}}7;$_2DlY}G^8C?{p}+dEBk}U9^xL6-k9@)Bc>c8X z?85ZhgK8(^{o4WlH>&K(qFRmZzT|YMHaHzB0&ybOvtPiU`BI#K4-mK^ZVsAlQdR_p z41B|K1se7jsiy-O7|I?TVhyMjZ8GJRc7;A#>|1w<`zeon^Pp1<>l%O%f)f9gcun$ENi~kkI3fM?yg(LMjNE8fzPq zVh8c7Xhoit{gv$p{{VlxIJmgRg!I$Y=g8_R#Dy~MzajGR^E9G3q8$~3w1rCj`rwO6U; zo%<$LMa6`G`2=cr{{Xn}zxaJ?q2p0<`V+fkjC?1G3}7Y_x|Mu!)n>C-*TO-zIu{z{p^U_F9KCb0*MSyelKrUfc~vbRIvMO zO5UW`&i4W|u^6W+J=Fa-0F5@%^?%ubn3RxyKiKEZ?jXW|uC2v~5J1x84Fx+~9uH>t{{Ui(4h3Qt z+$-xL0KenmRT-^mJH6z4DaACPRVw>@q_>%u8GNhTll@X7z z(!!)8hxpO~fd1w|QMLFF^QOR^^rRxcE?!dc=(L7j^4xe-h=AtC{YJEgNPT}AkcPU_ z7_mL?{^@pYi$%m7EHw z^X$1~mRFWmF79r`>wDE@$fwJJlJ1(v)Ob{o&cjk$m97SaA3BQzTY(jm%ELiX6DD^~ z)sNi!UQPx`ycsdHZ{!$n_!^SHlZJfZHXQx8xa9WP#iqoOqGsrLn_uy(ZJeE2T2VG4 z0Tw#=ilwsDOo>R=--Y$HL9#>EQm6U4-^ap|Vhzgh98>{dIQfm}T#XGfDSdVD`qaCJ z17;DY4ut9BPq=9UQd7j#klQ5Vu9~&H(|(dW2ik3)Cz}lNCr+ki6_}{ zeebZg^)+PB#f~NnNdRm`D_IP18#qFFALjo6l|nHi9Syzo>vK?OWO;}xNZ!ZjG}CIb zsfn}bPlNVf_K%F<;jkiM7?OM1{^Xvv2HV)1eFa!>H|*}aW$6^kK_ZaO<3JF5uYB#@ zt^+1apb#!2U0C@5C>?6qH0P+!KLE;5vz47xQX9`X9XNuXkx!cP@dZeHe zKNn{GL<^s$)B&6McWlJ&ow&f@B%t6}vv)S_`9!2w zB0H1mH@6Yx;ax4XTWj38B%f=JhNf=d^NC$p-Zc)EHZ}ubM@q)3iM#`cn-)P5G9#xO zfXXffzYiX?tw;{y(kxsut0%IeL%H8=x>O;Nb~axL?Yu)w$QPF1N*PARZ(?34Y6=YJ zeY-PXZj{NQtG2N++WS~kStC(`FRxlii!4~$I*|d04cwZFB*_QDn1Gf*k+XOU3Xq8X ztJcy>xCE&B{;%|;1o>Zz7NiAFGQ_uy3}%{CA<5VpY)OdBynR2$kOqeFsq&@(KEzN1 zT#Avd^bC@ZaX^E)wv-4KxfBd!@8x}H81iZ;5LY6Yj&HVrBgiQd3Nn6_0AE@JGc;j= z6&5nRQ`(sH7pRjgzy(D}h@fdmM7&2-MrJlu)SoJySr%nGreo#gJf!Ke4uMA17m{fd zxdO-h=o%S@BF5IZJB`IKB*)r>X6i2+e-A25a$aIZWfs!?X$h8!G^RxH{{Zhl$D1EJ z8@|G}j&b{ZvIc?I{{S1GsPz6-I=+U_8vP7TGX_;F;c;R4)mFjKMTBgjPpDYfYgLjY zh{JNR9Eb59H5ma>&l03^w$|KJV@To)8;celEx(;4NCyXDuJt4_vcBi1h_UK4(wx9R zNS?L?=sc-6fxzNN$y9-;Chu;VR9grD83PnI7e0||fIMl!fH*5`29~+Mg%UBQ_8RWRM<;oevSj4Hvksh9->r`1J zMYGoX79zup0geN4{G#3!S(?nZYX#Do6E)u3LVRfxMR#tF(%;Vi0K%flGgE@LQS_#W zGE~RWMrg_1aAW4lEn9l=sVQ`nBZ zEhw{v;wTF+AbMJGqLN`MCAlKrF$8-9IhAOnTtEyv61 z1vvw~z^laQ+ZON^=|o5YBS^}d1JDh};Y~sV(fDdv%xjE=>dsV0#kuQFSPCYdB> zvzwVUVi{ZP7bIJ5mZ?a|5O!sh9&3A#<4N2kc29`*$rSsMSlD`(Ls9#TYV4<*;FxP7 z%n1NDE=1i(8tN)vdBhW22vU3=bqsOkXG>VB*+$nFBYmm;+2o(xD&_dEb0t+!sPHOm zPoBoCTPlORcengsxrt<0u#v4}@5rn*zx_Z47w9QpVtqy4jV2GpJIgtrB3R&s3H3t6 zlVNKquy5m3Ho6ge4IU3;f)HXzxWgrmL$Cqmw#i}k$JBwjsL5TdTS%%@jyJcJ5LPrX zLoZqaL~KL|OA-`b_t;YjB4lAEk0K4dAdRo%K;*Cenw4S2Spl+!7u58%1CpD#{9Cd} zhuy|kd-E^i$5V0j+Mjzw)tO2@Edn<<6kkvnZTNJl{l-bNP4TafdrV#RG@YcX);HLZ z2;xu$BBmUs%S=XhyDvA|qRSB81RkxbBW8mcKutPSky{RZsAEFHEVPg?*pI+#QX*&a qBsrb#2nMmidF38^ApGus3YS5eAl6?hL`wPO=PB}}F}=5-XaCtJ$a+-( literal 0 HcmV?d00001 diff --git a/SpringBootHomework/src/main/resources/static/assets/images/users/5.jpg b/SpringBootHomework/src/main/resources/static/assets/images/users/5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..da41991a3057985ceb9ef8be678d774e2f0fe050 GIT binary patch literal 73888 zcmaHSWmH_vvgqLM!QI_`aCdhP8f+L`gEKe;2u^T!9o#~2NN^_*+=2!R`uNVf_n!OX zomXpSt=`q8-L?1bs_y-|{JI4olJj-20|1niSOCa?f5Yo<0FJDewUZwJ1_1wt76SlY zx8S(#Jw084oSZHm9F{g(3FTB!`xG^u33?zU9?90Kgt+`K$gg2Ei!{K7m!d~8%a zT-*YjTzs6|!tC6{4;9&9Q;&F1`aMZU>^_We{rd)0hL@lJS|V`Nl=ok}Hviccng7Vk z`DP5~Khyiaru)B9Z!z>w^M8W(?c#sJ-`3?V=H1_d`}GWf`LB=#*z~{ML@=*wfCvC0 zJUl!CJR$-DA`0T$9~Bu95g8R7^&ddTLjMS-?~hpLoRBPA+Y8fpr73)#Cg*Q`+wn07Q&l)7#vt?xHl2-S~Qk; zZafH~$?v|-NM95-TBU5gt^&~E-WYJ;Z~zj3<*^t%QJZ>pfjaeX*6)-x**ie8{NkLO za(X8Bb7&adAIQU$whAg`uDtfQ`aD1LCS{sib#0=!WP zeTP6nu4n~P63M55P{jJtgw~3pbR|@f9t@U<1;~;48~MCRPzxplGlKb(QgtZR2&wsM z!}<)?*CY6G z5qXhmnR#KPJp*iU2Acl*l4-nq_`~!OSV|pF737~OM5F&=5c?FweU7w- zDF!CjLk>~6_lWlL2LEdDh}y3Y4;c^nn+!*)4H_lk)#H?J8Oy*jU)fqHp<*p)8t&{= zH3A&`tK!x#!*}J`TMx!dX`J24k7ntA`cJ?6q8Iqy};F| zNuE%R63-Dobq6rB%>fm_fBUOyQH}X?SZg~>0 z2~-BG89#Jf>2ywsKG=@7#t-&eL@@bwc@F^C6Skb{(I zhVe^QZ>WUvi!#pGhqGt1gzs<-uQzIB)U#9NANmsXR16t#Ao_D2movE=v5`| z4^hPdnrsOko}||WR$Quk#t_9|$f>MEt^%q?YK}Gx~f4qr|TkAWHViu+Wr@O&8xxt{hj%Q+HNLFNYX2y{lpQF zLtc`W@Jt7i;~Ux%pxG&vTr}d@xiQeWUy$`Jb%EW@u?Nd32DBhdV*p7)6ESD5XhsUE zk&tX4kZU(P9VicNg-rlwC6<(SrM}{u69U1Y51~bV)|E4 z#&vMC1ah5E!jxtNS^hhNwLKy(JEWcrbEBy=>N_hC%Zi3Z34Aa63th6V#Jm;|ZFp)| z!5|$S=K~0DFW|ZapgtkMfv9#hj1hKW8-X|PFb2vLE<~m!=xhK5>#?x$*dLLnV`1$y zx@toTtlTHJ42~$j2f|zwAX#G7=4c~EyaFIqr2`xvJkt>l9;~Jv{LrZ8uhGV!S3OUa zszI1mcfN*5_U2q8b6`WTgyP&Uhp%I;XPH^r6K~G}RlC{dl*q>2h0miC ziCyf+G~AIJcw6w5M4BmQLqpH`a>=k=tQ$?-27i|_QnZ{-aB>-@dje-)m#7aCUi&)< zl{#S31|3#MAd6LyLH@vIlh4M=Mk8I&TJjwU_w%wL(O!IR$MB-%#e@(Q6`SWeYfUTS&dJfE;!GL2hzxu z+~;y1GU^_}b}3r|=0W{nC?r@neo>ZHhA1WKMw!k1DcB-%5`%)Pnuy-_r_#=1{m4YQ z%|fESPJqB9x|fCPl$ye3^KiE(iT|3;4kM9W2iHX@6Z84C{APDDE-I-&KxnI?43*_> z1ahxN+pb>`Zq~vUHzYt>MLyco6x+mLd{#*jf2R|de7r56%JrEzNC5HI3<_O@!U*L4 zR2p6lrYT8={5v{EqF8%Hm#Kg4Y%Fg-Cwr8ZEb4OsN@JTcl9fHNC&~S^2+^{sBSKZ7 zU$KJSAxM&qmPL_@Uor_uSy}hdF|tY9=-ma#Uz4vgnatLT<+EjCwt_BqGC8$q{1fRBRXxO4LyIRY6!u(daTg!B*^35TsKJQ`sg+sgN84 z4g(kRhh!tP7qf=`A#!ygmV+!|lmNK#g~9B>TW{BE>8cU}6kk1|EZg9dX>S@%X-Oz# z0XZTcP@A0z7JYHhAT>Od6^YGv3&Rjq)3W44!G-?>-sj_r;wdtWg;#i}X{F%jf%yQ) zVIM6}D&xecwQ`bbM}aeArM_XT=s6^h{a&_M4X73p)T5t2^d~W->ugSvT&k7QS{EBx z;WB)w2GZL$K05f>NFb;z3f6vvJE#H%==-c+IJL*6kML_?<<6Ykv)gv}l z;=rKvEDIJ-e~_M7vBgp{;335hEK1xTl-hYH;$y zD`35b4dbq-BE}CB4ubYx)PEL6XovAo)DUFcA6w7HF*>m8B4^9DTloCiR21rAJ zK+d7Zh5cXDMjMwyRgsg&l5~Gr(L+A4K_yG3d%K_%n6L0~=X#ven5_>D)p z)T6G$C#5ia-L)gNaJD7#4T8PbFw6}EhzDRG8)`ABsnfhJ8jl;nlD5$S4C zO_vTrPUzx}GSWfJHv$sF1sM*tQ4qLCGIo#=Yp*v=0g({yA;CdA3{Y^*&w@}G57P>T z4TAU*!v9^(#OSuKE5K;w!!=BAK=XiB^`8rIvvHn)o)VZi7m!2}Mdqj&qf&_B{1Mo= zY~%v)*Rh5R45fjTdzO-z@dfwf)$(ZX;OndX$MZgAaIhg|DGS*`JOkuCEC3_Mg_n{2hOQ}8@>%BK;qV>}?=WAP*mI;Y9mpQ?_NiuCy z7j+q?bopsE4Ymq6$sV+0eI;G6FNHnx{*k>R1`>H@z9Xndo9n(qwqr^ua3!4NX=;6C z3myFTAMgdydUh{uv+Y9Kt|pQy2Eo@k+5W@>vzP}lY^L;XBDg}$uo~Yqv9?UlYQHC6 zZBv4>IpjqirpdLRb?^OjzosH@@YyNAOK$g{djxeZHuf7W>{Gfa2@Cz=1IK?I%C3SPWVmSQd!NkL%pqF zp68`#xYcx`NkaeiqJVPF^t5mzBp!`u?y`WGd+C_qND_>LBM=(%4jUkWrYVM5GzdG7 ziA)SdlC&>PMma1Q?@m}8a@+Fw% zy@t1{bC5owTIfZ2s2a1K=%%|DKa-Hkp_nap6ZYVE~bah zZ3Bvj$*ok^NnXWlr6hyTPzNu5v(csDto6_V7F5I?8hdJgQd1pmGTBNw>wP)b7FPcm zPbK5Rfwcbl(sJa&c%<9K>&1xUc|C9;o!&@a^?nzih8MWTMX5oL8m>IwePzb@ja|a+ zjJq?Y%V*h^BBg3{Gp6mLuGuV@*=~BD!kobbANBp1i3cvJJCZioNq5Zz*ST*vj+2`5 zRI#oN?sw0I@W=aHgB{a76YQ?@=3>KOgBUpLDW?gPF6#IERM{In`RR4>lYSqApe{EG#0~EKnu>~4?A{AC=YH?ZC#|~~aUhM(9VZCgP#l^$r?NN{a~4OusTEei zxm0wW{3Eo_zj&Z_4bw2AR$&2|K)HSvda zn6CghO@3YvI^*pEhbKT=OsOUd033*ciA2H_fOAo*<7cn;w=S-9h(~6$ySNdoM2J`> z`6Y@Qf0=nPMEL4+(vv+L(-pPUG+3XQ8<#JI+m)?P=}#$^H1Q`im{tNDG%T@*zCL&Y1_co}z_r<;nO+N&{SE zXvsaADK?jy<32~4IHL|UEM5XVhj{POfY(QI;y!cZ2UOq}ovG}oW#=cVr2A^-uJPn>96Ghp0(8Rc1HzG~tq-=FwrUP?*ptWFi zICLmFu$4j=XG?#XzqYYJX}g2X1-w`XCn^_~`w@c&0}@&EYaWv)|1|RfOS3R_v^bII zW#?I;JXdo?iR5X74&-^H%jRnudU432SxNw_2Kg}`LOzj$_ufGlDTLlXSs%ed`BV?D zC{~zyFHrtP4|mw$r}^$jLQ_>nz40Uhj?MA#`j8&GMd%VIFlRlmmsqu`m{mYqWp~P3 zbL0V=WU78|5p;>ea7Twe*@5$&uRrYjWYGx-wxB2Ku{x-cS3_zYkHs@tAFQz$rsTr@ zw0--;U%8bQ4)Ymn?PD{Wizl%ooyM1tMx+N6N8@R zT}E*Y4364U@~Dj5zO38R2P-0Fw{Pv050}QAP;{L3xdud0*mH@^#nK8xbl}A4RYVh7 zc-ex|JizK<9qYP73FiHLHatS;H3HO-AvuN5w5L6_J#xT!a{j+st_lh)H9&HQa1>;{ zc~VSq&%*MT6(#}4RDMg3zyv^`;L?Eslfm}l^=}EF9-Ui?6zmdkUUmv<|Lq>b9=?7( z_P1ikw5C7>PL0~R9BXZs$zKKKibP{RJNCJX3OHW$J?nSc;LeQ-r`GN0BCfW|uM7i` zIueRMGT{8*OMk{3TqpH{!ni)Vwf25i4INVHn7_{s(~YhRVTgRlgUWmq%8~d{zy!0c zCzml0n_B40bmCYU2ZLmC@27{+NtG&|J&z>>K*Kns`7v1stdB0rqN}eC zn3t+a>MM;bsxkBen3!1iFe$NN6bqgx(kh`^WD(eHgnlJrRO@Eao}iUg=IUrGnS*KP zv0GlxYw0(lhj%wa2F}48mOdsM^#QBmXJB~RXx;_0+v4G<_~Kuj7{E$f4~L9CVC_-x z%Q~l}C=GXFvrF!?D!toun4+Go$on%wCf9k5k52XHu^^K4#J>QaFr(sVwmHP5F>-Z( zm8AG{WUNn>uKM#&s^2}G&MWy5Xto@lny1%c{uWOxmJ}#w7OwkBTny*pCdA@9CZS00 z-)0owb4lEceFs?yo5io0uSU|_Oz9Osy~`>9rJAtfkY@XSyQ?YmJOFBqJPG(X1U3Rk z3N&#vbTP1%pS=QpY84BJ!lcz~P?ckJAGuHN*|-L+iKYN2OM;*J5efPpo}Hs!KyQn) zn#>G#Ysh6etswd<;Qsqs9JwDYbEn`#)Q{^MrBD>-Mfm`l@9 z7X18+DlIDC6k^_9v+E&xcEl{m2rsVyJW$E+e-R zRQdRlHFH6lC91rZF1jT~*TA+-+Q;C!flT?7=4KvTbmgI>bqi^M%HFxHT7I&?p3;x; zSzo#7S2C)3g&MBNYFP8zw&oUc&b0!6hbQ15MK&ezVKl;x1tpvLp9y=crLkQQ(|+`= z0nreA{w9sw_oD~6nZ0L4;4IDGBFJ6Q)TR>%HskBQ`p!THDNitUQyfc?7iW~CgqW41 zk7nd#C*auhY&@aNnblw6Pnr3-+#CFQ*8W_VV_>!%2XWzi7dB*ktb1B_SBKvo&~Aw= z;=kW6YTF)3xeuR!=F4=nV>G+}Yk87e(NYNwhiY44FxzB|q~dvMqbb1DH}@NlQQWG;;7yq;7`ID0`mwC)8w- zYa|IaGoMZ?(WXyj6(eQ2jqWPSQddTGj(Uevn8%7SUJ#=b$Gsk!k3OP03vzDW81-|Y3flbM-|Gf4rKljwWSn$Kwcc#l!66SHIRDV| zSw%A3P7D{8LAK@6ob22OT^)>fjSUxK_Vkk>ZnU+U>$7xPgdoYow>L0ZOKuCiFPs#8 zlJSiUdVyf{Wd*i`xq;Sf$eyO$kR%2rQ$Ns`1o;(UeP@dqR^$o=$ zgw$n$h3%4xQYVMy({M z-PtbbURE5PQ;gySQRk{=83s-&Ap_fJ$wGv@3xu5?!qRBUwb#V z)lq6XwARE;{zb@_u5UG|HNLgIHJ$3-cZqGUUeCZ2o3*6r8)^0NXX`Hc4N?lXqpkjr zPQ7VUF4~2+OI`a3?jkCa%U6c406*~=65kZ9PmgL6%|?C^bC<5|LtpQZTtaOozl}|P zHdl?1jqUNX9~v1%&C0k}^?wD>e#S6Ut&D9y4pcjthWkaNG_uS3Wu*&0;T2$?mMHu~ ziA=(2_qfCGsf62_WE7y#iFjmY(>pYMoko ztyc0;0=w4bweNeT>4bS!C|US1NUKTVXr4LRrZ+*y;H5uRPSA|cJfacRj2F&=m3&`(pNU3L(uKCX>i4Pa1#Dn zwdsW6YSzFRvZ(?WgT%hb+MYpBUuq6?x#tsJ`*wqZl(3n<5c_J;^=*FcCGs7zU3CM#e6Ff%RBAX+k z%bY(`CHG#9SqpUc7_{@}a5e4CGcdr3m3AZ!6KP9<#rAai#g4 zat2DY?egvrW~TI2j!et&SxXa<%Yj;sSOWThDQq8*I>3*kf0K?$wg0RhjvK2 zQZK$BRzT3Tf+~a?(4Yt#)Z1w0uK-kfL}^~=aO!x!!goOuO>v=IkUw=(tc{rDyr%GN z@=YsLD)jd0ki-GDSb`i{L4#hJ426TdV-?1FZY<@Z#JJ@In~ffuWl6#P6X)Ek~+I#p+IXe2bYFK!6eZ;l^-PZvU{6lovtb;}a{B zzf$HXZM-@E=8u}t4^po3&;t5gLbJqq7(CwavhY$_AwWAi8v! z9g^oiPelyu^MQ7<*bh4Se}sEd{f^|F4qT3YHg}bKWUz`m@VJ}xH_-WeP5Z*^>32HS zk(hty2x5b~_T9!^C6Gf^d+=~-tkYY<$K!3edpat4*)9K6CmlykyFZyM?Q-*nV8TQwLo$<8LOMNVsYe|8+)u$rZ;AU)c40WyA4ODZ*PC-jAUAwIm82n7u&If$?S?XlL9h(BUc7)BzI3W+hX3(tqyc zrF4DPDCwZK3NM!o%qZ4m^Kq7*23+=TcTVcN zw6gyE8MEX5klOnTbrFX`BuiKkVftsdml&(z6S3^sy%Dd7E&Z;=D}XWfKKpc``-_1X z^l$8Kq+$ff+HUcMf6=tjYKM@LMYOLcagY(eJ0!U^0_`K~RO=t2y6oe&@8{@3F&r2* zKNcV30Y}d??G9xoYqp#c&l9xAbPJRt=|x>TQKB^>zStrvXxP8S^e^$JTznm6hV^5E zd&34aRFmP#Ia)XUhk3a=_E^~^%@rgGv-C0u>uGi%7k&w?i!i=pLQeY69 zx6bWovf1MRKpHyI#ovighYU^Jq%f6)=?^L5NQ7zN5_<)T=u51agkC%`uB^OBG;y2S z=ME&Locl1L($zH3C!Y$DvoPmk4U)pLjCrYzkYbRSnWK$7a{kAw8I$qQy^#>OtsOZs zSE|0Z95(`Gh~|YtPezKEv5hoN7x^OHUGe(J5#IB9V-v_)lvJa&sZXmTi5K;lVU}q+ zEf6=F0+#$s2>X+zlIW^Ijq|MAhA+VrqCqM_L zSGfRgF%!FK1a0{c>{xICV{p;Cou+W7tU}Y!+ocQtUfPdkIrl_SA@IzNEZ+-&qx`l#?cx3V)*e)jcZM6utR2m<7vvwhAShBT3heLa?jDa$ebl0g~i)Vn>Z zZ>vPyE>9y*OGM$LLq$MO3VH>s!o_n5UoACA% zMUL_6+tLXvtE}sAynJ+_U@*AlwH_}=x2s2QL?{e2?&g1%{?umF`lHTO$S=@WR!_5lyK|ddhS97ad=!h}Le!5eh?d^?I&IhN#!3K(ctWKY8+&am` zN)Sb1oE)SuPf1ypQJ$cu*{t0#w8L~`a89R4Cy96#_DqI$&#o^FdX4YLA5N9%v`AW zyKxjh!G*V48jlC;*l}-I2nhp_=d^-v)Wu$3>)0g8^P-9}7T$zwI(BVd4VR zq;pq}`h*Kw3^f+ENm&nM>_6933nyXI3NTuB1Vc3k8*vf4>-;q((7i3kKrU&3iKrja z6Qy|crUoRn2^Hyik=TK1g%<^0bxkZxovXXkI5u+aBsY8%GLL=dl_gn$U8|)GI(3#Z zAgnp!7sfr~{Io^8hD`D@ref#BEt>J$xtu(z1m8HYVe68Ejlsc0%=2)VNQNky@gh7T z?H-hl-SGCuFKuo@3d<;*PXwoKAT<>N-P=?0W82-u5v_UvVFszGDJ=URnlcS7sfQXL z>K$S19Anl&GLvHZ`~JK(&paYs>>b`G5Yf3gswZHKSexBTMyDpInZNlf1n3WV{YG9 zycAh-sIg=v(ATs2mMp+>3XUG!cE%+dI;o2Nl3Zg|yXF)EDuD}2{!P$ z?sJyA!<0mgiM~V@DW_xp)fivvyf@hmtH;Mqd)Fg|;_!m1wAbyZc;PV`tP9!_yq3(m zIQes0l0Ti9O>r_g zP4cs{XRMVGW1-a}H%_n$Ud5454K9^|xt}_IYF%F9arhD7`Z3YLJ$eqg&-PmH;E zV#FA0UM@(@4o#Xj`1X{)_jkQ(!rZg`h8VNw0c=NUo}Xg!prUx4g2g~v3@vk|z&l6r z^_0;E(*&3&e*+Qrt9j?1!pE%5M**vDjXSqdSXDn2U}s_mU78pSsexFF-N3MV*0m*>{v1V_ZWIiwHls z1#2jWmd1SBbYzhx=Wqx?mgorp>56LoXuPe|8N63SBXU zah*fCqbojM5TZ7fChrbAqKTMFjlYZao=?mkoz}hM$sR?2H+0S))gs`o?04SEj~@vk zqq19xpa7Ahi5IgYq;Yp!+o=q?eeEe)0w4AhtKr?0w|t!BGukA|uTBA}n^&V z%m)dUy;f+w4f@8qv6t?%!qM8o?fCLqzwhGB8V)Bbndq0_LaR(xzMpQYc!l~NLS~y| zf($-S5W0@Sq!^XG4|MQ?;e3|-?4LKwfjie^Q?YxcKz2JT*NF{sHD1?!fz3OzqVx{$ zAXCye8E;%!`AQNwyX)+A%yQz#)q1-tl(%_mX&ckT%ZqQDgD)n?UgM_t3-7&{sbmMg z;B&n=$)%9~UA>#nX6Fgx(S=O#y>7*OEO|n^CpEAc#qbMwG3$IP(GdO6qjoz5pmPztp!z4_Jg9j#aC&5U9zRK5-Lj)7PnXvQvP1er zmWs<`4|&7XV0oz9l9H-km~uC1zB!i3#|g-tP7B?}J`lLI+06!9^9c45;g zb7U+chi*4hw~de%lKAVG)3|feme+Avl{=lxXE|~Y{ghRZZ zw|#EQu#>~8o)*#1CWvu%$|oqct$`BHjNytmtRh+Jkv29IB==ha^5Gy&-`08zeS7~Y zgbr=l&j92-X*W1&U+i9{Yt?rofIsC}jbcUAnu2e|*8m;*WW2ZQ|KXIf-CZQOoqE{r zZMj5ysvcoq`&1*>vQ+C<`pIis=H8@K4$l$hNO!CWcH`UI@l7Q(L!7b}G>V*{ckrhm zZzzDE9p1?wK)6>o4}YxKIW3=ig-hT`mH=z1#FrH1Ds{{*#d|EN@FTQ&OBW`ZV9zN# zWI;g-j2fy)j-UgeJ8}%2r>#pb*hla}3gpy{Ev764?dh=7$)FItmtWK3@oMzra?zhR zL~Tc6K-qN;q={6b09HE%wiTt#13*yhxnUH7&EW|8FQj09rWFunxdx6N`E98UT7Yl3 zmOL$YeZ`S1gTmVNa%fo#Mu~Y``H!j&YSH^#ds_~4-vvJ|XloHrn~vrcpaDU8m!O&U z#3@6ib4)Ui3BS9lg<1(Z44aK*t# z58rq4pRDmEBr8irAX6B)S+(@D4^Sm4lf%fpEdvnLzhG+8<&e*(hYUZMZU zpj=aMks$p%vJZ{CM>p*Fi*7q6-9FAy%Ri9g)nHjZUf+^*BZB1mot|pQw{gcpg&5yj z{~&-SE?B7V@4N;IuHEeuPy1iR3A_d)5}ohGE^Q`EWd6%Jv3?hA5YvvzwXTxO1L-6g z0E0$rZwyQ`b-d}b-R5woT41s82n*T9pLLNhgL2$vXK?t6Gl^YJm&Z=6o!<>BG$8L* zWDzWJF+g1=l??Sg$(5DAdxzntIT;Lp2+<@#(8M6bzb}2GtgGdyl>qGJM zw)u~1lZ%~qi<^4_vqL^EmUpV?&P{oAxzhKPY2KT|rrVEe#4Ft5!S-W_s_4;nAEJ-- zilvP{Kbykgyc9qunpD-w(>|vywQT8ysTPdSSi_NUBTfyPMc;39_bhE~Dner2c>^Mf zgeFw@;%xvRj{vO8+Ra7Y_<8lGOTtH-KKf|40LN_S>YaV3K#O$m`1P+rH>pRCH&d8i zmTT^N3XhhdkUC*I#x;* zEXktBm;aFdG<9pZcgN3qS?Aq$ub&!iRoCkw%gu@kZ|Hah%+k0~ijpiB?O*_B6x1%bW4zr7txnLpZdDzxjzi$k`3weP{_uo&3Fm4 z&4LWOIWrc>^L)kzl<4WRq$AzgCTj|JJiy2DgnxQ0BTiO#F8Fm}lsYzkIwJ1vk^wM2 z83SA#;jqZ%V1+SC??|RybqbDVLlp^Eui?hR*Zw-f-k7M#Y392^RtG}SBg*m0%rgBsn1yI`w+6fWIe1!p#>F51Cv`JBEB=)bQbE7!!al% zxCjqkg^u#VWVQ09$1aOv_U&x;>TQ3uFy*U33O_2&B^k#HuKG3drIE@B|*^!L9q# zP>F-6u&@p|Y_Z&wW8u?}(RB4~;!H)w-qOSZubu>d&qX!Ew)9Vg)MDROOI0Ht#U|P= zb+fsoMn@WV0uIedKPo@5=KYz=>^vCy5YRCyVMVM$+4M!1bTj%vzVpZocs{HCOs#rm1Ch z1vjx#YG2jzMifmEBa}L2Pp}zlewMp54lshc|IFRllPC^=vbbEm_&uQJJJnz z-lG0wL&`U}ZwrFh1&F<#&Pv}KOp5m2zX|{Yr+FyrXa<72l znr-G4Sv#ybS+*L4)5=Y`GQY8KjWt<6l-P!r6^!={3^m`k%I0%Eqzv4lQ^&@Ub#Mu2 z0k^I48~|_oxlL%5!SoDO%2{iTjRr(lyA7m?&RmqrPYv%22q3$h^Y&5{1a%^>0Cus1+peFywkB=6ipCbrs8p_SEW?J3kB}HG z)0Ji{X&iSa3-CZ0Ox&>ZPshmR6Q@&2^!_6$EEbKXUl?nSvEGbq1-Vs)UoU6F<1oOr zRRAL?aegV`>zud5o#m+ZLDTL1hQW~xtfc=mD@R+KF{WGD>UDub+N9OQ$vZeob?Hf; z3JSR4sx3?|dYT6SQ@QleAb_9pyR4h`M9Jnn>p$bFby@K6z@{z8Wov&e`{wXwv)0afTE%i^EERa(>+t*tMM$RTNUFpZ?K%+}LMUVX|m z_3L5>q)px*drwn>q4B+`FKs{?ECIgQzxnIt7ZYb4MszAeP5F7=>U$yLnHd!ch#_9< zi~D`-Kd3iB-MH%VqW+B?Hz-^6+=7ye89+2Ba$r)DE|ksnr{JNHsS$o4;V^YW6OoaQ(w zXw#y(w!~GXFwkoT2bJv(Ihm1Z9>%wGnGcwg6m3^CYl|07qtK(Y# zQg!8;!(ou_Aif^2WFQEAB7Hg%;oh1(N$Y!W+y8aqYbw03$MB?ca0;=Oq{LYg38=5_ znYeR4*sWz|;;u-VKq*)sMzCqJ>N4&X06iWP*Eg+wRQIs;-s~uvBpPj{gZ4M-^*o(S z^|rTrr`bX>DC8MYl3G%DaZ$i}Q!{1Rs|`o&AH>GireTQV6_~l@2c3@O^uR-*{A=|e z4cK=TPmA~`GFU$`gzezs!Xae>lCzMm%NIYYK^%V{M3gBttNL=OJ;coPzUZC@sD3-P zS_4BL^m!AVv_C*Te4I!yEfP_p3ICxt`|IfFm~*Gcsmf$`6Ym?x6w7xvLjJYTWrJ30 z3iE)p4AALcKVdD&_I)Lr2AmM3M#7%z^fe`tl!cm1?DwD16B*JtCmEmlC5{8LH()yg zZ0k*#0`gSdD5TGR3oZxYAD%3+f%G)Lv28Wky#k8jh0sj9a#Jy(N3H6#={%{qO-8ng zyYT8yISKVn&KOqbbX#`iSRS6I$vZezD$JCB;NR-Ld0A_$91H|K&28q$lht=TO-O9^ zNU|rid2!}J-#cE&`LfJ|V#R;PlcszbAyER+YKzz31*^H{1Q@85(Xy{!mAcMYeI~{P|Z7R;E`_sx2D?q z9;q48(62Pxk27eDFx+o-<#0)yKvl{6zcU)f+oy#^qHpPS(#Bp=@LFIO3NtBO&fAw` z^Q$FRn@7z-{Bw05KTiy1NW;u~QZRImF0_Ni8ZxJ?ifm-wC5?0V(WGc-jmACIn+kM8 zMFp-@Zn+mtkrj^mks@&0aOIbb;E&5M@Fm8$hJDO;AZcGnK4PLj1TLU1+D*s6;uKrB z-Rms|F@xf_vSFBoDhfjdwujQ!4v{4?>)M~1KQ~Mz@THF>7!T|#<_2A?=>!=-TWOlD z-FzTxjpZ!3hMV*pcuBw3)w`ARq&G;i_n@^WyG~(L6TfDX`jdyH-mBH`OYoX{`}0+- z_}T$Jq_`NN`?Ue26FVtMI#1Kqj4ND$z+YaA&nYQIA(S$ z`4frUy7w16HswcIy{nDfA**ohbV-Qm)u;LF{w-Sjgvku!$n^T~Dn~F;nPeT9MU7b( znOHtK41POC%c^Rn3GtRFCdU0}Xs9ywaj3{&^Q=x_|2Q!>H$owwq`%L9tk!PI%J}K_ z=*<^con0nxU3}*w1%{%YBGVpeA{IER-+0Z5W`HA2+BK$FoMS>GCXI>*WvXZ?rSky@ zZHql5Q_%;Sc%3ru@=^tnKsOhQov#41ng9W_<__!I8bM-J%ZX9#m8M|eptG#XOZmy3 zxmrt?Ik{~LFZtR!j(Ys+5RAmyh}p8=Jr>LL&Gqs@>tSwN%l=(V+HSY2N$MwX5f`XD z3y6BsW;5$LxWt@QO9-~?rx`Dfe8;#jNVzZmVYsoR>lJVeO3;3;rp~zm(|U{#rwb_6 zKh=(rYM@>6i`;B8&37255f&|Qe@Z2(pLDs^j# zns0Mie4M43gb**GPY}a)Bd@}}Q(SXgvaxxh?Y*!zhattI2cbK;^XMy-p8J0bZX-7| z%_OIRxjMI>je91zjyWV{nVEJ|uoX5UZff4}$LU2?B$KIY3*YgsT7Fuo9kUU-6C>zC zjTC%();l&`aJQCj*@qbuO!+xP*a#blTOEnDa`m_PYS@|Wj`8-pwmkF6Ai|KCpGA}) ze@P}c^soTxH}I@)73p5b${yJFeAu&0jobU2V5F#7qaL79$1Qz5LFj9YYV#i76p17u z(SxIXE{5vE#1Tg`O>2)4wN)t~-r}MgF@kSvp0rSLu>)!&od+;&r;P_Rdh%06D%$?7 z=!F)&6s!ivV^lV(qT{7Nsw{2Nh-qO6%=WosQBD9YR|p^lsG;S@P3RF@N+BBkcB17O zlFGVoYtdbPQgKpN)Etu*az0m}IUCVnK6OVBQ2|k}g+y~O<9k`U(M{@ZK%rqi=?X_$ zCIpN?2KsfO;OTG|O?>DT6PKup1tX8H_P*2wYqu-h8W{xfh7004(G3XCGH<1{6jP!y zr+p|2Sj$D}`luR+PQHmX@SvK!e%^;#s86?ltLi;!1Z8C&ngIUm9wceh(O)wD_vEy{ zxP8Q5m)J-mRR;V*#HWvzq?+y5I3qpne$@=q{n;`9098Hx3gDR6%&LN0;ZDu(iQ&^& z*+qkhyyKjlueiRvb+U0Q>bz>9n(J*nD_noUny$%Q%xRgsZcF2`9#P2}6nhnDh}fFBRL?o8DH`GUKa=%?JD;wN8X&U?t zd2z7q6SR>h)gypVFgqYO1lJ#G@9DxfxNsXJm{Q_6f;K}awb+hGfDHow05R)Y*K8%z z+r>~|DaMK6kXR477*ceS5&(7Aa+VjZ&9mXpZ87CYBrwimf?*PpOmeU#99u==RQiv^ z3h6M#%E}x*;?UY?!UXkw_l3ibrFnX-YR%p?HNPqBpXOtGN(AA^_AEXy4&ZqEx5v1uFvi{85t6} zbLu46UfP@2eKe9e?Q=!iaN9F7G<%V7E#bzNp_&@!{I;O#jP<1ZL7I4gmm z`>Y8(y0xQLw}B_dzIK}1dHHwR%sk>b=F0BpDrO|1X`G&c1;G9l^=z8yhnLM=dp|WI zgEbglOo5|#S(U4Y*`6BfMa`X$-8Z=o@uj>Amp1vDx;58LG_%>4@P}brv(ATE9rVMq8KuI)5NZ-c@L{zBX5gP1E=bX- zHzL&&k{|~|KygRvApIhN`w?sX9yLswEUbPT3WJM;U9K-cizp!Lr2&o>8@rB;WOHqa+Z=t!u#;XF7gserTj(4zdFZdn*6$Jt-Q6+cg$?G zM~P<<#@tdxl<*EU;vySzC2-j?nnwOes-&aD*picdritn z9cNGGSQv2x`1GlB8kihivExwFK!|^poreVw&*R@aGWXa&OCSeQ9Qm~k#;M}#pEtN*3(`laxFRHh=drP?Y z7ksQlXybNAlN_k!E2e?8(l!InU5zIGt^WX5w>48IX~T)8$IHZ76yD}=>S8)_~D&j7Al12qnEb7uQo=^_iSJ`%GR_JH9~fSnc-E85w~@jRFGuYA$s*tm(yD zn#>quMbHw2dTr31>(lJzA~}za$I;iw*5=7V%oYX!k5y`UX4t7{$YZ5?rE;-%*aO9n zkvLs;X8xGc#qHo(+BNtRE01qHHLJ5Sk_mjxpo?um!nX20nMSE|PqvXwqr8sEyb) z@1tDSERA6wGc}`q8QMa1Qhz$uy5%VGa!bwx%)}jm*F(4!%X!BQNZNJ?=1hnofZ3G& zzz(3Y0^s}&tIe}-r*IL!OAWmzh|}|<2N@(MQ>_r`&{YkXRO$td0+7IYc+euKdyf%7 z+M=o3=TIG$n|oCQBJuOR5S)g`r9~209X6^sIS0s4H;`_(8WB)5ZWIBnAaoOLs)ajL z2!`8=0_33WK^jn@0k*nPL?d1U#MK<7l-h_HRNt1~RRJ;{HyZg>JcLEBg+O6J(%(7& zbSg9?ljB4p#cMMi1s4exZw_Jo|OVDp>(yVQ>3{-+lnD?puUEv8Km@rIuLFJ#+_TOylqf?W$su5 z`;#seQyP8NP>1c{J2sn}L^nJrd407=B+B$-CZa(Qthpa3d`Plols zW_egn%MS?T{_bB6Ut|k}9x@whfAX$&w>5SiJg)qnMv_+9N6~(k2H%}>+PmqjdOx%~ zJVY$00v!~|xIR1vpTf9pd3v>vQ|(=!oN7w)Kmk={7Z%v-p!rsOt=kCs-pRC$H*S~o znG#)s@iIrbH?aoZV`Je~YleTaSDj@0S^H1BRv!4rBkrn6g6;w%IO2}$7(97}8dmN0 zm}YTv8oZw8+v0=-$V_~AhubhAMM(H`X9u6)1!vN?{gIOH*@L_=Ts$dzvLOKdi2Vu$ z$SpCtst@T_*R87h;P$t|k^PC5W0j=?7a~^VW5>xZQ3m{Cg-lof08`2T04;0XFJ4%_ z`Pg3%B}z`SM!8J{P|0J*?nbPp@%nvSt)SdjqfO_J1yMirU{oJsJEF>LlZPvO?nZkY}k=k-GA|Kq!cw-)G%()*nRQxJi z&S-<)Pb`Lv8>C3Epz?`AkKtWn=`zMnRmTZ|!g zr{j_d{#9?`T{|ZZbIQveTjqVn7qH}?5D2w!+J3FiA;X=O@+5P2mysm(Ca&{|g@FA( z-N;*>D&5XbA*?Yi>B71$UixF_B`HE|JXEKyI?y_Puf6^Bp79KW{rs zxxMES8~UM>R@TgfY5^Y_@><<}BLc>Vs6Lez6mt{U5!R{%kV#u=Hlo1sVSCVbF~r;F zLCWB4FF?>zWiNdXN`shjHAfN%)KDRW0thx03^)Ka27v~>b)Xp*;A=ntaW=6uL!P2N zCaRLg`qT+>FMgB;1;s$q4p4z@ZCX-78rthn8B4Xt&Z-NFve?lbB3VVgbXW#aVPma8 zpfML8g%Qr1HLq@!RE*`3l~%;2ZuvI z;q@saYf%iV5Tsg)=0Ha!>$nsP5dwk5Alx0iYK1C<8)|AG<1O~czS~eJ=Gy6}N-4a_ zV}llHWzi#v+3YTC6q8^mK126*Ry6+L?iqN|eYkR^mE(^0;-!tOe>&~2g^KRqnDI)i zE*UN(Ukm6+tGsEY?dujSGG}GnPS+4A>7~ngR}0UEydCW^{j8^Kh{FX$kVe{l$A9`L z&HSpXcQma|1n&rUVIg@WZ%-9Gr9ai=gZV{swbNM9`+Kv>NH1ZLC#XgZ_$k=PPmhQA zR~`0xdi8qWwYx}I(~tKGk!dV8JE{-m9(Jxyw}+(myaj?FH1Rgy=Uw{sc)PnZQ`Z_Y zq>;Y$)@vSny=Q&l?2g~x@gr7^239MHaoxe)9{zVfhVj=Jxsg{scUS-o~E z8WhR(NyQ~PC?|@j-(m@Ex>n}c@XxM%n4h;a9;R!%e<&J((*6~_dvea*Xf2Mct`z#$ zQaW0@&D^f1JA5D##M|wV-wkbl#MRqoJyA39>_=Pj)bF{qbklY&sJZa7v2DNre63x2 z_QN|&qT{au?bg=(Yo^tlEpg!=bpX`7T!)b+!np0X3nwUT1hFwwz5f7>YuYXoUN>0L z#-TuKdDlN_mc3CXhy_O`_vkzYbel1CEH1@tqe0TMvvM9tn6Dr%E-tsWhpl7Su=H3g znC~OFS1-mW%G}??_*J{|=Y(8vQc?qG#@>=fm94pi;VUsFSb&Z;D8|IFz3t{J8rkw; zTa$>f0@7SJfZn?6zIcgsO6{4DOKfS_BL4vR;@iuw!|7aBj%dcoNlL;5y~Hxj)H*NCOd88MJmQ< z62VTjP@z0%pd-qImq9?^LDNbZEGx|XDhI3;?bPlnpbK$rHlTTZN;K5aG-C-Z+ixl; zgQdtCcu@evg(Iavs4Rt>>i${*R=K$zuC!1x++Nf|eS%H;3IZ%GsM3mWlOg24O#{d_ zJx;U=v0J4OGDb$AQC%AVeN++=02f`&RB?^0bg}TLu2gZa8`T-#+z#a~7qxq{qOhD| z$Rl8QkQi|!Tl#OUB0f>>>K-`qP;&dK8;IC8%s=&4ZoV!Wz7acI=?teQAwdcBMtZkP zj|%D8GsH-^!j@d=KK$=+#QIIN1p1H9YV+^M4w}TY?n?Pj0yW_c>SAqu05?7s6^~p+ z%G#<}!Bu*EzcXBRdUSe!wYxkB5oB;-UM(jht2dt4H?KYN_3JSnuh=k^ zP&i&GxK$SXPJ{5R&0M=TYT!#K09T_}@NaoOG!?fu5pil@F*Gc|i;xdNv8-*Yrn_NN zKWSgM&Bb-)VtG`z|R~SBg0S^*1rf=ggYT)z)v7K5w@Be36*n5*{z< zx7$&0cN!1zsf;>Jo@ zos~TjF;FYOEJf9jw_SFu-Mp`=OqdGUEy;NUU{6g(^~&~e-nuMe?Gc!`I+4kJB$IE- zxL(_rdDk$h%k5??zqiNGMc2UFdslsXb28<6`3dZ@p)Urgexc=7cjwApuflF8Ysgh; zIIAw(gMS*AvNP#voaShegBu1G2Xk$$t#s1m%Ik)0cy#qZ%k3`&ocNU&v9`8h@aSu% zy}6iX>d|{|CU|5Kuq7n`qXS?bGj(7`RW;`9!%_90V9Sp;wBlyQ2uzsPV5j*@>PN}1 zT#;cWgm_f|$hN)os0Zv9K)~2^q9ePkZb39rtg>J0*F&90OVvJ2@{1*0cj{AdI1 zC^{N}$kkNZ_PtO=KOY(aEX)2>2o9#^fl2~-eiQ?9aYdnHuGCBsN#&&jPwD^z(x5~# zAQsS?1y+%#5}&5lGzBpi-rT$>9Z4(|Z>Z~41jAn%DW{AJ9|KVafq8N|fxS?Yw=ziS zwG=IKw-gDejA?oWRwZZ!klgYbbQJ)I*o#|A2O}$SeJ$fa=p<{ns)He0aYZA2lm_Ek zBbOo|ppAT}qZtTy7Bm7f6p{zX^q})!-Ok~h-Ijc4rBDkstS(AEjJ`!`WoECRGI8Zd zc!#;Rsntk5N0_d%&nl~(NdQVXxc*_W9%IJ4YkvqO%V?p{*{|uW-7{Ay-JyQ!Ge6Rr z0k-2(O>*twy(7>)sf#4V6%-K6H~deuQu2z8>Hkwvtu*w(cb;$A~b+e=m~ zcAFt(M5=@kEwNf}Dq(KXmy_DDtcUd( zG8q!(PzO&>Lagd^{xr6pvZ-==J~A_`2xRa!zsFmVTAS8(*YK~K9@nrTP*{$Ysk0Yc zqO38rMM~M!@(er=LtTB`zpTSymT;gFuUegnbQk@d(3S&|6JcXl`%}>B_T~XpuhMR7 zKib#zrbU8&`dDawzvEcD<~20J^B)d5U@=>X02E>Tr=_cnu96ta?P2D|4lY=-y}Yb% zTGwnQ+NOWm(Q(=~hzSQ5Mg!!27wb=CvXTza=^UeuptXncu?E|D+O6H0q-6cc+D`|U zZ}fmgtI^TjisReV!Oo5)H}S8prqaiQX^K2~U@AKR680l?K9TSl%fnabPPKGK&vxK5GEe?sV3 zqb31)K#Uv_ZG37d)B<(uR0csd;+tPeA+`qNU3!Xuqc{0< zs;*+eO}urW=$%hX8i1ra+NeP(LH-p3R}RFTJOvCNUO;W7P^d}Lpb16S<5V)J%huwc zk@lH~r*c0!p{3-iLyHh~(xHc&e&cpr$z*Qf8Io*a>3G!LR1fB0TbAAy(xZC3AG<~& znnVgw!*T?l$9o#>*HdT)bj`$62*0Uix3Qds$s} zIOLu|0)t{h$~tfc+WgIVJFC&xIeQnf@FP_cHh=+e0T<|_L9Ne0UJd!Lew;_Lb_k`q zlNk#buqQ))x)V})Ht^VClh7Mmb6$-e9>me`wRLbUwW>Q_lpJ=T5^gl2#CfmMxz}A# zW>K&6Z@KZVb=y^5M2@D+rH4yy06j%w*J%|QLOB$W0l40?U1K|+*n3pP=4@p9jiWjO zjz{~DtA2Hs+05^3cHq2$n)lHC*&m4U^)r5Ap38+){j(Mj0QEQZ7QM%qwW?*Q6j|8N zhY^HU>cDIAs}lbJ3duWKFQ@{yy}YmdYhKJ0@siLXRP10?nhS zAxP>xDV9t;42kJW5G-tTHI}fX@0hD5GlIUmUr}4q;C{))`u&-F z-rX>%#3-|le?xCx&H0ZsYI}PuaYZYRYyDmTX@A1JJ9660zZSZH%1=+snCmqYQ|cz@8Q&zvFlZbNhn`c0}-b((i5SmI!H@s z2<5mGL~}KpiBf(WQBva}mue1TLC{`;Ji)=aOY1-kpo{EjfB;CXengKt4l_^43j)1O zG7FIe>uMoG3kz>W7?9`)subG#ngs-3S_Eyk(t(ANgPj`3$Z1748!sk2*N zbphl$9tr_-Z_2!VyKwaNYW7cJMkI-xUEO9eW56^TYVr}}eFFYwyxTpRJ$JHjSQkQB z^#YBE4+%Vf`H$039&Vb>lM?G9NXzSj{$nicvR&odXB*E28ZWSsT3Ko z7UZB^Nzh)@%UD#;ib9=~`CR`18f3z^A~oZ0s@JvZML}bO97Kx(NI%5?01B52%GZ!s!rIm(f;{Qrlwwp$2^X*;_wnml zXsme+t|%a8!WmoBa0cErVPnnx+uOo1AYS)1?)v-Uyq(&yGQnpW+UH98y6>3z`%E=G znO00TiL_}GoLBKv#y~vB)o%*&_D)tNVDUfMz>OV)%y|Ke$2hsDnn^Z zF~q2C^ce%(Tg+EHmFt2uOR|j^-Kfc_p-0@@9+XlP5v95c15P9YMx$du42gY3sAQp3 zeCQIw^gzmX1FaPnW5um)Diy$~Q_#>MbXB=ELvJinDGR@yK#-EBait6%a$3Z0Dy|74 zNVYu=v_~tOYd}PjwztlWWWbM)TU2C4RF$ybb3{k(0l0-t%@!B8qbLT)ZD=Q471V20 z31DyIKx-IC%QmO^N1XtFaErF|P;5z{P({3`gdBMqDOGyjh+EtI=mpyP0ee(ZtMgJe zGyq_*z4f5wX0_LGr2%iL8qo$)$_U=7l|4YIq7Q;7xaqwW54g?t;*X7o+?F`^=-1cs zqQ)opS)6udh6}us^81LS6fvN?GpW;iTC%U6bF%Vr@=Q{wE2fM&DFbWx*Ii~|m2|Vi z9B;xAVo59D4^RASq}MFk1<8hDtOpW`ZQ?#6uG-+0t@gH3Ke z@T|IFS(40Dt+nb;g($0(5J);+)f!aiww7O=1w6&Cuga`upiC?c>a$I%0yP`eWb&rg zz0Q@9G8o9U_3)~TPTq{7;9m49Y|dC(-kpi-Qlc}rt3z!ysHKU+T}jua71KmWI#_k0 zF&^^6KWs<=7CJYTcj~yVJ(Dju?lAiF7UkjME9-RZ`Q4hW@xX4;46)o~K`4^`PAuPp zD6DOHu6SHxV?uH9P>4mepe6yWL=- zh@vMf*VRQpO&GNd8)&WYG#t2&Us2<{~039lUy5DLC79v4?fS?CVdtSib#8g>dGk4a<8M3x1=Mi)2A5D)yHMiqkv@TF`BZWX`1gm{3wa10V z#C~;kN{;Xdfn?ZQkUBQHioV%cxa`>yrXvX4E6X9^Ha98nNRFY&Jy*O#(PJ$njxj4HsEzJtty0VDo2t?OL&mn%5=GlmA| z$NvC2=^Qrjm3wJ@tD}iSY4EF)4(2VUx28-3?q1-V)XLzD!rl~F5vO$klci$UU1F;$ zaec|L&~&bLyXzFWQ|q|YZ>RCUg<{uzVzVMb9?Yb%)DE`u*0EhALwCCq$CCUsxT2!u zFY^)<_4A;m&1FzPCzp*zqMBA_CjDq2O>JtWLtrniwOIgAI%z~b7$aJUn~JQ`Sw`D= z)kVHAWdQLv8-ERG%_RKPa^>keDcb)4DuOp5YafssR8zRh3BOa}MNf|$*svP-9dxxB zwVU_08vg*>orl&vK#vj7{Hv#5mNxM6zV`%W<0vdh9GAe?(dpUY?LXT{)-^T-31#@` ze>+yTa7^v8GRmvS0vIp{W&?5Yv8?PqqW!+^?cBYi+hvijEOCr^Nzj&zlo$A@2C&OQ z;ZsfTMu1k`ZYYHd%dMyo#=!4DjQn>L1NTMzs0myXrnEwvUWx}m!$V_01c=nwYG@KO z8vqXU3jA+tXeuEiwa5cORYa`UvFkwK0^86D7c@XH6jyOuc+nBZ8z>%B4uV$H3hH=< zJ5fm*J22AA)X+aK(m>jRJ&h1N2hYZXg~o)?FB8AxMKTsox^46dfTD1x)CVd9EG}(T z0!OFLfIiqa)`}p4`&15(O}dJxEzgw)UfNI#tpbEwTu^hQlCs4bmXVE;$MYwkscsw7 zT-28KoKj)DGtT5ma^f%ooAj~Xx!Y^euDVZ$%|E*S%kEu^yqT56y||uOp;Ry0vAI&C zOKVQP&T(D4zP2^?*TV&gikYnOy@R2=Ob8Y`@%0+?=MN1;?%!}o5TQ$GBG$?N+v~*c zD_YYF4#|o4^D(hp@DebH$bOYlSDE=CV_t3Vn)LP04|w)>a$KVm!i5fFaY)zy0LKbk zn;nOz@YBM)TX}o6xsO-v*C4a;NYh12SSpTyc~+yA(Qg#O;PKG)I(}8wR}Hm4_XV}z z#AUo@7nQBBVnN%qx{{Rp1tXk`=Q{_#_wxdn2 z(z)92tW{+=1eW@I2k`uBF1o8HZGM|J;r5Se-%BVC;oqE#@TCu^5D*|r7pAG7!R$}Ua zk55Wjh7o6&u_3fo+SQhgt(e>cVbEHl#LQU9Ae-15jcu(8wpiNU2HJlb)MBW8*^DK@ zlwWl>`3lyu*$3GPi1wb&4&#_M~2AXja? zIALHV13EDx{{U%)`2(>v&l3aaZ`ypQB=+~(MlB`D(%=BLRj>xuHtSeQ^Z?$Q{{S@r z+Q-$WodPp5fn$0E`=-F1jRG^PSX2aK1$NS?Z9xZbod-J`j|v20bh)>k5DvD|_wu5f zm3W;rs8YtQ#{M-ynRpP#ZHb_J(sf-ypj%uWXpS}utwjZe{Hla30rQ}V9>5-!sE3K^ zy-;f*DiDeZ4oXB24SLZ`o2lH|fPf4y;Y2ea%R{{RYssg#CW zY-p!cX?mzmTIw%AHo5Sqrwl`(suTmUq8vfvwG-0yJz0Nh$G_7fupb7f>s z4+n#3^)HR{y5d)mD@eBI_MPJA&*8b-*d#Ci!jsUBxxZ-LfBs5_(ZjGF(c7#0UbPQvsOt0@izd2u)f{~w<8%*`-&+)LckGmzQ0oL zK&v<_#yi@W%&Bl(F&u{0*Z%+t_VmY#wy8ehhFJ1t3WYfuXs0b%LZh;BC%e~-Im6sQ__xTH2Kv+1aG&e z;ZQd&DVaF2D`P*1m?RDuZ;k4R&50U6k(v+qPpBy#;Oq< zJ%bHF+KMuRQGFyWflCm44F_{1+SCSxhWm7?3c-%F9H0#^LBtWE+Jb}L zF-qNm#ADF227iea(x!GmXn9q@4T(O$?j=;M`Zs1x2wE! zOuS)aK^KgH?Kyok>4@P=DBiN=aV976-!2D}rbo!y@_roF z&Et#(kb+ssAlP_?-{(_qBI!AMH|=k;FuRNrPcoDW7ATc0w?!e3F19ATd)(L1(&A<7 z*f8mspUJ z1J>rZE0vBcx3$1tgL)V>BWs{OdfR%9L}^Lmb6`C0Z}F*HkzFdajkN?^06KhYHacp9 zllL{a9YD2Z(nW4pB6hI3-^#M-74jD4pyzvw-qxa_&Ooy;0{5}&rA5NOA%)F`r=>-T zd5c`oL6DwWo7D`s0BS&^D6+89!~XyZs6?>eQTf#=_}g~Ay=t+tOj8A0167QXtirBghieUXwfFf0T_&trw*4qYR~JEVq?=pDwT3dL z_Y`0M0B@1)q6?5UAdB0j47@YkN;$KS=aIl43xAz^I$l27pm>Mc2*X}MmA@MF=a&Yn zvS2@R?zmXo$XVn>Z~-J-@h$S-O5;+#r|fu`_;?Uv;;4@s9yE$L_^_~1ZeFgf*4kDU zESl})pyc^xSl#~Kpa?`TH~bxs9-=K&^Y9gVe_IA`V0OBiX{c_roxDA_^3Xe z=%9=%xde-BDgsc7+)4OQ$x+8E5uo0vQs_L#S|Juh=k)8+iXuU4+kL2oVQ_D~6yGu^ z8*?Z;klb|?5eqjUcG999g~Qyix{c@z&SYzi7hou-RNRh&s4WBeQ3_7JR0F|DH@B4l zeX|4vN6yqOPg%GH~^}SUWodPf(6as{54G`eHwV)8BHSeWB z?S-_e5U~P^t@i@6dw(b@-&JCM0=&Ox!|eY6#ADr<_S-bpRvIqgbgmtKA9L)?RnNP7 z9NAbgXC!SQ#mCG=MYf-J9g_TQu99;23hyQ#7ke$S^DletDS_NGa3pW;Ln<^b*7Zc| z%?V-Ds|$}B^y_mUFS}n|krar#ntiKr09;>2AJeDjO}rg%rGI5YfBN}6xj!5B@ad`8QAeDyWc9602x7mxa>f&xH7+!3brn%oRx;9K+8T0)Oubvhlu z@vS4Z8wvn((&SK(+o(1JrADGGu`vXJrH_?Hr9hnpv=_0^?^&*~SvX*<4yR65(&x&f zcvr}V=aSfNZT@u{LzxvvqJ8elEib0p(PcIka}{qpOt%hXAdWB=fVV2|?DNU#lDuI5q92^sFqJd5Aru0Iq9<&C!gS8ag;a?JXSX??-4>4SO zreodoH}&2!KGnx#-11=y#3r12n(}o&OZPUOvb{ASfnYJnc!C9v+OC!A;}6ZCWCc_JK#UPK!U{A<46 z9zMS>roUyN3GKBzDSmdfjrHI0uOI&aC%b9-$EPCPTcvf6EjH0w?cuPgTAL%Xxoh#b zJ|0zzE3C5zqK|Sx^R39n+Z03rCtH3r!d-&MR{MiYEV(dSd)VJ=Z&9}abK&LIm>ltj z7CmW#R4HP!Tn?IiYZf}ntjLT3bGPU5xvaXyZ1F9~J18|9LY;j)j{A#SN`zD7Lwnqd zTl1{9m3+9qtDS!;p_a#02SNDJGOfx_R}g+bIz*_Ajeqg2GHdN|Bf|77AyIRCcv_L0 zsfV~cM^RNUMP4m)x19v+azG7XQkh=hv2XwuBmw#F_*UZ^HC?|GZdN6?9d)jfI9-~^Awrcf>i zFCjr45h92XJx6K=c#=u+-k@-3JPlMDJ2H{dpzSYIBN_n@^ECpJdQbsEf69tQ78bPv zI*rEk3ORJvfQI~!N)8t$=7HLwLL1tF7BCxK%?B9B`b`HL-iT1vVST8gEBxP$OB&Mp z+?t2A#}9bM%ZOQJ7Lwg}HRJWh&%6Hsk?+%G_%ZLE?jXZu|K5Gx%Ua`pZGuh)hjw)W}YxU@V-Z=`&V{#LJc z_lLmipR?-E+WZH`_WnA)jzbgYax8xVUQIc#Uw09>QJ^PHtFy;xNgE$J(gjf)UA5Aq zR?y9pi3*l!R1vwo_V`udB(+~JxjRQKG7-7~a4+yBg)NOuDh5ZnFvYCpSF5_P0_NM1 z{xyp0H93vlaVJ|Wisf|MTb*|maJ~~4DOoNp(^26@aB-bD4lViKm0}#MPe3lZTU{#^ z(^#pgq7V(q z7xJbHQF4GMfU)r-S_pIFF2{cXRS_hIfYfV42$F@MX}8d8wzXL^B7xIUMook_Ju0G3 zJMknNQ7Z4Y{l{Pr)3+VK9(7|iuk8*>uOco@!L_b6*k5ZJ>#cFxEnC#rZCGn=nra7~ zR#}hSEVf^6=Q5k#G70iJ)cI@S^E9n#iI8|{wS66D51+N<{3whFwyl4a^cMa#ElDHk zui1Xb1|PKXv&s=Ra)!Ha#aZ~BhTzv4SE1ahk-6w-fdqkKD263MTaf8Ms@GCZ^%cXI z0I0YfDu8Wd1aH((5gLykwGiqt8dXq9jO88Gc`dy{f*fzfxZ1*?oUEh^Z&Y(Jwe3OI z76i}(8#Vs`3Lwyv$aL|bFbPWotrV#UAJ1dsLC*@XBbOs>=mBv^02j4EUnwlhW1!N3 zc>uO;=#CA4s)K_I*(jq2TBzn_wzNxsM%a4P4&$)~H@u->m`%pyI~*3Jxrw4;lql1y79yhi7pry0-A# zgXBeV+H&>vZ+%{8`<30JC8Ac_rFc88YxG}FOD0%PZ+mi1=P{Mlnh?s;1<>#WawFg> zX|4Em@7iOOPRZ@?{_e{W5%yM9jYFH4xw#`vxCb@tyMC{Q>p!x-m+csl%v{Z*Y~pKjS%s+$mNqlKZl3w9dNXZ^wMh&yW>en@1s%KDwf_Vg#0i4`*GuD>rj z?;p5$QRF&KBs_+X_JW0LTyd~_djKbS|z>7FiS} ziLe64VZQWKT^8+bms&1SG6_~Y>$SfMCQ#;+b|+n}L`7!3wdq>JH)C>uHac|p)xu{c zUBCkRleI9-15L;hcN>#WR&68`p?jAcb}eh#wd$Vj7ilrbIW5_R!xc9_g|(|AJ8anY z*9JfOjN_;}Tjg7hbzwV!3g1#J8(n-UX&7(Z+@2oN&uiGQRRiWLI`d;&aUVNE36+T# z2U{BYo+IYpEl0F{x0ByHwk8Bxedz#Z8-*L#d@IS@+0G-`)6tpjd_J`89kw3d+cB^q z07s1)Lmj*jTC8~Xyru$Bo?BHy84a`=&~?EFO?uG`fnZ7B!iorFkQP}r7xaxAy6(T8~R&O zrRb+hhBq5g1dGy&;;aq2RWMs=& zcZ&D@J#)6Xc=x#=%E``SBAegSUpD72*XgX9@ZWylb`@Lzf1Q~?01NWp@D=In)$#uK zb}FCR-q*sD-5ufM0b|3=mKY=7)WS89*}CYbjc656ygeY411-M^ck zBmV1rD>B!o^^=Oq_fKwj2*=rZU@>0mRXG0u3xa&eCYdpoYd71Iq;1A{o>E9+=(pFz z@fWRopVyXWyLPVq1Z*O_i>W3h1Es7-hsw1#j9$9P=00{ie{wfhzNkPSkp{bIwzb23 zHi&a~NhEu^Lal39s0Zc504ulk#~*4uFLC!wNyFn#@Ri%`xu)Gwb>6og-Tm9{Sgs?? z{_JMfoTUWe`f0CYnz zRd*wmxNokv8MGB*(dLJyT6zRX65XP!?7aa{0jdG`f)X+6JWl&dEpk#f^ zT#f1l4=S)1x}C)Yl5U#nJSvU~r9l)zNy$JWifA8A-%eW^1BM4ruE&<3iU+tMYxz+E zmJQ`aJ_^`cfv{}ajSUdu$S-OE21a9XpxDt)*qR^)mj|TDx?cB^RE@_x0w6Ae|!4uo2L607e58Q&U7yffD*ix zz>%hgx^>$)uQ&XT+V8G)xj^3ax%t zXJ$?g`H3;%k%YXr=NYjd3*NQA)w;~hmrnlxZ!sxv&C-V427hHgl)3P8T_t4!ns^GioWfc^WW5^BT^VL{TJAB17d5Q%dZ|@ zo9(=|%ftbgGo^vHnsnN{+e|$=?9YDcscz92Z>R36vFJH!KZQE)>~>Gpo&B)wEiZR4 z#^D<;?qd^ReG*2%w!04>D)e?-@Z;C6C$s5{97u7XiU?FJF(_06YXMu65#--%waP;e z%BuuhGg^TpUM7K-3u_7}PP@=2m9+7o5}NHm;;FR(1OrP^3j0{lGE(u8Z-Anf6>xwt zv7nJ0JcYx2Xn^2(@1+4U*ywbi7dq-F70@vRZ{<)pj7O%1M#PPO8mb0i3RcxdxPQ)}y$6pasw01`p%z7WJ@lJLlY5`ojwX4#d=dy; zmJmr{BzOK^TQKlCA1d_e_Aa-FlW(t{D>olv%Eof91f0&7E4R#PT{rtTc6IvmRg&RB z6dW6U&Yf$G-nBJ3hm!HK#H=J=<%!MI`40-`y!m$0d@peOP9AtN;kVmyb($Ftp!EdT zAMCN)`sFz%Z_LD$@>W0y1&-Gr4aGg>PfHsgZ%;QBE^cjHt#{UNy_!iHGp3y?D?QxE zKA+}36=GE`L6t9XbgjoNs)sW+Q6Wvh`PY3lmB)RMGO}Jk2FIxDUG&yRpKDZkS5`cT z7xCQJvsm*~W04SBu(-CJKaF&nTUfhb%6B*c(jvrdt%u=Ty)`EBqwT%tFA@})J7i^E z%((_WX5LJ8uNP-bxBZ@tdo1`~_WuBNjElU2{C>M?z<;#sUS7_NtI^lpmd~;GJS>Dp zM^{@9OId*)7Oy?bcbKg_J&Uqs#Qy+q9yOK0;=~&r4eSQhsa)(YXzZC?vn1b>V~v+< z0(uYpYHdk5Q~u@%zwCg>FUm^~_i-dvI_E9#c)}O#hiYlP!}_UL(*Pkx;5Eh1i)qx_MMnb~hw-s)JFczl8#u+SE}d_Pr3| z@;Br-+iyAqb^Pd|bSrIWIacE4fP?WC2U-T?xNF{sAu_VqZ$&9iXn|nXI$Zcr3X2Y^SXP#y22TL-0UM{uOF#RrBU$Mx;p)kxu<@@3)_4Mn^N zxUEhZvp!Yb&o%?aa^tbTFHjaH+7ny%{F6_^72kV)D~4#~yU0(f_qXw;XXUIgz0(3{ z?gNPh$=>_cg2~Vwt6u*Al=W$Qeg;rjdw>OHMiA#9 z(&{#FJgbh|a_g?Q4^iy>fKQATag-^2V3B^JC**ORMWi{JeYiWe*(;%GW-k zG_IRpRwT;1H=6~Fjbpg4M^%%TE#_T^itNj!$u0?Va|u=$m@SlJ}f=6S_@5XXPd|PI$>;IRHS_YIu7F;sFr!6fEHDWxnQsoPlNft+6#!05NS%uS5~G6h!I)Itmypas^;O&~7LLCN(T%QETc2 zO0$LTE>h0|*!qaItA%@H`AC-x81&HFUpkvIs>V^L%EgI(ki_gPEPV7I#5+`Fl9Re0>DX)Wq>IZlmnK7-3Aqk~t#1OFXl9Z4sTbO`%}niGl6jahZX;rCOR{0< zp4aRxEz0JuSfR&9HxobxMTTPgIss)be(Yf z_Hiq6B=YgBPWu=7Wj~A9?2vjlRZKbV${9k8FObc*bO`_ckEh-@xnAyxVp= zYpxrU?TlXA*`=AHRfGY^Yj@V+HQc|KO5tmH<$=rghJ5WOagr8}DVdx!gej2UQlRv{ z)w$hqhHjj-e#iFYj_C6J&<6hi-Qops+UC0P9-zNvQDTUTC;_Z_d1`vpW*IoIlizS7 zMGRFWvmKPXD80T4YkJO2w#3WOVaEuHqv-;};49Z7=54laPW_eNuS%>G3ky&-+?44+ zEPt5qMJA34+SEV|4<8Bw)bygbiUW;$^q^aK3LyBBy3i*buhxOoT_~=9DuIa=Mejrk zASY95s{}~|s5(>tSnX7#B;0AW0VbyBPZ|d}fvDb!fUD^Qcu@q3bvK|cp9%#D%WuYk zw^4hZooWHpY-oawjqOD_a;<)~LMzB-A(qN^GzTCmw+4ZR7v7*K!gZ=TPB+j|9IOJL z9~uQ!4s|x585Py7dybZ<1#fx+YZH1XNaLt92+nn&LJ8CwAo(#{6Vpm5>^!D{wcDr8 zv9_-LeVF2={{Z_0B}ikhQC@wwuWr2(^BE~~aopaXZ z+p|wu8)&$Yb~ZO2L{_FAeUep6kO>3&hlj$qCS0w+B}^EF$_W_s(CT{IZ^oC_EW7Mz zzD{M*5+jfLhL#_~rf%LF#=3KP5@6y&q_3(|shHaT0F7#CBum@2-{bJB?iiq{WF?5| zKRV~MdiwYLvHjb(MJ(Lie&POWsI|T)O6OjkSWe4s z)&#Dv_JHGifC(1(Rraejj!)Zo49a6gSjD*jpcc1HDeX(9v3G&(3|xDKj23h1Hn`U3 zYR@e2y~6FLITUHaFh?tCuU#unc6_aIv6Uq*K9jIISkz2#y2OkH+v?c)8tbHayDK;D z$d~MB0~34vD;vjdoV@S1BY)i4@5Bp|PoITN8t(9}_kKv00}kbl&xL?Dy>C3YV-e*& z@3(%LY=h9=rXzoydpfJnx`CkUeL7dFZ0Ev8ClEj)^^Nk}Tw^2-z!PiqwRyI-I?OKc z@Ud(;Nulr+#_a1G4#gHEEQyT)$(Wm6v|Eu}@@$*#F5=iwteKLf(aNdJOu7a z4^)I!v6m^2hB73{?z!hDD=o5REu@WbK0{zUgkSTu~G@Y%ATy{b?tmnCv(l2m(vJ}7|;B?n%_F_*B)N|n!6}l3hweaoe3NG zQ3x0ve<}vpi;+bO0kr_z)(sF#5H4-0G#%)}jqa`n+nXA6>MmKoC52q6q*x_|ZgAUrnl*C7YF$ zX;3E?y@<5~bM~mR)bk9j{b+c#XKf{Q)4y$eD35Bx!1tGASef4@X!7Kg$oD)~f~~gk zYU8(5)^PP{_BP()w>a_>cOT94Y197z8sj*1+9s@lchfsj?bvM1w? zF_zNf$7<`W;pX1vvcBu%>bU4n;xAmcdis1k_Y{xRO6P4rJ{neaZ@ES84_h|65n=yj7@qYPIF#`Pk4?pQ((>W7Wpi-ZL1oh0sIO;VXXWSHMSt9NYwT;bC3EE~A3Gr! z5$YZl&u+b2n^nFye$R{!F(<^=pKh&PX4@|Ncf7m27_vnV7;&U7DIH4dcBs&1g|0HsAl+@Q!lI+G=qMW^#`H%y8e3b{ToqRKHlRkhHnkH0E?C%UMHqk< z4998*2v8_1V=1P!A`8>V8Y#f>?8|e|)da{a4z{+`GG(o`L}jTzRAeYNGzx)D^wxnLlrURg&Y&=O>NcV>JQq^ac#WopKph&>-lS=$|Fw;Ty0)EUhHNk#7w|zW!|+pbHA!|NU5N=A}`}zb&o#R zCmDbm{Ow&CkzbiTfw9wVKhCkWdb+e{^RgFGFRq5T+V*P{kLo0WbI^DJS#-(R5EIbb zcDK%~OI8q+P`dF1>PGdZ6+P3uh36Vwo5!VRZJl)MKkfAsGRY>d{MPWPt38}}Y%$S7 zfCa6vzV`epw0O3oWz^W8BTOWx{VNTaYIgY6@xz~*#Cx)E5zX}eHm)1jzp5~BzK-Nu zkv6HUJ0~j4_`c#dEqaQSjK^}uSmAcIqp3gVU3GEnj80=QCj0IOm3noLJw^RGxV^nz zHPhO|2Vlip>MIv@nkUDKEnIfl+g%~$#kT(dm15UlRgN45SSxJRn@bw5*M%91z;fE; zTI1n+UZa-Hmu`tiimnPPyw}2-0s9_pzx>}Q*&Z00HTG5BVcXupf9ul zyEVYt)l7{R)+Fgb({bibwmZ=wc*SGKedxIwUey50pa-DdsHKhBl}V@{Byki$tK85( zJ9>Z{SXESa0@vJ{h~z*uGzig`y|lFy_Bm*g`Dzc*RS9i1qMU9aM~wq!#Af1prGJ6Ff~x> zpx%QA?sCU4SuW0bUs0~{41Alho|fLY$K5wg9CnDejXL%uXL+iCQu7> z1Zqw1@bIgv8}gLW-&WJY)z>a_P{}{1PP^60>!&K5+=L+O@UDATuT5~E%#)EO_Z@2$ z-Xkgk);bQVY8ItOBvFk>y|k?{%CEcof*2v<9dB;FH7?ERrdYhcat4^OYuiG6M}V$& zy;|!Uk7xIJ^2qyYO16cC^!zC;bL`SbqhmaRB?nEvD(|hYpS+n&8xKDXD{dl`@ryz( zD_6rh^ImoD8I&X6QLU@bv*~rlMk{@b?oZOSXNNuSC{r&!L~Ko~HDVWX?Lu5`M_>)> zTC=;%`?evEA-CW1uTGmh*HlOp1MsbFRwqXiu(;m2TInJ}4waVVOoah9wx@c{X<>^W zG8Wo{(xO(Yv_{HMDbqm9t%%(Ge;P+En!HE?o=7gO;jrtqt9Wr*z^>r%)sLincB>Nc z8+3`1IMf14Dyi|%TD>owYC0KZdI zNRNp?2jf6MTUPl|4LaX*y%a3A151hr0qN49b~uAE*FjV(MiAS7It~O14=erB%bT?O z^V>b#p^_AWWLWR@I8(oPs%2=cB-uK3blPd#Zr8%Y~V0)jsr^}Ft$!nd3Uq z^I{U?KswedtlNye)7#$NgS6nNMYG$(QfqqX^7eM-;eU**w&kfNx=8bHa+aXq<64o% znC=X#2_Sl{Yus&ddb>5%E?!^m{DRUDO|IWhhn0D@eJv&;hC-_lCcu%W!n!>7$T8zG zak<}G!&$<=+`Y(Q;krk^^wzbGdvfy(-0#&$#ETya@29C+WVbiKBuaowlGRx$qotFHF>=~{7G_DpZN zpBlH+pWI`utd=``ZCcWD=i9b5Y@?VGciz1(6-X`$-rCScYmK_}q8caiqPQFNy#W}= zQg5XLTy9T=6hCvI7q;|4$0`OFZBI%LWc3r!(8&QHYqbKbgn1eRGMiDH99af{?NMW= zBamQpssiAP^r%pRNVuvHwfa#=2)~sOtVQ(eK#WDa4FjnDoqrkuAQmHW;Xy=!t~p;z zYgtr)T(+8lRClblt3c}Vw-z?F02}LX4JZfHR>a%NfTQFV#C+(5Tk_Xx2_Z{y;w}YH z6UM4VhV=s^X@3pqu3krBK>T;T&q|`mxTT`V+X;hir!wucN;U=-6=EC{|r_9%FdYpIfP&QtEY?o#>JqFdkSseYXU3T8vCWo$- z&uZ(Wdw=a7Bu{|SNSehfBQ~4y1YfSkv#iZ^-*46GVi?_dAC-2)!R=)#B7!frfKv%> zMgZbT^B4GUR}AG>-R4w@?tD$Y0<*Kz(;iRmY>&B^s!qoL06W(Ym(cO5qb6Gbm(cDB zxwlQLrLQJANycyO^6ENP6+@o~>M~?m2Q|K+{{Y9GGP70>zxH#3o_L>2`jmNBqfPT1 zcheOOW94E#bg2%;tgLj<)>=%*(!}dhwH7$4PQR69rQdCj)-U6G{57dr*|Y4>qQLS{B z*H@h-0Vzc``Wtnk8g;m_qJRr%C{gMZ^`LB<+)y&Ezd_L6g1@?9ODI`ja=y3jg8hSchIsFmD+Zz`zbc~o44n`zRjxd>x# z3V~OMZBCU^k=N1)A36q!BU@`lJb)4j)KLX3fVkR$Pyz#Z?r17(t_O{(DAF&sG&j8v z^kVI$@6xK8bYkZE)I)+t9yL|L3ZE(k=WQrp@&IkE5OP3-24imkC>Z;P=>ot}MatsGtpX{w)B`swjysLb zL^J9QuSy9k{{TdhRY?36-d;83-!Fc)R?olYGIsThIp-QFZxf)s z?bf+hSZfz4CBT?^g+>N9J5HD+Or7Lr6FuvvYVnG{;8;A!% zz5W%wbjf=#^Zf4r0H53)g5Eg4GxM)h>YDj^_U*LR90o@Lg|2D4GPFIn1#TMGP;@oI zyXji~-`kXrHLc|!_H3Hxj6C=1jS@iwyHRh_*B;6tBT)a_sCsBUq%+v zx=q}+==q5e=K~-r-kq#RTkdM*o7KWYWO7|dP(PP@_*SyzG{ZCQPVE#p%*^05h~sXT zw~ce!y?t6dm%8^KyOz!l+Wr;JJv(?qg_>Cu+nc_&_*UzLXmIf+mK_1xQ}8=g!jZ#EUUEBgWN>t8->U_XD@M?ocRDwtz9$p?0w4TVy~`OSQbOK!)?B#l4#7IV zrL=B_mJ?*y5Z`?(4w}`@9yuy3I_f;DHLF@4-Gpv5{{VqTEo^&qN|AtdzPjK401DHV z%QTREp9Rw0de~HA@ZEO&Z_{@8As_}+9KaU!9Zh z6&2Wx&%%S2fSCG7q8Xy2zab$t0i*I3HB2AIj39Oz_)!E1JJ4|+0^)(GmF^uy+r!GB za>S1@N;_d|Ye0+|{#8_>>IqOTd}xNyIV86J18NBjFBk`=!hy23KP_kw3k@`)i;Eo& z)e+WfTVN`R)CCk9cvMlV5(N<@Kne)o!m5y+qm5 zc#UYF=BHs%3Z+P(M*xe888!eU3aXF_pa2h55UtI&I*I|}3BOu_2)*c`G6B-Ys3M?| zuCzjw2c;B2Zak_X1So88wN*&iQ5|Xu-*CYmUun$5nm@Z7@VW#7lRnLqa^(&NcyEP;ijbwWRwn8nEOt{ca?*0j!(C_ z7Ana)`hh%9=y_>x!noIMT6|vOzoq-3OHBH4*b8ZLYZg07xBmdRLOn4ski=Za{Y)b# z)o(Qy9}!uxsYxHX^6-nKOk|QW6|Uoj_B!vsg;^T+tIo~)fsK(MhISCn4Xw+P5bChZGxL}H|Pgi zoHv^DUvPcS=bbimiT1>X(TnJ)x&iU9tl@o`?9SGx?5sfxxg9TBk@&F6Aw*9 zAx%8!1X*{WQguEQ3ZrspD@Z0VDyhiT0343=5+mRRhO`{zJa*QBmY1LwJ~SQoPJ^Wb zzj1aZh!-jsh&q}M;Ks#{gQXOrHNEXo3RQMBLU9%#?cqf>sd@t{;`Y{nqh||iQ3K5U z=nQM|plR$|T_~aeKDX3VL!cU}P)Jrby#gsD0!4|SbqTc)V6DXhfQN7mwFcWzuO0oz z?X&id=aH6(-)ktNLy|0bG31QAc;8ekKOYLl+U3`)WqucQ#L4XvfLQPzw`C&ipn@-Z z4^RTU+sC_2lwF6rJ}+|3jy2vSbgF76?c!wml&%;B1 z8pMrS!~5s8OOu#oi9u!z-1ZhwN&JO%>A0!1%z4`}4RUMf&STHC#XW)EJB}3L;%x!h zwFFkS>(<56SDEGmJUc97DaDC_-X}tHtDm&)2*K^cmDvch~j3$VKgd* zqac&0`fd&NuRY78*DCx-vQ~VAh?I0jk$Gr%1!n&M>Kjuj>u{s)Zt>0b5!y+)gl;EG z5IBM7t#pygY^i_lQ)5cp4<0RGtEjNt-0NLEC33rAwf0x;5m!##-KGA^dU5iO@!w^0 z)qMI?+pWI7+%Emo2{LjZGBCKeP<6d|?!3N+ot!eF2_%>fod)$&D}$TcJ-LoD`;?c- zaeRD4Bks89ZTzFm)zhx+cyjIU*I9;Zz5e8PoT5Zh3|N@mRug8o^s{Qly*l)~H@4M2 zFMi51-HQZ~hct3p#B6SUb#Gk5KJ{$9>PN+YQ+?2Eq>T>xYqqt@>fUmOJDkQTIYn_P zB2Y)GPXoBMZ`L{7sr#&4r7DMz?nFRcf9c~A=wNfZJHN(3u^g#w`iZj}S!iwm86=zur5>r}}=zn_%> zfv1H*#1Lq%H=tD>s;E5xpb{=^P<6U=pysu-pp5T!01Fxp-k!x+%fLoDq zW9gy@t-zs>vCxkS83#U_P&zGrcA(%?H^zYtuX+SG2SIuSR3_ZDqL1y6+Gr>a;YX<0 zP&f~#<3u+j?WG4Resl&b6tj?sySX+3wXTor+b||*AtFgo*xcxU3hn8x zzFcPe?cqz2oWAz=RAX)J4zCQlJJ+zr8q02X1#ndmh;*DO1G5#-LtkMGQR zv&OtReOyI=I_d_OrwN5`xVw+u!RH%X30^*+=%V`g5Z0}05$2g-ee-V`_x1R5*>4YH zGWPY#3P>MOt~a*I^mS>K4|ho*vXRtV o*0XBI+Sco<)W2%Grgm3l$qwxDVapha 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 literal 0 HcmV?d00001 diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-grid.css b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-grid.css new file mode 100644 index 0000000..08a1cc1 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-grid.css @@ -0,0 +1,1339 @@ +@-ms-viewport { + width: device-width; +} + +html { + -webkit-box-sizing: border-box; + box-sizing: border-box; + -ms-overflow-style: scrollbar; +} + +*, +*::before, +*::after { + -webkit-box-sizing: inherit; + box-sizing: inherit; +} + +.container { + position: relative; + margin-left: auto; + margin-right: auto; + padding-right: 15px; + padding-left: 15px; +} + +@media (min-width: 576px) { + .container { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 768px) { + .container { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 992px) { + .container { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 1200px) { + .container { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 576px) { + .container { + width: 540px; + max-width: 100%; + } +} + +@media (min-width: 768px) { + .container { + width: 720px; + max-width: 100%; + } +} + +@media (min-width: 992px) { + .container { + width: 960px; + max-width: 100%; + } +} + +@media (min-width: 1200px) { + .container { + width: 1140px; + max-width: 100%; + } +} + +.container-fluid { + position: relative; + margin-left: auto; + margin-right: auto; + padding-right: 15px; + padding-left: 15px; +} + +@media (min-width: 576px) { + .container-fluid { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 768px) { + .container-fluid { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 992px) { + .container-fluid { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 1200px) { + .container-fluid { + padding-right: 15px; + padding-left: 15px; + } +} + +.row { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -15px; + margin-left: -15px; +} + +@media (min-width: 576px) { + .row { + margin-right: -15px; + margin-left: -15px; + } +} + +@media (min-width: 768px) { + .row { + margin-right: -15px; + margin-left: -15px; + } +} + +@media (min-width: 992px) { + .row { + margin-right: -15px; + margin-left: -15px; + } +} + +@media (min-width: 1200px) { + .row { + margin-right: -15px; + margin-left: -15px; + } +} + +.no-gutters { + margin-right: 0; + margin-left: 0; +} + +.no-gutters > .col, +.no-gutters > [class*="col-"] { + padding-right: 0; + padding-left: 0; +} + +.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { + position: relative; + width: 100%; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} + +@media (min-width: 576px) { + .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 768px) { + .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 992px) { + .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 1200px) { + .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { + padding-right: 15px; + padding-left: 15px; + } +} + +.col { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; +} + +.col-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; +} + +.col-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; +} + +.col-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; +} + +.col-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; +} + +.col-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; +} + +.col-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; +} + +.col-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; +} + +.col-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; +} + +.col-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; +} + +.col-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; +} + +.col-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; +} + +.col-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; +} + +.col-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; +} + +.pull-0 { + right: auto; +} + +.pull-1 { + right: 8.333333%; +} + +.pull-2 { + right: 16.666667%; +} + +.pull-3 { + right: 25%; +} + +.pull-4 { + right: 33.333333%; +} + +.pull-5 { + right: 41.666667%; +} + +.pull-6 { + right: 50%; +} + +.pull-7 { + right: 58.333333%; +} + +.pull-8 { + right: 66.666667%; +} + +.pull-9 { + right: 75%; +} + +.pull-10 { + right: 83.333333%; +} + +.pull-11 { + right: 91.666667%; +} + +.pull-12 { + right: 100%; +} + +.push-0 { + left: auto; +} + +.push-1 { + left: 8.333333%; +} + +.push-2 { + left: 16.666667%; +} + +.push-3 { + left: 25%; +} + +.push-4 { + left: 33.333333%; +} + +.push-5 { + left: 41.666667%; +} + +.push-6 { + left: 50%; +} + +.push-7 { + left: 58.333333%; +} + +.push-8 { + left: 66.666667%; +} + +.push-9 { + left: 75%; +} + +.push-10 { + left: 83.333333%; +} + +.push-11 { + left: 91.666667%; +} + +.push-12 { + left: 100%; +} + +.offset-1 { + margin-left: 8.333333%; +} + +.offset-2 { + margin-left: 16.666667%; +} + +.offset-3 { + margin-left: 25%; +} + +.offset-4 { + margin-left: 33.333333%; +} + +.offset-5 { + margin-left: 41.666667%; +} + +.offset-6 { + margin-left: 50%; +} + +.offset-7 { + margin-left: 58.333333%; +} + +.offset-8 { + margin-left: 66.666667%; +} + +.offset-9 { + margin-left: 75%; +} + +.offset-10 { + margin-left: 83.333333%; +} + +.offset-11 { + margin-left: 91.666667%; +} + +@media (min-width: 576px) { + .col-sm { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-sm-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .col-sm-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-sm-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-sm-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-sm-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-sm-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-sm-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-sm-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-sm-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-sm-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-sm-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-sm-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-sm-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .pull-sm-0 { + right: auto; + } + .pull-sm-1 { + right: 8.333333%; + } + .pull-sm-2 { + right: 16.666667%; + } + .pull-sm-3 { + right: 25%; + } + .pull-sm-4 { + right: 33.333333%; + } + .pull-sm-5 { + right: 41.666667%; + } + .pull-sm-6 { + right: 50%; + } + .pull-sm-7 { + right: 58.333333%; + } + .pull-sm-8 { + right: 66.666667%; + } + .pull-sm-9 { + right: 75%; + } + .pull-sm-10 { + right: 83.333333%; + } + .pull-sm-11 { + right: 91.666667%; + } + .pull-sm-12 { + right: 100%; + } + .push-sm-0 { + left: auto; + } + .push-sm-1 { + left: 8.333333%; + } + .push-sm-2 { + left: 16.666667%; + } + .push-sm-3 { + left: 25%; + } + .push-sm-4 { + left: 33.333333%; + } + .push-sm-5 { + left: 41.666667%; + } + .push-sm-6 { + left: 50%; + } + .push-sm-7 { + left: 58.333333%; + } + .push-sm-8 { + left: 66.666667%; + } + .push-sm-9 { + left: 75%; + } + .push-sm-10 { + left: 83.333333%; + } + .push-sm-11 { + left: 91.666667%; + } + .push-sm-12 { + left: 100%; + } + .offset-sm-0 { + margin-left: 0%; + } + .offset-sm-1 { + margin-left: 8.333333%; + } + .offset-sm-2 { + margin-left: 16.666667%; + } + .offset-sm-3 { + margin-left: 25%; + } + .offset-sm-4 { + margin-left: 33.333333%; + } + .offset-sm-5 { + margin-left: 41.666667%; + } + .offset-sm-6 { + margin-left: 50%; + } + .offset-sm-7 { + margin-left: 58.333333%; + } + .offset-sm-8 { + margin-left: 66.666667%; + } + .offset-sm-9 { + margin-left: 75%; + } + .offset-sm-10 { + margin-left: 83.333333%; + } + .offset-sm-11 { + margin-left: 91.666667%; + } +} + +@media (min-width: 768px) { + .col-md { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-md-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .col-md-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-md-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-md-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-md-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-md-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-md-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-md-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-md-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-md-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-md-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-md-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-md-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .pull-md-0 { + right: auto; + } + .pull-md-1 { + right: 8.333333%; + } + .pull-md-2 { + right: 16.666667%; + } + .pull-md-3 { + right: 25%; + } + .pull-md-4 { + right: 33.333333%; + } + .pull-md-5 { + right: 41.666667%; + } + .pull-md-6 { + right: 50%; + } + .pull-md-7 { + right: 58.333333%; + } + .pull-md-8 { + right: 66.666667%; + } + .pull-md-9 { + right: 75%; + } + .pull-md-10 { + right: 83.333333%; + } + .pull-md-11 { + right: 91.666667%; + } + .pull-md-12 { + right: 100%; + } + .push-md-0 { + left: auto; + } + .push-md-1 { + left: 8.333333%; + } + .push-md-2 { + left: 16.666667%; + } + .push-md-3 { + left: 25%; + } + .push-md-4 { + left: 33.333333%; + } + .push-md-5 { + left: 41.666667%; + } + .push-md-6 { + left: 50%; + } + .push-md-7 { + left: 58.333333%; + } + .push-md-8 { + left: 66.666667%; + } + .push-md-9 { + left: 75%; + } + .push-md-10 { + left: 83.333333%; + } + .push-md-11 { + left: 91.666667%; + } + .push-md-12 { + left: 100%; + } + .offset-md-0 { + margin-left: 0%; + } + .offset-md-1 { + margin-left: 8.333333%; + } + .offset-md-2 { + margin-left: 16.666667%; + } + .offset-md-3 { + margin-left: 25%; + } + .offset-md-4 { + margin-left: 33.333333%; + } + .offset-md-5 { + margin-left: 41.666667%; + } + .offset-md-6 { + margin-left: 50%; + } + .offset-md-7 { + margin-left: 58.333333%; + } + .offset-md-8 { + margin-left: 66.666667%; + } + .offset-md-9 { + margin-left: 75%; + } + .offset-md-10 { + margin-left: 83.333333%; + } + .offset-md-11 { + margin-left: 91.666667%; + } +} + +@media (min-width: 992px) { + .col-lg { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-lg-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .col-lg-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-lg-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-lg-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-lg-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-lg-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-lg-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-lg-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-lg-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-lg-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-lg-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-lg-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-lg-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .pull-lg-0 { + right: auto; + } + .pull-lg-1 { + right: 8.333333%; + } + .pull-lg-2 { + right: 16.666667%; + } + .pull-lg-3 { + right: 25%; + } + .pull-lg-4 { + right: 33.333333%; + } + .pull-lg-5 { + right: 41.666667%; + } + .pull-lg-6 { + right: 50%; + } + .pull-lg-7 { + right: 58.333333%; + } + .pull-lg-8 { + right: 66.666667%; + } + .pull-lg-9 { + right: 75%; + } + .pull-lg-10 { + right: 83.333333%; + } + .pull-lg-11 { + right: 91.666667%; + } + .pull-lg-12 { + right: 100%; + } + .push-lg-0 { + left: auto; + } + .push-lg-1 { + left: 8.333333%; + } + .push-lg-2 { + left: 16.666667%; + } + .push-lg-3 { + left: 25%; + } + .push-lg-4 { + left: 33.333333%; + } + .push-lg-5 { + left: 41.666667%; + } + .push-lg-6 { + left: 50%; + } + .push-lg-7 { + left: 58.333333%; + } + .push-lg-8 { + left: 66.666667%; + } + .push-lg-9 { + left: 75%; + } + .push-lg-10 { + left: 83.333333%; + } + .push-lg-11 { + left: 91.666667%; + } + .push-lg-12 { + left: 100%; + } + .offset-lg-0 { + margin-left: 0%; + } + .offset-lg-1 { + margin-left: 8.333333%; + } + .offset-lg-2 { + margin-left: 16.666667%; + } + .offset-lg-3 { + margin-left: 25%; + } + .offset-lg-4 { + margin-left: 33.333333%; + } + .offset-lg-5 { + margin-left: 41.666667%; + } + .offset-lg-6 { + margin-left: 50%; + } + .offset-lg-7 { + margin-left: 58.333333%; + } + .offset-lg-8 { + margin-left: 66.666667%; + } + .offset-lg-9 { + margin-left: 75%; + } + .offset-lg-10 { + margin-left: 83.333333%; + } + .offset-lg-11 { + margin-left: 91.666667%; + } +} + +@media (min-width: 1200px) { + .col-xl { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-xl-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .col-xl-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-xl-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-xl-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-xl-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-xl-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-xl-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-xl-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-xl-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-xl-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-xl-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-xl-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-xl-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .pull-xl-0 { + right: auto; + } + .pull-xl-1 { + right: 8.333333%; + } + .pull-xl-2 { + right: 16.666667%; + } + .pull-xl-3 { + right: 25%; + } + .pull-xl-4 { + right: 33.333333%; + } + .pull-xl-5 { + right: 41.666667%; + } + .pull-xl-6 { + right: 50%; + } + .pull-xl-7 { + right: 58.333333%; + } + .pull-xl-8 { + right: 66.666667%; + } + .pull-xl-9 { + right: 75%; + } + .pull-xl-10 { + right: 83.333333%; + } + .pull-xl-11 { + right: 91.666667%; + } + .pull-xl-12 { + right: 100%; + } + .push-xl-0 { + left: auto; + } + .push-xl-1 { + left: 8.333333%; + } + .push-xl-2 { + left: 16.666667%; + } + .push-xl-3 { + left: 25%; + } + .push-xl-4 { + left: 33.333333%; + } + .push-xl-5 { + left: 41.666667%; + } + .push-xl-6 { + left: 50%; + } + .push-xl-7 { + left: 58.333333%; + } + .push-xl-8 { + left: 66.666667%; + } + .push-xl-9 { + left: 75%; + } + .push-xl-10 { + left: 83.333333%; + } + .push-xl-11 { + left: 91.666667%; + } + .push-xl-12 { + left: 100%; + } + .offset-xl-0 { + margin-left: 0%; + } + .offset-xl-1 { + margin-left: 8.333333%; + } + .offset-xl-2 { + margin-left: 16.666667%; + } + .offset-xl-3 { + margin-left: 25%; + } + .offset-xl-4 { + margin-left: 33.333333%; + } + .offset-xl-5 { + margin-left: 41.666667%; + } + .offset-xl-6 { + margin-left: 50%; + } + .offset-xl-7 { + margin-left: 58.333333%; + } + .offset-xl-8 { + margin-left: 66.666667%; + } + .offset-xl-9 { + margin-left: 75%; + } + .offset-xl-10 { + margin-left: 83.333333%; + } + .offset-xl-11 { + margin-left: 91.666667%; + } +} +/*# sourceMappingURL=bootstrap-grid.css.map */ \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-grid.css.map b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-grid.css.map new file mode 100644 index 0000000..058beb4 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-grid.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/bootstrap-grid.scss","bootstrap-grid.css","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/mixins/_grid-framework.scss"],"names":[],"mappings":"AAUE;EAAgB,oBAAmB;CCRpC;;ADWD;EACE,+BAAsB;UAAtB,uBAAsB;EACtB,8BAA6B;CAC9B;;AAED;;;EAGE,4BAAmB;UAAnB,oBAAmB;CACpB;;AEjBC;ECAA,mBAAkB;EAClB,kBAAiB;EACjB,mBAAkB;EAKd,oBAA4B;EAC5B,mBAA4B;CDL/B;;AEgDC;EFnDF;ICOI,oBAA4B;IAC5B,mBAA4B;GDL/B;CDoBF;;AG4BG;EFnDF;ICOI,oBAA4B;IAC5B,mBAA4B;GDL/B;CD2BF;;AGqBG;EFnDF;ICOI,oBAA4B;IAC5B,mBAA4B;GDL/B;CDkCF;;AGcG;EFnDF;ICOI,oBAA4B;IAC5B,mBAA4B;GDL/B;CDyCF;;AGOG;EFnDF;ICkBI,aEqMK;IFpML,gBAAe;GDhBlB;CDgDF;;AGAG;EFnDF;ICkBI,aEsMK;IFrML,gBAAe;GDhBlB;CDuDF;;AGPG;EFnDF;ICkBI,aEuMK;IFtML,gBAAe;GDhBlB;CD8DF;;AGdG;EFnDF;ICkBI,cEwMM;IFvMN,gBAAe;GDhBlB;CDqEF;;AC5DC;ECZA,mBAAkB;EAClB,kBAAiB;EACjB,mBAAkB;EAKd,oBAA4B;EAC5B,mBAA4B;CDM/B;;AEqCC;EFvCF;ICLI,oBAA4B;IAC5B,mBAA4B;GDM/B;CDyEF;;AGpCG;EFvCF;ICLI,oBAA4B;IAC5B,mBAA4B;GDM/B;CDgFF;;AG3CG;EFvCF;ICLI,oBAA4B;IAC5B,mBAA4B;GDM/B;CDuFF;;AGlDG;EFvCF;ICLI,oBAA4B;IAC5B,mBAA4B;GDM/B;CD8FF;;ACtFC;ECaA,qBAAa;EAAb,sBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,wBAAe;MAAf,oBAAe;UAAf,gBAAe;EAKX,oBAA4B;EAC5B,mBAA4B;CDlB/B;;AE2BC;EF7BF;ICmBI,oBAA4B;IAC5B,mBAA4B;GDlB/B;CDkGF;;AGvEG;EF7BF;ICmBI,oBAA4B;IAC5B,mBAA4B;GDlB/B;CDyGF;;AG9EG;EF7BF;ICmBI,oBAA4B;IAC5B,mBAA4B;GDlB/B;CDgHF;;AGrFG;EF7BF;ICmBI,oBAA4B;IAC5B,mBAA4B;GDlB/B;CDuHF;;ACnHC;EACE,gBAAe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AiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,WAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,WAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,WAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,YAAiD;GGrCxC;EAFD;IHmCR,WAAsD;GGjC7C;EAFD;IHmCR,gBAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,UAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,UAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,UAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,WAAgD;GGjCvC;EAOD;IHsBR,gBAAyC;GGpBhC;EAFD;IHsBR,uBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,iBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,iBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,iBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;CL2hCV","file":"bootstrap-grid.css","sourcesContent":[null,"@-ms-viewport {\n width: device-width;\n}\n\nhtml {\n box-sizing: border-box;\n -ms-overflow-style: scrollbar;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n.container {\n position: relative;\n margin-left: auto;\n margin-right: auto;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 576px) {\n .container {\n width: 540px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n width: 720px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n width: 960px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n width: 1140px;\n max-width: 100%;\n }\n}\n\n.container-fluid {\n position: relative;\n margin-left: auto;\n margin-right: auto;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n.row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n@media (min-width: 576px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 768px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 992px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 1200px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl {\n position: relative;\n width: 100%;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n.col {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.pull-0 {\n right: auto;\n}\n\n.pull-1 {\n right: 8.333333%;\n}\n\n.pull-2 {\n right: 16.666667%;\n}\n\n.pull-3 {\n right: 25%;\n}\n\n.pull-4 {\n right: 33.333333%;\n}\n\n.pull-5 {\n right: 41.666667%;\n}\n\n.pull-6 {\n right: 50%;\n}\n\n.pull-7 {\n right: 58.333333%;\n}\n\n.pull-8 {\n right: 66.666667%;\n}\n\n.pull-9 {\n right: 75%;\n}\n\n.pull-10 {\n right: 83.333333%;\n}\n\n.pull-11 {\n right: 91.666667%;\n}\n\n.pull-12 {\n right: 100%;\n}\n\n.push-0 {\n left: auto;\n}\n\n.push-1 {\n left: 8.333333%;\n}\n\n.push-2 {\n left: 16.666667%;\n}\n\n.push-3 {\n left: 25%;\n}\n\n.push-4 {\n left: 33.333333%;\n}\n\n.push-5 {\n left: 41.666667%;\n}\n\n.push-6 {\n left: 50%;\n}\n\n.push-7 {\n left: 58.333333%;\n}\n\n.push-8 {\n left: 66.666667%;\n}\n\n.push-9 {\n left: 75%;\n}\n\n.push-10 {\n left: 83.333333%;\n}\n\n.push-11 {\n left: 91.666667%;\n}\n\n.push-12 {\n left: 100%;\n}\n\n.offset-1 {\n margin-left: 8.333333%;\n}\n\n.offset-2 {\n margin-left: 16.666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.333333%;\n}\n\n.offset-5 {\n margin-left: 41.666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.333333%;\n}\n\n.offset-8 {\n margin-left: 66.666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.333333%;\n}\n\n.offset-11 {\n margin-left: 91.666667%;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-sm-0 {\n right: auto;\n }\n .pull-sm-1 {\n right: 8.333333%;\n }\n .pull-sm-2 {\n right: 16.666667%;\n }\n .pull-sm-3 {\n right: 25%;\n }\n .pull-sm-4 {\n right: 33.333333%;\n }\n .pull-sm-5 {\n right: 41.666667%;\n }\n .pull-sm-6 {\n right: 50%;\n }\n .pull-sm-7 {\n right: 58.333333%;\n }\n .pull-sm-8 {\n right: 66.666667%;\n }\n .pull-sm-9 {\n right: 75%;\n }\n .pull-sm-10 {\n right: 83.333333%;\n }\n .pull-sm-11 {\n right: 91.666667%;\n }\n .pull-sm-12 {\n right: 100%;\n }\n .push-sm-0 {\n left: auto;\n }\n .push-sm-1 {\n left: 8.333333%;\n }\n .push-sm-2 {\n left: 16.666667%;\n }\n .push-sm-3 {\n left: 25%;\n }\n .push-sm-4 {\n left: 33.333333%;\n }\n .push-sm-5 {\n left: 41.666667%;\n }\n .push-sm-6 {\n left: 50%;\n }\n .push-sm-7 {\n left: 58.333333%;\n }\n .push-sm-8 {\n left: 66.666667%;\n }\n .push-sm-9 {\n left: 75%;\n }\n .push-sm-10 {\n left: 83.333333%;\n }\n .push-sm-11 {\n left: 91.666667%;\n }\n .push-sm-12 {\n left: 100%;\n }\n .offset-sm-0 {\n margin-left: 0%;\n }\n .offset-sm-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-md-0 {\n right: auto;\n }\n .pull-md-1 {\n right: 8.333333%;\n }\n .pull-md-2 {\n right: 16.666667%;\n }\n .pull-md-3 {\n right: 25%;\n }\n .pull-md-4 {\n right: 33.333333%;\n }\n .pull-md-5 {\n right: 41.666667%;\n }\n .pull-md-6 {\n right: 50%;\n }\n .pull-md-7 {\n right: 58.333333%;\n }\n .pull-md-8 {\n right: 66.666667%;\n }\n .pull-md-9 {\n right: 75%;\n }\n .pull-md-10 {\n right: 83.333333%;\n }\n .pull-md-11 {\n right: 91.666667%;\n }\n .pull-md-12 {\n right: 100%;\n }\n .push-md-0 {\n left: auto;\n }\n .push-md-1 {\n left: 8.333333%;\n }\n .push-md-2 {\n left: 16.666667%;\n }\n .push-md-3 {\n left: 25%;\n }\n .push-md-4 {\n left: 33.333333%;\n }\n .push-md-5 {\n left: 41.666667%;\n }\n .push-md-6 {\n left: 50%;\n }\n .push-md-7 {\n left: 58.333333%;\n }\n .push-md-8 {\n left: 66.666667%;\n }\n .push-md-9 {\n left: 75%;\n }\n .push-md-10 {\n left: 83.333333%;\n }\n .push-md-11 {\n left: 91.666667%;\n }\n .push-md-12 {\n left: 100%;\n }\n .offset-md-0 {\n margin-left: 0%;\n }\n .offset-md-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-lg-0 {\n right: auto;\n }\n .pull-lg-1 {\n right: 8.333333%;\n }\n .pull-lg-2 {\n right: 16.666667%;\n }\n .pull-lg-3 {\n right: 25%;\n }\n .pull-lg-4 {\n right: 33.333333%;\n }\n .pull-lg-5 {\n right: 41.666667%;\n }\n .pull-lg-6 {\n right: 50%;\n }\n .pull-lg-7 {\n right: 58.333333%;\n }\n .pull-lg-8 {\n right: 66.666667%;\n }\n .pull-lg-9 {\n right: 75%;\n }\n .pull-lg-10 {\n right: 83.333333%;\n }\n .pull-lg-11 {\n right: 91.666667%;\n }\n .pull-lg-12 {\n right: 100%;\n }\n .push-lg-0 {\n left: auto;\n }\n .push-lg-1 {\n left: 8.333333%;\n }\n .push-lg-2 {\n left: 16.666667%;\n }\n .push-lg-3 {\n left: 25%;\n }\n .push-lg-4 {\n left: 33.333333%;\n }\n .push-lg-5 {\n left: 41.666667%;\n }\n .push-lg-6 {\n left: 50%;\n }\n .push-lg-7 {\n left: 58.333333%;\n }\n .push-lg-8 {\n left: 66.666667%;\n }\n .push-lg-9 {\n left: 75%;\n }\n .push-lg-10 {\n left: 83.333333%;\n }\n .push-lg-11 {\n left: 91.666667%;\n }\n .push-lg-12 {\n left: 100%;\n }\n .offset-lg-0 {\n margin-left: 0%;\n }\n .offset-lg-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-xl-0 {\n right: auto;\n }\n .pull-xl-1 {\n right: 8.333333%;\n }\n .pull-xl-2 {\n right: 16.666667%;\n }\n .pull-xl-3 {\n right: 25%;\n }\n .pull-xl-4 {\n right: 33.333333%;\n }\n .pull-xl-5 {\n right: 41.666667%;\n }\n .pull-xl-6 {\n right: 50%;\n }\n .pull-xl-7 {\n right: 58.333333%;\n }\n .pull-xl-8 {\n right: 66.666667%;\n }\n .pull-xl-9 {\n right: 75%;\n }\n .pull-xl-10 {\n right: 83.333333%;\n }\n .pull-xl-11 {\n right: 91.666667%;\n }\n .pull-xl-12 {\n right: 100%;\n }\n .push-xl-0 {\n left: auto;\n }\n .push-xl-1 {\n left: 8.333333%;\n }\n .push-xl-2 {\n left: 16.666667%;\n }\n .push-xl-3 {\n left: 25%;\n }\n .push-xl-4 {\n left: 33.333333%;\n }\n .push-xl-5 {\n left: 41.666667%;\n }\n .push-xl-6 {\n left: 50%;\n }\n .push-xl-7 {\n left: 58.333333%;\n }\n .push-xl-8 {\n left: 66.666667%;\n }\n .push-xl-9 {\n left: 75%;\n }\n .push-xl-10 {\n left: 83.333333%;\n }\n .push-xl-11 {\n left: 91.666667%;\n }\n .push-xl-12 {\n left: 100%;\n }\n .offset-xl-0 {\n margin-left: 0%;\n }\n .offset-xl-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11 {\n margin-left: 91.666667%;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */",null,null,null,null,null]} \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-grid.min.css b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-grid.min.css new file mode 100644 index 0000000..edb16cb --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-grid.min.css @@ -0,0 +1 @@ +@-ms-viewport{width:device-width}html{-webkit-box-sizing:border-box;box-sizing:border-box;-ms-overflow-style:scrollbar}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}.container{position:relative;margin-left:auto;margin-right:auto;padding-right:15px;padding-left:15px}@media (min-width:576px){.container{padding-right:15px;padding-left:15px}}@media (min-width:768px){.container{padding-right:15px;padding-left:15px}}@media (min-width:992px){.container{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.container{padding-right:15px;padding-left:15px}}@media (min-width:576px){.container{width:540px;max-width:100%}}@media (min-width:768px){.container{width:720px;max-width:100%}}@media (min-width:992px){.container{width:960px;max-width:100%}}@media (min-width:1200px){.container{width:1140px;max-width:100%}}.container-fluid{position:relative;margin-left:auto;margin-right:auto;padding-right:15px;padding-left:15px}@media (min-width:576px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:768px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:992px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.container-fluid{padding-right:15px;padding-left:15px}}.row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}@media (min-width:576px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:768px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:992px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:1200px){.row{margin-right:-15px;margin-left:-15px}}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}@media (min-width:576px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{padding-right:15px;padding-left:15px}}@media (min-width:768px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{padding-right:15px;padding-left:15px}}@media (min-width:992px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{padding-right:15px;padding-left:15px}}.col{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-0{right:auto}.pull-1{right:8.333333%}.pull-2{right:16.666667%}.pull-3{right:25%}.pull-4{right:33.333333%}.pull-5{right:41.666667%}.pull-6{right:50%}.pull-7{right:58.333333%}.pull-8{right:66.666667%}.pull-9{right:75%}.pull-10{right:83.333333%}.pull-11{right:91.666667%}.pull-12{right:100%}.push-0{left:auto}.push-1{left:8.333333%}.push-2{left:16.666667%}.push-3{left:25%}.push-4{left:33.333333%}.push-5{left:41.666667%}.push-6{left:50%}.push-7{left:58.333333%}.push-8{left:66.666667%}.push-9{left:75%}.push-10{left:83.333333%}.push-11{left:91.666667%}.push-12{left:100%}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-sm-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-sm-0{right:auto}.pull-sm-1{right:8.333333%}.pull-sm-2{right:16.666667%}.pull-sm-3{right:25%}.pull-sm-4{right:33.333333%}.pull-sm-5{right:41.666667%}.pull-sm-6{right:50%}.pull-sm-7{right:58.333333%}.pull-sm-8{right:66.666667%}.pull-sm-9{right:75%}.pull-sm-10{right:83.333333%}.pull-sm-11{right:91.666667%}.pull-sm-12{right:100%}.push-sm-0{left:auto}.push-sm-1{left:8.333333%}.push-sm-2{left:16.666667%}.push-sm-3{left:25%}.push-sm-4{left:33.333333%}.push-sm-5{left:41.666667%}.push-sm-6{left:50%}.push-sm-7{left:58.333333%}.push-sm-8{left:66.666667%}.push-sm-9{left:75%}.push-sm-10{left:83.333333%}.push-sm-11{left:91.666667%}.push-sm-12{left:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-md-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-md-0{right:auto}.pull-md-1{right:8.333333%}.pull-md-2{right:16.666667%}.pull-md-3{right:25%}.pull-md-4{right:33.333333%}.pull-md-5{right:41.666667%}.pull-md-6{right:50%}.pull-md-7{right:58.333333%}.pull-md-8{right:66.666667%}.pull-md-9{right:75%}.pull-md-10{right:83.333333%}.pull-md-11{right:91.666667%}.pull-md-12{right:100%}.push-md-0{left:auto}.push-md-1{left:8.333333%}.push-md-2{left:16.666667%}.push-md-3{left:25%}.push-md-4{left:33.333333%}.push-md-5{left:41.666667%}.push-md-6{left:50%}.push-md-7{left:58.333333%}.push-md-8{left:66.666667%}.push-md-9{left:75%}.push-md-10{left:83.333333%}.push-md-11{left:91.666667%}.push-md-12{left:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-lg-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-lg-0{right:auto}.pull-lg-1{right:8.333333%}.pull-lg-2{right:16.666667%}.pull-lg-3{right:25%}.pull-lg-4{right:33.333333%}.pull-lg-5{right:41.666667%}.pull-lg-6{right:50%}.pull-lg-7{right:58.333333%}.pull-lg-8{right:66.666667%}.pull-lg-9{right:75%}.pull-lg-10{right:83.333333%}.pull-lg-11{right:91.666667%}.pull-lg-12{right:100%}.push-lg-0{left:auto}.push-lg-1{left:8.333333%}.push-lg-2{left:16.666667%}.push-lg-3{left:25%}.push-lg-4{left:33.333333%}.push-lg-5{left:41.666667%}.push-lg-6{left:50%}.push-lg-7{left:58.333333%}.push-lg-8{left:66.666667%}.push-lg-9{left:75%}.push-lg-10{left:83.333333%}.push-lg-11{left:91.666667%}.push-lg-12{left:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-xl-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-xl-0{right:auto}.pull-xl-1{right:8.333333%}.pull-xl-2{right:16.666667%}.pull-xl-3{right:25%}.pull-xl-4{right:33.333333%}.pull-xl-5{right:41.666667%}.pull-xl-6{right:50%}.pull-xl-7{right:58.333333%}.pull-xl-8{right:66.666667%}.pull-xl-9{right:75%}.pull-xl-10{right:83.333333%}.pull-xl-11{right:91.666667%}.pull-xl-12{right:100%}.push-xl-0{left:auto}.push-xl-1{left:8.333333%}.push-xl-2{left:16.666667%}.push-xl-3{left:25%}.push-xl-4{left:33.333333%}.push-xl-5{left:41.666667%}.push-xl-6{left:50%}.push-xl-7{left:58.333333%}.push-xl-8{left:66.666667%}.push-xl-9{left:75%}.push-xl-10{left:83.333333%}.push-xl-11{left:91.666667%}.push-xl-12{left:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}/*# sourceMappingURL=bootstrap-grid.min.css.map */ \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-grid.min.css.map b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-grid.min.css.map new file mode 100644 index 0000000..edae8e6 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-grid.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/bootstrap-grid.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-reboot.css b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-reboot.css new file mode 100644 index 0000000..89f687d --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-reboot.css @@ -0,0 +1,459 @@ +/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */ +html { + font-family: sans-serif; + line-height: 1.15; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} + +body { + margin: 0; +} + +article, +aside, +footer, +header, +nav, +section { + display: block; +} + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +figcaption, +figure, +main { + display: block; +} + +figure { + margin: 1em 40px; +} + +hr { + -webkit-box-sizing: content-box; + box-sizing: content-box; + height: 0; + overflow: visible; +} + +pre { + font-family: monospace, monospace; + font-size: 1em; +} + +a { + background-color: transparent; + -webkit-text-decoration-skip: objects; +} + +a:active, +a:hover { + outline-width: 0; +} + +abbr[title] { + border-bottom: none; + text-decoration: underline; + text-decoration: underline dotted; +} + +b, +strong { + font-weight: inherit; +} + +b, +strong { + font-weight: bolder; +} + +code, +kbd, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +dfn { + font-style: italic; +} + +mark { + background-color: #ff0; + color: #000; +} + +small { + font-size: 80%; +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +audio, +video { + display: inline-block; +} + +audio:not([controls]) { + display: none; + height: 0; +} + +img { + border-style: none; +} + +svg:not(:root) { + overflow: hidden; +} + +button, +input, +optgroup, +select, +textarea { + font-family: sans-serif; + font-size: 100%; + line-height: 1.15; + margin: 0; +} + +button, +input { + overflow: visible; +} + +button, +select { + text-transform: none; +} + +button, +html [type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +legend { + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: inherit; + display: table; + max-width: 100%; + padding: 0; + white-space: normal; +} + +progress { + display: inline-block; + vertical-align: baseline; +} + +textarea { + overflow: auto; +} + +[type="checkbox"], +[type="radio"] { + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +[type="search"] { + -webkit-appearance: textfield; + outline-offset: -2px; +} + +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; +} + +details, +menu { + display: block; +} + +summary { + display: list-item; +} + +canvas { + display: inline-block; +} + +template { + display: none; +} + +[hidden] { + display: none; +} + +html { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +*, +*::before, +*::after { + -webkit-box-sizing: inherit; + box-sizing: inherit; +} + +@-ms-viewport { + width: device-width; +} + +html { + -ms-overflow-style: scrollbar; + -webkit-tap-highlight-color: transparent; +} + +body { + font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + font-size: 1rem; + font-weight: normal; + line-height: 1.5; + color: #292b2c; + background-color: #fff; +} + +[tabindex="-1"]:focus { + outline: none !important; +} + +h1, h2, h3, h4, h5, h6 { + margin-top: 0; + margin-bottom: .5rem; +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +abbr[title], +abbr[data-original-title] { + cursor: help; +} + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: bold; +} + +dd { + margin-bottom: .5rem; + margin-left: 0; +} + +blockquote { + margin: 0 0 1rem; +} + +a { + color: #0275d8; + text-decoration: none; +} + +a:focus, a:hover { + color: #014c8c; + text-decoration: underline; +} + +a:not([href]):not([tabindex]) { + color: inherit; + text-decoration: none; +} + +a:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover { + color: inherit; + text-decoration: none; +} + +a:not([href]):not([tabindex]):focus { + outline: 0; +} + +pre { + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; +} + +figure { + margin: 0 0 1rem; +} + +img { + vertical-align: middle; +} + +[role="button"] { + cursor: pointer; +} + +a, +area, +button, +[role="button"], +input, +label, +select, +summary, +textarea { + -ms-touch-action: manipulation; + touch-action: manipulation; +} + +table { + border-collapse: collapse; + background-color: transparent; +} + +caption { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #636c72; + text-align: left; + caption-side: bottom; +} + +th { + text-align: left; +} + +label { + display: inline-block; + margin-bottom: .5rem; +} + +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; +} + +input, +button, +select, +textarea { + line-height: inherit; +} + +input[type="radio"]:disabled, +input[type="checkbox"]:disabled { + cursor: not-allowed; +} + +input[type="date"], +input[type="time"], +input[type="datetime-local"], +input[type="month"] { + -webkit-appearance: listbox; +} + +textarea { + resize: vertical; +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: .5rem; + font-size: 1.5rem; + line-height: inherit; +} + +input[type="search"] { + -webkit-appearance: none; +} + +output { + display: inline-block; +} + +[hidden] { + display: none !important; +} +/*# sourceMappingURL=bootstrap-reboot.css.map */ \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-reboot.css.map b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-reboot.css.map new file mode 100644 index 0000000..67c00c3 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-reboot.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/_normalize.scss","bootstrap-reboot.css","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_hover.scss"],"names":[],"mappings":"AAAA,4EAA4E;AAY5E;EACE,wBAAuB;EACvB,kBAAiB;EACjB,2BAA0B;EAC1B,+BAA8B;CAC/B;;AASD;EACE,UAAS;CACV;;AAMD;;;;;;EAME,eAAc;CACf;;AAOD;EACE,eAAc;EACd,iBAAgB;CACjB;;AAUD;;;EAGE,eAAc;CACf;;AAMD;EACE,iBAAgB;CACjB;;AAOD;EACE,gCAAuB;UAAvB,wBAAuB;EACvB,UAAS;EACT,kBAAiB;CAClB;;AAOD;EACE,kCAAiC;EACjC,eAAc;CACf;;AAUD;EACE,8BAA6B;EAC7B,sCAAqC;CACtC;;AAOD;;EAEE,iBAAgB;CACjB;;AAOD;EACE,oBAAmB;EACnB,2BAA0B;EAC1B,kCAAiC;CAClC;;AAMD;;EAEE,qBAAoB;CACrB;;AAMD;;EAEE,oBAAmB;CACpB;;AAOD;;;EAGE,kCAAiC;EACjC,eAAc;CACf;;AAMD;EACE,mBAAkB;CACnB;;AAMD;EACE,uBAAsB;EACtB,YAAW;CACZ;;AAMD;EACE,eAAc;CACf;;AAOD;;EAEE,eAAc;EACd,eAAc;EACd,mBAAkB;EAClB,yBAAwB;CACzB;;AAED;EACE,gBAAe;CAChB;;AAED;EACE,YAAW;CACZ;;AASD;;EAEE,sBAAqB;CACtB;;AAMD;EACE,cAAa;EACb,UAAS;CACV;;AAMD;EACE,mBAAkB;CACnB;;AAMD;EACE,iBAAgB;CACjB;;AAUD;;;;;EAKE,wBAAuB;EACvB,gBAAe;EACf,kBAAiB;EACjB,UAAS;CACV;;AAOD;;EAEE,kBAAiB;CAClB;;AAOD;;EAEE,qBAAoB;CACrB;;AAQD;;;;EAIE,2BAA0B;CAC3B;;AAMD;;;;EAIE,mBAAkB;EAClB,WAAU;CACX;;AAMD;;;;EAIE,+BAA8B;CAC/B;;AAMD;EACE,0BAAyB;EACzB,cAAa;EACb,+BAA8B;CAC/B;;AASD;EACE,+BAAsB;UAAtB,uBAAsB;EACtB,eAAc;EACd,eAAc;EACd,gBAAe;EACf,WAAU;EACV,oBAAmB;CACpB;;AAOD;EACE,sBAAqB;EACrB,yBAAwB;CACzB;;AAMD;EACE,eAAc;CACf;;ACtKD;;ED+KE,+BAAsB;UAAtB,uBAAsB;EACtB,WAAU;CACX;;AC3KD;;EDmLE,aAAY;CACb;;AC/KD;EDuLE,8BAA6B;EAC7B,qBAAoB;CACrB;;ACpLD;;ED4LE,yBAAwB;CACzB;;AAOD;EACE,2BAA0B;EAC1B,cAAa;CACd;;AAUD;;EAEE,eAAc;CACf;;AAMD;EACE,mBAAkB;CACnB;;AASD;EACE,sBAAqB;CACtB;;AAMD;EACE,cAAa;CACd;;ACpND;ED8NE,cAAa;CACd;;AEvbD;EACE,+BAAsB;UAAtB,uBAAsB;CACvB;;AAED;;;EAGE,4BAAmB;UAAnB,oBAAmB;CACpB;;AAmBC;EAAgB,oBAAmB;CD6MpC;;ACrMD;EAYE,8BAA6B;EAG7B,yCAA0C;CAC3C;;AAED;EACE,mHC2K4H;ED1K5H,gBC+KmB;ED9KnB,oBCmLyB;EDlLzB,iBCsLoB;EDpLpB,eC0BiC;EDxBjC,uBCYW;CDXZ;;AD0LD;EClLE,yBAAwB;CACzB;;AAWD;EACE,cAAa;EACb,qBAAoB;CACrB;;AAMD;EACE,cAAa;EACb,oBAAmB;CACpB;;AAGD;;EAGE,aAAY;CACb;;AAED;EACE,oBAAmB;EACnB,mBAAkB;EAClB,qBAAoB;CACrB;;AAED;;;EAGE,cAAa;EACb,oBAAmB;CACpB;;AAED;;;;EAIE,iBAAgB;CACjB;;AAED;EACE,kBCgHqB;CD/GtB;;AAED;EACE,qBAAoB;EACpB,eAAc;CACf;;AAED;EACE,iBAAgB;CACjB;;AAOD;EACE,eC/Dc;EDgEd,sBC8B0B;CDxB3B;;AEtJG;EFmJA,eC4B4C;ED3B5C,2BC4B6B;CC7K5B;;AF2JL;EACE,eAAc;EACd,sBAAqB;CAUtB;;AE1KG;EFmKA,eAAc;EACd,sBAAqB;CEjKpB;;AF2JL;EAUI,WAAU;CACX;;AAQH;EAEE,cAAa;EAEb,oBAAmB;EAEnB,eAAc;CACf;;AAOD;EAGE,iBAAgB;CACjB;;AAOD;EAGE,uBAAsB;CAGvB;;ADmID;ECzHE,gBAAe;CAChB;;AAaD;;;;;;;;;EASE,+BAA0B;MAA1B,2BAA0B;CAC3B;;AAOD;EAEE,0BAAyB;EAEzB,8BCoEyC;CDnE1C;;AAED;EACE,qBC6DoC;ED5DpC,wBC4DoC;ED3DpC,eC3KiC;ED4KjC,iBAAgB;EAChB,qBAAoB;CACrB;;AAED;EAEE,iBAAgB;CACjB;;AAOD;EAEE,sBAAqB;EACrB,qBAAoB;CACrB;;AAMD;EACE,oBAAmB;EACnB,2CAA0C;CAC3C;;AAED;;;;EAME,qBAAoB;CACrB;;AAED;;EAMI,oBC4IwC;CD3IzC;;AAIH;;;;EASE,4BAA2B;CAC5B;;AAED;EAEE,iBAAgB;CACjB;;AAED;EAME,aAAY;EAEZ,WAAU;EACV,UAAS;EACT,UAAS;CACV;;AAED;EAEE,eAAc;EACd,YAAW;EACX,WAAU;EACV,qBAAoB;EACpB,kBAAiB;EACjB,qBAAoB;CACrB;;AAED;EAKE,yBAAwB;CACzB;;AAGD;EACE,sBAAqB;CAItB;;ADkED;EC9DE,yBAAwB;CACzB","file":"bootstrap-reboot.css","sourcesContent":[null,"/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\n\nbody {\n margin: 0;\n}\n\narticle,\naside,\nfooter,\nheader,\nnav,\nsection {\n display: block;\n}\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\nfigcaption,\nfigure,\nmain {\n display: block;\n}\n\nfigure {\n margin: 1em 40px;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\npre {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\na {\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:active,\na:hover {\n outline-width: 0;\n}\n\nabbr[title] {\n border-bottom: none;\n text-decoration: underline;\n text-decoration: underline dotted;\n}\n\nb,\nstrong {\n font-weight: inherit;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\ndfn {\n font-style: italic;\n}\n\nmark {\n background-color: #ff0;\n color: #000;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\naudio,\nvideo {\n display: inline-block;\n}\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\nimg {\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: sans-serif;\n font-size: 100%;\n line-height: 1.15;\n margin: 0;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\nlegend {\n box-sizing: border-box;\n color: inherit;\n display: table;\n max-width: 100%;\n padding: 0;\n white-space: normal;\n}\n\nprogress {\n display: inline-block;\n vertical-align: baseline;\n}\n\ntextarea {\n overflow: auto;\n}\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n -webkit-appearance: button;\n font: inherit;\n}\n\ndetails,\nmenu {\n display: block;\n}\n\nsummary {\n display: list-item;\n}\n\ncanvas {\n display: inline-block;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none;\n}\n\nhtml {\n box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\nhtml {\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\nbody {\n font-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-size: 1rem;\n font-weight: normal;\n line-height: 1.5;\n color: #292b2c;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: none !important;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: .5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: bold;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\na {\n color: #0275d8;\n text-decoration: none;\n}\n\na:focus, a:hover {\n color: #014c8c;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n}\n\n[role=\"button\"] {\n cursor: pointer;\n}\n\na,\narea,\nbutton,\n[role=\"button\"],\ninput,\nlabel,\nselect,\nsummary,\ntextarea {\n touch-action: manipulation;\n}\n\ntable {\n border-collapse: collapse;\n background-color: transparent;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #636c72;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: left;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\ntextarea {\n line-height: inherit;\n}\n\ninput[type=\"radio\"]:disabled,\ninput[type=\"checkbox\"]:disabled {\n cursor: not-allowed;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n}\n\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n\noutput {\n display: inline-block;\n}\n\n[hidden] {\n display: none !important;\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */",null,null,null]} \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-reboot.min.css b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-reboot.min.css new file mode 100644 index 0000000..7bf2395 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-reboot.min.css @@ -0,0 +1 @@ +/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none}html{-webkit-box-sizing:border-box;box-sizing:border-box}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}@-ms-viewport{width:device-width}html{-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}body{font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#292b2c;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{cursor:help}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}a{color:#0275d8;text-decoration:none}a:focus,a:hover{color:#014c8c;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle}[role=button]{cursor:pointer}[role=button],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse;background-color:transparent}caption{padding-top:.75rem;padding-bottom:.75rem;color:#636c72;text-align:left;caption-side:bottom}th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,select,textarea{line-height:inherit}input[type=checkbox]:disabled,input[type=radio]:disabled{cursor:not-allowed}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit}input[type=search]{-webkit-appearance:none}output{display:inline-block}[hidden]{display:none!important}/*# sourceMappingURL=bootstrap-reboot.min.css.map */ \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-reboot.min.css.map b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-reboot.min.css.map new file mode 100644 index 0000000..fa2cf12 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap-reboot.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/_normalize.scss","bootstrap-reboot.css","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_hover.scss"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap.css b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap.css new file mode 100644 index 0000000..eda335e --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap.css @@ -0,0 +1,9320 @@ +/*! + * Bootstrap v4.0.0-alpha.6 (https://getbootstrap.com) + * Copyright 2011-2017 The Bootstrap Authors + * Copyright 2011-2017 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */ +html { + font-family: sans-serif; + line-height: 1.15; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} + +body { + margin: 0; +} + +article, +aside, +footer, +header, +nav, +section { + display: block; +} + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +figcaption, +figure, +main { + display: block; +} + +figure { + margin: 1em 40px; +} + +hr { + -webkit-box-sizing: content-box; + box-sizing: content-box; + height: 0; + overflow: visible; +} + +pre { + font-family: monospace, monospace; + font-size: 1em; +} + +a { + background-color: transparent; + -webkit-text-decoration-skip: objects; +} + +a:active, +a:hover { + outline-width: 0; +} + +abbr[title] { + border-bottom: none; + text-decoration: underline; + text-decoration: underline dotted; +} + +b, +strong { + font-weight: inherit; +} + +b, +strong { + font-weight: bolder; +} + +code, +kbd, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +dfn { + font-style: italic; +} + +mark { + background-color: #ff0; + color: #000; +} + +small { + font-size: 80%; +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +audio, +video { + display: inline-block; +} + +audio:not([controls]) { + display: none; + height: 0; +} + +img { + border-style: none; +} + +svg:not(:root) { + overflow: hidden; +} + +button, +input, +optgroup, +select, +textarea { + font-family: sans-serif; + font-size: 100%; + line-height: 1.15; + margin: 0; +} + +button, +input { + overflow: visible; +} + +button, +select { + text-transform: none; +} + +button, +html [type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +legend { + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: inherit; + display: table; + max-width: 100%; + padding: 0; + white-space: normal; +} + +progress { + display: inline-block; + vertical-align: baseline; +} + +textarea { + overflow: auto; +} + +[type="checkbox"], +[type="radio"] { + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +[type="search"] { + -webkit-appearance: textfield; + outline-offset: -2px; +} + +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; +} + +details, +menu { + display: block; +} + +summary { + display: list-item; +} + +canvas { + display: inline-block; +} + +template { + display: none; +} + +[hidden] { + display: none; +} + +@media print { + *, + *::before, + *::after, + p::first-letter, + div::first-letter, + blockquote::first-letter, + li::first-letter, + p::first-line, + div::first-line, + blockquote::first-line, + li::first-line { + text-shadow: none !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + abbr[title]::after { + content: " (" attr(title) ")"; + } + pre { + white-space: pre-wrap !important; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + .navbar { + display: none; + } + .badge { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} + +html { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +*, +*::before, +*::after { + -webkit-box-sizing: inherit; + box-sizing: inherit; +} + +@-ms-viewport { + width: device-width; +} + +html { + -ms-overflow-style: scrollbar; + -webkit-tap-highlight-color: transparent; +} + +body { + font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + font-size: 1rem; + font-weight: normal; + line-height: 1.5; + color: #292b2c; + background-color: #fff; +} + +[tabindex="-1"]:focus { + outline: none !important; +} + +h1, h2, h3, h4, h5, h6 { + margin-top: 0; + margin-bottom: .5rem; +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +abbr[title], +abbr[data-original-title] { + cursor: help; +} + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: bold; +} + +dd { + margin-bottom: .5rem; + margin-left: 0; +} + +blockquote { + margin: 0 0 1rem; +} + +a { + color: #0275d8; + text-decoration: none; +} + +a:focus, a:hover { + color: #014c8c; + text-decoration: underline; +} + +a:not([href]):not([tabindex]) { + color: inherit; + text-decoration: none; +} + +a:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover { + color: inherit; + text-decoration: none; +} + +a:not([href]):not([tabindex]):focus { + outline: 0; +} + +pre { + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; +} + +figure { + margin: 0 0 1rem; +} + +img { + vertical-align: middle; +} + +[role="button"] { + cursor: pointer; +} + +a, +area, +button, +[role="button"], +input, +label, +select, +summary, +textarea { + -ms-touch-action: manipulation; + touch-action: manipulation; +} + +table { + border-collapse: collapse; + background-color: transparent; +} + +caption { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #636c72; + text-align: left; + caption-side: bottom; +} + +th { + text-align: left; +} + +label { + display: inline-block; + margin-bottom: .5rem; +} + +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; +} + +input, +button, +select, +textarea { + line-height: inherit; +} + +input[type="radio"]:disabled, +input[type="checkbox"]:disabled { + cursor: not-allowed; +} + +input[type="date"], +input[type="time"], +input[type="datetime-local"], +input[type="month"] { + -webkit-appearance: listbox; +} + +textarea { + resize: vertical; +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: .5rem; + font-size: 1.5rem; + line-height: inherit; +} + +input[type="search"] { + -webkit-appearance: none; +} + +output { + display: inline-block; +} + +[hidden] { + display: none !important; +} + +h1, h2, h3, h4, h5, h6, +.h1, .h2, .h3, .h4, .h5, .h6 { + margin-bottom: 0.5rem; + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} + +h1, .h1 { + font-size: 2.5rem; +} + +h2, .h2 { + font-size: 2rem; +} + +h3, .h3 { + font-size: 1.75rem; +} + +h4, .h4 { + font-size: 1.5rem; +} + +h5, .h5 { + font-size: 1.25rem; +} + +h6, .h6 { + font-size: 1rem; +} + +.lead { + font-size: 1.25rem; + font-weight: 300; +} + +.display-1 { + font-size: 6rem; + font-weight: 300; + line-height: 1.1; +} + +.display-2 { + font-size: 5.5rem; + font-weight: 300; + line-height: 1.1; +} + +.display-3 { + font-size: 4.5rem; + font-weight: 300; + line-height: 1.1; +} + +.display-4 { + font-size: 3.5rem; + font-weight: 300; + line-height: 1.1; +} + +hr { + margin-top: 1rem; + margin-bottom: 1rem; + border: 0; + border-top: 1px solid rgba(0, 0, 0, 0.1); +} + +small, +.small { + font-size: 80%; + font-weight: normal; +} + +mark, +.mark { + padding: 0.2em; + background-color: #fcf8e3; +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} + +.list-inline { + padding-left: 0; + list-style: none; +} + +.list-inline-item { + display: inline-block; +} + +.list-inline-item:not(:last-child) { + margin-right: 5px; +} + +.initialism { + font-size: 90%; + text-transform: uppercase; +} + +.blockquote { + padding: 0.5rem 1rem; + margin-bottom: 1rem; + font-size: 1.25rem; + border-left: 0.25rem solid #eceeef; +} + +.blockquote-footer { + display: block; + font-size: 80%; + color: #636c72; +} + +.blockquote-footer::before { + content: "\2014 \00A0"; +} + +.blockquote-reverse { + padding-right: 1rem; + padding-left: 0; + text-align: right; + border-right: 0.25rem solid #eceeef; + border-left: 0; +} + +.blockquote-reverse .blockquote-footer::before { + content: ""; +} + +.blockquote-reverse .blockquote-footer::after { + content: "\00A0 \2014"; +} + +.img-fluid { + max-width: 100%; + height: auto; +} + +.img-thumbnail { + padding: 0.25rem; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 0.25rem; + -webkit-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + max-width: 100%; + height: auto; +} + +.figure { + display: inline-block; +} + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; +} + +.figure-caption { + font-size: 90%; + color: #636c72; +} + +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} + +code { + padding: 0.2rem 0.4rem; + font-size: 90%; + color: #bd4147; + background-color: #f7f7f9; + border-radius: 0.25rem; +} + +a > code { + padding: 0; + color: inherit; + background-color: inherit; +} + +kbd { + padding: 0.2rem 0.4rem; + font-size: 90%; + color: #fff; + background-color: #292b2c; + border-radius: 0.2rem; +} + +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; +} + +pre { + display: block; + margin-top: 0; + margin-bottom: 1rem; + font-size: 90%; + color: #292b2c; +} + +pre code { + padding: 0; + font-size: inherit; + color: inherit; + background-color: transparent; + border-radius: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +.container { + position: relative; + margin-left: auto; + margin-right: auto; + padding-right: 15px; + padding-left: 15px; +} + +@media (min-width: 576px) { + .container { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 768px) { + .container { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 992px) { + .container { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 1200px) { + .container { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 576px) { + .container { + width: 540px; + max-width: 100%; + } +} + +@media (min-width: 768px) { + .container { + width: 720px; + max-width: 100%; + } +} + +@media (min-width: 992px) { + .container { + width: 960px; + max-width: 100%; + } +} + +@media (min-width: 1200px) { + .container { + width: 1140px; + max-width: 100%; + } +} + +.container-fluid { + position: relative; + margin-left: auto; + margin-right: auto; + padding-right: 15px; + padding-left: 15px; +} + +@media (min-width: 576px) { + .container-fluid { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 768px) { + .container-fluid { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 992px) { + .container-fluid { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 1200px) { + .container-fluid { + padding-right: 15px; + padding-left: 15px; + } +} + +.row { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -15px; + margin-left: -15px; +} + +@media (min-width: 576px) { + .row { + margin-right: -15px; + margin-left: -15px; + } +} + +@media (min-width: 768px) { + .row { + margin-right: -15px; + margin-left: -15px; + } +} + +@media (min-width: 992px) { + .row { + margin-right: -15px; + margin-left: -15px; + } +} + +@media (min-width: 1200px) { + .row { + margin-right: -15px; + margin-left: -15px; + } +} + +.no-gutters { + margin-right: 0; + margin-left: 0; +} + +.no-gutters > .col, +.no-gutters > [class*="col-"] { + padding-right: 0; + padding-left: 0; +} + +.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { + position: relative; + width: 100%; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} + +@media (min-width: 576px) { + .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 768px) { + .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 992px) { + .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 1200px) { + .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { + padding-right: 15px; + padding-left: 15px; + } +} + +.col { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; +} + +.col-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; +} + +.col-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; +} + +.col-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; +} + +.col-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; +} + +.col-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; +} + +.col-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; +} + +.col-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; +} + +.col-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; +} + +.col-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; +} + +.col-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; +} + +.col-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; +} + +.col-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; +} + +.col-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; +} + +.pull-0 { + right: auto; +} + +.pull-1 { + right: 8.333333%; +} + +.pull-2 { + right: 16.666667%; +} + +.pull-3 { + right: 25%; +} + +.pull-4 { + right: 33.333333%; +} + +.pull-5 { + right: 41.666667%; +} + +.pull-6 { + right: 50%; +} + +.pull-7 { + right: 58.333333%; +} + +.pull-8 { + right: 66.666667%; +} + +.pull-9 { + right: 75%; +} + +.pull-10 { + right: 83.333333%; +} + +.pull-11 { + right: 91.666667%; +} + +.pull-12 { + right: 100%; +} + +.push-0 { + left: auto; +} + +.push-1 { + left: 8.333333%; +} + +.push-2 { + left: 16.666667%; +} + +.push-3 { + left: 25%; +} + +.push-4 { + left: 33.333333%; +} + +.push-5 { + left: 41.666667%; +} + +.push-6 { + left: 50%; +} + +.push-7 { + left: 58.333333%; +} + +.push-8 { + left: 66.666667%; +} + +.push-9 { + left: 75%; +} + +.push-10 { + left: 83.333333%; +} + +.push-11 { + left: 91.666667%; +} + +.push-12 { + left: 100%; +} + +.offset-1 { + margin-left: 8.333333%; +} + +.offset-2 { + margin-left: 16.666667%; +} + +.offset-3 { + margin-left: 25%; +} + +.offset-4 { + margin-left: 33.333333%; +} + +.offset-5 { + margin-left: 41.666667%; +} + +.offset-6 { + margin-left: 50%; +} + +.offset-7 { + margin-left: 58.333333%; +} + +.offset-8 { + margin-left: 66.666667%; +} + +.offset-9 { + margin-left: 75%; +} + +.offset-10 { + margin-left: 83.333333%; +} + +.offset-11 { + margin-left: 91.666667%; +} + +@media (min-width: 576px) { + .col-sm { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-sm-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .col-sm-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-sm-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-sm-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-sm-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-sm-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-sm-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-sm-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-sm-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-sm-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-sm-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-sm-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-sm-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .pull-sm-0 { + right: auto; + } + .pull-sm-1 { + right: 8.333333%; + } + .pull-sm-2 { + right: 16.666667%; + } + .pull-sm-3 { + right: 25%; + } + .pull-sm-4 { + right: 33.333333%; + } + .pull-sm-5 { + right: 41.666667%; + } + .pull-sm-6 { + right: 50%; + } + .pull-sm-7 { + right: 58.333333%; + } + .pull-sm-8 { + right: 66.666667%; + } + .pull-sm-9 { + right: 75%; + } + .pull-sm-10 { + right: 83.333333%; + } + .pull-sm-11 { + right: 91.666667%; + } + .pull-sm-12 { + right: 100%; + } + .push-sm-0 { + left: auto; + } + .push-sm-1 { + left: 8.333333%; + } + .push-sm-2 { + left: 16.666667%; + } + .push-sm-3 { + left: 25%; + } + .push-sm-4 { + left: 33.333333%; + } + .push-sm-5 { + left: 41.666667%; + } + .push-sm-6 { + left: 50%; + } + .push-sm-7 { + left: 58.333333%; + } + .push-sm-8 { + left: 66.666667%; + } + .push-sm-9 { + left: 75%; + } + .push-sm-10 { + left: 83.333333%; + } + .push-sm-11 { + left: 91.666667%; + } + .push-sm-12 { + left: 100%; + } + .offset-sm-0 { + margin-left: 0%; + } + .offset-sm-1 { + margin-left: 8.333333%; + } + .offset-sm-2 { + margin-left: 16.666667%; + } + .offset-sm-3 { + margin-left: 25%; + } + .offset-sm-4 { + margin-left: 33.333333%; + } + .offset-sm-5 { + margin-left: 41.666667%; + } + .offset-sm-6 { + margin-left: 50%; + } + .offset-sm-7 { + margin-left: 58.333333%; + } + .offset-sm-8 { + margin-left: 66.666667%; + } + .offset-sm-9 { + margin-left: 75%; + } + .offset-sm-10 { + margin-left: 83.333333%; + } + .offset-sm-11 { + margin-left: 91.666667%; + } +} + +@media (min-width: 768px) { + .col-md { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-md-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .col-md-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-md-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-md-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-md-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-md-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-md-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-md-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-md-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-md-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-md-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-md-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-md-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .pull-md-0 { + right: auto; + } + .pull-md-1 { + right: 8.333333%; + } + .pull-md-2 { + right: 16.666667%; + } + .pull-md-3 { + right: 25%; + } + .pull-md-4 { + right: 33.333333%; + } + .pull-md-5 { + right: 41.666667%; + } + .pull-md-6 { + right: 50%; + } + .pull-md-7 { + right: 58.333333%; + } + .pull-md-8 { + right: 66.666667%; + } + .pull-md-9 { + right: 75%; + } + .pull-md-10 { + right: 83.333333%; + } + .pull-md-11 { + right: 91.666667%; + } + .pull-md-12 { + right: 100%; + } + .push-md-0 { + left: auto; + } + .push-md-1 { + left: 8.333333%; + } + .push-md-2 { + left: 16.666667%; + } + .push-md-3 { + left: 25%; + } + .push-md-4 { + left: 33.333333%; + } + .push-md-5 { + left: 41.666667%; + } + .push-md-6 { + left: 50%; + } + .push-md-7 { + left: 58.333333%; + } + .push-md-8 { + left: 66.666667%; + } + .push-md-9 { + left: 75%; + } + .push-md-10 { + left: 83.333333%; + } + .push-md-11 { + left: 91.666667%; + } + .push-md-12 { + left: 100%; + } + .offset-md-0 { + margin-left: 0%; + } + .offset-md-1 { + margin-left: 8.333333%; + } + .offset-md-2 { + margin-left: 16.666667%; + } + .offset-md-3 { + margin-left: 25%; + } + .offset-md-4 { + margin-left: 33.333333%; + } + .offset-md-5 { + margin-left: 41.666667%; + } + .offset-md-6 { + margin-left: 50%; + } + .offset-md-7 { + margin-left: 58.333333%; + } + .offset-md-8 { + margin-left: 66.666667%; + } + .offset-md-9 { + margin-left: 75%; + } + .offset-md-10 { + margin-left: 83.333333%; + } + .offset-md-11 { + margin-left: 91.666667%; + } +} + +@media (min-width: 992px) { + .col-lg { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-lg-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .col-lg-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-lg-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-lg-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-lg-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-lg-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-lg-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-lg-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-lg-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-lg-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-lg-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-lg-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-lg-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .pull-lg-0 { + right: auto; + } + .pull-lg-1 { + right: 8.333333%; + } + .pull-lg-2 { + right: 16.666667%; + } + .pull-lg-3 { + right: 25%; + } + .pull-lg-4 { + right: 33.333333%; + } + .pull-lg-5 { + right: 41.666667%; + } + .pull-lg-6 { + right: 50%; + } + .pull-lg-7 { + right: 58.333333%; + } + .pull-lg-8 { + right: 66.666667%; + } + .pull-lg-9 { + right: 75%; + } + .pull-lg-10 { + right: 83.333333%; + } + .pull-lg-11 { + right: 91.666667%; + } + .pull-lg-12 { + right: 100%; + } + .push-lg-0 { + left: auto; + } + .push-lg-1 { + left: 8.333333%; + } + .push-lg-2 { + left: 16.666667%; + } + .push-lg-3 { + left: 25%; + } + .push-lg-4 { + left: 33.333333%; + } + .push-lg-5 { + left: 41.666667%; + } + .push-lg-6 { + left: 50%; + } + .push-lg-7 { + left: 58.333333%; + } + .push-lg-8 { + left: 66.666667%; + } + .push-lg-9 { + left: 75%; + } + .push-lg-10 { + left: 83.333333%; + } + .push-lg-11 { + left: 91.666667%; + } + .push-lg-12 { + left: 100%; + } + .offset-lg-0 { + margin-left: 0%; + } + .offset-lg-1 { + margin-left: 8.333333%; + } + .offset-lg-2 { + margin-left: 16.666667%; + } + .offset-lg-3 { + margin-left: 25%; + } + .offset-lg-4 { + margin-left: 33.333333%; + } + .offset-lg-5 { + margin-left: 41.666667%; + } + .offset-lg-6 { + margin-left: 50%; + } + .offset-lg-7 { + margin-left: 58.333333%; + } + .offset-lg-8 { + margin-left: 66.666667%; + } + .offset-lg-9 { + margin-left: 75%; + } + .offset-lg-10 { + margin-left: 83.333333%; + } + .offset-lg-11 { + margin-left: 91.666667%; + } +} + +@media (min-width: 1200px) { + .col-xl { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-xl-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .col-xl-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-xl-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-xl-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-xl-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-xl-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-xl-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-xl-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-xl-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-xl-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-xl-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-xl-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-xl-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .pull-xl-0 { + right: auto; + } + .pull-xl-1 { + right: 8.333333%; + } + .pull-xl-2 { + right: 16.666667%; + } + .pull-xl-3 { + right: 25%; + } + .pull-xl-4 { + right: 33.333333%; + } + .pull-xl-5 { + right: 41.666667%; + } + .pull-xl-6 { + right: 50%; + } + .pull-xl-7 { + right: 58.333333%; + } + .pull-xl-8 { + right: 66.666667%; + } + .pull-xl-9 { + right: 75%; + } + .pull-xl-10 { + right: 83.333333%; + } + .pull-xl-11 { + right: 91.666667%; + } + .pull-xl-12 { + right: 100%; + } + .push-xl-0 { + left: auto; + } + .push-xl-1 { + left: 8.333333%; + } + .push-xl-2 { + left: 16.666667%; + } + .push-xl-3 { + left: 25%; + } + .push-xl-4 { + left: 33.333333%; + } + .push-xl-5 { + left: 41.666667%; + } + .push-xl-6 { + left: 50%; + } + .push-xl-7 { + left: 58.333333%; + } + .push-xl-8 { + left: 66.666667%; + } + .push-xl-9 { + left: 75%; + } + .push-xl-10 { + left: 83.333333%; + } + .push-xl-11 { + left: 91.666667%; + } + .push-xl-12 { + left: 100%; + } + .offset-xl-0 { + margin-left: 0%; + } + .offset-xl-1 { + margin-left: 8.333333%; + } + .offset-xl-2 { + margin-left: 16.666667%; + } + .offset-xl-3 { + margin-left: 25%; + } + .offset-xl-4 { + margin-left: 33.333333%; + } + .offset-xl-5 { + margin-left: 41.666667%; + } + .offset-xl-6 { + margin-left: 50%; + } + .offset-xl-7 { + margin-left: 58.333333%; + } + .offset-xl-8 { + margin-left: 66.666667%; + } + .offset-xl-9 { + margin-left: 75%; + } + .offset-xl-10 { + margin-left: 83.333333%; + } + .offset-xl-11 { + margin-left: 91.666667%; + } +} + +.table { + width: 100%; + max-width: 100%; + margin-bottom: 1rem; +} + +.table th, +.table td { + padding: 0.75rem; + vertical-align: top; + border-top: 1px solid #eceeef; +} + +.table thead th { + vertical-align: bottom; + border-bottom: 2px solid #eceeef; +} + +.table tbody + tbody { + border-top: 2px solid #eceeef; +} + +.table .table { + background-color: #fff; +} + +.table-sm th, +.table-sm td { + padding: 0.3rem; +} + +.table-bordered { + border: 1px solid #eceeef; +} + +.table-bordered th, +.table-bordered td { + border: 1px solid #eceeef; +} + +.table-bordered thead th, +.table-bordered thead td { + border-bottom-width: 2px; +} + +.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(0, 0, 0, 0.05); +} + +.table-hover tbody tr:hover { + background-color: rgba(0, 0, 0, 0.075); +} + +.table-active, +.table-active > th, +.table-active > td { + background-color: rgba(0, 0, 0, 0.075); +} + +.table-hover .table-active:hover { + background-color: rgba(0, 0, 0, 0.075); +} + +.table-hover .table-active:hover > td, +.table-hover .table-active:hover > th { + background-color: rgba(0, 0, 0, 0.075); +} + +.table-success, +.table-success > th, +.table-success > td { + background-color: #dff0d8; +} + +.table-hover .table-success:hover { + background-color: #d0e9c6; +} + +.table-hover .table-success:hover > td, +.table-hover .table-success:hover > th { + background-color: #d0e9c6; +} + +.table-info, +.table-info > th, +.table-info > td { + background-color: #d9edf7; +} + +.table-hover .table-info:hover { + background-color: #c4e3f3; +} + +.table-hover .table-info:hover > td, +.table-hover .table-info:hover > th { + background-color: #c4e3f3; +} + +.table-warning, +.table-warning > th, +.table-warning > td { + background-color: #fcf8e3; +} + +.table-hover .table-warning:hover { + background-color: #faf2cc; +} + +.table-hover .table-warning:hover > td, +.table-hover .table-warning:hover > th { + background-color: #faf2cc; +} + +.table-danger, +.table-danger > th, +.table-danger > td { + background-color: #f2dede; +} + +.table-hover .table-danger:hover { + background-color: #ebcccc; +} + +.table-hover .table-danger:hover > td, +.table-hover .table-danger:hover > th { + background-color: #ebcccc; +} + +.thead-inverse th { + color: #fff; + background-color: #292b2c; +} + +.thead-default th { + color: #464a4c; + background-color: #eceeef; +} + +.table-inverse { + color: #fff; + background-color: #292b2c; +} + +.table-inverse th, +.table-inverse td, +.table-inverse thead th { + border-color: #fff; +} + +.table-inverse.table-bordered { + border: 0; +} + +.table-responsive { + display: block; + width: 100%; + overflow-x: auto; + -ms-overflow-style: -ms-autohiding-scrollbar; +} + +.table-responsive.table-bordered { + border: 0; +} + +.form-control { + display: block; + width: 100%; + padding: 0.5rem 0.75rem; + font-size: 1rem; + line-height: 1.25; + color: #464a4c; + background-color: #fff; + background-image: none; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; + -webkit-transition: border-color ease-in-out 0.15s, -webkit-box-shadow ease-in-out 0.15s; + transition: border-color ease-in-out 0.15s, -webkit-box-shadow ease-in-out 0.15s; + -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s, -webkit-box-shadow ease-in-out 0.15s; +} + +.form-control::-ms-expand { + background-color: transparent; + border: 0; +} + +.form-control:focus { + color: #464a4c; + background-color: #fff; + border-color: #5cb3fd; + outline: none; +} + +.form-control::-webkit-input-placeholder { + color: #636c72; + opacity: 1; +} + +.form-control::-moz-placeholder { + color: #636c72; + opacity: 1; +} + +.form-control:-ms-input-placeholder { + color: #636c72; + opacity: 1; +} + +.form-control::placeholder { + color: #636c72; + opacity: 1; +} + +.form-control:disabled, .form-control[readonly] { + background-color: #eceeef; + opacity: 1; +} + +.form-control:disabled { + cursor: not-allowed; +} + +select.form-control:not([size]):not([multiple]) { + height: calc(2.25rem + 2px); +} + +select.form-control:focus::-ms-value { + color: #464a4c; + background-color: #fff; +} + +.form-control-file, +.form-control-range { + display: block; +} + +.col-form-label { + padding-top: calc(0.5rem - 1px * 2); + padding-bottom: calc(0.5rem - 1px * 2); + margin-bottom: 0; +} + +.col-form-label-lg { + padding-top: calc(0.75rem - 1px * 2); + padding-bottom: calc(0.75rem - 1px * 2); + font-size: 1.25rem; +} + +.col-form-label-sm { + padding-top: calc(0.25rem - 1px * 2); + padding-bottom: calc(0.25rem - 1px * 2); + font-size: 0.875rem; +} + +.col-form-legend { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + margin-bottom: 0; + font-size: 1rem; +} + +.form-control-static { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + margin-bottom: 0; + line-height: 1.25; + border: solid transparent; + border-width: 1px 0; +} + +.form-control-static.form-control-sm, .input-group-sm > .form-control-static.form-control, +.input-group-sm > .form-control-static.input-group-addon, +.input-group-sm > .input-group-btn > .form-control-static.btn, .form-control-static.form-control-lg, .input-group-lg > .form-control-static.form-control, +.input-group-lg > .form-control-static.input-group-addon, +.input-group-lg > .input-group-btn > .form-control-static.btn { + padding-right: 0; + padding-left: 0; +} + +.form-control-sm, .input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: 0.2rem; +} + +select.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]), +.input-group-sm > select.input-group-addon:not([size]):not([multiple]), +.input-group-sm > .input-group-btn > select.btn:not([size]):not([multiple]) { + height: 1.8125rem; +} + +.form-control-lg, .input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + padding: 0.75rem 1.5rem; + font-size: 1.25rem; + border-radius: 0.3rem; +} + +select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]), +.input-group-lg > select.input-group-addon:not([size]):not([multiple]), +.input-group-lg > .input-group-btn > select.btn:not([size]):not([multiple]) { + height: 3.166667rem; +} + +.form-group { + margin-bottom: 1rem; +} + +.form-text { + display: block; + margin-top: 0.25rem; +} + +.form-check { + position: relative; + display: block; + margin-bottom: 0.5rem; +} + +.form-check.disabled .form-check-label { + color: #636c72; + cursor: not-allowed; +} + +.form-check-label { + padding-left: 1.25rem; + margin-bottom: 0; + cursor: pointer; +} + +.form-check-input { + position: absolute; + margin-top: 0.25rem; + margin-left: -1.25rem; +} + +.form-check-input:only-child { + position: static; +} + +.form-check-inline { + display: inline-block; +} + +.form-check-inline .form-check-label { + vertical-align: middle; +} + +.form-check-inline + .form-check-inline { + margin-left: 0.75rem; +} + +.form-control-feedback { + margin-top: 0.25rem; +} + +.form-control-success, +.form-control-warning, +.form-control-danger { + padding-right: 2.25rem; + background-repeat: no-repeat; + background-position: center right 0.5625rem; + -webkit-background-size: 1.125rem 1.125rem; + background-size: 1.125rem 1.125rem; +} + +.has-success .form-control-feedback, +.has-success .form-control-label, +.has-success .col-form-label, +.has-success .form-check-label, +.has-success .custom-control { + color: #5cb85c; +} + +.has-success .form-control { + border-color: #5cb85c; +} + +.has-success .input-group-addon { + color: #5cb85c; + border-color: #5cb85c; + background-color: #eaf6ea; +} + +.has-success .form-control-success { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%235cb85c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E"); +} + +.has-warning .form-control-feedback, +.has-warning .form-control-label, +.has-warning .col-form-label, +.has-warning .form-check-label, +.has-warning .custom-control { + color: #f0ad4e; +} + +.has-warning .form-control { + border-color: #f0ad4e; +} + +.has-warning .input-group-addon { + color: #f0ad4e; + border-color: #f0ad4e; + background-color: white; +} + +.has-warning .form-control-warning { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23f0ad4e' d='M4.4 5.324h-.8v-2.46h.8zm0 1.42h-.8V5.89h.8zM3.76.63L.04 7.075c-.115.2.016.425.26.426h7.397c.242 0 .372-.226.258-.426C6.726 4.924 5.47 2.79 4.253.63c-.113-.174-.39-.174-.494 0z'/%3E%3C/svg%3E"); +} + +.has-danger .form-control-feedback, +.has-danger .form-control-label, +.has-danger .col-form-label, +.has-danger .form-check-label, +.has-danger .custom-control { + color: #d9534f; +} + +.has-danger .form-control { + border-color: #d9534f; +} + +.has-danger .input-group-addon { + color: #d9534f; + border-color: #d9534f; + background-color: #fdf7f7; +} + +.has-danger .form-control-danger { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23d9534f' viewBox='-2 -2 7 7'%3E%3Cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3E%3Ccircle r='.5'/%3E%3Ccircle cx='3' r='.5'/%3E%3Ccircle cy='3' r='.5'/%3E%3Ccircle cx='3' cy='3' r='.5'/%3E%3C/svg%3E"); +} + +.form-inline { + 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; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; +} + +.form-inline .form-check { + width: 100%; +} + +@media (min-width: 576px) { + .form-inline label { + 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: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + margin-bottom: 0; + } + .form-inline .form-group { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -webkit-flex-flow: row wrap; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + margin-bottom: 0; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + width: auto; + } + .form-inline .form-control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-check { + 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: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + width: auto; + margin-top: 0; + margin-bottom: 0; + } + .form-inline .form-check-label { + padding-left: 0; + } + .form-inline .form-check-input { + position: relative; + margin-top: 0; + margin-right: 0.25rem; + margin-left: 0; + } + .form-inline .custom-control { + 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: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + padding-left: 0; + } + .form-inline .custom-control-indicator { + position: static; + display: inline-block; + margin-right: 0.25rem; + vertical-align: text-bottom; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} + +.btn { + display: inline-block; + font-weight: normal; + line-height: 1.25; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: 1px solid transparent; + padding: 0.5rem 1rem; + font-size: 1rem; + border-radius: 0.25rem; + -webkit-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +.btn:focus, .btn:hover { + text-decoration: none; +} + +.btn:focus, .btn.focus { + outline: 0; + -webkit-box-shadow: 0 0 0 2px rgba(2, 117, 216, 0.25); + box-shadow: 0 0 0 2px rgba(2, 117, 216, 0.25); +} + +.btn.disabled, .btn:disabled { + cursor: not-allowed; + opacity: .65; +} + +.btn:active, .btn.active { + background-image: none; +} + +a.btn.disabled, +fieldset[disabled] a.btn { + pointer-events: none; +} + +.btn-primary { + color: #fff; + background-color: #0275d8; + border-color: #0275d8; +} + +.btn-primary:hover { + color: #fff; + background-color: #025aa5; + border-color: #01549b; +} + +.btn-primary:focus, .btn-primary.focus { + -webkit-box-shadow: 0 0 0 2px rgba(2, 117, 216, 0.5); + box-shadow: 0 0 0 2px rgba(2, 117, 216, 0.5); +} + +.btn-primary.disabled, .btn-primary:disabled { + background-color: #0275d8; + border-color: #0275d8; +} + +.btn-primary:active, .btn-primary.active, +.show > .btn-primary.dropdown-toggle { + color: #fff; + background-color: #025aa5; + background-image: none; + border-color: #01549b; +} + +.btn-secondary { + color: #292b2c; + background-color: #fff; + border-color: #ccc; +} + +.btn-secondary:hover { + color: #292b2c; + background-color: #e6e6e6; + border-color: #adadad; +} + +.btn-secondary:focus, .btn-secondary.focus { + -webkit-box-shadow: 0 0 0 2px rgba(204, 204, 204, 0.5); + box-shadow: 0 0 0 2px rgba(204, 204, 204, 0.5); +} + +.btn-secondary.disabled, .btn-secondary:disabled { + background-color: #fff; + border-color: #ccc; +} + +.btn-secondary:active, .btn-secondary.active, +.show > .btn-secondary.dropdown-toggle { + color: #292b2c; + background-color: #e6e6e6; + background-image: none; + border-color: #adadad; +} + +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #5bc0de; +} + +.btn-info:hover { + color: #fff; + background-color: #31b0d5; + border-color: #2aabd2; +} + +.btn-info:focus, .btn-info.focus { + -webkit-box-shadow: 0 0 0 2px rgba(91, 192, 222, 0.5); + box-shadow: 0 0 0 2px rgba(91, 192, 222, 0.5); +} + +.btn-info.disabled, .btn-info:disabled { + background-color: #5bc0de; + border-color: #5bc0de; +} + +.btn-info:active, .btn-info.active, +.show > .btn-info.dropdown-toggle { + color: #fff; + background-color: #31b0d5; + background-image: none; + border-color: #2aabd2; +} + +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #5cb85c; +} + +.btn-success:hover { + color: #fff; + background-color: #449d44; + border-color: #419641; +} + +.btn-success:focus, .btn-success.focus { + -webkit-box-shadow: 0 0 0 2px rgba(92, 184, 92, 0.5); + box-shadow: 0 0 0 2px rgba(92, 184, 92, 0.5); +} + +.btn-success.disabled, .btn-success:disabled { + background-color: #5cb85c; + border-color: #5cb85c; +} + +.btn-success:active, .btn-success.active, +.show > .btn-success.dropdown-toggle { + color: #fff; + background-color: #449d44; + background-image: none; + border-color: #419641; +} + +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #f0ad4e; +} + +.btn-warning:hover { + color: #fff; + background-color: #ec971f; + border-color: #eb9316; +} + +.btn-warning:focus, .btn-warning.focus { + -webkit-box-shadow: 0 0 0 2px rgba(240, 173, 78, 0.5); + box-shadow: 0 0 0 2px rgba(240, 173, 78, 0.5); +} + +.btn-warning.disabled, .btn-warning:disabled { + background-color: #f0ad4e; + border-color: #f0ad4e; +} + +.btn-warning:active, .btn-warning.active, +.show > .btn-warning.dropdown-toggle { + color: #fff; + background-color: #ec971f; + background-image: none; + border-color: #eb9316; +} + +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d9534f; +} + +.btn-danger:hover { + color: #fff; + background-color: #c9302c; + border-color: #c12e2a; +} + +.btn-danger:focus, .btn-danger.focus { + -webkit-box-shadow: 0 0 0 2px rgba(217, 83, 79, 0.5); + box-shadow: 0 0 0 2px rgba(217, 83, 79, 0.5); +} + +.btn-danger.disabled, .btn-danger:disabled { + background-color: #d9534f; + border-color: #d9534f; +} + +.btn-danger:active, .btn-danger.active, +.show > .btn-danger.dropdown-toggle { + color: #fff; + background-color: #c9302c; + background-image: none; + border-color: #c12e2a; +} + +.btn-outline-primary { + color: #0275d8; + background-image: none; + background-color: transparent; + border-color: #0275d8; +} + +.btn-outline-primary:hover { + color: #fff; + background-color: #0275d8; + border-color: #0275d8; +} + +.btn-outline-primary:focus, .btn-outline-primary.focus { + -webkit-box-shadow: 0 0 0 2px rgba(2, 117, 216, 0.5); + box-shadow: 0 0 0 2px rgba(2, 117, 216, 0.5); +} + +.btn-outline-primary.disabled, .btn-outline-primary:disabled { + color: #0275d8; + background-color: transparent; +} + +.btn-outline-primary:active, .btn-outline-primary.active, +.show > .btn-outline-primary.dropdown-toggle { + color: #fff; + background-color: #0275d8; + border-color: #0275d8; +} + +.btn-outline-secondary { + color: #ccc; + background-image: none; + background-color: transparent; + border-color: #ccc; +} + +.btn-outline-secondary:hover { + color: #fff; + background-color: #ccc; + border-color: #ccc; +} + +.btn-outline-secondary:focus, .btn-outline-secondary.focus { + -webkit-box-shadow: 0 0 0 2px rgba(204, 204, 204, 0.5); + box-shadow: 0 0 0 2px rgba(204, 204, 204, 0.5); +} + +.btn-outline-secondary.disabled, .btn-outline-secondary:disabled { + color: #ccc; + background-color: transparent; +} + +.btn-outline-secondary:active, .btn-outline-secondary.active, +.show > .btn-outline-secondary.dropdown-toggle { + color: #fff; + background-color: #ccc; + border-color: #ccc; +} + +.btn-outline-info { + color: #5bc0de; + background-image: none; + background-color: transparent; + border-color: #5bc0de; +} + +.btn-outline-info:hover { + color: #fff; + background-color: #5bc0de; + border-color: #5bc0de; +} + +.btn-outline-info:focus, .btn-outline-info.focus { + -webkit-box-shadow: 0 0 0 2px rgba(91, 192, 222, 0.5); + box-shadow: 0 0 0 2px rgba(91, 192, 222, 0.5); +} + +.btn-outline-info.disabled, .btn-outline-info:disabled { + color: #5bc0de; + background-color: transparent; +} + +.btn-outline-info:active, .btn-outline-info.active, +.show > .btn-outline-info.dropdown-toggle { + color: #fff; + background-color: #5bc0de; + border-color: #5bc0de; +} + +.btn-outline-success { + color: #5cb85c; + background-image: none; + background-color: transparent; + border-color: #5cb85c; +} + +.btn-outline-success:hover { + color: #fff; + background-color: #5cb85c; + border-color: #5cb85c; +} + +.btn-outline-success:focus, .btn-outline-success.focus { + -webkit-box-shadow: 0 0 0 2px rgba(92, 184, 92, 0.5); + box-shadow: 0 0 0 2px rgba(92, 184, 92, 0.5); +} + +.btn-outline-success.disabled, .btn-outline-success:disabled { + color: #5cb85c; + background-color: transparent; +} + +.btn-outline-success:active, .btn-outline-success.active, +.show > .btn-outline-success.dropdown-toggle { + color: #fff; + background-color: #5cb85c; + border-color: #5cb85c; +} + +.btn-outline-warning { + color: #f0ad4e; + background-image: none; + background-color: transparent; + border-color: #f0ad4e; +} + +.btn-outline-warning:hover { + color: #fff; + background-color: #f0ad4e; + border-color: #f0ad4e; +} + +.btn-outline-warning:focus, .btn-outline-warning.focus { + -webkit-box-shadow: 0 0 0 2px rgba(240, 173, 78, 0.5); + box-shadow: 0 0 0 2px rgba(240, 173, 78, 0.5); +} + +.btn-outline-warning.disabled, .btn-outline-warning:disabled { + color: #f0ad4e; + background-color: transparent; +} + +.btn-outline-warning:active, .btn-outline-warning.active, +.show > .btn-outline-warning.dropdown-toggle { + color: #fff; + background-color: #f0ad4e; + border-color: #f0ad4e; +} + +.btn-outline-danger { + color: #d9534f; + background-image: none; + background-color: transparent; + border-color: #d9534f; +} + +.btn-outline-danger:hover { + color: #fff; + background-color: #d9534f; + border-color: #d9534f; +} + +.btn-outline-danger:focus, .btn-outline-danger.focus { + -webkit-box-shadow: 0 0 0 2px rgba(217, 83, 79, 0.5); + box-shadow: 0 0 0 2px rgba(217, 83, 79, 0.5); +} + +.btn-outline-danger.disabled, .btn-outline-danger:disabled { + color: #d9534f; + background-color: transparent; +} + +.btn-outline-danger:active, .btn-outline-danger.active, +.show > .btn-outline-danger.dropdown-toggle { + color: #fff; + background-color: #d9534f; + border-color: #d9534f; +} + +.btn-link { + font-weight: normal; + color: #0275d8; + border-radius: 0; +} + +.btn-link, .btn-link:active, .btn-link.active, .btn-link:disabled { + background-color: transparent; +} + +.btn-link, .btn-link:focus, .btn-link:active { + border-color: transparent; +} + +.btn-link:hover { + border-color: transparent; +} + +.btn-link:focus, .btn-link:hover { + color: #014c8c; + text-decoration: underline; + background-color: transparent; +} + +.btn-link:disabled { + color: #636c72; +} + +.btn-link:disabled:focus, .btn-link:disabled:hover { + text-decoration: none; +} + +.btn-lg, .btn-group-lg > .btn { + padding: 0.75rem 1.5rem; + font-size: 1.25rem; + border-radius: 0.3rem; +} + +.btn-sm, .btn-group-sm > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: 0.2rem; +} + +.btn-block { + display: block; + width: 100%; +} + +.btn-block + .btn-block { + margin-top: 0.5rem; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.show { + opacity: 1; +} + +.collapse { + display: none; +} + +.collapse.show { + display: block; +} + +tr.collapse.show { + display: table-row; +} + +tbody.collapse.show { + display: table-row-group; +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +.dropup, +.dropdown { + position: relative; +} + +.dropdown-toggle::after { + display: inline-block; + width: 0; + height: 0; + margin-left: 0.3em; + vertical-align: middle; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-left: 0.3em solid transparent; +} + +.dropdown-toggle:focus { + outline: 0; +} + +.dropup .dropdown-toggle::after { + border-top: 0; + border-bottom: 0.3em solid; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 10rem; + padding: 0.5rem 0; + margin: 0.125rem 0 0; + font-size: 1rem; + color: #292b2c; + text-align: left; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; +} + +.dropdown-divider { + height: 1px; + margin: 0.5rem 0; + overflow: hidden; + background-color: #eceeef; +} + +.dropdown-item { + display: block; + width: 100%; + padding: 3px 1.5rem; + clear: both; + font-weight: normal; + color: #292b2c; + text-align: inherit; + white-space: nowrap; + background: none; + border: 0; +} + +.dropdown-item:focus, .dropdown-item:hover { + color: #1d1e1f; + text-decoration: none; + background-color: #f7f7f9; +} + +.dropdown-item.active, .dropdown-item:active { + color: #fff; + text-decoration: none; + background-color: #0275d8; +} + +.dropdown-item.disabled, .dropdown-item:disabled { + color: #636c72; + cursor: not-allowed; + background-color: transparent; +} + +.show > .dropdown-menu { + display: block; +} + +.show > a { + outline: 0; +} + +.dropdown-menu-right { + right: 0; + left: auto; +} + +.dropdown-menu-left { + right: auto; + left: 0; +} + +.dropdown-header { + display: block; + padding: 0.5rem 1.5rem; + margin-bottom: 0; + font-size: 0.875rem; + color: #636c72; + white-space: nowrap; +} + +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} + +.dropup .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 0.125rem; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + vertical-align: middle; +} + +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + -webkit-box-flex: 0; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; +} + +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover { + z-index: 2; +} + +.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 2; +} + +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group, +.btn-group-vertical .btn + .btn, +.btn-group-vertical .btn + .btn-group, +.btn-group-vertical .btn-group + .btn, +.btn-group-vertical .btn-group + .btn-group { + margin-left: -1px; +} + +.btn-toolbar { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; +} + +.btn-toolbar .input-group { + width: auto; +} + +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} + +.btn-group > .btn:first-child { + margin-left: 0; +} + +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} + +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.btn-group > .btn-group { + float: left; +} + +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} + +.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} + +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; +} + +.btn + .dropdown-toggle-split::after { + margin-left: 0; +} + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { + padding-right: 0.375rem; + padding-left: 0.375rem; +} + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { + padding-right: 1.125rem; + padding-left: 1.125rem; +} + +.btn-group-vertical { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; +} + +.btn-group-vertical .btn, +.btn-group-vertical .btn-group { + width: 100%; +} + +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} + +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} + +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} + +.input-group { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + width: 100%; +} + +.input-group .form-control { + position: relative; + z-index: 2; + -webkit-box-flex: 1; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + width: 1%; + margin-bottom: 0; +} + +.input-group .form-control:focus, .input-group .form-control:active, .input-group .form-control:hover { + z-index: 3; +} + +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; +} + +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} + +.input-group-addon, +.input-group-btn { + white-space: nowrap; + vertical-align: middle; +} + +.input-group-addon { + padding: 0.5rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + font-weight: normal; + line-height: 1.25; + color: #464a4c; + text-align: center; + background-color: #eceeef; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; +} + +.input-group-addon.form-control-sm, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .input-group-addon.btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: 0.2rem; +} + +.input-group-addon.form-control-lg, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .input-group-addon.btn { + padding: 0.75rem 1.5rem; + font-size: 1.25rem; + border-radius: 0.3rem; +} + +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} + +.input-group .form-control:not(:last-child), +.input-group-addon:not(:last-child), +.input-group-btn:not(:last-child) > .btn, +.input-group-btn:not(:last-child) > .btn-group > .btn, +.input-group-btn:not(:last-child) > .dropdown-toggle, +.input-group-btn:not(:first-child) > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:not(:first-child) > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} + +.input-group-addon:not(:last-child) { + border-right: 0; +} + +.input-group .form-control:not(:first-child), +.input-group-addon:not(:first-child), +.input-group-btn:not(:first-child) > .btn, +.input-group-btn:not(:first-child) > .btn-group > .btn, +.input-group-btn:not(:first-child) > .dropdown-toggle, +.input-group-btn:not(:last-child) > .btn:not(:first-child), +.input-group-btn:not(:last-child) > .btn-group:not(:first-child) > .btn { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.form-control + .input-group-addon:not(:first-child) { + border-left: 0; +} + +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} + +.input-group-btn > .btn { + position: relative; + -webkit-box-flex: 1; + -webkit-flex: 1 1 0%; + -ms-flex: 1 1 0%; + flex: 1 1 0%; +} + +.input-group-btn > .btn + .btn { + margin-left: -1px; +} + +.input-group-btn > .btn:focus, .input-group-btn > .btn:active, .input-group-btn > .btn:hover { + z-index: 3; +} + +.input-group-btn:not(:last-child) > .btn, +.input-group-btn:not(:last-child) > .btn-group { + margin-right: -1px; +} + +.input-group-btn:not(:first-child) > .btn, +.input-group-btn:not(:first-child) > .btn-group { + z-index: 2; + margin-left: -1px; +} + +.input-group-btn:not(:first-child) > .btn:focus, .input-group-btn:not(:first-child) > .btn:active, .input-group-btn:not(:first-child) > .btn:hover, +.input-group-btn:not(:first-child) > .btn-group:focus, +.input-group-btn:not(:first-child) > .btn-group:active, +.input-group-btn:not(:first-child) > .btn-group:hover { + z-index: 3; +} + +.custom-control { + position: relative; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + min-height: 1.5rem; + padding-left: 1.5rem; + margin-right: 1rem; + cursor: pointer; +} + +.custom-control-input { + position: absolute; + z-index: -1; + opacity: 0; +} + +.custom-control-input:checked ~ .custom-control-indicator { + color: #fff; + background-color: #0275d8; +} + +.custom-control-input:focus ~ .custom-control-indicator { + -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 3px #0275d8; + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #0275d8; +} + +.custom-control-input:active ~ .custom-control-indicator { + color: #fff; + background-color: #8fcafe; +} + +.custom-control-input:disabled ~ .custom-control-indicator { + cursor: not-allowed; + background-color: #eceeef; +} + +.custom-control-input:disabled ~ .custom-control-description { + color: #636c72; + cursor: not-allowed; +} + +.custom-control-indicator { + position: absolute; + top: 0.25rem; + left: 0; + display: block; + width: 1rem; + height: 1rem; + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-color: #ddd; + background-repeat: no-repeat; + background-position: center center; + -webkit-background-size: 50% 50%; + background-size: 50% 50%; +} + +.custom-checkbox .custom-control-indicator { + border-radius: 0.25rem; +} + +.custom-checkbox .custom-control-input:checked ~ .custom-control-indicator { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E"); +} + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-indicator { + background-color: #0275d8; + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E"); +} + +.custom-radio .custom-control-indicator { + border-radius: 50%; +} + +.custom-radio .custom-control-input:checked ~ .custom-control-indicator { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E"); +} + +.custom-controls-stacked { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.custom-controls-stacked .custom-control { + margin-bottom: 0.25rem; +} + +.custom-controls-stacked .custom-control + .custom-control { + margin-left: 0; +} + +.custom-select { + display: inline-block; + max-width: 100%; + height: calc(2.25rem + 2px); + padding: 0.375rem 1.75rem 0.375rem 0.75rem; + line-height: 1.25; + color: #464a4c; + vertical-align: middle; + background: #fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center; + -webkit-background-size: 8px 10px; + background-size: 8px 10px; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; + -moz-appearance: none; + -webkit-appearance: none; +} + +.custom-select:focus { + border-color: #5cb3fd; + outline: none; +} + +.custom-select:focus::-ms-value { + color: #464a4c; + background-color: #fff; +} + +.custom-select:disabled { + color: #636c72; + cursor: not-allowed; + background-color: #eceeef; +} + +.custom-select::-ms-expand { + opacity: 0; +} + +.custom-select-sm { + padding-top: 0.375rem; + padding-bottom: 0.375rem; + font-size: 75%; +} + +.custom-file { + position: relative; + display: inline-block; + max-width: 100%; + height: 2.5rem; + margin-bottom: 0; + cursor: pointer; +} + +.custom-file-input { + min-width: 14rem; + max-width: 100%; + height: 2.5rem; + margin: 0; + filter: alpha(opacity=0); + opacity: 0; +} + +.custom-file-control { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 5; + height: 2.5rem; + padding: 0.5rem 1rem; + line-height: 1.5; + color: #464a4c; + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; +} + +.custom-file-control:lang(en)::after { + content: "Choose file..."; +} + +.custom-file-control::before { + position: absolute; + top: -1px; + right: -1px; + bottom: -1px; + z-index: 6; + display: block; + height: 2.5rem; + padding: 0.5rem 1rem; + line-height: 1.5; + color: #464a4c; + background-color: #eceeef; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0 0.25rem 0.25rem 0; +} + +.custom-file-control:lang(en)::before { + content: "Browse"; +} + +.nav { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav-link { + display: block; + padding: 0.5em 1em; +} + +.nav-link:focus, .nav-link:hover { + text-decoration: none; +} + +.nav-link.disabled { + color: #636c72; + cursor: not-allowed; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} + +.nav-tabs .nav-item { + margin-bottom: -1px; +} + +.nav-tabs .nav-link { + border: 1px solid transparent; + border-top-right-radius: 0.25rem; + border-top-left-radius: 0.25rem; +} + +.nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover { + border-color: #eceeef #eceeef #ddd; +} + +.nav-tabs .nav-link.disabled { + color: #636c72; + background-color: transparent; + border-color: transparent; +} + +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + color: #464a4c; + background-color: #fff; + border-color: #ddd #ddd #fff; +} + +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.nav-pills .nav-link { + border-radius: 0.25rem; +} + +.nav-pills .nav-link.active, +.nav-pills .nav-item.show .nav-link { + color: #fff; + cursor: default; + background-color: #0275d8; +} + +.nav-fill .nav-item { + -webkit-box-flex: 1; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + text-align: center; +} + +.nav-justified .nav-item { + -webkit-box-flex: 1; + -webkit-flex: 1 1 100%; + -ms-flex: 1 1 100%; + flex: 1 1 100%; + text-align: center; +} + +.tab-content > .tab-pane { + display: none; +} + +.tab-content > .active { + display: block; +} + +.navbar { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding: 0.5rem 1rem; +} + +.navbar-brand { + display: inline-block; + padding-top: .25rem; + padding-bottom: .25rem; + margin-right: 1rem; + font-size: 1.25rem; + line-height: inherit; + white-space: nowrap; +} + +.navbar-brand:focus, .navbar-brand:hover { + text-decoration: none; +} + +.navbar-nav { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.navbar-nav .nav-link { + padding-right: 0; + padding-left: 0; +} + +.navbar-text { + display: inline-block; + padding-top: .425rem; + padding-bottom: .425rem; +} + +.navbar-toggler { + -webkit-align-self: flex-start; + -ms-flex-item-align: start; + align-self: flex-start; + padding: 0.25rem 0.75rem; + font-size: 1.25rem; + line-height: 1; + background: transparent; + border: 1px solid transparent; + border-radius: 0.25rem; +} + +.navbar-toggler:focus, .navbar-toggler:hover { + text-decoration: none; +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + content: ""; + background: no-repeat center center; + -webkit-background-size: 100% 100%; + background-size: 100% 100%; +} + +.navbar-toggler-left { + position: absolute; + left: 1rem; +} + +.navbar-toggler-right { + position: absolute; + right: 1rem; +} + +@media (max-width: 575px) { + .navbar-toggleable .navbar-nav .dropdown-menu { + position: static; + float: none; + } + .navbar-toggleable > .container { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 576px) { + .navbar-toggleable { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -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; + } + .navbar-toggleable .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-toggleable .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem; + } + .navbar-toggleable > .container { + 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; + } + .navbar-toggleable .navbar-collapse { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + width: 100%; + } + .navbar-toggleable .navbar-toggler { + display: none; + } +} + +@media (max-width: 767px) { + .navbar-toggleable-sm .navbar-nav .dropdown-menu { + position: static; + float: none; + } + .navbar-toggleable-sm > .container { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 768px) { + .navbar-toggleable-sm { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -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; + } + .navbar-toggleable-sm .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-toggleable-sm .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem; + } + .navbar-toggleable-sm > .container { + 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; + } + .navbar-toggleable-sm .navbar-collapse { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + width: 100%; + } + .navbar-toggleable-sm .navbar-toggler { + display: none; + } +} + +@media (max-width: 991px) { + .navbar-toggleable-md .navbar-nav .dropdown-menu { + position: static; + float: none; + } + .navbar-toggleable-md > .container { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 992px) { + .navbar-toggleable-md { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -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; + } + .navbar-toggleable-md .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-toggleable-md .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem; + } + .navbar-toggleable-md > .container { + 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; + } + .navbar-toggleable-md .navbar-collapse { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + width: 100%; + } + .navbar-toggleable-md .navbar-toggler { + display: none; + } +} + +@media (max-width: 1199px) { + .navbar-toggleable-lg .navbar-nav .dropdown-menu { + position: static; + float: none; + } + .navbar-toggleable-lg > .container { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 1200px) { + .navbar-toggleable-lg { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -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; + } + .navbar-toggleable-lg .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-toggleable-lg .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem; + } + .navbar-toggleable-lg > .container { + 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; + } + .navbar-toggleable-lg .navbar-collapse { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + width: 100%; + } + .navbar-toggleable-lg .navbar-toggler { + display: none; + } +} + +.navbar-toggleable-xl { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -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; +} + +.navbar-toggleable-xl .navbar-nav .dropdown-menu { + position: static; + float: none; +} + +.navbar-toggleable-xl > .container { + padding-right: 0; + padding-left: 0; +} + +.navbar-toggleable-xl .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; +} + +.navbar-toggleable-xl .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem; +} + +.navbar-toggleable-xl > .container { + 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; +} + +.navbar-toggleable-xl .navbar-collapse { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + width: 100%; +} + +.navbar-toggleable-xl .navbar-toggler { + display: none; +} + +.navbar-light .navbar-brand, +.navbar-light .navbar-toggler { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-brand:focus, .navbar-light .navbar-brand:hover, +.navbar-light .navbar-toggler:focus, +.navbar-light .navbar-toggler:hover { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-nav .nav-link { + color: rgba(0, 0, 0, 0.5); +} + +.navbar-light .navbar-nav .nav-link:focus, .navbar-light .navbar-nav .nav-link:hover { + color: rgba(0, 0, 0, 0.7); +} + +.navbar-light .navbar-nav .nav-link.disabled { + color: rgba(0, 0, 0, 0.3); +} + +.navbar-light .navbar-nav .open > .nav-link, +.navbar-light .navbar-nav .active > .nav-link, +.navbar-light .navbar-nav .nav-link.open, +.navbar-light .navbar-nav .nav-link.active { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-toggler { + border-color: rgba(0, 0, 0, 0.1); +} + +.navbar-light .navbar-toggler-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E"); +} + +.navbar-light .navbar-text { + color: rgba(0, 0, 0, 0.5); +} + +.navbar-inverse .navbar-brand, +.navbar-inverse .navbar-toggler { + color: white; +} + +.navbar-inverse .navbar-brand:focus, .navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-toggler:focus, +.navbar-inverse .navbar-toggler:hover { + color: white; +} + +.navbar-inverse .navbar-nav .nav-link { + color: rgba(255, 255, 255, 0.5); +} + +.navbar-inverse .navbar-nav .nav-link:focus, .navbar-inverse .navbar-nav .nav-link:hover { + color: rgba(255, 255, 255, 0.75); +} + +.navbar-inverse .navbar-nav .nav-link.disabled { + color: rgba(255, 255, 255, 0.25); +} + +.navbar-inverse .navbar-nav .open > .nav-link, +.navbar-inverse .navbar-nav .active > .nav-link, +.navbar-inverse .navbar-nav .nav-link.open, +.navbar-inverse .navbar-nav .nav-link.active { + color: white; +} + +.navbar-inverse .navbar-toggler { + border-color: rgba(255, 255, 255, 0.1); +} + +.navbar-inverse .navbar-toggler-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E"); +} + +.navbar-inverse .navbar-text { + color: rgba(255, 255, 255, 0.5); +} + +.card { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.125); + border-radius: 0.25rem; +} + +.card-block { + -webkit-box-flex: 1; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + padding: 1.25rem; +} + +.card-title { + margin-bottom: 0.75rem; +} + +.card-subtitle { + margin-top: -0.375rem; + margin-bottom: 0; +} + +.card-text:last-child { + margin-bottom: 0; +} + +.card-link:hover { + text-decoration: none; +} + +.card-link + .card-link { + margin-left: 1.25rem; +} + +.card > .list-group:first-child .list-group-item:first-child { + border-top-right-radius: 0.25rem; + border-top-left-radius: 0.25rem; +} + +.card > .list-group:last-child .list-group-item:last-child { + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} + +.card-header { + padding: 0.75rem 1.25rem; + margin-bottom: 0; + background-color: #f7f7f9; + border-bottom: 1px solid rgba(0, 0, 0, 0.125); +} + +.card-header:first-child { + border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; +} + +.card-footer { + padding: 0.75rem 1.25rem; + background-color: #f7f7f9; + border-top: 1px solid rgba(0, 0, 0, 0.125); +} + +.card-footer:last-child { + border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); +} + +.card-header-tabs { + margin-right: -0.625rem; + margin-bottom: -0.75rem; + margin-left: -0.625rem; + border-bottom: 0; +} + +.card-header-pills { + margin-right: -0.625rem; + margin-left: -0.625rem; +} + +.card-primary { + background-color: #0275d8; + border-color: #0275d8; +} + +.card-primary .card-header, +.card-primary .card-footer { + background-color: transparent; +} + +.card-success { + background-color: #5cb85c; + border-color: #5cb85c; +} + +.card-success .card-header, +.card-success .card-footer { + background-color: transparent; +} + +.card-info { + background-color: #5bc0de; + border-color: #5bc0de; +} + +.card-info .card-header, +.card-info .card-footer { + background-color: transparent; +} + +.card-warning { + background-color: #f0ad4e; + border-color: #f0ad4e; +} + +.card-warning .card-header, +.card-warning .card-footer { + background-color: transparent; +} + +.card-danger { + background-color: #d9534f; + border-color: #d9534f; +} + +.card-danger .card-header, +.card-danger .card-footer { + background-color: transparent; +} + +.card-outline-primary { + background-color: transparent; + border-color: #0275d8; +} + +.card-outline-secondary { + background-color: transparent; + border-color: #ccc; +} + +.card-outline-info { + background-color: transparent; + border-color: #5bc0de; +} + +.card-outline-success { + background-color: transparent; + border-color: #5cb85c; +} + +.card-outline-warning { + background-color: transparent; + border-color: #f0ad4e; +} + +.card-outline-danger { + background-color: transparent; + border-color: #d9534f; +} + +.card-inverse { + color: rgba(255, 255, 255, 0.65); +} + +.card-inverse .card-header, +.card-inverse .card-footer { + background-color: transparent; + border-color: rgba(255, 255, 255, 0.2); +} + +.card-inverse .card-header, +.card-inverse .card-footer, +.card-inverse .card-title, +.card-inverse .card-blockquote { + color: #fff; +} + +.card-inverse .card-link, +.card-inverse .card-text, +.card-inverse .card-subtitle, +.card-inverse .card-blockquote .blockquote-footer { + color: rgba(255, 255, 255, 0.65); +} + +.card-inverse .card-link:focus, .card-inverse .card-link:hover { + color: #fff; +} + +.card-blockquote { + padding: 0; + margin-bottom: 0; + border-left: 0; +} + +.card-img { + border-radius: calc(0.25rem - 1px); +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 1.25rem; +} + +.card-img-top { + border-top-right-radius: calc(0.25rem - 1px); + border-top-left-radius: calc(0.25rem - 1px); +} + +.card-img-bottom { + border-bottom-right-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px); +} + +@media (min-width: 576px) { + .card-deck { + 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; + } + .card-deck .card { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -webkit-flex: 1 0 0%; + -ms-flex: 1 0 0%; + flex: 1 0 0%; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + } + .card-deck .card:not(:first-child) { + margin-left: 15px; + } + .card-deck .card:not(:last-child) { + margin-right: 15px; + } +} + +@media (min-width: 576px) { + .card-group { + 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; + } + .card-group .card { + -webkit-box-flex: 1; + -webkit-flex: 1 0 0%; + -ms-flex: 1 0 0%; + flex: 1 0 0%; + } + .card-group .card + .card { + margin-left: 0; + border-left: 0; + } + .card-group .card:first-child { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + } + .card-group .card:first-child .card-img-top { + border-top-right-radius: 0; + } + .card-group .card:first-child .card-img-bottom { + border-bottom-right-radius: 0; + } + .card-group .card:last-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + } + .card-group .card:last-child .card-img-top { + border-top-left-radius: 0; + } + .card-group .card:last-child .card-img-bottom { + border-bottom-left-radius: 0; + } + .card-group .card:not(:first-child):not(:last-child) { + border-radius: 0; + } + .card-group .card:not(:first-child):not(:last-child) .card-img-top, + .card-group .card:not(:first-child):not(:last-child) .card-img-bottom { + border-radius: 0; + } +} + +@media (min-width: 576px) { + .card-columns { + -webkit-column-count: 3; + -moz-column-count: 3; + column-count: 3; + -webkit-column-gap: 1.25rem; + -moz-column-gap: 1.25rem; + column-gap: 1.25rem; + } + .card-columns .card { + display: inline-block; + width: 100%; + margin-bottom: 0.75rem; + } +} + +.breadcrumb { + padding: 0.75rem 1rem; + margin-bottom: 1rem; + list-style: none; + background-color: #eceeef; + border-radius: 0.25rem; +} + +.breadcrumb::after { + display: block; + content: ""; + clear: both; +} + +.breadcrumb-item { + float: left; +} + +.breadcrumb-item + .breadcrumb-item::before { + display: inline-block; + padding-right: 0.5rem; + padding-left: 0.5rem; + color: #636c72; + content: "/"; +} + +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: underline; +} + +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: none; +} + +.breadcrumb-item.active { + color: #636c72; +} + +.pagination { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + padding-left: 0; + list-style: none; + border-radius: 0.25rem; +} + +.page-item:first-child .page-link { + margin-left: 0; + border-bottom-left-radius: 0.25rem; + border-top-left-radius: 0.25rem; +} + +.page-item:last-child .page-link { + border-bottom-right-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} + +.page-item.active .page-link { + z-index: 2; + color: #fff; + background-color: #0275d8; + border-color: #0275d8; +} + +.page-item.disabled .page-link { + color: #636c72; + pointer-events: none; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; +} + +.page-link { + position: relative; + display: block; + padding: 0.5rem 0.75rem; + margin-left: -1px; + line-height: 1.25; + color: #0275d8; + background-color: #fff; + border: 1px solid #ddd; +} + +.page-link:focus, .page-link:hover { + color: #014c8c; + text-decoration: none; + background-color: #eceeef; + border-color: #ddd; +} + +.pagination-lg .page-link { + padding: 0.75rem 1.5rem; + font-size: 1.25rem; +} + +.pagination-lg .page-item:first-child .page-link { + border-bottom-left-radius: 0.3rem; + border-top-left-radius: 0.3rem; +} + +.pagination-lg .page-item:last-child .page-link { + border-bottom-right-radius: 0.3rem; + border-top-right-radius: 0.3rem; +} + +.pagination-sm .page-link { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; +} + +.pagination-sm .page-item:first-child .page-link { + border-bottom-left-radius: 0.2rem; + border-top-left-radius: 0.2rem; +} + +.pagination-sm .page-item:last-child .page-link { + border-bottom-right-radius: 0.2rem; + border-top-right-radius: 0.2rem; +} + +.badge { + display: inline-block; + padding: 0.25em 0.4em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: 0.25rem; +} + +.badge:empty { + display: none; +} + +.btn .badge { + position: relative; + top: -1px; +} + +a.badge:focus, a.badge:hover { + color: #fff; + text-decoration: none; + cursor: pointer; +} + +.badge-pill { + padding-right: 0.6em; + padding-left: 0.6em; + border-radius: 10rem; +} + +.badge-default { + background-color: #636c72; +} + +.badge-default[href]:focus, .badge-default[href]:hover { + background-color: #4b5257; +} + +.badge-primary { + background-color: #0275d8; +} + +.badge-primary[href]:focus, .badge-primary[href]:hover { + background-color: #025aa5; +} + +.badge-success { + background-color: #5cb85c; +} + +.badge-success[href]:focus, .badge-success[href]:hover { + background-color: #449d44; +} + +.badge-info { + background-color: #5bc0de; +} + +.badge-info[href]:focus, .badge-info[href]:hover { + background-color: #31b0d5; +} + +.badge-warning { + background-color: #f0ad4e; +} + +.badge-warning[href]:focus, .badge-warning[href]:hover { + background-color: #ec971f; +} + +.badge-danger { + background-color: #d9534f; +} + +.badge-danger[href]:focus, .badge-danger[href]:hover { + background-color: #c9302c; +} + +.jumbotron { + padding: 2rem 1rem; + margin-bottom: 2rem; + background-color: #eceeef; + border-radius: 0.3rem; +} + +@media (min-width: 576px) { + .jumbotron { + padding: 4rem 2rem; + } +} + +.jumbotron-hr { + border-top-color: #d0d5d8; +} + +.jumbotron-fluid { + padding-right: 0; + padding-left: 0; + border-radius: 0; +} + +.alert { + padding: 0.75rem 1.25rem; + margin-bottom: 1rem; + border: 1px solid transparent; + border-radius: 0.25rem; +} + +.alert-heading { + color: inherit; +} + +.alert-link { + font-weight: bold; +} + +.alert-dismissible .close { + position: relative; + top: -0.75rem; + right: -1.25rem; + padding: 0.75rem 1.25rem; + color: inherit; +} + +.alert-success { + background-color: #dff0d8; + border-color: #d0e9c6; + color: #3c763d; +} + +.alert-success hr { + border-top-color: #c1e2b3; +} + +.alert-success .alert-link { + color: #2b542c; +} + +.alert-info { + background-color: #d9edf7; + border-color: #bcdff1; + color: #31708f; +} + +.alert-info hr { + border-top-color: #a6d5ec; +} + +.alert-info .alert-link { + color: #245269; +} + +.alert-warning { + background-color: #fcf8e3; + border-color: #faf2cc; + color: #8a6d3b; +} + +.alert-warning hr { + border-top-color: #f7ecb5; +} + +.alert-warning .alert-link { + color: #66512c; +} + +.alert-danger { + background-color: #f2dede; + border-color: #ebcccc; + color: #a94442; +} + +.alert-danger hr { + border-top-color: #e4b9b9; +} + +.alert-danger .alert-link { + color: #843534; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} + +.progress { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + overflow: hidden; + font-size: 0.75rem; + line-height: 1rem; + text-align: center; + background-color: #eceeef; + border-radius: 0.25rem; +} + +.progress-bar { + height: 1rem; + color: #fff; + background-color: #0275d8; +} + +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 1rem 1rem; + background-size: 1rem 1rem; +} + +.progress-bar-animated { + -webkit-animation: progress-bar-stripes 1s linear infinite; + -o-animation: progress-bar-stripes 1s linear infinite; + animation: progress-bar-stripes 1s linear infinite; +} + +.media { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; +} + +.media-body { + -webkit-box-flex: 1; + -webkit-flex: 1 1 0%; + -ms-flex: 1 1 0%; + flex: 1 1 0%; +} + +.list-group { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; +} + +.list-group-item-action { + width: 100%; + color: #464a4c; + text-align: inherit; +} + +.list-group-item-action .list-group-item-heading { + color: #292b2c; +} + +.list-group-item-action:focus, .list-group-item-action:hover { + color: #464a4c; + text-decoration: none; + background-color: #f7f7f9; +} + +.list-group-item-action:active { + color: #292b2c; + background-color: #eceeef; +} + +.list-group-item { + position: relative; + 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; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + padding: 0.75rem 1.25rem; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.125); +} + +.list-group-item:first-child { + border-top-right-radius: 0.25rem; + border-top-left-radius: 0.25rem; +} + +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} + +.list-group-item:focus, .list-group-item:hover { + text-decoration: none; +} + +.list-group-item.disabled, .list-group-item:disabled { + color: #636c72; + cursor: not-allowed; + background-color: #fff; +} + +.list-group-item.disabled .list-group-item-heading, .list-group-item:disabled .list-group-item-heading { + color: inherit; +} + +.list-group-item.disabled .list-group-item-text, .list-group-item:disabled .list-group-item-text { + color: #636c72; +} + +.list-group-item.active { + z-index: 2; + color: #fff; + background-color: #0275d8; + border-color: #0275d8; +} + +.list-group-item.active .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small { + color: inherit; +} + +.list-group-item.active .list-group-item-text { + color: #daeeff; +} + +.list-group-flush .list-group-item { + border-right: 0; + border-left: 0; + border-radius: 0; +} + +.list-group-flush:first-child .list-group-item:first-child { + border-top: 0; +} + +.list-group-flush:last-child .list-group-item:last-child { + border-bottom: 0; +} + +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} + +a.list-group-item-success, +button.list-group-item-success { + color: #3c763d; +} + +a.list-group-item-success .list-group-item-heading, +button.list-group-item-success .list-group-item-heading { + color: inherit; +} + +a.list-group-item-success:focus, a.list-group-item-success:hover, +button.list-group-item-success:focus, +button.list-group-item-success:hover { + color: #3c763d; + background-color: #d0e9c6; +} + +a.list-group-item-success.active, +button.list-group-item-success.active { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} + +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} + +a.list-group-item-info, +button.list-group-item-info { + color: #31708f; +} + +a.list-group-item-info .list-group-item-heading, +button.list-group-item-info .list-group-item-heading { + color: inherit; +} + +a.list-group-item-info:focus, a.list-group-item-info:hover, +button.list-group-item-info:focus, +button.list-group-item-info:hover { + color: #31708f; + background-color: #c4e3f3; +} + +a.list-group-item-info.active, +button.list-group-item-info.active { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} + +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} + +a.list-group-item-warning, +button.list-group-item-warning { + color: #8a6d3b; +} + +a.list-group-item-warning .list-group-item-heading, +button.list-group-item-warning .list-group-item-heading { + color: inherit; +} + +a.list-group-item-warning:focus, a.list-group-item-warning:hover, +button.list-group-item-warning:focus, +button.list-group-item-warning:hover { + color: #8a6d3b; + background-color: #faf2cc; +} + +a.list-group-item-warning.active, +button.list-group-item-warning.active { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} + +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} + +a.list-group-item-danger, +button.list-group-item-danger { + color: #a94442; +} + +a.list-group-item-danger .list-group-item-heading, +button.list-group-item-danger .list-group-item-heading { + color: inherit; +} + +a.list-group-item-danger:focus, a.list-group-item-danger:hover, +button.list-group-item-danger:focus, +button.list-group-item-danger:hover { + color: #a94442; + background-color: #ebcccc; +} + +a.list-group-item-danger.active, +button.list-group-item-danger.active { + color: #fff; + background-color: #a94442; + border-color: #a94442; +} + +.embed-responsive { + position: relative; + display: block; + width: 100%; + padding: 0; + overflow: hidden; +} + +.embed-responsive::before { + display: block; + content: ""; +} + +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} + +.embed-responsive-21by9::before { + padding-top: 42.857143%; +} + +.embed-responsive-16by9::before { + padding-top: 56.25%; +} + +.embed-responsive-4by3::before { + padding-top: 75%; +} + +.embed-responsive-1by1::before { + padding-top: 100%; +} + +.close { + float: right; + font-size: 1.5rem; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + opacity: .5; +} + +.close:focus, .close:hover { + color: #000; + text-decoration: none; + cursor: pointer; + opacity: .75; +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.modal-open { + overflow: hidden; +} + +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: hidden; + outline: 0; +} + +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform 0.3s ease-out; + transition: -webkit-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; + transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out, -o-transform 0.3s ease-out; + -webkit-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); +} + +.modal.show .modal-dialog { + -webkit-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} + +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} + +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} + +.modal-content { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; + outline: 0; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop.show { + opacity: 0.5; +} + +.modal-header { + 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; + padding: 15px; + border-bottom: 1px solid #eceeef; +} + +.modal-title { + margin-bottom: 0; + line-height: 1.5; +} + +.modal-body { + position: relative; + -webkit-box-flex: 1; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + padding: 15px; +} + +.modal-footer { + 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: end; + -webkit-justify-content: flex-end; + -ms-flex-pack: end; + justify-content: flex-end; + padding: 15px; + border-top: 1px solid #eceeef; +} + +.modal-footer > :not(:first-child) { + margin-left: .25rem; +} + +.modal-footer > :not(:last-child) { + margin-right: .25rem; +} + +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} + +@media (min-width: 576px) { + .modal-dialog { + max-width: 500px; + margin: 30px auto; + } + .modal-sm { + max-width: 300px; + } +} + +@media (min-width: 992px) { + .modal-lg { + max-width: 800px; + } +} + +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + font-style: normal; + font-weight: normal; + letter-spacing: normal; + line-break: auto; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + white-space: normal; + word-break: normal; + word-spacing: normal; + font-size: 0.875rem; + word-wrap: break-word; + opacity: 0; +} + +.tooltip.show { + opacity: 0.9; +} + +.tooltip.tooltip-top, .tooltip.bs-tether-element-attached-bottom { + padding: 5px 0; + margin-top: -3px; +} + +.tooltip.tooltip-top .tooltip-inner::before, .tooltip.bs-tether-element-attached-bottom .tooltip-inner::before { + bottom: 0; + left: 50%; + margin-left: -5px; + content: ""; + border-width: 5px 5px 0; + border-top-color: #000; +} + +.tooltip.tooltip-right, .tooltip.bs-tether-element-attached-left { + padding: 0 5px; + margin-left: 3px; +} + +.tooltip.tooltip-right .tooltip-inner::before, .tooltip.bs-tether-element-attached-left .tooltip-inner::before { + top: 50%; + left: 0; + margin-top: -5px; + content: ""; + border-width: 5px 5px 5px 0; + border-right-color: #000; +} + +.tooltip.tooltip-bottom, .tooltip.bs-tether-element-attached-top { + padding: 5px 0; + margin-top: 3px; +} + +.tooltip.tooltip-bottom .tooltip-inner::before, .tooltip.bs-tether-element-attached-top .tooltip-inner::before { + top: 0; + left: 50%; + margin-left: -5px; + content: ""; + border-width: 0 5px 5px; + border-bottom-color: #000; +} + +.tooltip.tooltip-left, .tooltip.bs-tether-element-attached-right { + padding: 0 5px; + margin-left: -3px; +} + +.tooltip.tooltip-left .tooltip-inner::before, .tooltip.bs-tether-element-attached-right .tooltip-inner::before { + top: 50%; + right: 0; + margin-top: -5px; + content: ""; + border-width: 5px 0 5px 5px; + border-left-color: #000; +} + +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 0.25rem; +} + +.tooltip-inner::before { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: block; + max-width: 276px; + padding: 1px; + font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + font-style: normal; + font-weight: normal; + letter-spacing: normal; + line-break: auto; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + white-space: normal; + word-break: normal; + word-spacing: normal; + font-size: 0.875rem; + word-wrap: break-word; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; +} + +.popover.popover-top, .popover.bs-tether-element-attached-bottom { + margin-top: -10px; +} + +.popover.popover-top::before, .popover.popover-top::after, .popover.bs-tether-element-attached-bottom::before, .popover.bs-tether-element-attached-bottom::after { + left: 50%; + border-bottom-width: 0; +} + +.popover.popover-top::before, .popover.bs-tether-element-attached-bottom::before { + bottom: -11px; + margin-left: -11px; + border-top-color: rgba(0, 0, 0, 0.25); +} + +.popover.popover-top::after, .popover.bs-tether-element-attached-bottom::after { + bottom: -10px; + margin-left: -10px; + border-top-color: #fff; +} + +.popover.popover-right, .popover.bs-tether-element-attached-left { + margin-left: 10px; +} + +.popover.popover-right::before, .popover.popover-right::after, .popover.bs-tether-element-attached-left::before, .popover.bs-tether-element-attached-left::after { + top: 50%; + border-left-width: 0; +} + +.popover.popover-right::before, .popover.bs-tether-element-attached-left::before { + left: -11px; + margin-top: -11px; + border-right-color: rgba(0, 0, 0, 0.25); +} + +.popover.popover-right::after, .popover.bs-tether-element-attached-left::after { + left: -10px; + margin-top: -10px; + border-right-color: #fff; +} + +.popover.popover-bottom, .popover.bs-tether-element-attached-top { + margin-top: 10px; +} + +.popover.popover-bottom::before, .popover.popover-bottom::after, .popover.bs-tether-element-attached-top::before, .popover.bs-tether-element-attached-top::after { + left: 50%; + border-top-width: 0; +} + +.popover.popover-bottom::before, .popover.bs-tether-element-attached-top::before { + top: -11px; + margin-left: -11px; + border-bottom-color: rgba(0, 0, 0, 0.25); +} + +.popover.popover-bottom::after, .popover.bs-tether-element-attached-top::after { + top: -10px; + margin-left: -10px; + border-bottom-color: #f7f7f7; +} + +.popover.popover-bottom .popover-title::before, .popover.bs-tether-element-attached-top .popover-title::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: 20px; + margin-left: -10px; + content: ""; + border-bottom: 1px solid #f7f7f7; +} + +.popover.popover-left, .popover.bs-tether-element-attached-right { + margin-left: -10px; +} + +.popover.popover-left::before, .popover.popover-left::after, .popover.bs-tether-element-attached-right::before, .popover.bs-tether-element-attached-right::after { + top: 50%; + border-right-width: 0; +} + +.popover.popover-left::before, .popover.bs-tether-element-attached-right::before { + right: -11px; + margin-top: -11px; + border-left-color: rgba(0, 0, 0, 0.25); +} + +.popover.popover-left::after, .popover.bs-tether-element-attached-right::after { + right: -10px; + margin-top: -10px; + border-left-color: #fff; +} + +.popover-title { + padding: 8px 14px; + margin-bottom: 0; + font-size: 1rem; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-top-right-radius: calc(0.3rem - 1px); + border-top-left-radius: calc(0.3rem - 1px); +} + +.popover-title:empty { + display: none; +} + +.popover-content { + padding: 9px 14px; +} + +.popover::before, +.popover::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover::before { + content: ""; + border-width: 11px; +} + +.popover::after { + content: ""; + border-width: 10px; +} + +.carousel { + position: relative; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-item { + position: relative; + display: none; + width: 100%; +} + +@media (-webkit-transform-3d) { + .carousel-item { + -webkit-transition: -webkit-transform 0.6s ease-in-out; + transition: -webkit-transform 0.6s ease-in-out; + -o-transition: -o-transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out, -o-transform 0.6s ease-in-out; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000px; + perspective: 1000px; + } +} + +@supports ((-webkit-transform: translate3d(0, 0, 0)) or (transform: translate3d(0, 0, 0))) { + .carousel-item { + -webkit-transition: -webkit-transform 0.6s ease-in-out; + transition: -webkit-transform 0.6s ease-in-out; + -o-transition: -o-transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out, -o-transform 0.6s ease-in-out; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000px; + perspective: 1000px; + } +} + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} + +.carousel-item-next, +.carousel-item-prev { + position: absolute; + top: 0; +} + +@media (-webkit-transform-3d) { + .carousel-item-next.carousel-item-left, + .carousel-item-prev.carousel-item-right { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + .carousel-item-next, + .active.carousel-item-right { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + .carousel-item-prev, + .active.carousel-item-left { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +@supports ((-webkit-transform: translate3d(0, 0, 0)) or (transform: translate3d(0, 0, 0))) { + .carousel-item-next.carousel-item-left, + .carousel-item-prev.carousel-item-right { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + .carousel-item-next, + .active.carousel-item-right { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + .carousel-item-prev, + .active.carousel-item-left { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + 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: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + width: 15%; + color: #fff; + text-align: center; + opacity: 0.5; +} + +.carousel-control-prev:focus, .carousel-control-prev:hover, +.carousel-control-next:focus, +.carousel-control-next:hover { + color: #fff; + text-decoration: none; + outline: 0; + opacity: .9; +} + +.carousel-control-prev { + left: 0; +} + +.carousel-control-next { + right: 0; +} + +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: 20px; + height: 20px; + background: transparent no-repeat center center; + -webkit-background-size: 100% 100%; + background-size: 100% 100%; +} + +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M4 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E"); +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M1.5 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E"); +} + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 10px; + left: 0; + z-index: 15; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + padding-left: 0; + margin-right: 15%; + margin-left: 15%; + list-style: none; +} + +.carousel-indicators li { + position: relative; + -webkit-box-flex: 1; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + max-width: 30px; + height: 3px; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: rgba(255, 255, 255, 0.5); +} + +.carousel-indicators li::before { + position: absolute; + top: -10px; + left: 0; + display: inline-block; + width: 100%; + height: 10px; + content: ""; +} + +.carousel-indicators li::after { + position: absolute; + bottom: -10px; + left: 0; + display: inline-block; + width: 100%; + height: 10px; + content: ""; +} + +.carousel-indicators .active { + background-color: #fff; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; +} + +.align-baseline { + vertical-align: baseline !important; +} + +.align-top { + vertical-align: top !important; +} + +.align-middle { + vertical-align: middle !important; +} + +.align-bottom { + vertical-align: bottom !important; +} + +.align-text-bottom { + vertical-align: text-bottom !important; +} + +.align-text-top { + vertical-align: text-top !important; +} + +.bg-faded { + background-color: #f7f7f7; +} + +.bg-primary { + background-color: #0275d8 !important; +} + +a.bg-primary:focus, a.bg-primary:hover { + background-color: #025aa5 !important; +} + +.bg-success { + background-color: #5cb85c !important; +} + +a.bg-success:focus, a.bg-success:hover { + background-color: #449d44 !important; +} + +.bg-info { + background-color: #5bc0de !important; +} + +a.bg-info:focus, a.bg-info:hover { + background-color: #31b0d5 !important; +} + +.bg-warning { + background-color: #f0ad4e !important; +} + +a.bg-warning:focus, a.bg-warning:hover { + background-color: #ec971f !important; +} + +.bg-danger { + background-color: #d9534f !important; +} + +a.bg-danger:focus, a.bg-danger:hover { + background-color: #c9302c !important; +} + +.bg-inverse { + background-color: #292b2c !important; +} + +a.bg-inverse:focus, a.bg-inverse:hover { + background-color: #101112 !important; +} + +.border-0 { + border: 0 !important; +} + +.border-top-0 { + border-top: 0 !important; +} + +.border-right-0 { + border-right: 0 !important; +} + +.border-bottom-0 { + border-bottom: 0 !important; +} + +.border-left-0 { + border-left: 0 !important; +} + +.rounded { + border-radius: 0.25rem; +} + +.rounded-top { + border-top-right-radius: 0.25rem; + border-top-left-radius: 0.25rem; +} + +.rounded-right { + border-bottom-right-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} + +.rounded-bottom { + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} + +.rounded-left { + border-bottom-left-radius: 0.25rem; + border-top-left-radius: 0.25rem; +} + +.rounded-circle { + border-radius: 50%; +} + +.rounded-0 { + border-radius: 0; +} + +.clearfix::after { + display: block; + content: ""; + clear: both; +} + +.d-none { + display: none !important; +} + +.d-inline { + display: inline !important; +} + +.d-inline-block { + display: inline-block !important; +} + +.d-block { + display: block !important; +} + +.d-table { + display: table !important; +} + +.d-table-cell { + display: table-cell !important; +} + +.d-flex { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; +} + +.d-inline-flex { + display: -webkit-inline-box !important; + display: -webkit-inline-flex !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; +} + +@media (min-width: 576px) { + .d-sm-none { + display: none !important; + } + .d-sm-inline { + display: inline !important; + } + .d-sm-inline-block { + display: inline-block !important; + } + .d-sm-block { + display: block !important; + } + .d-sm-table { + display: table !important; + } + .d-sm-table-cell { + display: table-cell !important; + } + .d-sm-flex { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + } + .d-sm-inline-flex { + display: -webkit-inline-box !important; + display: -webkit-inline-flex !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +@media (min-width: 768px) { + .d-md-none { + display: none !important; + } + .d-md-inline { + display: inline !important; + } + .d-md-inline-block { + display: inline-block !important; + } + .d-md-block { + display: block !important; + } + .d-md-table { + display: table !important; + } + .d-md-table-cell { + display: table-cell !important; + } + .d-md-flex { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + } + .d-md-inline-flex { + display: -webkit-inline-box !important; + display: -webkit-inline-flex !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +@media (min-width: 992px) { + .d-lg-none { + display: none !important; + } + .d-lg-inline { + display: inline !important; + } + .d-lg-inline-block { + display: inline-block !important; + } + .d-lg-block { + display: block !important; + } + .d-lg-table { + display: table !important; + } + .d-lg-table-cell { + display: table-cell !important; + } + .d-lg-flex { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + } + .d-lg-inline-flex { + display: -webkit-inline-box !important; + display: -webkit-inline-flex !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +@media (min-width: 1200px) { + .d-xl-none { + display: none !important; + } + .d-xl-inline { + display: inline !important; + } + .d-xl-inline-block { + display: inline-block !important; + } + .d-xl-block { + display: block !important; + } + .d-xl-table { + display: table !important; + } + .d-xl-table-cell { + display: table-cell !important; + } + .d-xl-flex { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + } + .d-xl-inline-flex { + display: -webkit-inline-box !important; + display: -webkit-inline-flex !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +.flex-first { + -webkit-box-ordinal-group: 0; + -webkit-order: -1; + -ms-flex-order: -1; + order: -1; +} + +.flex-last { + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; +} + +.flex-unordered { + -webkit-box-ordinal-group: 1; + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; +} + +.flex-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: row !important; + -ms-flex-direction: row !important; + flex-direction: row !important; +} + +.flex-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: column !important; + -ms-flex-direction: column !important; + flex-direction: column !important; +} + +.flex-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: row-reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; +} + +.flex-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: column-reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; +} + +.flex-wrap { + -webkit-flex-wrap: wrap !important; + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; +} + +.flex-nowrap { + -webkit-flex-wrap: nowrap !important; + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; +} + +.flex-wrap-reverse { + -webkit-flex-wrap: wrap-reverse !important; + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; +} + +.justify-content-start { + -webkit-box-pack: start !important; + -webkit-justify-content: flex-start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; +} + +.justify-content-end { + -webkit-box-pack: end !important; + -webkit-justify-content: flex-end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; +} + +.justify-content-center { + -webkit-box-pack: center !important; + -webkit-justify-content: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; +} + +.justify-content-between { + -webkit-box-pack: justify !important; + -webkit-justify-content: space-between !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; +} + +.justify-content-around { + -webkit-justify-content: space-around !important; + -ms-flex-pack: distribute !important; + justify-content: space-around !important; +} + +.align-items-start { + -webkit-box-align: start !important; + -webkit-align-items: flex-start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; +} + +.align-items-end { + -webkit-box-align: end !important; + -webkit-align-items: flex-end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; +} + +.align-items-center { + -webkit-box-align: center !important; + -webkit-align-items: center !important; + -ms-flex-align: center !important; + align-items: center !important; +} + +.align-items-baseline { + -webkit-box-align: baseline !important; + -webkit-align-items: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; +} + +.align-items-stretch { + -webkit-box-align: stretch !important; + -webkit-align-items: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; +} + +.align-content-start { + -webkit-align-content: flex-start !important; + -ms-flex-line-pack: start !important; + align-content: flex-start !important; +} + +.align-content-end { + -webkit-align-content: flex-end !important; + -ms-flex-line-pack: end !important; + align-content: flex-end !important; +} + +.align-content-center { + -webkit-align-content: center !important; + -ms-flex-line-pack: center !important; + align-content: center !important; +} + +.align-content-between { + -webkit-align-content: space-between !important; + -ms-flex-line-pack: justify !important; + align-content: space-between !important; +} + +.align-content-around { + -webkit-align-content: space-around !important; + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; +} + +.align-content-stretch { + -webkit-align-content: stretch !important; + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; +} + +.align-self-auto { + -webkit-align-self: auto !important; + -ms-flex-item-align: auto !important; + -ms-grid-row-align: auto !important; + align-self: auto !important; +} + +.align-self-start { + -webkit-align-self: flex-start !important; + -ms-flex-item-align: start !important; + align-self: flex-start !important; +} + +.align-self-end { + -webkit-align-self: flex-end !important; + -ms-flex-item-align: end !important; + align-self: flex-end !important; +} + +.align-self-center { + -webkit-align-self: center !important; + -ms-flex-item-align: center !important; + -ms-grid-row-align: center !important; + align-self: center !important; +} + +.align-self-baseline { + -webkit-align-self: baseline !important; + -ms-flex-item-align: baseline !important; + align-self: baseline !important; +} + +.align-self-stretch { + -webkit-align-self: stretch !important; + -ms-flex-item-align: stretch !important; + -ms-grid-row-align: stretch !important; + align-self: stretch !important; +} + +@media (min-width: 576px) { + .flex-sm-first { + -webkit-box-ordinal-group: 0; + -webkit-order: -1; + -ms-flex-order: -1; + order: -1; + } + .flex-sm-last { + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; + } + .flex-sm-unordered { + -webkit-box-ordinal-group: 1; + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + } + .flex-sm-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: row !important; + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-sm-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: column !important; + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-sm-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: row-reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: column-reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-sm-wrap { + -webkit-flex-wrap: wrap !important; + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-sm-nowrap { + -webkit-flex-wrap: nowrap !important; + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-sm-wrap-reverse { + -webkit-flex-wrap: wrap-reverse !important; + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .justify-content-sm-start { + -webkit-box-pack: start !important; + -webkit-justify-content: flex-start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-sm-end { + -webkit-box-pack: end !important; + -webkit-justify-content: flex-end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-sm-center { + -webkit-box-pack: center !important; + -webkit-justify-content: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-sm-between { + -webkit-box-pack: justify !important; + -webkit-justify-content: space-between !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-sm-around { + -webkit-justify-content: space-around !important; + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-sm-start { + -webkit-box-align: start !important; + -webkit-align-items: flex-start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-sm-end { + -webkit-box-align: end !important; + -webkit-align-items: flex-end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-sm-center { + -webkit-box-align: center !important; + -webkit-align-items: center !important; + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-sm-baseline { + -webkit-box-align: baseline !important; + -webkit-align-items: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-sm-stretch { + -webkit-box-align: stretch !important; + -webkit-align-items: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-sm-start { + -webkit-align-content: flex-start !important; + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-sm-end { + -webkit-align-content: flex-end !important; + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-sm-center { + -webkit-align-content: center !important; + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-sm-between { + -webkit-align-content: space-between !important; + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-sm-around { + -webkit-align-content: space-around !important; + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-sm-stretch { + -webkit-align-content: stretch !important; + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-sm-auto { + -webkit-align-self: auto !important; + -ms-flex-item-align: auto !important; + -ms-grid-row-align: auto !important; + align-self: auto !important; + } + .align-self-sm-start { + -webkit-align-self: flex-start !important; + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-sm-end { + -webkit-align-self: flex-end !important; + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-sm-center { + -webkit-align-self: center !important; + -ms-flex-item-align: center !important; + -ms-grid-row-align: center !important; + align-self: center !important; + } + .align-self-sm-baseline { + -webkit-align-self: baseline !important; + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-sm-stretch { + -webkit-align-self: stretch !important; + -ms-flex-item-align: stretch !important; + -ms-grid-row-align: stretch !important; + align-self: stretch !important; + } +} + +@media (min-width: 768px) { + .flex-md-first { + -webkit-box-ordinal-group: 0; + -webkit-order: -1; + -ms-flex-order: -1; + order: -1; + } + .flex-md-last { + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; + } + .flex-md-unordered { + -webkit-box-ordinal-group: 1; + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + } + .flex-md-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: row !important; + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-md-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: column !important; + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-md-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: row-reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-md-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: column-reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-md-wrap { + -webkit-flex-wrap: wrap !important; + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-md-nowrap { + -webkit-flex-wrap: nowrap !important; + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-md-wrap-reverse { + -webkit-flex-wrap: wrap-reverse !important; + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .justify-content-md-start { + -webkit-box-pack: start !important; + -webkit-justify-content: flex-start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-md-end { + -webkit-box-pack: end !important; + -webkit-justify-content: flex-end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-md-center { + -webkit-box-pack: center !important; + -webkit-justify-content: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-md-between { + -webkit-box-pack: justify !important; + -webkit-justify-content: space-between !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-md-around { + -webkit-justify-content: space-around !important; + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-md-start { + -webkit-box-align: start !important; + -webkit-align-items: flex-start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-md-end { + -webkit-box-align: end !important; + -webkit-align-items: flex-end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-md-center { + -webkit-box-align: center !important; + -webkit-align-items: center !important; + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-md-baseline { + -webkit-box-align: baseline !important; + -webkit-align-items: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-md-stretch { + -webkit-box-align: stretch !important; + -webkit-align-items: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-md-start { + -webkit-align-content: flex-start !important; + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-md-end { + -webkit-align-content: flex-end !important; + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-md-center { + -webkit-align-content: center !important; + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-md-between { + -webkit-align-content: space-between !important; + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-md-around { + -webkit-align-content: space-around !important; + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-md-stretch { + -webkit-align-content: stretch !important; + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-md-auto { + -webkit-align-self: auto !important; + -ms-flex-item-align: auto !important; + -ms-grid-row-align: auto !important; + align-self: auto !important; + } + .align-self-md-start { + -webkit-align-self: flex-start !important; + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-md-end { + -webkit-align-self: flex-end !important; + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-md-center { + -webkit-align-self: center !important; + -ms-flex-item-align: center !important; + -ms-grid-row-align: center !important; + align-self: center !important; + } + .align-self-md-baseline { + -webkit-align-self: baseline !important; + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-md-stretch { + -webkit-align-self: stretch !important; + -ms-flex-item-align: stretch !important; + -ms-grid-row-align: stretch !important; + align-self: stretch !important; + } +} + +@media (min-width: 992px) { + .flex-lg-first { + -webkit-box-ordinal-group: 0; + -webkit-order: -1; + -ms-flex-order: -1; + order: -1; + } + .flex-lg-last { + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; + } + .flex-lg-unordered { + -webkit-box-ordinal-group: 1; + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + } + .flex-lg-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: row !important; + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-lg-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: column !important; + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-lg-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: row-reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-lg-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: column-reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-lg-wrap { + -webkit-flex-wrap: wrap !important; + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-lg-nowrap { + -webkit-flex-wrap: nowrap !important; + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-lg-wrap-reverse { + -webkit-flex-wrap: wrap-reverse !important; + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .justify-content-lg-start { + -webkit-box-pack: start !important; + -webkit-justify-content: flex-start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-lg-end { + -webkit-box-pack: end !important; + -webkit-justify-content: flex-end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-lg-center { + -webkit-box-pack: center !important; + -webkit-justify-content: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-lg-between { + -webkit-box-pack: justify !important; + -webkit-justify-content: space-between !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-lg-around { + -webkit-justify-content: space-around !important; + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-lg-start { + -webkit-box-align: start !important; + -webkit-align-items: flex-start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-lg-end { + -webkit-box-align: end !important; + -webkit-align-items: flex-end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-lg-center { + -webkit-box-align: center !important; + -webkit-align-items: center !important; + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-lg-baseline { + -webkit-box-align: baseline !important; + -webkit-align-items: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-lg-stretch { + -webkit-box-align: stretch !important; + -webkit-align-items: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-lg-start { + -webkit-align-content: flex-start !important; + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-lg-end { + -webkit-align-content: flex-end !important; + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-lg-center { + -webkit-align-content: center !important; + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-lg-between { + -webkit-align-content: space-between !important; + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-lg-around { + -webkit-align-content: space-around !important; + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-lg-stretch { + -webkit-align-content: stretch !important; + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-lg-auto { + -webkit-align-self: auto !important; + -ms-flex-item-align: auto !important; + -ms-grid-row-align: auto !important; + align-self: auto !important; + } + .align-self-lg-start { + -webkit-align-self: flex-start !important; + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-lg-end { + -webkit-align-self: flex-end !important; + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-lg-center { + -webkit-align-self: center !important; + -ms-flex-item-align: center !important; + -ms-grid-row-align: center !important; + align-self: center !important; + } + .align-self-lg-baseline { + -webkit-align-self: baseline !important; + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-lg-stretch { + -webkit-align-self: stretch !important; + -ms-flex-item-align: stretch !important; + -ms-grid-row-align: stretch !important; + align-self: stretch !important; + } +} + +@media (min-width: 1200px) { + .flex-xl-first { + -webkit-box-ordinal-group: 0; + -webkit-order: -1; + -ms-flex-order: -1; + order: -1; + } + .flex-xl-last { + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; + } + .flex-xl-unordered { + -webkit-box-ordinal-group: 1; + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + } + .flex-xl-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: row !important; + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-xl-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: column !important; + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-xl-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: row-reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: column-reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-xl-wrap { + -webkit-flex-wrap: wrap !important; + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-xl-nowrap { + -webkit-flex-wrap: nowrap !important; + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-xl-wrap-reverse { + -webkit-flex-wrap: wrap-reverse !important; + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .justify-content-xl-start { + -webkit-box-pack: start !important; + -webkit-justify-content: flex-start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-xl-end { + -webkit-box-pack: end !important; + -webkit-justify-content: flex-end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-xl-center { + -webkit-box-pack: center !important; + -webkit-justify-content: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-xl-between { + -webkit-box-pack: justify !important; + -webkit-justify-content: space-between !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-xl-around { + -webkit-justify-content: space-around !important; + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-xl-start { + -webkit-box-align: start !important; + -webkit-align-items: flex-start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-xl-end { + -webkit-box-align: end !important; + -webkit-align-items: flex-end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-xl-center { + -webkit-box-align: center !important; + -webkit-align-items: center !important; + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-xl-baseline { + -webkit-box-align: baseline !important; + -webkit-align-items: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-xl-stretch { + -webkit-box-align: stretch !important; + -webkit-align-items: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-xl-start { + -webkit-align-content: flex-start !important; + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-xl-end { + -webkit-align-content: flex-end !important; + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-xl-center { + -webkit-align-content: center !important; + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-xl-between { + -webkit-align-content: space-between !important; + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-xl-around { + -webkit-align-content: space-around !important; + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-xl-stretch { + -webkit-align-content: stretch !important; + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-xl-auto { + -webkit-align-self: auto !important; + -ms-flex-item-align: auto !important; + -ms-grid-row-align: auto !important; + align-self: auto !important; + } + .align-self-xl-start { + -webkit-align-self: flex-start !important; + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-xl-end { + -webkit-align-self: flex-end !important; + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-xl-center { + -webkit-align-self: center !important; + -ms-flex-item-align: center !important; + -ms-grid-row-align: center !important; + align-self: center !important; + } + .align-self-xl-baseline { + -webkit-align-self: baseline !important; + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-xl-stretch { + -webkit-align-self: stretch !important; + -ms-flex-item-align: stretch !important; + -ms-grid-row-align: stretch !important; + align-self: stretch !important; + } +} + +.float-left { + float: left !important; +} + +.float-right { + float: right !important; +} + +.float-none { + float: none !important; +} + +@media (min-width: 576px) { + .float-sm-left { + float: left !important; + } + .float-sm-right { + float: right !important; + } + .float-sm-none { + float: none !important; + } +} + +@media (min-width: 768px) { + .float-md-left { + float: left !important; + } + .float-md-right { + float: right !important; + } + .float-md-none { + float: none !important; + } +} + +@media (min-width: 992px) { + .float-lg-left { + float: left !important; + } + .float-lg-right { + float: right !important; + } + .float-lg-none { + float: none !important; + } +} + +@media (min-width: 1200px) { + .float-xl-left { + float: left !important; + } + .float-xl-right { + float: right !important; + } + .float-xl-none { + float: none !important; + } +} + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; +} + +.sticky-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1030; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} + +.sr-only-focusable:active, .sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} + +.w-25 { + width: 25% !important; +} + +.w-50 { + width: 50% !important; +} + +.w-75 { + width: 75% !important; +} + +.w-100 { + width: 100% !important; +} + +.h-25 { + height: 25% !important; +} + +.h-50 { + height: 50% !important; +} + +.h-75 { + height: 75% !important; +} + +.h-100 { + height: 100% !important; +} + +.mw-100 { + max-width: 100% !important; +} + +.mh-100 { + max-height: 100% !important; +} + +.m-0 { + margin: 0 0 !important; +} + +.mt-0 { + margin-top: 0 !important; +} + +.mr-0 { + margin-right: 0 !important; +} + +.mb-0 { + margin-bottom: 0 !important; +} + +.ml-0 { + margin-left: 0 !important; +} + +.mx-0 { + margin-right: 0 !important; + margin-left: 0 !important; +} + +.my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.m-1 { + margin: 0.25rem 0.25rem !important; +} + +.mt-1 { + margin-top: 0.25rem !important; +} + +.mr-1 { + margin-right: 0.25rem !important; +} + +.mb-1 { + margin-bottom: 0.25rem !important; +} + +.ml-1 { + margin-left: 0.25rem !important; +} + +.mx-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; +} + +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem 0.5rem !important; +} + +.mt-2 { + margin-top: 0.5rem !important; +} + +.mr-2 { + margin-right: 0.5rem !important; +} + +.mb-2 { + margin-bottom: 0.5rem !important; +} + +.ml-2 { + margin-left: 0.5rem !important; +} + +.mx-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; +} + +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; +} + +.m-3 { + margin: 1rem 1rem !important; +} + +.mt-3 { + margin-top: 1rem !important; +} + +.mr-3 { + margin-right: 1rem !important; +} + +.mb-3 { + margin-bottom: 1rem !important; +} + +.ml-3 { + margin-left: 1rem !important; +} + +.mx-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; +} + +.my-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; +} + +.m-4 { + margin: 1.5rem 1.5rem !important; +} + +.mt-4 { + margin-top: 1.5rem !important; +} + +.mr-4 { + margin-right: 1.5rem !important; +} + +.mb-4 { + margin-bottom: 1.5rem !important; +} + +.ml-4 { + margin-left: 1.5rem !important; +} + +.mx-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; +} + +.my-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; +} + +.m-5 { + margin: 3rem 3rem !important; +} + +.mt-5 { + margin-top: 3rem !important; +} + +.mr-5 { + margin-right: 3rem !important; +} + +.mb-5 { + margin-bottom: 3rem !important; +} + +.ml-5 { + margin-left: 3rem !important; +} + +.mx-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; +} + +.my-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; +} + +.p-0 { + padding: 0 0 !important; +} + +.pt-0 { + padding-top: 0 !important; +} + +.pr-0 { + padding-right: 0 !important; +} + +.pb-0 { + padding-bottom: 0 !important; +} + +.pl-0 { + padding-left: 0 !important; +} + +.px-0 { + padding-right: 0 !important; + padding-left: 0 !important; +} + +.py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.p-1 { + padding: 0.25rem 0.25rem !important; +} + +.pt-1 { + padding-top: 0.25rem !important; +} + +.pr-1 { + padding-right: 0.25rem !important; +} + +.pb-1 { + padding-bottom: 0.25rem !important; +} + +.pl-1 { + padding-left: 0.25rem !important; +} + +.px-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; +} + +.py-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem 0.5rem !important; +} + +.pt-2 { + padding-top: 0.5rem !important; +} + +.pr-2 { + padding-right: 0.5rem !important; +} + +.pb-2 { + padding-bottom: 0.5rem !important; +} + +.pl-2 { + padding-left: 0.5rem !important; +} + +.px-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; +} + +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; +} + +.p-3 { + padding: 1rem 1rem !important; +} + +.pt-3 { + padding-top: 1rem !important; +} + +.pr-3 { + padding-right: 1rem !important; +} + +.pb-3 { + padding-bottom: 1rem !important; +} + +.pl-3 { + padding-left: 1rem !important; +} + +.px-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; +} + +.py-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} + +.p-4 { + padding: 1.5rem 1.5rem !important; +} + +.pt-4 { + padding-top: 1.5rem !important; +} + +.pr-4 { + padding-right: 1.5rem !important; +} + +.pb-4 { + padding-bottom: 1.5rem !important; +} + +.pl-4 { + padding-left: 1.5rem !important; +} + +.px-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; +} + +.py-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; +} + +.p-5 { + padding: 3rem 3rem !important; +} + +.pt-5 { + padding-top: 3rem !important; +} + +.pr-5 { + padding-right: 3rem !important; +} + +.pb-5 { + padding-bottom: 3rem !important; +} + +.pl-5 { + padding-left: 3rem !important; +} + +.px-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; +} + +.py-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mt-auto { + margin-top: auto !important; +} + +.mr-auto { + margin-right: auto !important; +} + +.mb-auto { + margin-bottom: auto !important; +} + +.ml-auto { + margin-left: auto !important; +} + +.mx-auto { + margin-right: auto !important; + margin-left: auto !important; +} + +.my-auto { + margin-top: auto !important; + margin-bottom: auto !important; +} + +@media (min-width: 576px) { + .m-sm-0 { + margin: 0 0 !important; + } + .mt-sm-0 { + margin-top: 0 !important; + } + .mr-sm-0 { + margin-right: 0 !important; + } + .mb-sm-0 { + margin-bottom: 0 !important; + } + .ml-sm-0 { + margin-left: 0 !important; + } + .mx-sm-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .my-sm-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .m-sm-1 { + margin: 0.25rem 0.25rem !important; + } + .mt-sm-1 { + margin-top: 0.25rem !important; + } + .mr-sm-1 { + margin-right: 0.25rem !important; + } + .mb-sm-1 { + margin-bottom: 0.25rem !important; + } + .ml-sm-1 { + margin-left: 0.25rem !important; + } + .mx-sm-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .my-sm-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem 0.5rem !important; + } + .mt-sm-2 { + margin-top: 0.5rem !important; + } + .mr-sm-2 { + margin-right: 0.5rem !important; + } + .mb-sm-2 { + margin-bottom: 0.5rem !important; + } + .ml-sm-2 { + margin-left: 0.5rem !important; + } + .mx-sm-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .my-sm-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .m-sm-3 { + margin: 1rem 1rem !important; + } + .mt-sm-3 { + margin-top: 1rem !important; + } + .mr-sm-3 { + margin-right: 1rem !important; + } + .mb-sm-3 { + margin-bottom: 1rem !important; + } + .ml-sm-3 { + margin-left: 1rem !important; + } + .mx-sm-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .my-sm-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .m-sm-4 { + margin: 1.5rem 1.5rem !important; + } + .mt-sm-4 { + margin-top: 1.5rem !important; + } + .mr-sm-4 { + margin-right: 1.5rem !important; + } + .mb-sm-4 { + margin-bottom: 1.5rem !important; + } + .ml-sm-4 { + margin-left: 1.5rem !important; + } + .mx-sm-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .my-sm-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .m-sm-5 { + margin: 3rem 3rem !important; + } + .mt-sm-5 { + margin-top: 3rem !important; + } + .mr-sm-5 { + margin-right: 3rem !important; + } + .mb-sm-5 { + margin-bottom: 3rem !important; + } + .ml-sm-5 { + margin-left: 3rem !important; + } + .mx-sm-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .my-sm-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .p-sm-0 { + padding: 0 0 !important; + } + .pt-sm-0 { + padding-top: 0 !important; + } + .pr-sm-0 { + padding-right: 0 !important; + } + .pb-sm-0 { + padding-bottom: 0 !important; + } + .pl-sm-0 { + padding-left: 0 !important; + } + .px-sm-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .py-sm-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .p-sm-1 { + padding: 0.25rem 0.25rem !important; + } + .pt-sm-1 { + padding-top: 0.25rem !important; + } + .pr-sm-1 { + padding-right: 0.25rem !important; + } + .pb-sm-1 { + padding-bottom: 0.25rem !important; + } + .pl-sm-1 { + padding-left: 0.25rem !important; + } + .px-sm-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .py-sm-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem 0.5rem !important; + } + .pt-sm-2 { + padding-top: 0.5rem !important; + } + .pr-sm-2 { + padding-right: 0.5rem !important; + } + .pb-sm-2 { + padding-bottom: 0.5rem !important; + } + .pl-sm-2 { + padding-left: 0.5rem !important; + } + .px-sm-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .py-sm-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .p-sm-3 { + padding: 1rem 1rem !important; + } + .pt-sm-3 { + padding-top: 1rem !important; + } + .pr-sm-3 { + padding-right: 1rem !important; + } + .pb-sm-3 { + padding-bottom: 1rem !important; + } + .pl-sm-3 { + padding-left: 1rem !important; + } + .px-sm-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .py-sm-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .p-sm-4 { + padding: 1.5rem 1.5rem !important; + } + .pt-sm-4 { + padding-top: 1.5rem !important; + } + .pr-sm-4 { + padding-right: 1.5rem !important; + } + .pb-sm-4 { + padding-bottom: 1.5rem !important; + } + .pl-sm-4 { + padding-left: 1.5rem !important; + } + .px-sm-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .py-sm-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .p-sm-5 { + padding: 3rem 3rem !important; + } + .pt-sm-5 { + padding-top: 3rem !important; + } + .pr-sm-5 { + padding-right: 3rem !important; + } + .pb-sm-5 { + padding-bottom: 3rem !important; + } + .pl-sm-5 { + padding-left: 3rem !important; + } + .px-sm-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-sm-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mt-sm-auto { + margin-top: auto !important; + } + .mr-sm-auto { + margin-right: auto !important; + } + .mb-sm-auto { + margin-bottom: auto !important; + } + .ml-sm-auto { + margin-left: auto !important; + } + .mx-sm-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-sm-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } +} + +@media (min-width: 768px) { + .m-md-0 { + margin: 0 0 !important; + } + .mt-md-0 { + margin-top: 0 !important; + } + .mr-md-0 { + margin-right: 0 !important; + } + .mb-md-0 { + margin-bottom: 0 !important; + } + .ml-md-0 { + margin-left: 0 !important; + } + .mx-md-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .my-md-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .m-md-1 { + margin: 0.25rem 0.25rem !important; + } + .mt-md-1 { + margin-top: 0.25rem !important; + } + .mr-md-1 { + margin-right: 0.25rem !important; + } + .mb-md-1 { + margin-bottom: 0.25rem !important; + } + .ml-md-1 { + margin-left: 0.25rem !important; + } + .mx-md-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .my-md-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem 0.5rem !important; + } + .mt-md-2 { + margin-top: 0.5rem !important; + } + .mr-md-2 { + margin-right: 0.5rem !important; + } + .mb-md-2 { + margin-bottom: 0.5rem !important; + } + .ml-md-2 { + margin-left: 0.5rem !important; + } + .mx-md-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .my-md-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .m-md-3 { + margin: 1rem 1rem !important; + } + .mt-md-3 { + margin-top: 1rem !important; + } + .mr-md-3 { + margin-right: 1rem !important; + } + .mb-md-3 { + margin-bottom: 1rem !important; + } + .ml-md-3 { + margin-left: 1rem !important; + } + .mx-md-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .my-md-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .m-md-4 { + margin: 1.5rem 1.5rem !important; + } + .mt-md-4 { + margin-top: 1.5rem !important; + } + .mr-md-4 { + margin-right: 1.5rem !important; + } + .mb-md-4 { + margin-bottom: 1.5rem !important; + } + .ml-md-4 { + margin-left: 1.5rem !important; + } + .mx-md-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .my-md-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .m-md-5 { + margin: 3rem 3rem !important; + } + .mt-md-5 { + margin-top: 3rem !important; + } + .mr-md-5 { + margin-right: 3rem !important; + } + .mb-md-5 { + margin-bottom: 3rem !important; + } + .ml-md-5 { + margin-left: 3rem !important; + } + .mx-md-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .my-md-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .p-md-0 { + padding: 0 0 !important; + } + .pt-md-0 { + padding-top: 0 !important; + } + .pr-md-0 { + padding-right: 0 !important; + } + .pb-md-0 { + padding-bottom: 0 !important; + } + .pl-md-0 { + padding-left: 0 !important; + } + .px-md-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .py-md-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .p-md-1 { + padding: 0.25rem 0.25rem !important; + } + .pt-md-1 { + padding-top: 0.25rem !important; + } + .pr-md-1 { + padding-right: 0.25rem !important; + } + .pb-md-1 { + padding-bottom: 0.25rem !important; + } + .pl-md-1 { + padding-left: 0.25rem !important; + } + .px-md-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .py-md-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem 0.5rem !important; + } + .pt-md-2 { + padding-top: 0.5rem !important; + } + .pr-md-2 { + padding-right: 0.5rem !important; + } + .pb-md-2 { + padding-bottom: 0.5rem !important; + } + .pl-md-2 { + padding-left: 0.5rem !important; + } + .px-md-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .py-md-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .p-md-3 { + padding: 1rem 1rem !important; + } + .pt-md-3 { + padding-top: 1rem !important; + } + .pr-md-3 { + padding-right: 1rem !important; + } + .pb-md-3 { + padding-bottom: 1rem !important; + } + .pl-md-3 { + padding-left: 1rem !important; + } + .px-md-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .py-md-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .p-md-4 { + padding: 1.5rem 1.5rem !important; + } + .pt-md-4 { + padding-top: 1.5rem !important; + } + .pr-md-4 { + padding-right: 1.5rem !important; + } + .pb-md-4 { + padding-bottom: 1.5rem !important; + } + .pl-md-4 { + padding-left: 1.5rem !important; + } + .px-md-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .py-md-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .p-md-5 { + padding: 3rem 3rem !important; + } + .pt-md-5 { + padding-top: 3rem !important; + } + .pr-md-5 { + padding-right: 3rem !important; + } + .pb-md-5 { + padding-bottom: 3rem !important; + } + .pl-md-5 { + padding-left: 3rem !important; + } + .px-md-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-md-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .m-md-auto { + margin: auto !important; + } + .mt-md-auto { + margin-top: auto !important; + } + .mr-md-auto { + margin-right: auto !important; + } + .mb-md-auto { + margin-bottom: auto !important; + } + .ml-md-auto { + margin-left: auto !important; + } + .mx-md-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-md-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } +} + +@media (min-width: 992px) { + .m-lg-0 { + margin: 0 0 !important; + } + .mt-lg-0 { + margin-top: 0 !important; + } + .mr-lg-0 { + margin-right: 0 !important; + } + .mb-lg-0 { + margin-bottom: 0 !important; + } + .ml-lg-0 { + margin-left: 0 !important; + } + .mx-lg-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .my-lg-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .m-lg-1 { + margin: 0.25rem 0.25rem !important; + } + .mt-lg-1 { + margin-top: 0.25rem !important; + } + .mr-lg-1 { + margin-right: 0.25rem !important; + } + .mb-lg-1 { + margin-bottom: 0.25rem !important; + } + .ml-lg-1 { + margin-left: 0.25rem !important; + } + .mx-lg-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .my-lg-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem 0.5rem !important; + } + .mt-lg-2 { + margin-top: 0.5rem !important; + } + .mr-lg-2 { + margin-right: 0.5rem !important; + } + .mb-lg-2 { + margin-bottom: 0.5rem !important; + } + .ml-lg-2 { + margin-left: 0.5rem !important; + } + .mx-lg-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .my-lg-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .m-lg-3 { + margin: 1rem 1rem !important; + } + .mt-lg-3 { + margin-top: 1rem !important; + } + .mr-lg-3 { + margin-right: 1rem !important; + } + .mb-lg-3 { + margin-bottom: 1rem !important; + } + .ml-lg-3 { + margin-left: 1rem !important; + } + .mx-lg-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .my-lg-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .m-lg-4 { + margin: 1.5rem 1.5rem !important; + } + .mt-lg-4 { + margin-top: 1.5rem !important; + } + .mr-lg-4 { + margin-right: 1.5rem !important; + } + .mb-lg-4 { + margin-bottom: 1.5rem !important; + } + .ml-lg-4 { + margin-left: 1.5rem !important; + } + .mx-lg-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .my-lg-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .m-lg-5 { + margin: 3rem 3rem !important; + } + .mt-lg-5 { + margin-top: 3rem !important; + } + .mr-lg-5 { + margin-right: 3rem !important; + } + .mb-lg-5 { + margin-bottom: 3rem !important; + } + .ml-lg-5 { + margin-left: 3rem !important; + } + .mx-lg-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .my-lg-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .p-lg-0 { + padding: 0 0 !important; + } + .pt-lg-0 { + padding-top: 0 !important; + } + .pr-lg-0 { + padding-right: 0 !important; + } + .pb-lg-0 { + padding-bottom: 0 !important; + } + .pl-lg-0 { + padding-left: 0 !important; + } + .px-lg-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .py-lg-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .p-lg-1 { + padding: 0.25rem 0.25rem !important; + } + .pt-lg-1 { + padding-top: 0.25rem !important; + } + .pr-lg-1 { + padding-right: 0.25rem !important; + } + .pb-lg-1 { + padding-bottom: 0.25rem !important; + } + .pl-lg-1 { + padding-left: 0.25rem !important; + } + .px-lg-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .py-lg-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem 0.5rem !important; + } + .pt-lg-2 { + padding-top: 0.5rem !important; + } + .pr-lg-2 { + padding-right: 0.5rem !important; + } + .pb-lg-2 { + padding-bottom: 0.5rem !important; + } + .pl-lg-2 { + padding-left: 0.5rem !important; + } + .px-lg-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .py-lg-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .p-lg-3 { + padding: 1rem 1rem !important; + } + .pt-lg-3 { + padding-top: 1rem !important; + } + .pr-lg-3 { + padding-right: 1rem !important; + } + .pb-lg-3 { + padding-bottom: 1rem !important; + } + .pl-lg-3 { + padding-left: 1rem !important; + } + .px-lg-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .py-lg-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .p-lg-4 { + padding: 1.5rem 1.5rem !important; + } + .pt-lg-4 { + padding-top: 1.5rem !important; + } + .pr-lg-4 { + padding-right: 1.5rem !important; + } + .pb-lg-4 { + padding-bottom: 1.5rem !important; + } + .pl-lg-4 { + padding-left: 1.5rem !important; + } + .px-lg-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .py-lg-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .p-lg-5 { + padding: 3rem 3rem !important; + } + .pt-lg-5 { + padding-top: 3rem !important; + } + .pr-lg-5 { + padding-right: 3rem !important; + } + .pb-lg-5 { + padding-bottom: 3rem !important; + } + .pl-lg-5 { + padding-left: 3rem !important; + } + .px-lg-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-lg-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .m-lg-auto { + margin: auto !important; + } + .mt-lg-auto { + margin-top: auto !important; + } + .mr-lg-auto { + margin-right: auto !important; + } + .mb-lg-auto { + margin-bottom: auto !important; + } + .ml-lg-auto { + margin-left: auto !important; + } + .mx-lg-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-lg-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } +} + +@media (min-width: 1200px) { + .m-xl-0 { + margin: 0 0 !important; + } + .mt-xl-0 { + margin-top: 0 !important; + } + .mr-xl-0 { + margin-right: 0 !important; + } + .mb-xl-0 { + margin-bottom: 0 !important; + } + .ml-xl-0 { + margin-left: 0 !important; + } + .mx-xl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .my-xl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .m-xl-1 { + margin: 0.25rem 0.25rem !important; + } + .mt-xl-1 { + margin-top: 0.25rem !important; + } + .mr-xl-1 { + margin-right: 0.25rem !important; + } + .mb-xl-1 { + margin-bottom: 0.25rem !important; + } + .ml-xl-1 { + margin-left: 0.25rem !important; + } + .mx-xl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .my-xl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem 0.5rem !important; + } + .mt-xl-2 { + margin-top: 0.5rem !important; + } + .mr-xl-2 { + margin-right: 0.5rem !important; + } + .mb-xl-2 { + margin-bottom: 0.5rem !important; + } + .ml-xl-2 { + margin-left: 0.5rem !important; + } + .mx-xl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .my-xl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .m-xl-3 { + margin: 1rem 1rem !important; + } + .mt-xl-3 { + margin-top: 1rem !important; + } + .mr-xl-3 { + margin-right: 1rem !important; + } + .mb-xl-3 { + margin-bottom: 1rem !important; + } + .ml-xl-3 { + margin-left: 1rem !important; + } + .mx-xl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .my-xl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .m-xl-4 { + margin: 1.5rem 1.5rem !important; + } + .mt-xl-4 { + margin-top: 1.5rem !important; + } + .mr-xl-4 { + margin-right: 1.5rem !important; + } + .mb-xl-4 { + margin-bottom: 1.5rem !important; + } + .ml-xl-4 { + margin-left: 1.5rem !important; + } + .mx-xl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .my-xl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .m-xl-5 { + margin: 3rem 3rem !important; + } + .mt-xl-5 { + margin-top: 3rem !important; + } + .mr-xl-5 { + margin-right: 3rem !important; + } + .mb-xl-5 { + margin-bottom: 3rem !important; + } + .ml-xl-5 { + margin-left: 3rem !important; + } + .mx-xl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .my-xl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .p-xl-0 { + padding: 0 0 !important; + } + .pt-xl-0 { + padding-top: 0 !important; + } + .pr-xl-0 { + padding-right: 0 !important; + } + .pb-xl-0 { + padding-bottom: 0 !important; + } + .pl-xl-0 { + padding-left: 0 !important; + } + .px-xl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .py-xl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .p-xl-1 { + padding: 0.25rem 0.25rem !important; + } + .pt-xl-1 { + padding-top: 0.25rem !important; + } + .pr-xl-1 { + padding-right: 0.25rem !important; + } + .pb-xl-1 { + padding-bottom: 0.25rem !important; + } + .pl-xl-1 { + padding-left: 0.25rem !important; + } + .px-xl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .py-xl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem 0.5rem !important; + } + .pt-xl-2 { + padding-top: 0.5rem !important; + } + .pr-xl-2 { + padding-right: 0.5rem !important; + } + .pb-xl-2 { + padding-bottom: 0.5rem !important; + } + .pl-xl-2 { + padding-left: 0.5rem !important; + } + .px-xl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .py-xl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .p-xl-3 { + padding: 1rem 1rem !important; + } + .pt-xl-3 { + padding-top: 1rem !important; + } + .pr-xl-3 { + padding-right: 1rem !important; + } + .pb-xl-3 { + padding-bottom: 1rem !important; + } + .pl-xl-3 { + padding-left: 1rem !important; + } + .px-xl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .py-xl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .p-xl-4 { + padding: 1.5rem 1.5rem !important; + } + .pt-xl-4 { + padding-top: 1.5rem !important; + } + .pr-xl-4 { + padding-right: 1.5rem !important; + } + .pb-xl-4 { + padding-bottom: 1.5rem !important; + } + .pl-xl-4 { + padding-left: 1.5rem !important; + } + .px-xl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .py-xl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .p-xl-5 { + padding: 3rem 3rem !important; + } + .pt-xl-5 { + padding-top: 3rem !important; + } + .pr-xl-5 { + padding-right: 3rem !important; + } + .pb-xl-5 { + padding-bottom: 3rem !important; + } + .pl-xl-5 { + padding-left: 3rem !important; + } + .px-xl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-xl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mt-xl-auto { + margin-top: auto !important; + } + .mr-xl-auto { + margin-right: auto !important; + } + .mb-xl-auto { + margin-bottom: auto !important; + } + .ml-xl-auto { + margin-left: auto !important; + } + .mx-xl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } +} + +.text-justify { + text-align: justify !important; +} + +.text-nowrap { + white-space: nowrap !important; +} + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.text-left { + text-align: left !important; +} + +.text-right { + text-align: right !important; +} + +.text-center { + text-align: center !important; +} + +@media (min-width: 576px) { + .text-sm-left { + text-align: left !important; + } + .text-sm-right { + text-align: right !important; + } + .text-sm-center { + text-align: center !important; + } +} + +@media (min-width: 768px) { + .text-md-left { + text-align: left !important; + } + .text-md-right { + text-align: right !important; + } + .text-md-center { + text-align: center !important; + } +} + +@media (min-width: 992px) { + .text-lg-left { + text-align: left !important; + } + .text-lg-right { + text-align: right !important; + } + .text-lg-center { + text-align: center !important; + } +} + +@media (min-width: 1200px) { + .text-xl-left { + text-align: left !important; + } + .text-xl-right { + text-align: right !important; + } + .text-xl-center { + text-align: center !important; + } +} + +.text-lowercase { + text-transform: lowercase !important; +} + +.text-uppercase { + text-transform: uppercase !important; +} + +.text-capitalize { + text-transform: capitalize !important; +} + +.font-weight-normal { + font-weight: normal; +} + +.font-weight-bold { + font-weight: bold; +} + +.font-italic { + font-style: italic; +} + +.text-white { + color: #fff !important; +} + +.text-muted { + color: #636c72 !important; +} + +a.text-muted:focus, a.text-muted:hover { + color: #4b5257 !important; +} + +.text-primary { + color: #0275d8 !important; +} + +a.text-primary:focus, a.text-primary:hover { + color: #025aa5 !important; +} + +.text-success { + color: #5cb85c !important; +} + +a.text-success:focus, a.text-success:hover { + color: #449d44 !important; +} + +.text-info { + color: #5bc0de !important; +} + +a.text-info:focus, a.text-info:hover { + color: #31b0d5 !important; +} + +.text-warning { + color: #f0ad4e !important; +} + +a.text-warning:focus, a.text-warning:hover { + color: #ec971f !important; +} + +.text-danger { + color: #d9534f !important; +} + +a.text-danger:focus, a.text-danger:hover { + color: #c9302c !important; +} + +.text-gray-dark { + color: #292b2c !important; +} + +a.text-gray-dark:focus, a.text-gray-dark:hover { + color: #101112 !important; +} + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.invisible { + visibility: hidden !important; +} + +.hidden-xs-up { + display: none !important; +} + +@media (max-width: 575px) { + .hidden-xs-down { + display: none !important; + } +} + +@media (min-width: 576px) { + .hidden-sm-up { + display: none !important; + } +} + +@media (max-width: 767px) { + .hidden-sm-down { + display: none !important; + } +} + +@media (min-width: 768px) { + .hidden-md-up { + display: none !important; + } +} + +@media (max-width: 991px) { + .hidden-md-down { + display: none !important; + } +} + +@media (min-width: 992px) { + .hidden-lg-up { + display: none !important; + } +} + +@media (max-width: 1199px) { + .hidden-lg-down { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-xl-up { + display: none !important; + } +} + +.hidden-xl-down { + display: none !important; +} + +.visible-print-block { + display: none !important; +} + +@media print { + .visible-print-block { + display: block !important; + } +} + +.visible-print-inline { + display: none !important; +} + +@media print { + .visible-print-inline { + display: inline !important; + } +} + +.visible-print-inline-block { + display: none !important; +} + +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} + +@media print { + .hidden-print { + display: none !important; + } +} +/*# sourceMappingURL=bootstrap.css.map */ \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap.css.map b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap.css.map new file mode 100644 index 0000000..09b7cf1 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_normalize.scss","bootstrap.css","../../scss/_print.scss","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_mixins.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_tables.scss","../../scss/mixins/_table-row.scss","../../scss/_forms.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_nav-divider.scss","../../scss/_button-group.scss","../../scss/_input-group.scss","../../scss/_custom-forms.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/mixins/_cards.scss","../../scss/_breadcrumb.scss","../../scss/mixins/_clearfix.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/mixins/_badge.scss","../../scss/_jumbotron.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/mixins/_gradients.scss","../../scss/_media.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_responsive-embed.scss","../../scss/_close.scss","../../scss/_modal.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_transforms.scss","../../scss/utilities/_align.scss","../../scss/utilities/_background.scss","../../scss/mixins/_background-variant.scss","../../scss/utilities/_borders.scss","../../scss/utilities/_display.scss","../../scss/utilities/_flex.scss","../../scss/utilities/_float.scss","../../scss/mixins/_float.scss","../../scss/utilities/_position.scss","../../scss/utilities/_screenreaders.scss","../../scss/mixins/_screen-reader.scss","../../scss/utilities/_sizing.scss","../../scss/utilities/_spacing.scss","../../scss/utilities/_text.scss","../../scss/mixins/_text-truncate.scss","../../scss/mixins/_text-emphasis.scss","../../scss/mixins/_text-hide.scss","../../scss/utilities/_visibility.scss","../../scss/mixins/_visibility.scss"],"names":[],"mappings":"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CE,uBR25BiC;EQ15BjC,eRy5B+B;EQx5B/B,YRkEW;EQjEX,0BR6EiC;EMtG/B,sBN8T0B;CQ3R7B;;AAdD;EASI,WAAU;EACV,gBAAe;EACf,kBR6NmB;CQ3NpB;;AAIH;EACE,eAAc;EACd,cAAa;EACb,oBAAmB;EACnB,eRs4B+B;EQr4B/B,eR2DiC;CQjDlC;;AAfD;EASI,WAAU;EACV,mBAAkB;EAClB,eAAc;EACd,8BAA6B;EAC7B,iBAAgB;CACjB;;AAIH;EACE,kBRm4BiC;EQl4BjC,mBAAkB;CACnB;;AC1DC;ECAA,mBAAkB;EAClB,kBAAiB;EACjB,mBAAkB;EAKd,oBAA4B;EAC5B,mBAA4B;CDL/B;;AEgDC;EFnDF;ICOI,oBAA4B;IAC5B,mBAA4B;GDL/B;CZgvBF;;AchsBG;EFnDF;ICOI,oBAA4B;IAC5B,mBAA4B;GDL/B;CZuvBF;;AcvsBG;EFnDF;ICOI,oBAA4B;IAC5B,mBAA4B;GDL/B;CZ8vBF;;Ac9sBG;EFnDF;ICOI,oBAA4B;IAC5B,mBAA4B;GDL/B;CZqwBF;;AcrtBG;EFnDF;ICkBI,aVqMK;IUpML,gBAAe;GDhBlB;CZ4wBF;;Ac5tBG;EFnDF;ICkBI,aVsMK;IUrML,gBAAe;GDhBlB;CZmxBF;;AcnuBG;EFnDF;ICkBI,aVuMK;IUtML,gBAAe;GDhBlB;CZ0xBF;;Ac1uBG;EFnDF;ICkBI,cVwMM;IUvMN,gBAAe;GDhBlB;CZiyBF;;AYxxBC;ECZA,mBAAkB;EAClB,kBAAiB;EACjB,mBAAkB;EAKd,oBAA4B;EAC5B,mBAA4B;CDM/B;;AEqCC;EFvCF;ICLI,oBAA4B;IAC5B,mBAA4B;GDM/B;CZqyBF;;AchwBG;EFvCF;ICLI,oBAA4B;IAC5B,mBAA4B;GDM/B;CZ4yBF;;AcvwBG;EFvCF;ICLI,oBAA4B;IAC5B,mBAA4B;GDM/B;CZmzBF;;Ac9wBG;EFvCF;ICLI,oBAA4B;IAC5B,mBAA4B;GDM/B;CZ0zBF;;AYlzBC;ECaA,qBAAa;EAAb,sBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,wBAAe;MAAf,oBAAe;UAAf,gBAAe;EAKX,oBAA4B;EAC5B,mBAA4B;CDlB/B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EY;EkBlEZ,sBlBkEY;CkBjEb;;AAED;;EAGE,YlBsDS;EkBrDT,0BAnC0C;EAoC1C,uBAAsB;EACtB,sBApCkC;CAsCnC;;ADYH;EChDE,elBiGiC;EkBhGjC,uBlBoFW;EkBnFX,mBlB4WmC;CiB5TpC;;AhBjDG;EiBMA,elB0F+B;EkBzF/B,0BAX0C;EAY1C,sBAXkC;CjBGb;;AiBUvB;EAMI,uDlB6V+B;UkB7V/B,+ClB6V+B;CkB3VlC;;AAGD;EAEE,uBlB6DS;EkB5DT,mBlBqViC;CkBpVlC;;AAED;;EAGE,elBkE+B;EkBjE/B,0BAnC0C;EAoC1C,uBAAsB;EACtB,sBApCkC;CAsCnC;;ADeH;ECnDE,YlBqFW;EkBpFX,0BlB2Fc;EkB1Fd,sBlB0Fc;CiBvCf;;AhBpDG;EiBMA,YlB8ES;EkB7ET,0BAX0C;EAY1C,sBAXkC;CjBGb;;AiBUvB;EAMI,sDlB2EU;UkB3EV,8ClB2EU;CkBzEb;;AAGD;EAEE,0BlBoEY;EkBnEZ,sBlBmEY;CkBlEb;;AAED;;EAGE,YlBsDS;EkBrDT,0BAnC0C;EAoC1C,uBAAsB;EACtB,sBApCkC;CAsCnC;;ADkBH;ECtDE,YlBqFW;EkBpFX,0BlByFc;EkBxFd,sBlBwFc;CiBlCf;;AhBvDG;EiBMA,YlB8ES;EkB7ET,0BAX0C;EAY1C,sBAXkC;CjBGb;;AiBUvB;EAMI,qDlByEU;UkBzEV,6ClByEU;CkBvEb;;AAGD;EAEE,0BlBkEY;EkBjEZ,sBlBiEY;CkBhEb;;AAED;;EAGE,YlBsDS;EkBrDT,0BAnC0C;EAoC1C,uBAAsB;EACtB,sBApCkC;CAsCnC;;ADqBH;ECzDE,YlBqFW;EkBpFX,0BlBuFc;EkBtFd,sBlBsFc;CiB7Bf;;AhB1DG;EiBMA,YlB8ES;EkB7ET,0BAX0C;EAY1C,sBAXkC;CjBGb;;AiBUvB;EAMI,sDlBuEU;UkBvEV,8ClBuEU;CkBrEb;;AAGD;EAEE,0BlBgEY;EkB/DZ,sBlB+DY;CkB9Db;;AAED;;EAGE,YlBsDS;EkBrDT,0BAnC0C;EAoC1C,uBAAsB;EACtB,sBApCkC;CAsCnC;;ADwBH;EC5DE,YlBqFW;EkBpFX,0BlBsFc;EkBrFd,sBlBqFc;CiBzBf;;AhB7DG;EiBMA,YlB8ES;EkB7ET,0BAX0C;EAY1C,sBAXkC;CjBGb;;AiBUvB;EAMI,qDlBsEU;UkBtEV,6ClBsEU;CkBpEb;;AAGD;EAEE,0BlB+DY;EkB9DZ,sBlB8DY;CkB7Db;;AAED;;EAGE,YlBsDS;EkBrDT,0BAnC0C;EAoC1C,uBAAsB;EACtB,sBApCkC;CAsCnC;;AD6BH;ECzBE,elBmDc;EkBlDd,uBAAsB;EACtB,8BAA6B;EAC7B,sBlBgDc;CiBxBf;;AhBlEG;EiB6CA,YAPoD;EAQpD,0BlB4CY;EkB3CZ,sBlB2CY;CC1FS;;AiBkDvB;EAEE,qDlBsCY;UkBtCZ,6ClBsCY;CkBrCb;;AAED;EAEE,elBiCY;EkBhCZ,8BAA6B;CAC9B;;AAED;;EAGE,YA1BoD;EA2BpD,0BlByBY;EkBxBZ,sBlBwBY;CkBvBb;;ADAH;EC5BE,YlBsUmC;EkBrUnC,uBAAsB;EACtB,8BAA6B;EAC7B,mBlBmUmC;CiBxSpC;;AhBrEG;EiB6CA,YAPoD;EAQpD,uBlB+TiC;EkB9TjC,mBlB8TiC;CC7WZ;;AiBkDvB;EAEE,uDlByTiC;UkBzTjC,+ClByTiC;CkBxTlC;;AAED;EAEE,YlBoTiC;EkBnTjC,8BAA6B;CAC9B;;AAED;;EAGE,YA1BoD;EA2BpD,uBlB4SiC;EkB3SjC,mBlB2SiC;CkB1SlC;;ADGH;EC/BE,elBoDc;EkBnDd,uBAAsB;EACtB,8BAA6B;EAC7B,sBlBiDc;CiBnBf;;AhBxEG;EiB6CA,YAPoD;EAQpD,0BlB6CY;EkB5CZ,sBlB4CY;CC3FS;;AiBkDvB;EAEE,sDlBuCY;UkBvCZ,8ClBuCY;CkBtCb;;AAED;EAEE,elBkCY;EkBjCZ,8BAA6B;CAC9B;;AAED;;EAGE,YA1BoD;EA2BpD,0BlB0BY;EkBzBZ,sBlByBY;CkBxBb;;ADMH;EClCE,elBkDc;EkBjDd,uBAAsB;EACtB,8BAA6B;EAC7B,sBlB+Cc;CiBdf;;AhB3EG;EiB6CA,YAPoD;EAQpD,0BlB2CY;EkB1CZ,sBlB0CY;CCzFS;;AiBkDvB;EAEE,qDlBqCY;UkBrCZ,6ClBqCY;CkBpCb;;AAED;EAEE,elBgCY;EkB/BZ,8BAA6B;CAC9B;;AAED;;EAGE,YA1BoD;EA2BpD,0BlBwBY;EkBvBZ,sBlBuBY;CkBtBb;;ADSH;ECrCE,elBgDc;EkB/Cd,uBAAsB;EACtB,8BAA6B;EAC7B,sBlB6Cc;CiBTf;;AhB9EG;EiB6CA,YAPoD;EAQpD,0BlByCY;EkBxCZ,sBlBwCY;CCvFS;;AiBkDvB;EAEE,sDlBmCY;UkBnCZ,8ClBmCY;CkBlCb;;AAED;EAEE,elB8BY;EkB7BZ,8BAA6B;CAC9B;;AAED;;EAGE,YA1BoD;EA2BpD,0BlBsBY;EkBrBZ,sBlBqBY;CkBpBb;;ADYH;ECxCE,elB+Cc;EkB9Cd,uBAAsB;EACtB,8BAA6B;EAC7B,sBlB4Cc;CiBLf;;AhBjFG;EiB6CA,YAPoD;EAQpD,0BlBwCY;EkBvCZ,sBlBuCY;CCtFS;;AiBkDvB;EAEE,qDlBkCY;UkBlCZ,6ClBkCY;CkBjCb;;AAED;EAEE,elB6BY;EkB5BZ,8BAA6B;CAC9B;;AAED;;EAGE,YA1BoD;EA2BpD,0BlBqBY;EkBpBZ,sBlBoBY;CkBnBb;;ADsBH;EACE,oBjB4JyB;EiB3JzB,ejBDc;EiBEd,iBAAgB;CA6BjB;;AAhCD;EASI,8BAA6B;CAE9B;;AAXH;EAeI,0BAAyB;CAC1B;;AhBzGC;EgB2GA,0BAAyB;ChB3GJ;;AAUrB;EgBoGA,ejB2E4C;EiB1E5C,2BjB2E6B;EiB1E7B,8BAA6B;ChBnG5B;;AgB4EL;EA0BI,ejBjB+B;CiBsBhC;;AhB9GC;EgB4GE,sBAAqB;ChBzGtB;;AgBmHL;ECxDE,wBlB4TqC;EkB3TrC,mBlByKsB;EMxPpB,sBN6T0B;CiBpL7B;;AACD;EC5DE,wBlByToC;EkBxTpC,oBlB0KsB;EMzPpB,sBN8T0B;CiBjL7B;;AAOD;EACE,eAAc;EACd,YAAW;CACZ;;AAGD;EACE,mBjBkPoC;CiBjPrC;;AAGD;;;EAII,YAAW;CACZ;;AExKH;EACE,WAAU;EZcN,yCP2TsC;EO3TtC,oCP2TsC;EO3TtC,iCP2TsC;CmBnU3C;;AAPD;EAKI,WAAU;CACX;;AAGH;EACE,cAAa;CAId;;AALD;EAGI,eAAc;CACf;;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S2B;C+BnT1B;;AALL;EzBSI,oCN+S2B;EM9S3B,iCN8S2B;C+B9S1B;;AAVL;EAcI,WAAU;EACV,Y/BuES;E+BtET,0B/B4EY;E+B3EZ,sB/B2EY;C+B1Eb;;AAlBH;EAqBI,e/B+E+B;E+B9E/B,qBAAoB;EACpB,oB/BibwC;E+BhbxC,uB/B8DS;E+B7DT,mB/BmoBuC;C+BloBxC;;AAGH;EACE,mBAAkB;EAClB,eAAc;EACd,wB/BqmB0C;E+BpmB1C,kBAAiB;EACjB,kB/BymBwC;E+BxmBxC,e/ByDc;E+BxDd,uB/BkDW;E+BjDX,uB/B2mByC;C+BnmB1C;;A9BjCG;E8B4BA,e/BmJ4C;E+BlJ5C,sBAAqB;EACrB,0B/B2D+B;E+B1D/B,mB/BymBuC;CCroBtC;;A+BpBH;EACE,wBhC6oBwC;EgC5oBxC,mBhCuPoB;CgCtPrB;;AAIG;E1BqBF,kCNkS0B;EMjS1B,+BNiS0B;CgCrTvB;;AAGD;E1BEF,mCNgT0B;EM/S1B,gCN+S0B;CgChTvB;;AAdL;EACE,wBhC2oBuC;EgC1oBvC,oBhCwPoB;CgCvPrB;;AAIG;E1BqBF,kCNmS0B;EMlS1B,+BNkS0B;CgCtTvB;;AAGD;E1BEF,mCNiT0B;EMhT1B,gCNgT0B;CgCjTvB;;ACZP;EACE,sBAAqB;EACrB,sBjCowBgC;EiCnwBhC,ejCiwB+B;EiChwB/B,kBjCwPqB;EiCvPrB,eAAc;EACd,YjCmFW;EiClFX,mBAAkB;EAClB,oBAAmB;EACnB,yBAAwB;E3BVtB,uBN4T2B;CiC3S9B;;AAhBD;EAcI,cAAa;CACd;;AAIH;EACE,mBAAkB;EAClB,UAAS;CACV;;AhCPG;EgCaA,YjC6DS;EiC5DT,sBAAqB;EACrB,gBAAe;ChCZd;;AgCqBL;EACE,qBjCiuBgC;EiChuBhC,oBjCguBgC;EM1wB9B,qBN6wB+B;CiCjuBlC;;AAMD;ECnDE,0BlCyGiC;CiCpDlC;;AhCpCG;EiCbE,0BAAqC;CjCgBtC;;AgCmCL;ECvDE,0BlCiGc;CiCxCf;;AhCxCG;EiCbE,0BAAqC;CjCgBtC;;AgCuCL;EC3DE,0BlCgGc;CiCnCf;;AhC5CG;EiCbE,0BAAqC;CjCgBtC;;AgC2CL;EC/DE,0BlCkGc;CiCjCf;;AhChDG;EiCbE,0BAAqC;CjCgBtC;;AgC+CL;ECnEE,0BlC8Fc;CiCzBf;;AhCpDG;EiCbE,0BAAqC;CjCgBtC;;AgCmDL;ECvEE,0BlC6Fc;CiCpBf;;AhCxDG;EiCbE,0BAAqC;CjCgBtC;;AkCvBL;EACE,mBAAoD;EACpD,oBnCuqBmC;EmCtqBnC,0BnC0GiC;EMzG/B,sBN6T0B;CmCxT7B;;AxB+CG;EwBxDJ;IAOI,mBnCkqBiC;GmChqBpC;CtCowIA;;AsClwID;EACE,0BAA4C;CAC7C;;AAED;EACE,iBAAgB;EAChB,gBAAe;E7Bbb,iB6BcsB;CACzB;;ACfD;EACE,yBpCkzBmC;EoCjzBnC,oBpCsIa;EoCrIb,8BAA6C;E9BH3C,uBN4T2B;CoCvT9B;;AAGD;EAEE,eAAc;CACf;;AAGD;EACE,kBpC8OqB;CoC7OtB;;AAOD;EAGI,mBAAkB;EAClB,cpCyxBgC;EoCxxBhC,gBpCuxBiC;EoCtxBjC,yBpCsxBiC;EoCrxBjC,eAAc;CACf;;AAQH;ECxCE,0BrC+qBsC;EqC9qBtC,sBrC+qB4D;EqC9qB5D,erC4qBsC;CoCpoBvC;;ACtCC;EACE,0BAAqC;CACtC;;AACD;EACE,eAA+B;CAChC;;ADkCH;EC3CE,0BrCmrBsC;EqClrBtC,sBrCmrByD;EqClrBzD,erCgrBsC;CoCroBvC;;ACzCC;EACE,0BAAqC;CACtC;;AACD;EACE,eAA+B;CAChC;;ADqCH;EC9CE,0BrCurBsC;EqCtrBtC,sBrCwrB4D;EqCvrB5D,erCorBsC;CoCtoBvC;;AC5CC;EACE,0BAAqC;CACtC;;AACD;EACE,eAA+B;CAChC;;ADwCH;ECjDE,0BrC4rBsC;EqC3rBtC,sBrC4rB2D;EqC3rB3D,erCyrBsC;CoCxoBvC;;AC/CC;EACE,0BAAqC;CACtC;;AACD;EACE,eAA+B;CAChC;;ACXH;EACE;IAAO,4BAAuC;GzCy2I7C;EyCx2ID;IAAK,yBAAwB;GzC22I5B;CACF;;AyC92ID;EACE;IAAO,4BAAuC;GzCy2I7C;EyCx2ID;IAAK,yBAAwB;GzC22I5B;CACF;;AyC92ID;EACE;IAAO,4BAAuC;GzCy2I7C;EyCx2ID;IAAK,yBAAwB;GzC22I5B;CACF;;AyCx2ID;EACE,qBAAa;EAAb,sBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,iBAAgB;EAChB,mBtCw0BoC;EsCv0BpC,kBtCs0BkC;EsCr0BlC,mBAAkB;EAClB,0BtCgGiC;EMzG/B,uBN4T2B;CsCjT9B;;AACD;EACE,atCg0BkC;EsC/zBlC,YtC4EW;EsC3EX,0BtCiFc;CsChFf;;AAGD;ECYE,8MAA6I;EAA7I,yMAA6I;EAA7I,sMAA6I;EDV7I,mCtCwzBkC;UsCxzBlC,2BtCwzBkC;CsCvzBnC;;AAGD;EACE,2DtC0zBgD;OsC1zBhD,sDtC0zBgD;UsC1zBhD,mDtC0zBgD;CsCzzBjD;;AE/BD;EACE,qBAAa;EAAb,sBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,yBAAuB;EAAvB,gCAAuB;MAAvB,sBAAuB;UAAvB,wBAAuB;CACxB;;AAED;EACE,oBAAO;EAAP,qBAAO;MAAP,iBAAO;UAAP,aAAO;CACR;;ACHD;EACE,qBAAa;EAAb,sBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,6BAAsB;EAAtB,8BAAsB;EAAtB,+BAAsB;MAAtB,2BAAsB;UAAtB,uBAAsB;EAGtB,gBAAe;EACf,iBAAgB;CACjB;;AAQD;EACE,YAAW;EACX,ezCsFiC;EyCrFjC,oBAAmB;CAiBpB;;AApBD;EAMI,ezCiF+B;CyChFhC;;AxCNC;EwCUA,ezC6E+B;EyC5E/B,sBAAqB;EACrB,0BzC8E+B;CCvF9B;;AwCJL;EAiBI,ezCsE+B;EyCrE/B,0BzCwE+B;CyCvEhC;;AAQH;EACE,mBAAkB;EAClB,qBAAa;EAAb,sBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,4BAAmB;MAAnB,wBAAmB;UAAnB,oBAAmB;EACnB,0BAAmB;EAAnB,4BAAmB;MAAnB,uBAAmB;UAAnB,oBAAmB;EACnB,yBzC+yBsC;EyC7yBtC,oBzCoHgB;EyCnHhB,uBzCwCW;EyCvCX,uCzCwCW;CyCQZ;;AAzDD;EnCpCI,iCNsT2B;EMrT3B,gCNqT2B;CyCrQ5B;;AAbH;EAgBI,iBAAgB;EnCtChB,oCNwS2B;EMvS3B,mCNuS2B;CyChQ5B;;AxC5CC;EwC+CA,sBAAqB;CxC5CpB;;AwCuBL;EA0BI,ezCoC+B;EyCnC/B,oBzCuYwC;EyCtYxC,uBzCoBS;CyCXV;;AArCH;EAgCM,eAAc;CACf;;AAjCL;EAmCM,ezC2B6B;CyC1B9B;;AApCL;EAyCI,WAAU;EACV,YzCMS;EyCLT,0BzCWY;EyCVZ,sBzCUY;CyCEb;;AAxDH;;;EAkDM,eAAc;CACf;;AAnDL;EAsDM,ezCqwB8D;CyCpwB/D;;AAUL;EAEI,gBAAe;EACf,eAAc;EACd,iBAAgB;CACjB;;AALH;EASM,cAAa;CACd;;AAVL;EAeM,iBAAgB;CACjB;;AC5HH;EACE,e1C6qBoC;E0C5qBpC,0B1C6qBoC;C0C5qBrC;;AAED;;EACE,e1CwqBoC;C0CxpBrC;;AAjBD;;EAII,eAAc;CACf;;AzCOD;;;EyCJE,e1CiqBkC;E0ChqBlC,0BAAyC;CzCM1C;;AyCfH;;EAaI,YAAW;EACX,0B1C2pBkC;E0C1pBlC,sB1C0pBkC;C0CzpBnC;;AArBH;EACE,e1CirBoC;E0ChrBpC,0B1CirBoC;C0ChrBrC;;AAED;;EACE,e1C4qBoC;C0C5pBrC;;AAjBD;;EAII,eAAc;CACf;;AzCOD;;;EyCJE,e1CqqBkC;E0CpqBlC,0BAAyC;CzCM1C;;AyCfH;;EAaI,YAAW;EACX,0B1C+pBkC;E0C9pBlC,sB1C8pBkC;C0C7pBnC;;AArBH;EACE,e1CqrBoC;E0CprBpC,0B1CqrBoC;C0CprBrC;;AAED;;EACE,e1CgrBoC;C0ChqBrC;;AAjBD;;EAII,eAAc;CACf;;AzCOD;;;EyCJE,e1CyqBkC;E0CxqBlC,0BAAyC;CzCM1C;;AyCfH;;EAaI,YAAW;EACX,0B1CmqBkC;E0ClqBlC,sB1CkqBkC;C0CjqBnC;;AArBH;EACE,e1C0rBoC;E0CzrBpC,0B1C0rBoC;C0CzrBrC;;AAED;;EACE,e1CqrBoC;C0CrqBrC;;AAjBD;;EAII,eAAc;CACf;;AzCOD;;;EyCJE,e1C8qBkC;E0C7qBlC,0BAAyC;CzCM1C;;AyCfH;;EAaI,YAAW;EACX,0B1Cw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","file":"bootstrap.css","sourcesContent":[null,null,"/*!\n * Bootstrap v4.0.0-alpha.6 (https://getbootstrap.com)\n * Copyright 2011-2017 The Bootstrap Authors\n * Copyright 2011-2017 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\n\nbody {\n margin: 0;\n}\n\narticle,\naside,\nfooter,\nheader,\nnav,\nsection {\n display: block;\n}\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\nfigcaption,\nfigure,\nmain {\n display: block;\n}\n\nfigure {\n margin: 1em 40px;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\npre {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\na {\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:active,\na:hover {\n outline-width: 0;\n}\n\nabbr[title] {\n border-bottom: none;\n text-decoration: underline;\n text-decoration: underline dotted;\n}\n\nb,\nstrong {\n font-weight: inherit;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\ndfn {\n font-style: italic;\n}\n\nmark {\n background-color: #ff0;\n color: #000;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\naudio,\nvideo {\n display: inline-block;\n}\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\nimg {\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: sans-serif;\n font-size: 100%;\n line-height: 1.15;\n margin: 0;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\nlegend {\n box-sizing: border-box;\n color: inherit;\n display: table;\n max-width: 100%;\n padding: 0;\n white-space: normal;\n}\n\nprogress {\n display: inline-block;\n vertical-align: baseline;\n}\n\ntextarea {\n overflow: auto;\n}\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n -webkit-appearance: button;\n font: inherit;\n}\n\ndetails,\nmenu {\n display: block;\n}\n\nsummary {\n display: list-item;\n}\n\ncanvas {\n display: inline-block;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none;\n}\n\n@media print {\n *,\n *::before,\n *::after,\n p::first-letter,\n div::first-letter,\n blockquote::first-letter,\n li::first-letter,\n p::first-line,\n div::first-line,\n blockquote::first-line,\n li::first-line {\n text-shadow: none !important;\n box-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n pre {\n white-space: pre-wrap !important;\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .badge {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n\nhtml {\n box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\nhtml {\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\nbody {\n font-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-size: 1rem;\n font-weight: normal;\n line-height: 1.5;\n color: #292b2c;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: none !important;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: .5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: bold;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\na {\n color: #0275d8;\n text-decoration: none;\n}\n\na:focus, a:hover {\n color: #014c8c;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n}\n\n[role=\"button\"] {\n cursor: pointer;\n}\n\na,\narea,\nbutton,\n[role=\"button\"],\ninput,\nlabel,\nselect,\nsummary,\ntextarea {\n touch-action: manipulation;\n}\n\ntable {\n border-collapse: collapse;\n background-color: transparent;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #636c72;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: left;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\ntextarea {\n line-height: inherit;\n}\n\ninput[type=\"radio\"]:disabled,\ninput[type=\"checkbox\"]:disabled {\n cursor: not-allowed;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n}\n\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n\noutput {\n display: inline-block;\n}\n\n[hidden] {\n display: none !important;\n}\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\n\nh1, .h1 {\n font-size: 2.5rem;\n}\n\nh2, .h2 {\n font-size: 2rem;\n}\n\nh3, .h3 {\n font-size: 1.75rem;\n}\n\nh4, .h4 {\n font-size: 1.5rem;\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\nhr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\nsmall,\n.small {\n font-size: 80%;\n font-weight: normal;\n}\n\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n margin-right: 5px;\n}\n\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n.blockquote {\n padding: 0.5rem 1rem;\n margin-bottom: 1rem;\n font-size: 1.25rem;\n border-left: 0.25rem solid #eceeef;\n}\n\n.blockquote-footer {\n display: block;\n font-size: 80%;\n color: #636c72;\n}\n\n.blockquote-footer::before {\n content: \"\\2014 \\00A0\";\n}\n\n.blockquote-reverse {\n padding-right: 1rem;\n padding-left: 0;\n text-align: right;\n border-right: 0.25rem solid #eceeef;\n border-left: 0;\n}\n\n.blockquote-reverse .blockquote-footer::before {\n content: \"\";\n}\n\n.blockquote-reverse .blockquote-footer::after {\n content: \"\\00A0 \\2014\";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n padding: 0.25rem;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 0.25rem;\n transition: all 0.2s ease-in-out;\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 90%;\n color: #636c72;\n}\n\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\ncode {\n padding: 0.2rem 0.4rem;\n font-size: 90%;\n color: #bd4147;\n background-color: #f7f7f9;\n border-radius: 0.25rem;\n}\n\na > code {\n padding: 0;\n color: inherit;\n background-color: inherit;\n}\n\nkbd {\n padding: 0.2rem 0.4rem;\n font-size: 90%;\n color: #fff;\n background-color: #292b2c;\n border-radius: 0.2rem;\n}\n\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n}\n\npre {\n display: block;\n margin-top: 0;\n margin-bottom: 1rem;\n font-size: 90%;\n color: #292b2c;\n}\n\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n background-color: transparent;\n border-radius: 0;\n}\n\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n\n.container {\n position: relative;\n margin-left: auto;\n margin-right: auto;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 576px) {\n .container {\n width: 540px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n width: 720px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n width: 960px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n width: 1140px;\n max-width: 100%;\n }\n}\n\n.container-fluid {\n position: relative;\n margin-left: auto;\n margin-right: auto;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n.row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n@media (min-width: 576px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 768px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 992px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 1200px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl {\n position: relative;\n width: 100%;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n.col {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.pull-0 {\n right: auto;\n}\n\n.pull-1 {\n right: 8.333333%;\n}\n\n.pull-2 {\n right: 16.666667%;\n}\n\n.pull-3 {\n right: 25%;\n}\n\n.pull-4 {\n right: 33.333333%;\n}\n\n.pull-5 {\n right: 41.666667%;\n}\n\n.pull-6 {\n right: 50%;\n}\n\n.pull-7 {\n right: 58.333333%;\n}\n\n.pull-8 {\n right: 66.666667%;\n}\n\n.pull-9 {\n right: 75%;\n}\n\n.pull-10 {\n right: 83.333333%;\n}\n\n.pull-11 {\n right: 91.666667%;\n}\n\n.pull-12 {\n right: 100%;\n}\n\n.push-0 {\n left: auto;\n}\n\n.push-1 {\n left: 8.333333%;\n}\n\n.push-2 {\n left: 16.666667%;\n}\n\n.push-3 {\n left: 25%;\n}\n\n.push-4 {\n left: 33.333333%;\n}\n\n.push-5 {\n left: 41.666667%;\n}\n\n.push-6 {\n left: 50%;\n}\n\n.push-7 {\n left: 58.333333%;\n}\n\n.push-8 {\n left: 66.666667%;\n}\n\n.push-9 {\n left: 75%;\n}\n\n.push-10 {\n left: 83.333333%;\n}\n\n.push-11 {\n left: 91.666667%;\n}\n\n.push-12 {\n left: 100%;\n}\n\n.offset-1 {\n margin-left: 8.333333%;\n}\n\n.offset-2 {\n margin-left: 16.666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.333333%;\n}\n\n.offset-5 {\n margin-left: 41.666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.333333%;\n}\n\n.offset-8 {\n margin-left: 66.666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.333333%;\n}\n\n.offset-11 {\n margin-left: 91.666667%;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-sm-0 {\n right: auto;\n }\n .pull-sm-1 {\n right: 8.333333%;\n }\n .pull-sm-2 {\n right: 16.666667%;\n }\n .pull-sm-3 {\n right: 25%;\n }\n .pull-sm-4 {\n right: 33.333333%;\n }\n .pull-sm-5 {\n right: 41.666667%;\n }\n .pull-sm-6 {\n right: 50%;\n }\n .pull-sm-7 {\n right: 58.333333%;\n }\n .pull-sm-8 {\n right: 66.666667%;\n }\n .pull-sm-9 {\n right: 75%;\n }\n .pull-sm-10 {\n right: 83.333333%;\n }\n .pull-sm-11 {\n right: 91.666667%;\n }\n .pull-sm-12 {\n right: 100%;\n }\n .push-sm-0 {\n left: auto;\n }\n .push-sm-1 {\n left: 8.333333%;\n }\n .push-sm-2 {\n left: 16.666667%;\n }\n .push-sm-3 {\n left: 25%;\n }\n .push-sm-4 {\n left: 33.333333%;\n }\n .push-sm-5 {\n left: 41.666667%;\n }\n .push-sm-6 {\n left: 50%;\n }\n .push-sm-7 {\n left: 58.333333%;\n }\n .push-sm-8 {\n left: 66.666667%;\n }\n .push-sm-9 {\n left: 75%;\n }\n .push-sm-10 {\n left: 83.333333%;\n }\n .push-sm-11 {\n left: 91.666667%;\n }\n .push-sm-12 {\n left: 100%;\n }\n .offset-sm-0 {\n margin-left: 0%;\n }\n .offset-sm-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-md-0 {\n right: auto;\n }\n .pull-md-1 {\n right: 8.333333%;\n }\n .pull-md-2 {\n right: 16.666667%;\n }\n .pull-md-3 {\n right: 25%;\n }\n .pull-md-4 {\n right: 33.333333%;\n }\n .pull-md-5 {\n right: 41.666667%;\n }\n .pull-md-6 {\n right: 50%;\n }\n .pull-md-7 {\n right: 58.333333%;\n }\n .pull-md-8 {\n right: 66.666667%;\n }\n .pull-md-9 {\n right: 75%;\n }\n .pull-md-10 {\n right: 83.333333%;\n }\n .pull-md-11 {\n right: 91.666667%;\n }\n .pull-md-12 {\n right: 100%;\n }\n .push-md-0 {\n left: auto;\n }\n .push-md-1 {\n left: 8.333333%;\n }\n .push-md-2 {\n left: 16.666667%;\n }\n .push-md-3 {\n left: 25%;\n }\n .push-md-4 {\n left: 33.333333%;\n }\n .push-md-5 {\n left: 41.666667%;\n }\n .push-md-6 {\n left: 50%;\n }\n .push-md-7 {\n left: 58.333333%;\n }\n .push-md-8 {\n left: 66.666667%;\n }\n .push-md-9 {\n left: 75%;\n }\n .push-md-10 {\n left: 83.333333%;\n }\n .push-md-11 {\n left: 91.666667%;\n }\n .push-md-12 {\n left: 100%;\n }\n .offset-md-0 {\n margin-left: 0%;\n }\n .offset-md-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-lg-0 {\n right: auto;\n }\n .pull-lg-1 {\n right: 8.333333%;\n }\n .pull-lg-2 {\n right: 16.666667%;\n }\n .pull-lg-3 {\n right: 25%;\n }\n .pull-lg-4 {\n right: 33.333333%;\n }\n .pull-lg-5 {\n right: 41.666667%;\n }\n .pull-lg-6 {\n right: 50%;\n }\n .pull-lg-7 {\n right: 58.333333%;\n }\n .pull-lg-8 {\n right: 66.666667%;\n }\n .pull-lg-9 {\n right: 75%;\n }\n .pull-lg-10 {\n right: 83.333333%;\n }\n .pull-lg-11 {\n right: 91.666667%;\n }\n .pull-lg-12 {\n right: 100%;\n }\n .push-lg-0 {\n left: auto;\n }\n .push-lg-1 {\n left: 8.333333%;\n }\n .push-lg-2 {\n left: 16.666667%;\n }\n .push-lg-3 {\n left: 25%;\n }\n .push-lg-4 {\n left: 33.333333%;\n }\n .push-lg-5 {\n left: 41.666667%;\n }\n .push-lg-6 {\n left: 50%;\n }\n .push-lg-7 {\n left: 58.333333%;\n }\n .push-lg-8 {\n left: 66.666667%;\n }\n .push-lg-9 {\n left: 75%;\n }\n .push-lg-10 {\n left: 83.333333%;\n }\n .push-lg-11 {\n left: 91.666667%;\n }\n .push-lg-12 {\n left: 100%;\n }\n .offset-lg-0 {\n margin-left: 0%;\n }\n .offset-lg-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-xl-0 {\n right: auto;\n }\n .pull-xl-1 {\n right: 8.333333%;\n }\n .pull-xl-2 {\n right: 16.666667%;\n }\n .pull-xl-3 {\n right: 25%;\n }\n .pull-xl-4 {\n right: 33.333333%;\n }\n .pull-xl-5 {\n right: 41.666667%;\n }\n .pull-xl-6 {\n right: 50%;\n }\n .pull-xl-7 {\n right: 58.333333%;\n }\n .pull-xl-8 {\n right: 66.666667%;\n }\n .pull-xl-9 {\n right: 75%;\n }\n .pull-xl-10 {\n right: 83.333333%;\n }\n .pull-xl-11 {\n right: 91.666667%;\n }\n .pull-xl-12 {\n right: 100%;\n }\n .push-xl-0 {\n left: auto;\n }\n .push-xl-1 {\n left: 8.333333%;\n }\n .push-xl-2 {\n left: 16.666667%;\n }\n .push-xl-3 {\n left: 25%;\n }\n .push-xl-4 {\n left: 33.333333%;\n }\n .push-xl-5 {\n left: 41.666667%;\n }\n .push-xl-6 {\n left: 50%;\n }\n .push-xl-7 {\n left: 58.333333%;\n }\n .push-xl-8 {\n left: 66.666667%;\n }\n .push-xl-9 {\n left: 75%;\n }\n .push-xl-10 {\n left: 83.333333%;\n }\n .push-xl-11 {\n left: 91.666667%;\n }\n .push-xl-12 {\n left: 100%;\n }\n .offset-xl-0 {\n margin-left: 0%;\n }\n .offset-xl-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11 {\n margin-left: 91.666667%;\n }\n}\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 1rem;\n}\n\n.table th,\n.table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #eceeef;\n}\n\n.table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #eceeef;\n}\n\n.table tbody + tbody {\n border-top: 2px solid #eceeef;\n}\n\n.table .table {\n background-color: #fff;\n}\n\n.table-sm th,\n.table-sm td {\n padding: 0.3rem;\n}\n\n.table-bordered {\n border: 1px solid #eceeef;\n}\n\n.table-bordered th,\n.table-bordered td {\n border: 1px solid #eceeef;\n}\n\n.table-bordered thead th,\n.table-bordered thead td {\n border-bottom-width: 2px;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.table-hover tbody tr:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n background-color: #dff0d8;\n}\n\n.table-hover .table-success:hover {\n background-color: #d0e9c6;\n}\n\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n background-color: #d0e9c6;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n background-color: #d9edf7;\n}\n\n.table-hover .table-info:hover {\n background-color: #c4e3f3;\n}\n\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n background-color: #c4e3f3;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n background-color: #fcf8e3;\n}\n\n.table-hover .table-warning:hover {\n background-color: #faf2cc;\n}\n\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n background-color: #faf2cc;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n background-color: #f2dede;\n}\n\n.table-hover .table-danger:hover {\n background-color: #ebcccc;\n}\n\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n background-color: #ebcccc;\n}\n\n.thead-inverse th {\n color: #fff;\n background-color: #292b2c;\n}\n\n.thead-default th {\n color: #464a4c;\n background-color: #eceeef;\n}\n\n.table-inverse {\n color: #fff;\n background-color: #292b2c;\n}\n\n.table-inverse th,\n.table-inverse td,\n.table-inverse thead th {\n border-color: #fff;\n}\n\n.table-inverse.table-bordered {\n border: 0;\n}\n\n.table-responsive {\n display: block;\n width: 100%;\n overflow-x: auto;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n}\n\n.table-responsive.table-bordered {\n border: 0;\n}\n\n.form-control {\n display: block;\n width: 100%;\n padding: 0.5rem 0.75rem;\n font-size: 1rem;\n line-height: 1.25;\n color: #464a4c;\n background-color: #fff;\n background-image: none;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n}\n\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n\n.form-control:focus {\n color: #464a4c;\n background-color: #fff;\n border-color: #5cb3fd;\n outline: none;\n}\n\n.form-control::placeholder {\n color: #636c72;\n opacity: 1;\n}\n\n.form-control:disabled, .form-control[readonly] {\n background-color: #eceeef;\n opacity: 1;\n}\n\n.form-control:disabled {\n cursor: not-allowed;\n}\n\nselect.form-control:not([size]):not([multiple]) {\n height: calc(2.25rem + 2px);\n}\n\nselect.form-control:focus::-ms-value {\n color: #464a4c;\n background-color: #fff;\n}\n\n.form-control-file,\n.form-control-range {\n display: block;\n}\n\n.col-form-label {\n padding-top: calc(0.5rem - 1px * 2);\n padding-bottom: calc(0.5rem - 1px * 2);\n margin-bottom: 0;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.75rem - 1px * 2);\n padding-bottom: calc(0.75rem - 1px * 2);\n font-size: 1.25rem;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem - 1px * 2);\n padding-bottom: calc(0.25rem - 1px * 2);\n font-size: 0.875rem;\n}\n\n.col-form-legend {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n margin-bottom: 0;\n font-size: 1rem;\n}\n\n.form-control-static {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n margin-bottom: 0;\n line-height: 1.25;\n border: solid transparent;\n border-width: 1px 0;\n}\n\n.form-control-static.form-control-sm, .input-group-sm > .form-control-static.form-control,\n.input-group-sm > .form-control-static.input-group-addon,\n.input-group-sm > .input-group-btn > .form-control-static.btn, .form-control-static.form-control-lg, .input-group-lg > .form-control-static.form-control,\n.input-group-lg > .form-control-static.input-group-addon,\n.input-group-lg > .input-group-btn > .form-control-static.btn {\n padding-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm, .input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: 0.2rem;\n}\n\nselect.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]),\n.input-group-sm > select.input-group-addon:not([size]):not([multiple]),\n.input-group-sm > .input-group-btn > select.btn:not([size]):not([multiple]) {\n height: 1.8125rem;\n}\n\n.form-control-lg, .input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n border-radius: 0.3rem;\n}\n\nselect.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]),\n.input-group-lg > select.input-group-addon:not([size]):not([multiple]),\n.input-group-lg > .input-group-btn > select.btn:not([size]):not([multiple]) {\n height: 3.166667rem;\n}\n\n.form-group {\n margin-bottom: 1rem;\n}\n\n.form-text {\n display: block;\n margin-top: 0.25rem;\n}\n\n.form-check {\n position: relative;\n display: block;\n margin-bottom: 0.5rem;\n}\n\n.form-check.disabled .form-check-label {\n color: #636c72;\n cursor: not-allowed;\n}\n\n.form-check-label {\n padding-left: 1.25rem;\n margin-bottom: 0;\n cursor: pointer;\n}\n\n.form-check-input {\n position: absolute;\n margin-top: 0.25rem;\n margin-left: -1.25rem;\n}\n\n.form-check-input:only-child {\n position: static;\n}\n\n.form-check-inline {\n display: inline-block;\n}\n\n.form-check-inline .form-check-label {\n vertical-align: middle;\n}\n\n.form-check-inline + .form-check-inline {\n margin-left: 0.75rem;\n}\n\n.form-control-feedback {\n margin-top: 0.25rem;\n}\n\n.form-control-success,\n.form-control-warning,\n.form-control-danger {\n padding-right: 2.25rem;\n background-repeat: no-repeat;\n background-position: center right 0.5625rem;\n background-size: 1.125rem 1.125rem;\n}\n\n.has-success .form-control-feedback,\n.has-success .form-control-label,\n.has-success .col-form-label,\n.has-success .form-check-label,\n.has-success .custom-control {\n color: #5cb85c;\n}\n\n.has-success .form-control {\n border-color: #5cb85c;\n}\n\n.has-success .input-group-addon {\n color: #5cb85c;\n border-color: #5cb85c;\n background-color: #eaf6ea;\n}\n\n.has-success .form-control-success {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%235cb85c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E\");\n}\n\n.has-warning .form-control-feedback,\n.has-warning .form-control-label,\n.has-warning .col-form-label,\n.has-warning .form-check-label,\n.has-warning .custom-control {\n color: #f0ad4e;\n}\n\n.has-warning .form-control {\n border-color: #f0ad4e;\n}\n\n.has-warning .input-group-addon {\n color: #f0ad4e;\n border-color: #f0ad4e;\n background-color: white;\n}\n\n.has-warning .form-control-warning {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23f0ad4e' d='M4.4 5.324h-.8v-2.46h.8zm0 1.42h-.8V5.89h.8zM3.76.63L.04 7.075c-.115.2.016.425.26.426h7.397c.242 0 .372-.226.258-.426C6.726 4.924 5.47 2.79 4.253.63c-.113-.174-.39-.174-.494 0z'/%3E%3C/svg%3E\");\n}\n\n.has-danger .form-control-feedback,\n.has-danger .form-control-label,\n.has-danger .col-form-label,\n.has-danger .form-check-label,\n.has-danger .custom-control {\n color: #d9534f;\n}\n\n.has-danger .form-control {\n border-color: #d9534f;\n}\n\n.has-danger .input-group-addon {\n color: #d9534f;\n border-color: #d9534f;\n background-color: #fdf7f7;\n}\n\n.has-danger .form-control-danger {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23d9534f' viewBox='-2 -2 7 7'%3E%3Cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3E%3Ccircle r='.5'/%3E%3Ccircle cx='3' r='.5'/%3E%3Ccircle cy='3' r='.5'/%3E%3Ccircle cx='3' cy='3' r='.5'/%3E%3C/svg%3E\");\n}\n\n.form-inline {\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n}\n\n.form-inline .form-check {\n width: 100%;\n}\n\n@media (min-width: 576px) {\n .form-inline label {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 0;\n }\n .form-inline .form-group {\n display: flex;\n flex: 0 0 auto;\n flex-flow: row wrap;\n align-items: center;\n margin-bottom: 0;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n width: auto;\n }\n .form-inline .form-control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-check {\n display: flex;\n align-items: center;\n justify-content: center;\n width: auto;\n margin-top: 0;\n margin-bottom: 0;\n }\n .form-inline .form-check-label {\n padding-left: 0;\n }\n .form-inline .form-check-input {\n position: relative;\n margin-top: 0;\n margin-right: 0.25rem;\n margin-left: 0;\n }\n .form-inline .custom-control {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-left: 0;\n }\n .form-inline .custom-control-indicator {\n position: static;\n display: inline-block;\n margin-right: 0.25rem;\n vertical-align: text-bottom;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n\n.btn {\n display: inline-block;\n font-weight: normal;\n line-height: 1.25;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n user-select: none;\n border: 1px solid transparent;\n padding: 0.5rem 1rem;\n font-size: 1rem;\n border-radius: 0.25rem;\n transition: all 0.2s ease-in-out;\n}\n\n.btn:focus, .btn:hover {\n text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 2px rgba(2, 117, 216, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n cursor: not-allowed;\n opacity: .65;\n}\n\n.btn:active, .btn.active {\n background-image: none;\n}\n\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n\n.btn-primary {\n color: #fff;\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.btn-primary:hover {\n color: #fff;\n background-color: #025aa5;\n border-color: #01549b;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n box-shadow: 0 0 0 2px rgba(2, 117, 216, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.btn-primary:active, .btn-primary.active,\n.show > .btn-primary.dropdown-toggle {\n color: #fff;\n background-color: #025aa5;\n background-image: none;\n border-color: #01549b;\n}\n\n.btn-secondary {\n color: #292b2c;\n background-color: #fff;\n border-color: #ccc;\n}\n\n.btn-secondary:hover {\n color: #292b2c;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n box-shadow: 0 0 0 2px rgba(204, 204, 204, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n background-color: #fff;\n border-color: #ccc;\n}\n\n.btn-secondary:active, .btn-secondary.active,\n.show > .btn-secondary.dropdown-toggle {\n color: #292b2c;\n background-color: #e6e6e6;\n background-image: none;\n border-color: #adadad;\n}\n\n.btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #5bc0de;\n}\n\n.btn-info:hover {\n color: #fff;\n background-color: #31b0d5;\n border-color: #2aabd2;\n}\n\n.btn-info:focus, .btn-info.focus {\n box-shadow: 0 0 0 2px rgba(91, 192, 222, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n background-color: #5bc0de;\n border-color: #5bc0de;\n}\n\n.btn-info:active, .btn-info.active,\n.show > .btn-info.dropdown-toggle {\n color: #fff;\n background-color: #31b0d5;\n background-image: none;\n border-color: #2aabd2;\n}\n\n.btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #5cb85c;\n}\n\n.btn-success:hover {\n color: #fff;\n background-color: #449d44;\n border-color: #419641;\n}\n\n.btn-success:focus, .btn-success.focus {\n box-shadow: 0 0 0 2px rgba(92, 184, 92, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n background-color: #5cb85c;\n border-color: #5cb85c;\n}\n\n.btn-success:active, .btn-success.active,\n.show > .btn-success.dropdown-toggle {\n color: #fff;\n background-color: #449d44;\n background-image: none;\n border-color: #419641;\n}\n\n.btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #f0ad4e;\n}\n\n.btn-warning:hover {\n color: #fff;\n background-color: #ec971f;\n border-color: #eb9316;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n box-shadow: 0 0 0 2px rgba(240, 173, 78, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n background-color: #f0ad4e;\n border-color: #f0ad4e;\n}\n\n.btn-warning:active, .btn-warning.active,\n.show > .btn-warning.dropdown-toggle {\n color: #fff;\n background-color: #ec971f;\n background-image: none;\n border-color: #eb9316;\n}\n\n.btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d9534f;\n}\n\n.btn-danger:hover {\n color: #fff;\n background-color: #c9302c;\n border-color: #c12e2a;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n box-shadow: 0 0 0 2px rgba(217, 83, 79, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n background-color: #d9534f;\n border-color: #d9534f;\n}\n\n.btn-danger:active, .btn-danger.active,\n.show > .btn-danger.dropdown-toggle {\n color: #fff;\n background-color: #c9302c;\n background-image: none;\n border-color: #c12e2a;\n}\n\n.btn-outline-primary {\n color: #0275d8;\n background-image: none;\n background-color: transparent;\n border-color: #0275d8;\n}\n\n.btn-outline-primary:hover {\n color: #fff;\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n box-shadow: 0 0 0 2px rgba(2, 117, 216, 0.5);\n}\n\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n color: #0275d8;\n background-color: transparent;\n}\n\n.btn-outline-primary:active, .btn-outline-primary.active,\n.show > .btn-outline-primary.dropdown-toggle {\n color: #fff;\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.btn-outline-secondary {\n color: #ccc;\n background-image: none;\n background-color: transparent;\n border-color: #ccc;\n}\n\n.btn-outline-secondary:hover {\n color: #fff;\n background-color: #ccc;\n border-color: #ccc;\n}\n\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n box-shadow: 0 0 0 2px rgba(204, 204, 204, 0.5);\n}\n\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n color: #ccc;\n background-color: transparent;\n}\n\n.btn-outline-secondary:active, .btn-outline-secondary.active,\n.show > .btn-outline-secondary.dropdown-toggle {\n color: #fff;\n background-color: #ccc;\n border-color: #ccc;\n}\n\n.btn-outline-info {\n color: #5bc0de;\n background-image: none;\n background-color: transparent;\n border-color: #5bc0de;\n}\n\n.btn-outline-info:hover {\n color: #fff;\n background-color: #5bc0de;\n border-color: #5bc0de;\n}\n\n.btn-outline-info:focus, .btn-outline-info.focus {\n box-shadow: 0 0 0 2px rgba(91, 192, 222, 0.5);\n}\n\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n color: #5bc0de;\n background-color: transparent;\n}\n\n.btn-outline-info:active, .btn-outline-info.active,\n.show > .btn-outline-info.dropdown-toggle {\n color: #fff;\n background-color: #5bc0de;\n border-color: #5bc0de;\n}\n\n.btn-outline-success {\n color: #5cb85c;\n background-image: none;\n background-color: transparent;\n border-color: #5cb85c;\n}\n\n.btn-outline-success:hover {\n color: #fff;\n background-color: #5cb85c;\n border-color: #5cb85c;\n}\n\n.btn-outline-success:focus, .btn-outline-success.focus {\n box-shadow: 0 0 0 2px rgba(92, 184, 92, 0.5);\n}\n\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n color: #5cb85c;\n background-color: transparent;\n}\n\n.btn-outline-success:active, .btn-outline-success.active,\n.show > .btn-outline-success.dropdown-toggle {\n color: #fff;\n background-color: #5cb85c;\n border-color: #5cb85c;\n}\n\n.btn-outline-warning {\n color: #f0ad4e;\n background-image: none;\n background-color: transparent;\n border-color: #f0ad4e;\n}\n\n.btn-outline-warning:hover {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #f0ad4e;\n}\n\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n box-shadow: 0 0 0 2px rgba(240, 173, 78, 0.5);\n}\n\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n color: #f0ad4e;\n background-color: transparent;\n}\n\n.btn-outline-warning:active, .btn-outline-warning.active,\n.show > .btn-outline-warning.dropdown-toggle {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #f0ad4e;\n}\n\n.btn-outline-danger {\n color: #d9534f;\n background-image: none;\n background-color: transparent;\n border-color: #d9534f;\n}\n\n.btn-outline-danger:hover {\n color: #fff;\n background-color: #d9534f;\n border-color: #d9534f;\n}\n\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n box-shadow: 0 0 0 2px rgba(217, 83, 79, 0.5);\n}\n\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n color: #d9534f;\n background-color: transparent;\n}\n\n.btn-outline-danger:active, .btn-outline-danger.active,\n.show > .btn-outline-danger.dropdown-toggle {\n color: #fff;\n background-color: #d9534f;\n border-color: #d9534f;\n}\n\n.btn-link {\n font-weight: normal;\n color: #0275d8;\n border-radius: 0;\n}\n\n.btn-link, .btn-link:active, .btn-link.active, .btn-link:disabled {\n background-color: transparent;\n}\n\n.btn-link, .btn-link:focus, .btn-link:active {\n border-color: transparent;\n}\n\n.btn-link:hover {\n border-color: transparent;\n}\n\n.btn-link:focus, .btn-link:hover {\n color: #014c8c;\n text-decoration: underline;\n background-color: transparent;\n}\n\n.btn-link:disabled {\n color: #636c72;\n}\n\n.btn-link:disabled:focus, .btn-link:disabled:hover {\n text-decoration: none;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: 0.2rem;\n}\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n.btn-block + .btn-block {\n margin-top: 0.5rem;\n}\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n\n.fade {\n opacity: 0;\n transition: opacity 0.15s linear;\n}\n\n.fade.show {\n opacity: 1;\n}\n\n.collapse {\n display: none;\n}\n\n.collapse.show {\n display: block;\n}\n\ntr.collapse.show {\n display: table-row;\n}\n\ntbody.collapse.show {\n display: table-row-group;\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n\n.dropup,\n.dropdown {\n position: relative;\n}\n\n.dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.3em;\n vertical-align: middle;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-left: 0.3em solid transparent;\n}\n\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n.dropup .dropdown-toggle::after {\n border-top: 0;\n border-bottom: 0.3em solid;\n}\n\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 10rem;\n padding: 0.5rem 0;\n margin: 0.125rem 0 0;\n font-size: 1rem;\n color: #292b2c;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.dropdown-divider {\n height: 1px;\n margin: 0.5rem 0;\n overflow: hidden;\n background-color: #eceeef;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: 3px 1.5rem;\n clear: both;\n font-weight: normal;\n color: #292b2c;\n text-align: inherit;\n white-space: nowrap;\n background: none;\n border: 0;\n}\n\n.dropdown-item:focus, .dropdown-item:hover {\n color: #1d1e1f;\n text-decoration: none;\n background-color: #f7f7f9;\n}\n\n.dropdown-item.active, .dropdown-item:active {\n color: #fff;\n text-decoration: none;\n background-color: #0275d8;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: #636c72;\n cursor: not-allowed;\n background-color: transparent;\n}\n\n.show > .dropdown-menu {\n display: block;\n}\n\n.show > a {\n outline: 0;\n}\n\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n\n.dropdown-header {\n display: block;\n padding: 0.5rem 1.5rem;\n margin-bottom: 0;\n font-size: 0.875rem;\n color: #636c72;\n white-space: nowrap;\n}\n\n.dropdown-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 990;\n}\n\n.dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 0.125rem;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n}\n\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n flex: 0 1 auto;\n}\n\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n z-index: 2;\n}\n\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group,\n.btn-group-vertical .btn + .btn,\n.btn-group-vertical .btn + .btn-group,\n.btn-group-vertical .btn-group + .btn,\n.btn-group-vertical .btn-group + .btn-group {\n margin-left: -1px;\n}\n\n.btn-toolbar {\n display: flex;\n justify-content: flex-start;\n}\n\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n\n.btn-group > .btn-group {\n float: left;\n}\n\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n.btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn + .dropdown-toggle-split::after {\n margin-left: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 1.125rem;\n padding-left: 1.125rem;\n}\n\n.btn-group-vertical {\n display: inline-flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n\n.btn-group-vertical .btn,\n.btn-group-vertical .btn-group {\n width: 100%;\n}\n\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n\n.input-group {\n position: relative;\n display: flex;\n width: 100%;\n}\n\n.input-group .form-control {\n position: relative;\n z-index: 2;\n flex: 1 1 auto;\n width: 1%;\n margin-bottom: 0;\n}\n\n.input-group .form-control:focus, .input-group .form-control:active, .input-group .form-control:hover {\n z-index: 3;\n}\n\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n\n.input-group-addon,\n.input-group-btn {\n white-space: nowrap;\n vertical-align: middle;\n}\n\n.input-group-addon {\n padding: 0.5rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n font-weight: normal;\n line-height: 1.25;\n color: #464a4c;\n text-align: center;\n background-color: #eceeef;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.input-group-addon.form-control-sm,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .input-group-addon.btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: 0.2rem;\n}\n\n.input-group-addon.form-control-lg,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .input-group-addon.btn {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n border-radius: 0.3rem;\n}\n\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n\n.input-group .form-control:not(:last-child),\n.input-group-addon:not(:last-child),\n.input-group-btn:not(:last-child) > .btn,\n.input-group-btn:not(:last-child) > .btn-group > .btn,\n.input-group-btn:not(:last-child) > .dropdown-toggle,\n.input-group-btn:not(:first-child) > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:not(:first-child) > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n\n.input-group-addon:not(:last-child) {\n border-right: 0;\n}\n\n.input-group .form-control:not(:first-child),\n.input-group-addon:not(:first-child),\n.input-group-btn:not(:first-child) > .btn,\n.input-group-btn:not(:first-child) > .btn-group > .btn,\n.input-group-btn:not(:first-child) > .dropdown-toggle,\n.input-group-btn:not(:last-child) > .btn:not(:first-child),\n.input-group-btn:not(:last-child) > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n\n.form-control + .input-group-addon:not(:first-child) {\n border-left: 0;\n}\n\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n\n.input-group-btn > .btn {\n position: relative;\n flex: 1;\n}\n\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n\n.input-group-btn > .btn:focus, .input-group-btn > .btn:active, .input-group-btn > .btn:hover {\n z-index: 3;\n}\n\n.input-group-btn:not(:last-child) > .btn,\n.input-group-btn:not(:last-child) > .btn-group {\n margin-right: -1px;\n}\n\n.input-group-btn:not(:first-child) > .btn,\n.input-group-btn:not(:first-child) > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n\n.input-group-btn:not(:first-child) > .btn:focus, .input-group-btn:not(:first-child) > .btn:active, .input-group-btn:not(:first-child) > .btn:hover,\n.input-group-btn:not(:first-child) > .btn-group:focus,\n.input-group-btn:not(:first-child) > .btn-group:active,\n.input-group-btn:not(:first-child) > .btn-group:hover {\n z-index: 3;\n}\n\n.custom-control {\n position: relative;\n display: inline-flex;\n min-height: 1.5rem;\n padding-left: 1.5rem;\n margin-right: 1rem;\n cursor: pointer;\n}\n\n.custom-control-input {\n position: absolute;\n z-index: -1;\n opacity: 0;\n}\n\n.custom-control-input:checked ~ .custom-control-indicator {\n color: #fff;\n background-color: #0275d8;\n}\n\n.custom-control-input:focus ~ .custom-control-indicator {\n box-shadow: 0 0 0 1px #fff, 0 0 0 3px #0275d8;\n}\n\n.custom-control-input:active ~ .custom-control-indicator {\n color: #fff;\n background-color: #8fcafe;\n}\n\n.custom-control-input:disabled ~ .custom-control-indicator {\n cursor: not-allowed;\n background-color: #eceeef;\n}\n\n.custom-control-input:disabled ~ .custom-control-description {\n color: #636c72;\n cursor: not-allowed;\n}\n\n.custom-control-indicator {\n position: absolute;\n top: 0.25rem;\n left: 0;\n display: block;\n width: 1rem;\n height: 1rem;\n pointer-events: none;\n user-select: none;\n background-color: #ddd;\n background-repeat: no-repeat;\n background-position: center center;\n background-size: 50% 50%;\n}\n\n.custom-checkbox .custom-control-indicator {\n border-radius: 0.25rem;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-indicator {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-indicator {\n background-color: #0275d8;\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\");\n}\n\n.custom-radio .custom-control-indicator {\n border-radius: 50%;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-indicator {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\");\n}\n\n.custom-controls-stacked {\n display: flex;\n flex-direction: column;\n}\n\n.custom-controls-stacked .custom-control {\n margin-bottom: 0.25rem;\n}\n\n.custom-controls-stacked .custom-control + .custom-control {\n margin-left: 0;\n}\n\n.custom-select {\n display: inline-block;\n max-width: 100%;\n height: calc(2.25rem + 2px);\n padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n line-height: 1.25;\n color: #464a4c;\n vertical-align: middle;\n background: #fff url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right 0.75rem center;\n background-size: 8px 10px;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n -moz-appearance: none;\n -webkit-appearance: none;\n}\n\n.custom-select:focus {\n border-color: #5cb3fd;\n outline: none;\n}\n\n.custom-select:focus::-ms-value {\n color: #464a4c;\n background-color: #fff;\n}\n\n.custom-select:disabled {\n color: #636c72;\n cursor: not-allowed;\n background-color: #eceeef;\n}\n\n.custom-select::-ms-expand {\n opacity: 0;\n}\n\n.custom-select-sm {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n font-size: 75%;\n}\n\n.custom-file {\n position: relative;\n display: inline-block;\n max-width: 100%;\n height: 2.5rem;\n margin-bottom: 0;\n cursor: pointer;\n}\n\n.custom-file-input {\n min-width: 14rem;\n max-width: 100%;\n height: 2.5rem;\n margin: 0;\n filter: alpha(opacity=0);\n opacity: 0;\n}\n\n.custom-file-control {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 5;\n height: 2.5rem;\n padding: 0.5rem 1rem;\n line-height: 1.5;\n color: #464a4c;\n pointer-events: none;\n user-select: none;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.custom-file-control:lang(en)::after {\n content: \"Choose file...\";\n}\n\n.custom-file-control::before {\n position: absolute;\n top: -1px;\n right: -1px;\n bottom: -1px;\n z-index: 6;\n display: block;\n height: 2.5rem;\n padding: 0.5rem 1rem;\n line-height: 1.5;\n color: #464a4c;\n background-color: #eceeef;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.custom-file-control:lang(en)::before {\n content: \"Browse\";\n}\n\n.nav {\n display: flex;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: 0.5em 1em;\n}\n\n.nav-link:focus, .nav-link:hover {\n text-decoration: none;\n}\n\n.nav-link.disabled {\n color: #636c72;\n cursor: not-allowed;\n}\n\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n\n.nav-tabs .nav-item {\n margin-bottom: -1px;\n}\n\n.nav-tabs .nav-link {\n border: 1px solid transparent;\n border-top-right-radius: 0.25rem;\n border-top-left-radius: 0.25rem;\n}\n\n.nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover {\n border-color: #eceeef #eceeef #ddd;\n}\n\n.nav-tabs .nav-link.disabled {\n color: #636c72;\n background-color: transparent;\n border-color: transparent;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: #464a4c;\n background-color: #fff;\n border-color: #ddd #ddd #fff;\n}\n\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n\n.nav-pills .nav-link {\n border-radius: 0.25rem;\n}\n\n.nav-pills .nav-link.active,\n.nav-pills .nav-item.show .nav-link {\n color: #fff;\n cursor: default;\n background-color: #0275d8;\n}\n\n.nav-fill .nav-item {\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified .nav-item {\n flex: 1 1 100%;\n text-align: center;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n position: relative;\n display: flex;\n flex-direction: column;\n padding: 0.5rem 1rem;\n}\n\n.navbar-brand {\n display: inline-block;\n padding-top: .25rem;\n padding-bottom: .25rem;\n margin-right: 1rem;\n font-size: 1.25rem;\n line-height: inherit;\n white-space: nowrap;\n}\n\n.navbar-brand:focus, .navbar-brand:hover {\n text-decoration: none;\n}\n\n.navbar-nav {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.navbar-nav .nav-link {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-text {\n display: inline-block;\n padding-top: .425rem;\n padding-bottom: .425rem;\n}\n\n.navbar-toggler {\n align-self: flex-start;\n padding: 0.25rem 0.75rem;\n font-size: 1.25rem;\n line-height: 1;\n background: transparent;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.navbar-toggler:focus, .navbar-toggler:hover {\n text-decoration: none;\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n\n.navbar-toggler-left {\n position: absolute;\n left: 1rem;\n}\n\n.navbar-toggler-right {\n position: absolute;\n right: 1rem;\n}\n\n@media (max-width: 575px) {\n .navbar-toggleable .navbar-nav .dropdown-menu {\n position: static;\n float: none;\n }\n .navbar-toggleable > .container {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 576px) {\n .navbar-toggleable {\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n }\n .navbar-toggleable .navbar-nav {\n flex-direction: row;\n }\n .navbar-toggleable .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-toggleable > .container {\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n }\n .navbar-toggleable .navbar-collapse {\n display: flex !important;\n width: 100%;\n }\n .navbar-toggleable .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 767px) {\n .navbar-toggleable-sm .navbar-nav .dropdown-menu {\n position: static;\n float: none;\n }\n .navbar-toggleable-sm > .container {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 768px) {\n .navbar-toggleable-sm {\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n }\n .navbar-toggleable-sm .navbar-nav {\n flex-direction: row;\n }\n .navbar-toggleable-sm .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-toggleable-sm > .container {\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n }\n .navbar-toggleable-sm .navbar-collapse {\n display: flex !important;\n width: 100%;\n }\n .navbar-toggleable-sm .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 991px) {\n .navbar-toggleable-md .navbar-nav .dropdown-menu {\n position: static;\n float: none;\n }\n .navbar-toggleable-md > .container {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 992px) {\n .navbar-toggleable-md {\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n }\n .navbar-toggleable-md .navbar-nav {\n flex-direction: row;\n }\n .navbar-toggleable-md .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-toggleable-md > .container {\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n }\n .navbar-toggleable-md .navbar-collapse {\n display: flex !important;\n width: 100%;\n }\n .navbar-toggleable-md .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 1199px) {\n .navbar-toggleable-lg .navbar-nav .dropdown-menu {\n position: static;\n float: none;\n }\n .navbar-toggleable-lg > .container {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .navbar-toggleable-lg {\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n }\n .navbar-toggleable-lg .navbar-nav {\n flex-direction: row;\n }\n .navbar-toggleable-lg .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-toggleable-lg > .container {\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n }\n .navbar-toggleable-lg .navbar-collapse {\n display: flex !important;\n width: 100%;\n }\n .navbar-toggleable-lg .navbar-toggler {\n display: none;\n }\n}\n\n.navbar-toggleable-xl {\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n}\n\n.navbar-toggleable-xl .navbar-nav .dropdown-menu {\n position: static;\n float: none;\n}\n\n.navbar-toggleable-xl > .container {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-toggleable-xl .navbar-nav {\n flex-direction: row;\n}\n\n.navbar-toggleable-xl .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n}\n\n.navbar-toggleable-xl > .container {\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n}\n\n.navbar-toggleable-xl .navbar-collapse {\n display: flex !important;\n width: 100%;\n}\n\n.navbar-toggleable-xl .navbar-toggler {\n display: none;\n}\n\n.navbar-light .navbar-brand,\n.navbar-light .navbar-toggler {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-brand:focus, .navbar-light .navbar-brand:hover,\n.navbar-light .navbar-toggler:focus,\n.navbar-light .navbar-toggler:hover {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-nav .nav-link {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-nav .nav-link:focus, .navbar-light .navbar-nav .nav-link:hover {\n color: rgba(0, 0, 0, 0.7);\n}\n\n.navbar-light .navbar-nav .nav-link.disabled {\n color: rgba(0, 0, 0, 0.3);\n}\n\n.navbar-light .navbar-nav .open > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.open,\n.navbar-light .navbar-nav .nav-link.active {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-toggler {\n border-color: rgba(0, 0, 0, 0.1);\n}\n\n.navbar-light .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E\");\n}\n\n.navbar-light .navbar-text {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-toggler {\n color: white;\n}\n\n.navbar-inverse .navbar-brand:focus, .navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-toggler:focus,\n.navbar-inverse .navbar-toggler:hover {\n color: white;\n}\n\n.navbar-inverse .navbar-nav .nav-link {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-inverse .navbar-nav .nav-link:focus, .navbar-inverse .navbar-nav .nav-link:hover {\n color: rgba(255, 255, 255, 0.75);\n}\n\n.navbar-inverse .navbar-nav .nav-link.disabled {\n color: rgba(255, 255, 255, 0.25);\n}\n\n.navbar-inverse .navbar-nav .open > .nav-link,\n.navbar-inverse .navbar-nav .active > .nav-link,\n.navbar-inverse .navbar-nav .nav-link.open,\n.navbar-inverse .navbar-nav .nav-link.active {\n color: white;\n}\n\n.navbar-inverse .navbar-toggler {\n border-color: rgba(255, 255, 255, 0.1);\n}\n\n.navbar-inverse .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E\");\n}\n\n.navbar-inverse .navbar-text {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.card {\n position: relative;\n display: flex;\n flex-direction: column;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n\n.card-block {\n flex: 1 1 auto;\n padding: 1.25rem;\n}\n\n.card-title {\n margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link:hover {\n text-decoration: none;\n}\n\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n border-top-right-radius: 0.25rem;\n border-top-left-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: #f7f7f9;\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: #f7f7f9;\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n\n.card-primary {\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.card-primary .card-header,\n.card-primary .card-footer {\n background-color: transparent;\n}\n\n.card-success {\n background-color: #5cb85c;\n border-color: #5cb85c;\n}\n\n.card-success .card-header,\n.card-success .card-footer {\n background-color: transparent;\n}\n\n.card-info {\n background-color: #5bc0de;\n border-color: #5bc0de;\n}\n\n.card-info .card-header,\n.card-info .card-footer {\n background-color: transparent;\n}\n\n.card-warning {\n background-color: #f0ad4e;\n border-color: #f0ad4e;\n}\n\n.card-warning .card-header,\n.card-warning .card-footer {\n background-color: transparent;\n}\n\n.card-danger {\n background-color: #d9534f;\n border-color: #d9534f;\n}\n\n.card-danger .card-header,\n.card-danger .card-footer {\n background-color: transparent;\n}\n\n.card-outline-primary {\n background-color: transparent;\n border-color: #0275d8;\n}\n\n.card-outline-secondary {\n background-color: transparent;\n border-color: #ccc;\n}\n\n.card-outline-info {\n background-color: transparent;\n border-color: #5bc0de;\n}\n\n.card-outline-success {\n background-color: transparent;\n border-color: #5cb85c;\n}\n\n.card-outline-warning {\n background-color: transparent;\n border-color: #f0ad4e;\n}\n\n.card-outline-danger {\n background-color: transparent;\n border-color: #d9534f;\n}\n\n.card-inverse {\n color: rgba(255, 255, 255, 0.65);\n}\n\n.card-inverse .card-header,\n.card-inverse .card-footer {\n background-color: transparent;\n border-color: rgba(255, 255, 255, 0.2);\n}\n\n.card-inverse .card-header,\n.card-inverse .card-footer,\n.card-inverse .card-title,\n.card-inverse .card-blockquote {\n color: #fff;\n}\n\n.card-inverse .card-link,\n.card-inverse .card-text,\n.card-inverse .card-subtitle,\n.card-inverse .card-blockquote .blockquote-footer {\n color: rgba(255, 255, 255, 0.65);\n}\n\n.card-inverse .card-link:focus, .card-inverse .card-link:hover {\n color: #fff;\n}\n\n.card-blockquote {\n padding: 0;\n margin-bottom: 0;\n border-left: 0;\n}\n\n.card-img {\n border-radius: calc(0.25rem - 1px);\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n}\n\n.card-img-top {\n border-top-right-radius: calc(0.25rem - 1px);\n border-top-left-radius: calc(0.25rem - 1px);\n}\n\n.card-img-bottom {\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n@media (min-width: 576px) {\n .card-deck {\n display: flex;\n flex-flow: row wrap;\n }\n .card-deck .card {\n display: flex;\n flex: 1 0 0;\n flex-direction: column;\n }\n .card-deck .card:not(:first-child) {\n margin-left: 15px;\n }\n .card-deck .card:not(:last-child) {\n margin-right: 15px;\n }\n}\n\n@media (min-width: 576px) {\n .card-group {\n display: flex;\n flex-flow: row wrap;\n }\n .card-group .card {\n flex: 1 0 0;\n }\n .card-group .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group .card:first-child {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n }\n .card-group .card:first-child .card-img-top {\n border-top-right-radius: 0;\n }\n .card-group .card:first-child .card-img-bottom {\n border-bottom-right-radius: 0;\n }\n .card-group .card:last-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n }\n .card-group .card:last-child .card-img-top {\n border-top-left-radius: 0;\n }\n .card-group .card:last-child .card-img-bottom {\n border-bottom-left-radius: 0;\n }\n .card-group .card:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n .card-group .card:not(:first-child):not(:last-child) .card-img-top,\n .card-group .card:not(:first-child):not(:last-child) .card-img-bottom {\n border-radius: 0;\n }\n}\n\n@media (min-width: 576px) {\n .card-columns {\n column-count: 3;\n column-gap: 1.25rem;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n margin-bottom: 0.75rem;\n }\n}\n\n.breadcrumb {\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n list-style: none;\n background-color: #eceeef;\n border-radius: 0.25rem;\n}\n\n.breadcrumb::after {\n display: block;\n content: \"\";\n clear: both;\n}\n\n.breadcrumb-item {\n float: left;\n}\n\n.breadcrumb-item + .breadcrumb-item::before {\n display: inline-block;\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n color: #636c72;\n content: \"/\";\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: underline;\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: none;\n}\n\n.breadcrumb-item.active {\n color: #636c72;\n}\n\n.pagination {\n display: flex;\n padding-left: 0;\n list-style: none;\n border-radius: 0.25rem;\n}\n\n.page-item:first-child .page-link {\n margin-left: 0;\n border-bottom-left-radius: 0.25rem;\n border-top-left-radius: 0.25rem;\n}\n\n.page-item:last-child .page-link {\n border-bottom-right-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.page-item.active .page-link {\n z-index: 2;\n color: #fff;\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.page-item.disabled .page-link {\n color: #636c72;\n pointer-events: none;\n cursor: not-allowed;\n background-color: #fff;\n border-color: #ddd;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #0275d8;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n\n.page-link:focus, .page-link:hover {\n color: #014c8c;\n text-decoration: none;\n background-color: #eceeef;\n border-color: #ddd;\n}\n\n.pagination-lg .page-link {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n}\n\n.pagination-lg .page-item:first-child .page-link {\n border-bottom-left-radius: 0.3rem;\n border-top-left-radius: 0.3rem;\n}\n\n.pagination-lg .page-item:last-child .page-link {\n border-bottom-right-radius: 0.3rem;\n border-top-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n}\n\n.pagination-sm .page-item:first-child .page-link {\n border-bottom-left-radius: 0.2rem;\n border-top-left-radius: 0.2rem;\n}\n\n.pagination-sm .page-item:last-child .page-link {\n border-bottom-right-radius: 0.2rem;\n border-top-right-radius: 0.2rem;\n}\n\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n}\n\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\na.badge:focus, a.badge:hover {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n\n.badge-default {\n background-color: #636c72;\n}\n\n.badge-default[href]:focus, .badge-default[href]:hover {\n background-color: #4b5257;\n}\n\n.badge-primary {\n background-color: #0275d8;\n}\n\n.badge-primary[href]:focus, .badge-primary[href]:hover {\n background-color: #025aa5;\n}\n\n.badge-success {\n background-color: #5cb85c;\n}\n\n.badge-success[href]:focus, .badge-success[href]:hover {\n background-color: #449d44;\n}\n\n.badge-info {\n background-color: #5bc0de;\n}\n\n.badge-info[href]:focus, .badge-info[href]:hover {\n background-color: #31b0d5;\n}\n\n.badge-warning {\n background-color: #f0ad4e;\n}\n\n.badge-warning[href]:focus, .badge-warning[href]:hover {\n background-color: #ec971f;\n}\n\n.badge-danger {\n background-color: #d9534f;\n}\n\n.badge-danger[href]:focus, .badge-danger[href]:hover {\n background-color: #c9302c;\n}\n\n.jumbotron {\n padding: 2rem 1rem;\n margin-bottom: 2rem;\n background-color: #eceeef;\n border-radius: 0.3rem;\n}\n\n@media (min-width: 576px) {\n .jumbotron {\n padding: 4rem 2rem;\n }\n}\n\n.jumbotron-hr {\n border-top-color: #d0d5d8;\n}\n\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n border-radius: 0;\n}\n\n.alert {\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: bold;\n}\n\n.alert-dismissible .close {\n position: relative;\n top: -0.75rem;\n right: -1.25rem;\n padding: 0.75rem 1.25rem;\n color: inherit;\n}\n\n.alert-success {\n background-color: #dff0d8;\n border-color: #d0e9c6;\n color: #3c763d;\n}\n\n.alert-success hr {\n border-top-color: #c1e2b3;\n}\n\n.alert-success .alert-link {\n color: #2b542c;\n}\n\n.alert-info {\n background-color: #d9edf7;\n border-color: #bcdff1;\n color: #31708f;\n}\n\n.alert-info hr {\n border-top-color: #a6d5ec;\n}\n\n.alert-info .alert-link {\n color: #245269;\n}\n\n.alert-warning {\n background-color: #fcf8e3;\n border-color: #faf2cc;\n color: #8a6d3b;\n}\n\n.alert-warning hr {\n border-top-color: #f7ecb5;\n}\n\n.alert-warning .alert-link {\n color: #66512c;\n}\n\n.alert-danger {\n background-color: #f2dede;\n border-color: #ebcccc;\n color: #a94442;\n}\n\n.alert-danger hr {\n border-top-color: #e4b9b9;\n}\n\n.alert-danger .alert-link {\n color: #843534;\n}\n\n@keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n\n.progress {\n display: flex;\n overflow: hidden;\n font-size: 0.75rem;\n line-height: 1rem;\n text-align: center;\n background-color: #eceeef;\n border-radius: 0.25rem;\n}\n\n.progress-bar {\n height: 1rem;\n color: #fff;\n background-color: #0275d8;\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n animation: progress-bar-stripes 1s linear infinite;\n}\n\n.media {\n display: flex;\n align-items: flex-start;\n}\n\n.media-body {\n flex: 1;\n}\n\n.list-group {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n}\n\n.list-group-item-action {\n width: 100%;\n color: #464a4c;\n text-align: inherit;\n}\n\n.list-group-item-action .list-group-item-heading {\n color: #292b2c;\n}\n\n.list-group-item-action:focus, .list-group-item-action:hover {\n color: #464a4c;\n text-decoration: none;\n background-color: #f7f7f9;\n}\n\n.list-group-item-action:active {\n color: #292b2c;\n background-color: #eceeef;\n}\n\n.list-group-item {\n position: relative;\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n padding: 0.75rem 1.25rem;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.list-group-item:first-child {\n border-top-right-radius: 0.25rem;\n border-top-left-radius: 0.25rem;\n}\n\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.list-group-item:focus, .list-group-item:hover {\n text-decoration: none;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n color: #636c72;\n cursor: not-allowed;\n background-color: #fff;\n}\n\n.list-group-item.disabled .list-group-item-heading, .list-group-item:disabled .list-group-item-heading {\n color: inherit;\n}\n\n.list-group-item.disabled .list-group-item-text, .list-group-item:disabled .list-group-item-text {\n color: #636c72;\n}\n\n.list-group-item.active {\n z-index: 2;\n color: #fff;\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small {\n color: inherit;\n}\n\n.list-group-item.active .list-group-item-text {\n color: #daeeff;\n}\n\n.list-group-flush .list-group-item {\n border-right: 0;\n border-left: 0;\n border-radius: 0;\n}\n\n.list-group-flush:first-child .list-group-item:first-child {\n border-top: 0;\n}\n\n.list-group-flush:last-child .list-group-item:last-child {\n border-bottom: 0;\n}\n\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\n\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\n\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\n\na.list-group-item-success:focus, a.list-group-item-success:hover,\nbutton.list-group-item-success:focus,\nbutton.list-group-item-success:hover {\n color: #3c763d;\n background-color: #d0e9c6;\n}\n\na.list-group-item-success.active,\nbutton.list-group-item-success.active {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\n\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\n\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\n\na.list-group-item-info:focus, a.list-group-item-info:hover,\nbutton.list-group-item-info:focus,\nbutton.list-group-item-info:hover {\n color: #31708f;\n background-color: #c4e3f3;\n}\n\na.list-group-item-info.active,\nbutton.list-group-item-info.active {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\n\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\n\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\n\na.list-group-item-warning:focus, a.list-group-item-warning:hover,\nbutton.list-group-item-warning:focus,\nbutton.list-group-item-warning:hover {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\n\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\n\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\n\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\n\na.list-group-item-danger:focus, a.list-group-item-danger:hover,\nbutton.list-group-item-danger:focus,\nbutton.list-group-item-danger:hover {\n color: #a94442;\n background-color: #ebcccc;\n}\n\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n}\n\n.embed-responsive::before {\n display: block;\n content: \"\";\n}\n\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n\n.embed-responsive-21by9::before {\n padding-top: 42.857143%;\n}\n\n.embed-responsive-16by9::before {\n padding-top: 56.25%;\n}\n\n.embed-responsive-4by3::before {\n padding-top: 75%;\n}\n\n.embed-responsive-1by1::before {\n padding-top: 100%;\n}\n\n.close {\n float: right;\n font-size: 1.5rem;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: .5;\n}\n\n.close:focus, .close:hover {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n opacity: .75;\n}\n\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n\n.modal-open {\n overflow: hidden;\n}\n\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n outline: 0;\n}\n\n.modal.fade .modal-dialog {\n transition: transform 0.3s ease-out;\n transform: translate(0, -25%);\n}\n\n.modal.show .modal-dialog {\n transform: translate(0, 0);\n}\n\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0;\n}\n\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n\n.modal-backdrop.fade {\n opacity: 0;\n}\n\n.modal-backdrop.show {\n opacity: 0.5;\n}\n\n.modal-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 15px;\n border-bottom: 1px solid #eceeef;\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: 1.5;\n}\n\n.modal-body {\n position: relative;\n flex: 1 1 auto;\n padding: 15px;\n}\n\n.modal-footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 15px;\n border-top: 1px solid #eceeef;\n}\n\n.modal-footer > :not(:first-child) {\n margin-left: .25rem;\n}\n\n.modal-footer > :not(:last-child) {\n margin-right: .25rem;\n}\n\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n@media (min-width: 576px) {\n .modal-dialog {\n max-width: 500px;\n margin: 30px auto;\n }\n .modal-sm {\n max-width: 300px;\n }\n}\n\n@media (min-width: 992px) {\n .modal-lg {\n max-width: 800px;\n }\n}\n\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n font-size: 0.875rem;\n word-wrap: break-word;\n opacity: 0;\n}\n\n.tooltip.show {\n opacity: 0.9;\n}\n\n.tooltip.tooltip-top, .tooltip.bs-tether-element-attached-bottom {\n padding: 5px 0;\n margin-top: -3px;\n}\n\n.tooltip.tooltip-top .tooltip-inner::before, .tooltip.bs-tether-element-attached-bottom .tooltip-inner::before {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n content: \"\";\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n\n.tooltip.tooltip-right, .tooltip.bs-tether-element-attached-left {\n padding: 0 5px;\n margin-left: 3px;\n}\n\n.tooltip.tooltip-right .tooltip-inner::before, .tooltip.bs-tether-element-attached-left .tooltip-inner::before {\n top: 50%;\n left: 0;\n margin-top: -5px;\n content: \"\";\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n\n.tooltip.tooltip-bottom, .tooltip.bs-tether-element-attached-top {\n padding: 5px 0;\n margin-top: 3px;\n}\n\n.tooltip.tooltip-bottom .tooltip-inner::before, .tooltip.bs-tether-element-attached-top .tooltip-inner::before {\n top: 0;\n left: 50%;\n margin-left: -5px;\n content: \"\";\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n\n.tooltip.tooltip-left, .tooltip.bs-tether-element-attached-right {\n padding: 0 5px;\n margin-left: -3px;\n}\n\n.tooltip.tooltip-left .tooltip-inner::before, .tooltip.bs-tether-element-attached-right .tooltip-inner::before {\n top: 50%;\n right: 0;\n margin-top: -5px;\n content: \"\";\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 0.25rem;\n}\n\n.tooltip-inner::before {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: block;\n max-width: 276px;\n padding: 1px;\n font-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n font-size: 0.875rem;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n}\n\n.popover.popover-top, .popover.bs-tether-element-attached-bottom {\n margin-top: -10px;\n}\n\n.popover.popover-top::before, .popover.popover-top::after, .popover.bs-tether-element-attached-bottom::before, .popover.bs-tether-element-attached-bottom::after {\n left: 50%;\n border-bottom-width: 0;\n}\n\n.popover.popover-top::before, .popover.bs-tether-element-attached-bottom::before {\n bottom: -11px;\n margin-left: -11px;\n border-top-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.popover-top::after, .popover.bs-tether-element-attached-bottom::after {\n bottom: -10px;\n margin-left: -10px;\n border-top-color: #fff;\n}\n\n.popover.popover-right, .popover.bs-tether-element-attached-left {\n margin-left: 10px;\n}\n\n.popover.popover-right::before, .popover.popover-right::after, .popover.bs-tether-element-attached-left::before, .popover.bs-tether-element-attached-left::after {\n top: 50%;\n border-left-width: 0;\n}\n\n.popover.popover-right::before, .popover.bs-tether-element-attached-left::before {\n left: -11px;\n margin-top: -11px;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.popover-right::after, .popover.bs-tether-element-attached-left::after {\n left: -10px;\n margin-top: -10px;\n border-right-color: #fff;\n}\n\n.popover.popover-bottom, .popover.bs-tether-element-attached-top {\n margin-top: 10px;\n}\n\n.popover.popover-bottom::before, .popover.popover-bottom::after, .popover.bs-tether-element-attached-top::before, .popover.bs-tether-element-attached-top::after {\n left: 50%;\n border-top-width: 0;\n}\n\n.popover.popover-bottom::before, .popover.bs-tether-element-attached-top::before {\n top: -11px;\n margin-left: -11px;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.popover-bottom::after, .popover.bs-tether-element-attached-top::after {\n top: -10px;\n margin-left: -10px;\n border-bottom-color: #f7f7f7;\n}\n\n.popover.popover-bottom .popover-title::before, .popover.bs-tether-element-attached-top .popover-title::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 20px;\n margin-left: -10px;\n content: \"\";\n border-bottom: 1px solid #f7f7f7;\n}\n\n.popover.popover-left, .popover.bs-tether-element-attached-right {\n margin-left: -10px;\n}\n\n.popover.popover-left::before, .popover.popover-left::after, .popover.bs-tether-element-attached-right::before, .popover.bs-tether-element-attached-right::after {\n top: 50%;\n border-right-width: 0;\n}\n\n.popover.popover-left::before, .popover.bs-tether-element-attached-right::before {\n right: -11px;\n margin-top: -11px;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.popover-left::after, .popover.bs-tether-element-attached-right::after {\n right: -10px;\n margin-top: -10px;\n border-left-color: #fff;\n}\n\n.popover-title {\n padding: 8px 14px;\n margin-bottom: 0;\n font-size: 1rem;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-top-right-radius: calc(0.3rem - 1px);\n border-top-left-radius: calc(0.3rem - 1px);\n}\n\n.popover-title:empty {\n display: none;\n}\n\n.popover-content {\n padding: 9px 14px;\n}\n\n.popover::before,\n.popover::after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n\n.popover::before {\n content: \"\";\n border-width: 11px;\n}\n\n.popover::after {\n content: \"\";\n border-width: 10px;\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-item {\n position: relative;\n display: none;\n width: 100%;\n}\n\n@media (-webkit-transform-3d) {\n .carousel-item {\n transition: transform 0.6s ease-in-out;\n backface-visibility: hidden;\n perspective: 1000px;\n }\n}\n\n@supports (transform: translate3d(0, 0, 0)) {\n .carousel-item {\n transition: transform 0.6s ease-in-out;\n backface-visibility: hidden;\n perspective: 1000px;\n }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: flex;\n}\n\n.carousel-item-next,\n.carousel-item-prev {\n position: absolute;\n top: 0;\n}\n\n@media (-webkit-transform-3d) {\n .carousel-item-next.carousel-item-left,\n .carousel-item-prev.carousel-item-right {\n transform: translate3d(0, 0, 0);\n }\n .carousel-item-next,\n .active.carousel-item-right {\n transform: translate3d(100%, 0, 0);\n }\n .carousel-item-prev,\n .active.carousel-item-left {\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n@supports (transform: translate3d(0, 0, 0)) {\n .carousel-item-next.carousel-item-left,\n .carousel-item-prev.carousel-item-right {\n transform: translate3d(0, 0, 0);\n }\n .carousel-item-next,\n .active.carousel-item-right {\n transform: translate3d(100%, 0, 0);\n }\n .carousel-item-prev,\n .active.carousel-item-left {\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 15%;\n color: #fff;\n text-align: center;\n opacity: 0.5;\n}\n\n.carousel-control-prev:focus, .carousel-control-prev:hover,\n.carousel-control-next:focus,\n.carousel-control-next:hover {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: .9;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n background: transparent no-repeat center center;\n background-size: 100% 100%;\n}\n\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M4 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\");\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M1.5 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\");\n}\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 10px;\n left: 0;\n z-index: 15;\n display: flex;\n justify-content: center;\n padding-left: 0;\n margin-right: 15%;\n margin-left: 15%;\n list-style: none;\n}\n\n.carousel-indicators li {\n position: relative;\n flex: 1 0 auto;\n max-width: 30px;\n height: 3px;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n cursor: pointer;\n background-color: rgba(255, 255, 255, 0.5);\n}\n\n.carousel-indicators li::before {\n position: absolute;\n top: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n}\n\n.carousel-indicators li::after {\n position: absolute;\n bottom: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n}\n\n.carousel-indicators .active {\n background-color: #fff;\n}\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.bg-faded {\n background-color: #f7f7f7;\n}\n\n.bg-primary {\n background-color: #0275d8 !important;\n}\n\na.bg-primary:focus, a.bg-primary:hover {\n background-color: #025aa5 !important;\n}\n\n.bg-success {\n background-color: #5cb85c !important;\n}\n\na.bg-success:focus, a.bg-success:hover {\n background-color: #449d44 !important;\n}\n\n.bg-info {\n background-color: #5bc0de !important;\n}\n\na.bg-info:focus, a.bg-info:hover {\n background-color: #31b0d5 !important;\n}\n\n.bg-warning {\n background-color: #f0ad4e !important;\n}\n\na.bg-warning:focus, a.bg-warning:hover {\n background-color: #ec971f !important;\n}\n\n.bg-danger {\n background-color: #d9534f !important;\n}\n\na.bg-danger:focus, a.bg-danger:hover {\n background-color: #c9302c !important;\n}\n\n.bg-inverse {\n background-color: #292b2c !important;\n}\n\na.bg-inverse:focus, a.bg-inverse:hover {\n background-color: #101112 !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-right-0 {\n border-right: 0 !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-left-0 {\n border-left: 0 !important;\n}\n\n.rounded {\n border-radius: 0.25rem;\n}\n\n.rounded-top {\n border-top-right-radius: 0.25rem;\n border-top-left-radius: 0.25rem;\n}\n\n.rounded-right {\n border-bottom-right-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.rounded-left {\n border-bottom-left-radius: 0.25rem;\n border-top-left-radius: 0.25rem;\n}\n\n.rounded-circle {\n border-radius: 50%;\n}\n\n.rounded-0 {\n border-radius: 0;\n}\n\n.clearfix::after {\n display: block;\n content: \"\";\n clear: both;\n}\n\n.d-none {\n display: none !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-none {\n display: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 768px) {\n .d-md-none {\n display: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 992px) {\n .d-lg-none {\n display: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 1200px) {\n .d-xl-none {\n display: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n}\n\n.flex-first {\n order: -1;\n}\n\n.flex-last {\n order: 1;\n}\n\n.flex-unordered {\n order: 0;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n .flex-sm-first {\n order: -1;\n }\n .flex-sm-last {\n order: 1;\n }\n .flex-sm-unordered {\n order: 0;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 768px) {\n .flex-md-first {\n order: -1;\n }\n .flex-md-last {\n order: 1;\n }\n .flex-md-unordered {\n order: 0;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 992px) {\n .flex-lg-first {\n order: -1;\n }\n .flex-lg-last {\n order: 1;\n }\n .flex-lg-unordered {\n order: 0;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 1200px) {\n .flex-xl-first {\n order: -1;\n }\n .flex-xl-last {\n order: 1;\n }\n .flex-xl-unordered {\n order: 0;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n}\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-left {\n float: left !important;\n }\n .float-sm-right {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n}\n\n@media (min-width: 768px) {\n .float-md-left {\n float: left !important;\n }\n .float-md-right {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n}\n\n@media (min-width: 992px) {\n .float-lg-left {\n float: left !important;\n }\n .float-lg-right {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n}\n\n@media (min-width: 1200px) {\n .float-xl-left {\n float: left !important;\n }\n .float-xl-right {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n\n.sticky-top {\n position: sticky;\n top: 0;\n z-index: 1030;\n}\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.m-0 {\n margin: 0 0 !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mr-0 {\n margin-right: 0 !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.ml-0 {\n margin-left: 0 !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem 0.25rem !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mr-1 {\n margin-right: 0.25rem !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.ml-1 {\n margin-left: 0.25rem !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem 0.5rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mr-2 {\n margin-right: 0.5rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.ml-2 {\n margin-left: 0.5rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem 1rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mr-3 {\n margin-right: 1rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.ml-3 {\n margin-left: 1rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem 1.5rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mr-4 {\n margin-right: 1.5rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.ml-4 {\n margin-left: 1.5rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem 3rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mr-5 {\n margin-right: 3rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.ml-5 {\n margin-left: 3rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.p-0 {\n padding: 0 0 !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pr-0 {\n padding-right: 0 !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pl-0 {\n padding-left: 0 !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem 0.25rem !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pr-1 {\n padding-right: 0.25rem !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pl-1 {\n padding-left: 0.25rem !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem 0.5rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pr-2 {\n padding-right: 0.5rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pl-2 {\n padding-left: 0.5rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem 1rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pr-3 {\n padding-right: 1rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pl-3 {\n padding-left: 1rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem 1.5rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pr-4 {\n padding-right: 1.5rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pl-4 {\n padding-left: 1.5rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem 3rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pr-5 {\n padding-right: 3rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.pl-5 {\n padding-left: 3rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.mr-auto {\n margin-right: auto !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ml-auto {\n margin-left: auto !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n@media (min-width: 576px) {\n .m-sm-0 {\n margin: 0 0 !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mr-sm-0 {\n margin-right: 0 !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .ml-sm-0 {\n margin-left: 0 !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem 0.25rem !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mr-sm-1 {\n margin-right: 0.25rem !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-sm-1 {\n margin-left: 0.25rem !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem 0.5rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mr-sm-2 {\n margin-right: 0.5rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-sm-2 {\n margin-left: 0.5rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem 1rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mr-sm-3 {\n margin-right: 1rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .ml-sm-3 {\n margin-left: 1rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem 1.5rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mr-sm-4 {\n margin-right: 1.5rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-sm-4 {\n margin-left: 1.5rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem 3rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mr-sm-5 {\n margin-right: 3rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .ml-sm-5 {\n margin-left: 3rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-sm-0 {\n padding: 0 0 !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pr-sm-0 {\n padding-right: 0 !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pl-sm-0 {\n padding-left: 0 !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem 0.25rem !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pr-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-sm-1 {\n padding-left: 0.25rem !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem 0.5rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pr-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-sm-2 {\n padding-left: 0.5rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem 1rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pr-sm-3 {\n padding-right: 1rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pl-sm-3 {\n padding-left: 1rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem 1.5rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pr-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-sm-4 {\n padding-left: 1.5rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem 3rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pr-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .pl-sm-5 {\n padding-left: 3rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .mr-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ml-sm-auto {\n margin-left: auto !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n@media (min-width: 768px) {\n .m-md-0 {\n margin: 0 0 !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mr-md-0 {\n margin-right: 0 !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .ml-md-0 {\n margin-left: 0 !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem 0.25rem !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mr-md-1 {\n margin-right: 0.25rem !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-md-1 {\n margin-left: 0.25rem !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem 0.5rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mr-md-2 {\n margin-right: 0.5rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-md-2 {\n margin-left: 0.5rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem 1rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mr-md-3 {\n margin-right: 1rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .ml-md-3 {\n margin-left: 1rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem 1.5rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mr-md-4 {\n margin-right: 1.5rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-md-4 {\n margin-left: 1.5rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem 3rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mr-md-5 {\n margin-right: 3rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .ml-md-5 {\n margin-left: 3rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-md-0 {\n padding: 0 0 !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pr-md-0 {\n padding-right: 0 !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pl-md-0 {\n padding-left: 0 !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem 0.25rem !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pr-md-1 {\n padding-right: 0.25rem !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-md-1 {\n padding-left: 0.25rem !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem 0.5rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pr-md-2 {\n padding-right: 0.5rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-md-2 {\n padding-left: 0.5rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem 1rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pr-md-3 {\n padding-right: 1rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pl-md-3 {\n padding-left: 1rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem 1.5rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pr-md-4 {\n padding-right: 1.5rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-md-4 {\n padding-left: 1.5rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem 3rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pr-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .pl-md-5 {\n padding-left: 3rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .mr-md-auto {\n margin-right: auto !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ml-md-auto {\n margin-left: auto !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n@media (min-width: 992px) {\n .m-lg-0 {\n margin: 0 0 !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mr-lg-0 {\n margin-right: 0 !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .ml-lg-0 {\n margin-left: 0 !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem 0.25rem !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mr-lg-1 {\n margin-right: 0.25rem !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-lg-1 {\n margin-left: 0.25rem !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem 0.5rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mr-lg-2 {\n margin-right: 0.5rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-lg-2 {\n margin-left: 0.5rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem 1rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mr-lg-3 {\n margin-right: 1rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .ml-lg-3 {\n margin-left: 1rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem 1.5rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mr-lg-4 {\n margin-right: 1.5rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-lg-4 {\n margin-left: 1.5rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem 3rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mr-lg-5 {\n margin-right: 3rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .ml-lg-5 {\n margin-left: 3rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-lg-0 {\n padding: 0 0 !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pr-lg-0 {\n padding-right: 0 !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pl-lg-0 {\n padding-left: 0 !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem 0.25rem !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pr-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-lg-1 {\n padding-left: 0.25rem !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem 0.5rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pr-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-lg-2 {\n padding-left: 0.5rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem 1rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pr-lg-3 {\n padding-right: 1rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pl-lg-3 {\n padding-left: 1rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem 1.5rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pr-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-lg-4 {\n padding-left: 1.5rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem 3rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pr-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .pl-lg-5 {\n padding-left: 3rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .mr-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ml-lg-auto {\n margin-left: auto !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n@media (min-width: 1200px) {\n .m-xl-0 {\n margin: 0 0 !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mr-xl-0 {\n margin-right: 0 !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .ml-xl-0 {\n margin-left: 0 !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem 0.25rem !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mr-xl-1 {\n margin-right: 0.25rem !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-xl-1 {\n margin-left: 0.25rem !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem 0.5rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mr-xl-2 {\n margin-right: 0.5rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-xl-2 {\n margin-left: 0.5rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem 1rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mr-xl-3 {\n margin-right: 1rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .ml-xl-3 {\n margin-left: 1rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem 1.5rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mr-xl-4 {\n margin-right: 1.5rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-xl-4 {\n margin-left: 1.5rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem 3rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mr-xl-5 {\n margin-right: 3rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .ml-xl-5 {\n margin-left: 3rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-xl-0 {\n padding: 0 0 !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pr-xl-0 {\n padding-right: 0 !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pl-xl-0 {\n padding-left: 0 !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem 0.25rem !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pr-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-xl-1 {\n padding-left: 0.25rem !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem 0.5rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pr-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-xl-2 {\n padding-left: 0.5rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem 1rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pr-xl-3 {\n padding-right: 1rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pl-xl-3 {\n padding-left: 1rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem 1.5rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pr-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-xl-4 {\n padding-left: 1.5rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem 3rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pr-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .pl-xl-5 {\n padding-left: 3rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .mr-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ml-xl-auto {\n margin-left: auto !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n.text-justify {\n text-align: justify !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n@media (min-width: 576px) {\n .text-sm-left {\n text-align: left !important;\n }\n .text-sm-right {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 768px) {\n .text-md-left {\n text-align: left !important;\n }\n .text-md-right {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 992px) {\n .text-lg-left {\n text-align: left !important;\n }\n .text-lg-right {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 1200px) {\n .text-xl-left {\n text-align: left !important;\n }\n .text-xl-right {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.font-weight-normal {\n font-weight: normal;\n}\n\n.font-weight-bold {\n font-weight: bold;\n}\n\n.font-italic {\n font-style: italic;\n}\n\n.text-white {\n color: #fff !important;\n}\n\n.text-muted {\n color: #636c72 !important;\n}\n\na.text-muted:focus, a.text-muted:hover {\n color: #4b5257 !important;\n}\n\n.text-primary {\n color: #0275d8 !important;\n}\n\na.text-primary:focus, a.text-primary:hover {\n color: #025aa5 !important;\n}\n\n.text-success {\n color: #5cb85c !important;\n}\n\na.text-success:focus, a.text-success:hover {\n color: #449d44 !important;\n}\n\n.text-info {\n color: #5bc0de !important;\n}\n\na.text-info:focus, a.text-info:hover {\n color: #31b0d5 !important;\n}\n\n.text-warning {\n color: #f0ad4e !important;\n}\n\na.text-warning:focus, a.text-warning:hover {\n color: #ec971f !important;\n}\n\n.text-danger {\n color: #d9534f !important;\n}\n\na.text-danger:focus, a.text-danger:hover {\n color: #c9302c !important;\n}\n\n.text-gray-dark {\n color: #292b2c !important;\n}\n\na.text-gray-dark:focus, a.text-gray-dark:hover {\n color: #101112 !important;\n}\n\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n.hidden-xs-up {\n display: none !important;\n}\n\n@media (max-width: 575px) {\n .hidden-xs-down {\n display: none !important;\n }\n}\n\n@media (min-width: 576px) {\n .hidden-sm-up {\n display: none !important;\n }\n}\n\n@media (max-width: 767px) {\n .hidden-sm-down {\n display: none !important;\n }\n}\n\n@media (min-width: 768px) {\n .hidden-md-up {\n display: none !important;\n }\n}\n\n@media (max-width: 991px) {\n .hidden-md-down {\n display: none !important;\n }\n}\n\n@media (min-width: 992px) {\n .hidden-lg-up {\n display: none !important;\n }\n}\n\n@media (max-width: 1199px) {\n .hidden-lg-down {\n display: none !important;\n }\n}\n\n@media (min-width: 1200px) {\n .hidden-xl-up {\n display: none !important;\n }\n}\n\n.hidden-xl-down {\n display: none !important;\n}\n\n.visible-print-block {\n display: none !important;\n}\n\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n\n.visible-print-inline {\n display: none !important;\n}\n\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n\n.visible-print-inline-block {\n display: none !important;\n}\n\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap.css.map */",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]} \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap.min.css b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap.min.css new file mode 100644 index 0000000..c81ad69 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v4.0.0-alpha.6 (https://getbootstrap.com) + * Copyright 2011-2017 The Bootstrap Authors + * Copyright 2011-2017 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none}@media print{*,::after,::before,blockquote::first-letter,blockquote::first-line,div::first-letter,div::first-line,li::first-letter,li::first-line,p::first-letter,p::first-line{text-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}html{-webkit-box-sizing:border-box;box-sizing:border-box}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}@-ms-viewport{width:device-width}html{-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}body{font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#292b2c;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{cursor:help}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}a{color:#0275d8;text-decoration:none}a:focus,a:hover{color:#014c8c;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle}[role=button]{cursor:pointer}[role=button],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse;background-color:transparent}caption{padding-top:.75rem;padding-bottom:.75rem;color:#636c72;text-align:left;caption-side:bottom}th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,select,textarea{line-height:inherit}input[type=checkbox]:disabled,input[type=radio]:disabled{cursor:not-allowed}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit}input[type=search]{-webkit-appearance:none}output{display:inline-block}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.1}.display-2{font-size:5.5rem;font-weight:300;line-height:1.1}.display-3{font-size:4.5rem;font-weight:300;line-height:1.1}.display-4{font-size:3.5rem;font-weight:300;line-height:1.1}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:5px}.initialism{font-size:90%;text-transform:uppercase}.blockquote{padding:.5rem 1rem;margin-bottom:1rem;font-size:1.25rem;border-left:.25rem solid #eceeef}.blockquote-footer{display:block;font-size:80%;color:#636c72}.blockquote-footer::before{content:"\2014 \00A0"}.blockquote-reverse{padding-right:1rem;padding-left:0;text-align:right;border-right:.25rem solid #eceeef;border-left:0}.blockquote-reverse .blockquote-footer::before{content:""}.blockquote-reverse .blockquote-footer::after{content:"\00A0 \2014"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:.25rem;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#636c72}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{padding:.2rem .4rem;font-size:90%;color:#bd4147;background-color:#f7f7f9;border-radius:.25rem}a>code{padding:0;color:inherit;background-color:inherit}kbd{padding:.2rem .4rem;font-size:90%;color:#fff;background-color:#292b2c;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;margin-top:0;margin-bottom:1rem;font-size:90%;color:#292b2c}pre code{padding:0;font-size:inherit;color:inherit;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{position:relative;margin-left:auto;margin-right:auto;padding-right:15px;padding-left:15px}@media (min-width:576px){.container{padding-right:15px;padding-left:15px}}@media (min-width:768px){.container{padding-right:15px;padding-left:15px}}@media (min-width:992px){.container{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.container{padding-right:15px;padding-left:15px}}@media (min-width:576px){.container{width:540px;max-width:100%}}@media (min-width:768px){.container{width:720px;max-width:100%}}@media (min-width:992px){.container{width:960px;max-width:100%}}@media (min-width:1200px){.container{width:1140px;max-width:100%}}.container-fluid{position:relative;margin-left:auto;margin-right:auto;padding-right:15px;padding-left:15px}@media (min-width:576px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:768px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:992px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.container-fluid{padding-right:15px;padding-left:15px}}.row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}@media (min-width:576px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:768px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:992px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:1200px){.row{margin-right:-15px;margin-left:-15px}}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}@media (min-width:576px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{padding-right:15px;padding-left:15px}}@media (min-width:768px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{padding-right:15px;padding-left:15px}}@media (min-width:992px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{padding-right:15px;padding-left:15px}}.col{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-0{right:auto}.pull-1{right:8.333333%}.pull-2{right:16.666667%}.pull-3{right:25%}.pull-4{right:33.333333%}.pull-5{right:41.666667%}.pull-6{right:50%}.pull-7{right:58.333333%}.pull-8{right:66.666667%}.pull-9{right:75%}.pull-10{right:83.333333%}.pull-11{right:91.666667%}.pull-12{right:100%}.push-0{left:auto}.push-1{left:8.333333%}.push-2{left:16.666667%}.push-3{left:25%}.push-4{left:33.333333%}.push-5{left:41.666667%}.push-6{left:50%}.push-7{left:58.333333%}.push-8{left:66.666667%}.push-9{left:75%}.push-10{left:83.333333%}.push-11{left:91.666667%}.push-12{left:100%}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-sm-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-sm-0{right:auto}.pull-sm-1{right:8.333333%}.pull-sm-2{right:16.666667%}.pull-sm-3{right:25%}.pull-sm-4{right:33.333333%}.pull-sm-5{right:41.666667%}.pull-sm-6{right:50%}.pull-sm-7{right:58.333333%}.pull-sm-8{right:66.666667%}.pull-sm-9{right:75%}.pull-sm-10{right:83.333333%}.pull-sm-11{right:91.666667%}.pull-sm-12{right:100%}.push-sm-0{left:auto}.push-sm-1{left:8.333333%}.push-sm-2{left:16.666667%}.push-sm-3{left:25%}.push-sm-4{left:33.333333%}.push-sm-5{left:41.666667%}.push-sm-6{left:50%}.push-sm-7{left:58.333333%}.push-sm-8{left:66.666667%}.push-sm-9{left:75%}.push-sm-10{left:83.333333%}.push-sm-11{left:91.666667%}.push-sm-12{left:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-md-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-md-0{right:auto}.pull-md-1{right:8.333333%}.pull-md-2{right:16.666667%}.pull-md-3{right:25%}.pull-md-4{right:33.333333%}.pull-md-5{right:41.666667%}.pull-md-6{right:50%}.pull-md-7{right:58.333333%}.pull-md-8{right:66.666667%}.pull-md-9{right:75%}.pull-md-10{right:83.333333%}.pull-md-11{right:91.666667%}.pull-md-12{right:100%}.push-md-0{left:auto}.push-md-1{left:8.333333%}.push-md-2{left:16.666667%}.push-md-3{left:25%}.push-md-4{left:33.333333%}.push-md-5{left:41.666667%}.push-md-6{left:50%}.push-md-7{left:58.333333%}.push-md-8{left:66.666667%}.push-md-9{left:75%}.push-md-10{left:83.333333%}.push-md-11{left:91.666667%}.push-md-12{left:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-lg-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-lg-0{right:auto}.pull-lg-1{right:8.333333%}.pull-lg-2{right:16.666667%}.pull-lg-3{right:25%}.pull-lg-4{right:33.333333%}.pull-lg-5{right:41.666667%}.pull-lg-6{right:50%}.pull-lg-7{right:58.333333%}.pull-lg-8{right:66.666667%}.pull-lg-9{right:75%}.pull-lg-10{right:83.333333%}.pull-lg-11{right:91.666667%}.pull-lg-12{right:100%}.push-lg-0{left:auto}.push-lg-1{left:8.333333%}.push-lg-2{left:16.666667%}.push-lg-3{left:25%}.push-lg-4{left:33.333333%}.push-lg-5{left:41.666667%}.push-lg-6{left:50%}.push-lg-7{left:58.333333%}.push-lg-8{left:66.666667%}.push-lg-9{left:75%}.push-lg-10{left:83.333333%}.push-lg-11{left:91.666667%}.push-lg-12{left:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-xl-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-xl-0{right:auto}.pull-xl-1{right:8.333333%}.pull-xl-2{right:16.666667%}.pull-xl-3{right:25%}.pull-xl-4{right:33.333333%}.pull-xl-5{right:41.666667%}.pull-xl-6{right:50%}.pull-xl-7{right:58.333333%}.pull-xl-8{right:66.666667%}.pull-xl-9{right:75%}.pull-xl-10{right:83.333333%}.pull-xl-11{right:91.666667%}.pull-xl-12{right:100%}.push-xl-0{left:auto}.push-xl-1{left:8.333333%}.push-xl-2{left:16.666667%}.push-xl-3{left:25%}.push-xl-4{left:33.333333%}.push-xl-5{left:41.666667%}.push-xl-6{left:50%}.push-xl-7{left:58.333333%}.push-xl-8{left:66.666667%}.push-xl-9{left:75%}.push-xl-10{left:83.333333%}.push-xl-11{left:91.666667%}.push-xl-12{left:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;max-width:100%;margin-bottom:1rem}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #eceeef}.table thead th{vertical-align:bottom;border-bottom:2px solid #eceeef}.table tbody+tbody{border-top:2px solid #eceeef}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #eceeef}.table-bordered td,.table-bordered th{border:1px solid #eceeef}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table-success,.table-success>td,.table-success>th{background-color:#dff0d8}.table-hover .table-success:hover{background-color:#d0e9c6}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#d0e9c6}.table-info,.table-info>td,.table-info>th{background-color:#d9edf7}.table-hover .table-info:hover{background-color:#c4e3f3}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#c4e3f3}.table-warning,.table-warning>td,.table-warning>th{background-color:#fcf8e3}.table-hover .table-warning:hover{background-color:#faf2cc}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#faf2cc}.table-danger,.table-danger>td,.table-danger>th{background-color:#f2dede}.table-hover .table-danger:hover{background-color:#ebcccc}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#ebcccc}.thead-inverse th{color:#fff;background-color:#292b2c}.thead-default th{color:#464a4c;background-color:#eceeef}.table-inverse{color:#fff;background-color:#292b2c}.table-inverse td,.table-inverse th,.table-inverse thead th{border-color:#fff}.table-inverse.table-bordered{border:0}.table-responsive{display:block;width:100%;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive.table-bordered{border:0}.form-control{display:block;width:100%;padding:.5rem .75rem;font-size:1rem;line-height:1.25;color:#464a4c;background-color:#fff;background-image:none;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem;-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#464a4c;background-color:#fff;border-color:#5cb3fd;outline:0}.form-control::-webkit-input-placeholder{color:#636c72;opacity:1}.form-control::-moz-placeholder{color:#636c72;opacity:1}.form-control:-ms-input-placeholder{color:#636c72;opacity:1}.form-control::placeholder{color:#636c72;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#eceeef;opacity:1}.form-control:disabled{cursor:not-allowed}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#464a4c;background-color:#fff}.form-control-file,.form-control-range{display:block}.col-form-label{padding-top:calc(.5rem - 1px * 2);padding-bottom:calc(.5rem - 1px * 2);margin-bottom:0}.col-form-label-lg{padding-top:calc(.75rem - 1px * 2);padding-bottom:calc(.75rem - 1px * 2);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem - 1px * 2);padding-bottom:calc(.25rem - 1px * 2);font-size:.875rem}.col-form-legend{padding-top:.5rem;padding-bottom:.5rem;margin-bottom:0;font-size:1rem}.form-control-static{padding-top:.5rem;padding-bottom:.5rem;margin-bottom:0;line-height:1.25;border:solid transparent;border-width:1px 0}.form-control-static.form-control-lg,.form-control-static.form-control-sm,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-sm>.input-group-btn>select.btn:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),.input-group-sm>select.input-group-addon:not([size]):not([multiple]),select.form-control-sm:not([size]):not([multiple]){height:1.8125rem}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{padding:.75rem 1.5rem;font-size:1.25rem;border-radius:.3rem}.input-group-lg>.input-group-btn>select.btn:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),.input-group-lg>select.input-group-addon:not([size]):not([multiple]),select.form-control-lg:not([size]):not([multiple]){height:3.166667rem}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-check{position:relative;display:block;margin-bottom:.5rem}.form-check.disabled .form-check-label{color:#636c72;cursor:not-allowed}.form-check-label{padding-left:1.25rem;margin-bottom:0;cursor:pointer}.form-check-input{position:absolute;margin-top:.25rem;margin-left:-1.25rem}.form-check-input:only-child{position:static}.form-check-inline{display:inline-block}.form-check-inline .form-check-label{vertical-align:middle}.form-check-inline+.form-check-inline{margin-left:.75rem}.form-control-feedback{margin-top:.25rem}.form-control-danger,.form-control-success,.form-control-warning{padding-right:2.25rem;background-repeat:no-repeat;background-position:center right .5625rem;-webkit-background-size:1.125rem 1.125rem;background-size:1.125rem 1.125rem}.has-success .col-form-label,.has-success .custom-control,.has-success .form-check-label,.has-success .form-control-feedback,.has-success .form-control-label{color:#5cb85c}.has-success .form-control{border-color:#5cb85c}.has-success .input-group-addon{color:#5cb85c;border-color:#5cb85c;background-color:#eaf6ea}.has-success .form-control-success{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%235cb85c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E")}.has-warning .col-form-label,.has-warning .custom-control,.has-warning .form-check-label,.has-warning .form-control-feedback,.has-warning .form-control-label{color:#f0ad4e}.has-warning .form-control{border-color:#f0ad4e}.has-warning .input-group-addon{color:#f0ad4e;border-color:#f0ad4e;background-color:#fff}.has-warning .form-control-warning{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23f0ad4e' d='M4.4 5.324h-.8v-2.46h.8zm0 1.42h-.8V5.89h.8zM3.76.63L.04 7.075c-.115.2.016.425.26.426h7.397c.242 0 .372-.226.258-.426C6.726 4.924 5.47 2.79 4.253.63c-.113-.174-.39-.174-.494 0z'/%3E%3C/svg%3E")}.has-danger .col-form-label,.has-danger .custom-control,.has-danger .form-check-label,.has-danger .form-control-feedback,.has-danger .form-control-label{color:#d9534f}.has-danger .form-control{border-color:#d9534f}.has-danger .input-group-addon{color:#d9534f;border-color:#d9534f;background-color:#fdf7f7}.has-danger .form-control-danger{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23d9534f' viewBox='-2 -2 7 7'%3E%3Cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3E%3Ccircle r='.5'/%3E%3Ccircle cx='3' r='.5'/%3E%3Ccircle cy='3' r='.5'/%3E%3Ccircle cx='3' cy='3' r='.5'/%3E%3C/svg%3E")}.form-inline{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;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{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:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{width:auto}.form-inline .form-control-label{margin-bottom:0;vertical-align:middle}.form-inline .form-check{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:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;width:auto;margin-top:0;margin-bottom:0}.form-inline .form-check-label{padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{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:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-left:0}.form-inline .custom-control-indicator{position:static;display:inline-block;margin-right:.25rem;vertical-align:text-bottom}.form-inline .has-feedback .form-control-feedback{top:0}}.btn{display:inline-block;font-weight:400;line-height:1.25;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.5rem 1rem;font-size:1rem;border-radius:.25rem;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.btn:focus,.btn:hover{text-decoration:none}.btn.focus,.btn:focus{outline:0;-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.25);box-shadow:0 0 0 2px rgba(2,117,216,.25)}.btn.disabled,.btn:disabled{cursor:not-allowed;opacity:.65}.btn.active,.btn:active{background-image:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#0275d8;border-color:#0275d8}.btn-primary:hover{color:#fff;background-color:#025aa5;border-color:#01549b}.btn-primary.focus,.btn-primary:focus{-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.5);box-shadow:0 0 0 2px rgba(2,117,216,.5)}.btn-primary.disabled,.btn-primary:disabled{background-color:#0275d8;border-color:#0275d8}.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#025aa5;background-image:none;border-color:#01549b}.btn-secondary{color:#292b2c;background-color:#fff;border-color:#ccc}.btn-secondary:hover{color:#292b2c;background-color:#e6e6e6;border-color:#adadad}.btn-secondary.focus,.btn-secondary:focus{-webkit-box-shadow:0 0 0 2px rgba(204,204,204,.5);box-shadow:0 0 0 2px rgba(204,204,204,.5)}.btn-secondary.disabled,.btn-secondary:disabled{background-color:#fff;border-color:#ccc}.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#292b2c;background-color:#e6e6e6;background-image:none;border-color:#adadad}.btn-info{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#2aabd2}.btn-info.focus,.btn-info:focus{-webkit-box-shadow:0 0 0 2px rgba(91,192,222,.5);box-shadow:0 0 0 2px rgba(91,192,222,.5)}.btn-info.disabled,.btn-info:disabled{background-color:#5bc0de;border-color:#5bc0de}.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;background-image:none;border-color:#2aabd2}.btn-success{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#419641}.btn-success.focus,.btn-success:focus{-webkit-box-shadow:0 0 0 2px rgba(92,184,92,.5);box-shadow:0 0 0 2px rgba(92,184,92,.5)}.btn-success.disabled,.btn-success:disabled{background-color:#5cb85c;border-color:#5cb85c}.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;background-image:none;border-color:#419641}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#eb9316}.btn-warning.focus,.btn-warning:focus{-webkit-box-shadow:0 0 0 2px rgba(240,173,78,.5);box-shadow:0 0 0 2px rgba(240,173,78,.5)}.btn-warning.disabled,.btn-warning:disabled{background-color:#f0ad4e;border-color:#f0ad4e}.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;background-image:none;border-color:#eb9316}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#c12e2a}.btn-danger.focus,.btn-danger:focus{-webkit-box-shadow:0 0 0 2px rgba(217,83,79,.5);box-shadow:0 0 0 2px rgba(217,83,79,.5)}.btn-danger.disabled,.btn-danger:disabled{background-color:#d9534f;border-color:#d9534f}.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;background-image:none;border-color:#c12e2a}.btn-outline-primary{color:#0275d8;background-image:none;background-color:transparent;border-color:#0275d8}.btn-outline-primary:hover{color:#fff;background-color:#0275d8;border-color:#0275d8}.btn-outline-primary.focus,.btn-outline-primary:focus{-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.5);box-shadow:0 0 0 2px rgba(2,117,216,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0275d8;background-color:transparent}.btn-outline-primary.active,.btn-outline-primary:active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#0275d8;border-color:#0275d8}.btn-outline-secondary{color:#ccc;background-image:none;background-color:transparent;border-color:#ccc}.btn-outline-secondary:hover{color:#fff;background-color:#ccc;border-color:#ccc}.btn-outline-secondary.focus,.btn-outline-secondary:focus{-webkit-box-shadow:0 0 0 2px rgba(204,204,204,.5);box-shadow:0 0 0 2px rgba(204,204,204,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#ccc;background-color:transparent}.btn-outline-secondary.active,.btn-outline-secondary:active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#ccc;border-color:#ccc}.btn-outline-info{color:#5bc0de;background-image:none;background-color:transparent;border-color:#5bc0de}.btn-outline-info:hover{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.btn-outline-info.focus,.btn-outline-info:focus{-webkit-box-shadow:0 0 0 2px rgba(91,192,222,.5);box-shadow:0 0 0 2px rgba(91,192,222,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#5bc0de;background-color:transparent}.btn-outline-info.active,.btn-outline-info:active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.btn-outline-success{color:#5cb85c;background-image:none;background-color:transparent;border-color:#5cb85c}.btn-outline-success:hover{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-outline-success.focus,.btn-outline-success:focus{-webkit-box-shadow:0 0 0 2px rgba(92,184,92,.5);box-shadow:0 0 0 2px rgba(92,184,92,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#5cb85c;background-color:transparent}.btn-outline-success.active,.btn-outline-success:active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-outline-warning{color:#f0ad4e;background-image:none;background-color:transparent;border-color:#f0ad4e}.btn-outline-warning:hover{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-outline-warning.focus,.btn-outline-warning:focus{-webkit-box-shadow:0 0 0 2px rgba(240,173,78,.5);box-shadow:0 0 0 2px rgba(240,173,78,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#f0ad4e;background-color:transparent}.btn-outline-warning.active,.btn-outline-warning:active,.show>.btn-outline-warning.dropdown-toggle{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-outline-danger{color:#d9534f;background-image:none;background-color:transparent;border-color:#d9534f}.btn-outline-danger:hover{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-outline-danger.focus,.btn-outline-danger:focus{-webkit-box-shadow:0 0 0 2px rgba(217,83,79,.5);box-shadow:0 0 0 2px rgba(217,83,79,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#d9534f;background-color:transparent}.btn-outline-danger.active,.btn-outline-danger:active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-link{font-weight:400;color:#0275d8;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link:disabled{background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus{border-color:transparent}.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#014c8c;text-decoration:underline;background-color:transparent}.btn-link:disabled{color:#636c72}.btn-link:disabled:focus,.btn-link:disabled:hover{text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:.75rem 1.5rem;font-size:1.25rem;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.dropdown,.dropup{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.3em;vertical-align:middle;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-left:.3em solid transparent}.dropdown-toggle:focus{outline:0}.dropup .dropdown-toggle::after{border-top:0;border-bottom:.3em solid}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#292b2c;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-divider{height:1px;margin:.5rem 0;overflow:hidden;background-color:#eceeef}.dropdown-item{display:block;width:100%;padding:3px 1.5rem;clear:both;font-weight:400;color:#292b2c;text-align:inherit;white-space:nowrap;background:0 0;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1d1e1f;text-decoration:none;background-color:#f7f7f9}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0275d8}.dropdown-item.disabled,.dropdown-item:disabled{color:#636c72;cursor:not-allowed;background-color:transparent}.show>.dropdown-menu{display:block}.show>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#636c72;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.dropup .dropdown-menu{top:auto;bottom:100%;margin-bottom:.125rem}.btn-group,.btn-group-vertical{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:2}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn+.dropdown-toggle-split::after{margin-left:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:1.125rem;padding-left:1.125rem}.btn-group-vertical{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%}.input-group .form-control{position:relative;z-index:2;-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group .form-control:active,.input-group .form-control:focus,.input-group .form-control:hover{z-index:3}.input-group .form-control,.input-group-addon,.input-group-btn{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{white-space:nowrap;vertical-align:middle}.input-group-addon{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.25;color:#464a4c;text-align:center;background-color:#eceeef;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.input-group-addon.form-control-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-addon.form-control-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:.75rem 1.5rem;font-size:1.25rem;border-radius:.3rem}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:not(:last-child),.input-group-addon:not(:last-child),.input-group-btn:not(:first-child)>.btn-group:not(:last-child)>.btn,.input-group-btn:not(:first-child)>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:not(:last-child)>.btn,.input-group-btn:not(:last-child)>.btn-group>.btn,.input-group-btn:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:not(:last-child){border-right:0}.input-group .form-control:not(:first-child),.input-group-addon:not(:first-child),.input-group-btn:not(:first-child)>.btn,.input-group-btn:not(:first-child)>.btn-group>.btn,.input-group-btn:not(:first-child)>.dropdown-toggle,.input-group-btn:not(:last-child)>.btn-group:not(:first-child)>.btn,.input-group-btn:not(:last-child)>.btn:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.form-control+.input-group-addon:not(:first-child){border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative;-webkit-box-flex:1;-webkit-flex:1 1 0%;-ms-flex:1 1 0%;flex:1 1 0%}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:3}.input-group-btn:not(:last-child)>.btn,.input-group-btn:not(:last-child)>.btn-group{margin-right:-1px}.input-group-btn:not(:first-child)>.btn,.input-group-btn:not(:first-child)>.btn-group{z-index:2;margin-left:-1px}.input-group-btn:not(:first-child)>.btn-group:active,.input-group-btn:not(:first-child)>.btn-group:focus,.input-group-btn:not(:first-child)>.btn-group:hover,.input-group-btn:not(:first-child)>.btn:active,.input-group-btn:not(:first-child)>.btn:focus,.input-group-btn:not(:first-child)>.btn:hover{z-index:3}.custom-control{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;min-height:1.5rem;padding-left:1.5rem;margin-right:1rem;cursor:pointer}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-indicator{color:#fff;background-color:#0275d8}.custom-control-input:focus~.custom-control-indicator{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #0275d8;box-shadow:0 0 0 1px #fff,0 0 0 3px #0275d8}.custom-control-input:active~.custom-control-indicator{color:#fff;background-color:#8fcafe}.custom-control-input:disabled~.custom-control-indicator{cursor:not-allowed;background-color:#eceeef}.custom-control-input:disabled~.custom-control-description{color:#636c72;cursor:not-allowed}.custom-control-indicator{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#ddd;background-repeat:no-repeat;background-position:center center;-webkit-background-size:50% 50%;background-size:50% 50%}.custom-checkbox .custom-control-indicator{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-indicator{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-indicator{background-color:#0275d8;background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-radio .custom-control-indicator{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-indicator{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-controls-stacked{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.custom-controls-stacked .custom-control{margin-bottom:.25rem}.custom-controls-stacked .custom-control+.custom-control{margin-left:0}.custom-select{display:inline-block;max-width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.25;color:#464a4c;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;-webkit-background-size:8px 10px;background-size:8px 10px;border:1px solid rgba(0,0,0,.15);border-radius:.25rem;-moz-appearance:none;-webkit-appearance:none}.custom-select:focus{border-color:#5cb3fd;outline:0}.custom-select:focus::-ms-value{color:#464a4c;background-color:#fff}.custom-select:disabled{color:#636c72;cursor:not-allowed;background-color:#eceeef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-file{position:relative;display:inline-block;max-width:100%;height:2.5rem;margin-bottom:0;cursor:pointer}.custom-file-input{min-width:14rem;max-width:100%;height:2.5rem;margin:0;filter:alpha(opacity=0);opacity:0}.custom-file-control{position:absolute;top:0;right:0;left:0;z-index:5;height:2.5rem;padding:.5rem 1rem;line-height:1.5;color:#464a4c;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.custom-file-control:lang(en)::after{content:"Choose file..."}.custom-file-control::before{position:absolute;top:-1px;right:-1px;bottom:-1px;z-index:6;display:block;height:2.5rem;padding:.5rem 1rem;line-height:1.5;color:#464a4c;background-color:#eceeef;border:1px solid rgba(0,0,0,.15);border-radius:0 .25rem .25rem 0}.custom-file-control:lang(en)::before{content:"Browse"}.nav{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5em 1em}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#636c72;cursor:not-allowed}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-right-radius:.25rem;border-top-left-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#eceeef #eceeef #ddd}.nav-tabs .nav-link.disabled{color:#636c72;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#464a4c;background-color:#fff;border-color:#ddd #ddd #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-item.show .nav-link,.nav-pills .nav-link.active{color:#fff;cursor:default;background-color:#0275d8}.nav-fill .nav-item{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-webkit-box-flex:1;-webkit-flex:1 1 100%;-ms-flex:1 1 100%;flex:1 1 100%;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding:.5rem 1rem}.navbar-brand{display:inline-block;padding-top:.25rem;padding-bottom:.25rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-text{display:inline-block;padding-top:.425rem;padding-bottom:.425rem}.navbar-toggler{-webkit-align-self:flex-start;-ms-flex-item-align:start;align-self:flex-start;padding:.25rem .75rem;font-size:1.25rem;line-height:1;background:0 0;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;-webkit-background-size:100% 100%;background-size:100% 100%}.navbar-toggler-left{position:absolute;left:1rem}.navbar-toggler-right{position:absolute;right:1rem}@media (max-width:575px){.navbar-toggleable .navbar-nav .dropdown-menu{position:static;float:none}.navbar-toggleable>.container{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-toggleable{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-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}.navbar-toggleable .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.navbar-toggleable .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-toggleable>.container{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}.navbar-toggleable .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;width:100%}.navbar-toggleable .navbar-toggler{display:none}}@media (max-width:767px){.navbar-toggleable-sm .navbar-nav .dropdown-menu{position:static;float:none}.navbar-toggleable-sm>.container{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-toggleable-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-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}.navbar-toggleable-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.navbar-toggleable-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-toggleable-sm>.container{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}.navbar-toggleable-sm .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;width:100%}.navbar-toggleable-sm .navbar-toggler{display:none}}@media (max-width:991px){.navbar-toggleable-md .navbar-nav .dropdown-menu{position:static;float:none}.navbar-toggleable-md>.container{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-toggleable-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-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}.navbar-toggleable-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.navbar-toggleable-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-toggleable-md>.container{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}.navbar-toggleable-md .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;width:100%}.navbar-toggleable-md .navbar-toggler{display:none}}@media (max-width:1199px){.navbar-toggleable-lg .navbar-nav .dropdown-menu{position:static;float:none}.navbar-toggleable-lg>.container{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-toggleable-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-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}.navbar-toggleable-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.navbar-toggleable-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-toggleable-lg>.container{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}.navbar-toggleable-lg .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;width:100%}.navbar-toggleable-lg .navbar-toggler{display:none}}.navbar-toggleable-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-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}.navbar-toggleable-xl .navbar-nav .dropdown-menu{position:static;float:none}.navbar-toggleable-xl>.container{padding-right:0;padding-left:0}.navbar-toggleable-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.navbar-toggleable-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-toggleable-xl>.container{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}.navbar-toggleable-xl .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;width:100%}.navbar-toggleable-xl .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-toggler{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover,.navbar-light .navbar-toggler:focus,.navbar-light .navbar-toggler:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.open,.navbar-light .navbar-nav .open>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-toggler{color:#fff}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-toggler:focus,.navbar-inverse .navbar-toggler:hover{color:#fff}.navbar-inverse .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-inverse .navbar-nav .nav-link:focus,.navbar-inverse .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-inverse .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-inverse .navbar-nav .active>.nav-link,.navbar-inverse .navbar-nav .nav-link.active,.navbar-inverse .navbar-nav .nav-link.open,.navbar-inverse .navbar-nav .open>.nav-link{color:#fff}.navbar-inverse .navbar-toggler{border-color:rgba(255,255,255,.1)}.navbar-inverse .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E")}.navbar-inverse .navbar-text{color:rgba(255,255,255,.5)}.card{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;background-color:#fff;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card-block{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card>.list-group:first-child .list-group-item:first-child{border-top-right-radius:.25rem;border-top-left-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:#f7f7f9;border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:#f7f7f9;border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-primary{background-color:#0275d8;border-color:#0275d8}.card-primary .card-footer,.card-primary .card-header{background-color:transparent}.card-success{background-color:#5cb85c;border-color:#5cb85c}.card-success .card-footer,.card-success .card-header{background-color:transparent}.card-info{background-color:#5bc0de;border-color:#5bc0de}.card-info .card-footer,.card-info .card-header{background-color:transparent}.card-warning{background-color:#f0ad4e;border-color:#f0ad4e}.card-warning .card-footer,.card-warning .card-header{background-color:transparent}.card-danger{background-color:#d9534f;border-color:#d9534f}.card-danger .card-footer,.card-danger .card-header{background-color:transparent}.card-outline-primary{background-color:transparent;border-color:#0275d8}.card-outline-secondary{background-color:transparent;border-color:#ccc}.card-outline-info{background-color:transparent;border-color:#5bc0de}.card-outline-success{background-color:transparent;border-color:#5cb85c}.card-outline-warning{background-color:transparent;border-color:#f0ad4e}.card-outline-danger{background-color:transparent;border-color:#d9534f}.card-inverse{color:rgba(255,255,255,.65)}.card-inverse .card-footer,.card-inverse .card-header{background-color:transparent;border-color:rgba(255,255,255,.2)}.card-inverse .card-blockquote,.card-inverse .card-footer,.card-inverse .card-header,.card-inverse .card-title{color:#fff}.card-inverse .card-blockquote .blockquote-footer,.card-inverse .card-link,.card-inverse .card-subtitle,.card-inverse .card-text{color:rgba(255,255,255,.65)}.card-inverse .card-link:focus,.card-inverse .card-link:hover{color:#fff}.card-blockquote{padding:0;margin-bottom:0;border-left:0}.card-img{border-radius:calc(.25rem - 1px)}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img-top{border-top-right-radius:calc(.25rem - 1px);border-top-left-radius:calc(.25rem - 1px)}.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}@media (min-width:576px){.card-deck{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}.card-deck .card{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1 0 0%;-ms-flex:1 0 0%;flex:1 0 0%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.card-deck .card:not(:first-child){margin-left:15px}.card-deck .card:not(:last-child){margin-right:15px}}@media (min-width:576px){.card-group{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}.card-group .card{-webkit-box-flex:1;-webkit-flex:1 0 0%;-ms-flex:1 0 0%;flex:1 0 0%}.card-group .card+.card{margin-left:0;border-left:0}.card-group .card:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.card-group .card:first-child .card-img-top{border-top-right-radius:0}.card-group .card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group .card:last-child{border-bottom-left-radius:0;border-top-left-radius:0}.card-group .card:last-child .card-img-top{border-top-left-radius:0}.card-group .card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group .card:not(:first-child):not(:last-child){border-radius:0}.card-group .card:not(:first-child):not(:last-child) .card-img-bottom,.card-group .card:not(:first-child):not(:last-child) .card-img-top{border-radius:0}}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%;margin-bottom:.75rem}}.breadcrumb{padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#eceeef;border-radius:.25rem}.breadcrumb::after{display:block;content:"";clear:both}.breadcrumb-item{float:left}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#636c72;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#636c72}.pagination{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-item:first-child .page-link{margin-left:0;border-bottom-left-radius:.25rem;border-top-left-radius:.25rem}.page-item:last-child .page-link{border-bottom-right-radius:.25rem;border-top-right-radius:.25rem}.page-item.active .page-link{z-index:2;color:#fff;background-color:#0275d8;border-color:#0275d8}.page-item.disabled .page-link{color:#636c72;pointer-events:none;cursor:not-allowed;background-color:#fff;border-color:#ddd}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#0275d8;background-color:#fff;border:1px solid #ddd}.page-link:focus,.page-link:hover{color:#014c8c;text-decoration:none;background-color:#eceeef;border-color:#ddd}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-bottom-left-radius:.3rem;border-top-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-bottom-right-radius:.3rem;border-top-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-bottom-left-radius:.2rem;border-top-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-bottom-right-radius:.2rem;border-top-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-default{background-color:#636c72}.badge-default[href]:focus,.badge-default[href]:hover{background-color:#4b5257}.badge-primary{background-color:#0275d8}.badge-primary[href]:focus,.badge-primary[href]:hover{background-color:#025aa5}.badge-success{background-color:#5cb85c}.badge-success[href]:focus,.badge-success[href]:hover{background-color:#449d44}.badge-info{background-color:#5bc0de}.badge-info[href]:focus,.badge-info[href]:hover{background-color:#31b0d5}.badge-warning{background-color:#f0ad4e}.badge-warning[href]:focus,.badge-warning[href]:hover{background-color:#ec971f}.badge-danger{background-color:#d9534f}.badge-danger[href]:focus,.badge-danger[href]:hover{background-color:#c9302c}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#eceeef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-hr{border-top-color:#d0d5d8}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible .close{position:relative;top:-.75rem;right:-1.25rem;padding:.75rem 1.25rem;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d0e9c6;color:#3c763d}.alert-success hr{border-top-color:#c1e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bcdff1;color:#31708f}.alert-info hr{border-top-color:#a6d5ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faf2cc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7ecb5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebcccc;color:#a94442}.alert-danger hr{border-top-color:#e4b9b9}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow:hidden;font-size:.75rem;line-height:1rem;text-align:center;background-color:#eceeef;border-radius:.25rem}.progress-bar{height:1rem;color:#fff;background-color:#0275d8}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:1rem 1rem;background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;-o-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.media-body{-webkit-box-flex:1;-webkit-flex:1 1 0%;-ms-flex:1 1 0%;flex:1 1 0%}.list-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#464a4c;text-align:inherit}.list-group-item-action .list-group-item-heading{color:#292b2c}.list-group-item-action:focus,.list-group-item-action:hover{color:#464a4c;text-decoration:none;background-color:#f7f7f9}.list-group-item-action:active{color:#292b2c;background-color:#eceeef}.list-group-item{position:relative;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;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-right-radius:.25rem;border-top-left-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:focus,.list-group-item:hover{text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#636c72;cursor:not-allowed;background-color:#fff}.list-group-item.disabled .list-group-item-heading,.list-group-item:disabled .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item:disabled .list-group-item-text{color:#636c72}.list-group-item.active{z-index:2;color:#fff;background-color:#0275d8;border-color:#0275d8}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text{color:#daeeff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active{color:#fff;background-color:#a94442;border-color:#a94442}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.75}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out;-webkit-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.show .modal-dialog{-webkit-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{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;padding:15px;border-bottom:1px solid #eceeef}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;padding:15px}.modal-footer{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:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;padding:15px;border-top:1px solid #eceeef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:30px auto}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip.bs-tether-element-attached-bottom,.tooltip.tooltip-top{padding:5px 0;margin-top:-3px}.tooltip.bs-tether-element-attached-bottom .tooltip-inner::before,.tooltip.tooltip-top .tooltip-inner::before{bottom:0;left:50%;margin-left:-5px;content:"";border-width:5px 5px 0;border-top-color:#000}.tooltip.bs-tether-element-attached-left,.tooltip.tooltip-right{padding:0 5px;margin-left:3px}.tooltip.bs-tether-element-attached-left .tooltip-inner::before,.tooltip.tooltip-right .tooltip-inner::before{top:50%;left:0;margin-top:-5px;content:"";border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.bs-tether-element-attached-top,.tooltip.tooltip-bottom{padding:5px 0;margin-top:3px}.tooltip.bs-tether-element-attached-top .tooltip-inner::before,.tooltip.tooltip-bottom .tooltip-inner::before{top:0;left:50%;margin-left:-5px;content:"";border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bs-tether-element-attached-right,.tooltip.tooltip-left{padding:0 5px;margin-left:-3px}.tooltip.bs-tether-element-attached-right .tooltip-inner::before,.tooltip.tooltip-left .tooltip-inner::before{top:50%;right:0;margin-top:-5px;content:"";border-width:5px 0 5px 5px;border-left-color:#000}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.tooltip-inner::before{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;padding:1px;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;font-size:.875rem;word-wrap:break-word;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover.bs-tether-element-attached-bottom,.popover.popover-top{margin-top:-10px}.popover.bs-tether-element-attached-bottom::after,.popover.bs-tether-element-attached-bottom::before,.popover.popover-top::after,.popover.popover-top::before{left:50%;border-bottom-width:0}.popover.bs-tether-element-attached-bottom::before,.popover.popover-top::before{bottom:-11px;margin-left:-11px;border-top-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-bottom::after,.popover.popover-top::after{bottom:-10px;margin-left:-10px;border-top-color:#fff}.popover.bs-tether-element-attached-left,.popover.popover-right{margin-left:10px}.popover.bs-tether-element-attached-left::after,.popover.bs-tether-element-attached-left::before,.popover.popover-right::after,.popover.popover-right::before{top:50%;border-left-width:0}.popover.bs-tether-element-attached-left::before,.popover.popover-right::before{left:-11px;margin-top:-11px;border-right-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-left::after,.popover.popover-right::after{left:-10px;margin-top:-10px;border-right-color:#fff}.popover.bs-tether-element-attached-top,.popover.popover-bottom{margin-top:10px}.popover.bs-tether-element-attached-top::after,.popover.bs-tether-element-attached-top::before,.popover.popover-bottom::after,.popover.popover-bottom::before{left:50%;border-top-width:0}.popover.bs-tether-element-attached-top::before,.popover.popover-bottom::before{top:-11px;margin-left:-11px;border-bottom-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-top::after,.popover.popover-bottom::after{top:-10px;margin-left:-10px;border-bottom-color:#f7f7f7}.popover.bs-tether-element-attached-top .popover-title::before,.popover.popover-bottom .popover-title::before{position:absolute;top:0;left:50%;display:block;width:20px;margin-left:-10px;content:"";border-bottom:1px solid #f7f7f7}.popover.bs-tether-element-attached-right,.popover.popover-left{margin-left:-10px}.popover.bs-tether-element-attached-right::after,.popover.bs-tether-element-attached-right::before,.popover.popover-left::after,.popover.popover-left::before{top:50%;border-right-width:0}.popover.bs-tether-element-attached-right::before,.popover.popover-left::before{right:-11px;margin-top:-11px;border-left-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-right::after,.popover.popover-left::after{right:-10px;margin-top:-10px;border-left-color:#fff}.popover-title{padding:8px 14px;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-right-radius:calc(.3rem - 1px);border-top-left-radius:calc(.3rem - 1px)}.popover-title:empty{display:none}.popover-content{padding:9px 14px}.popover::after,.popover::before{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover::before{content:"";border-width:11px}.popover::after{content:"";border-width:10px}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;width:100%}@media (-webkit-transform-3d){.carousel-item{-webkit-transition:-webkit-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out,-o-transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}}@supports ((-webkit-transform:translate3d(0,0,0)) or (transform:translate3d(0,0,0))){.carousel-item{-webkit-transition:-webkit-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out,-o-transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}@media (-webkit-transform-3d){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.active.carousel-item-right,.carousel-item-next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@supports ((-webkit-transform:translate3d(0,0,0)) or (transform:translate3d(0,0,0))){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.active.carousel-item-right,.carousel-item-next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;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:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;-webkit-background-size:100% 100%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M4 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M1.5 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;max-width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:rgba(255,255,255,.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-faded{background-color:#f7f7f7}.bg-primary{background-color:#0275d8!important}a.bg-primary:focus,a.bg-primary:hover{background-color:#025aa5!important}.bg-success{background-color:#5cb85c!important}a.bg-success:focus,a.bg-success:hover{background-color:#449d44!important}.bg-info{background-color:#5bc0de!important}a.bg-info:focus,a.bg-info:hover{background-color:#31b0d5!important}.bg-warning{background-color:#f0ad4e!important}a.bg-warning:focus,a.bg-warning:hover{background-color:#ec971f!important}.bg-danger{background-color:#d9534f!important}a.bg-danger:focus,a.bg-danger:hover{background-color:#c9302c!important}.bg-inverse{background-color:#292b2c!important}a.bg-inverse:focus,a.bg-inverse:hover{background-color:#101112!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.rounded{border-radius:.25rem}.rounded-top{border-top-right-radius:.25rem;border-top-left-radius:.25rem}.rounded-right{border-bottom-right-radius:.25rem;border-top-right-radius:.25rem}.rounded-bottom{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-left{border-bottom-left-radius:.25rem;border-top-left-radius:.25rem}.rounded-circle{border-radius:50%}.rounded-0{border-radius:0}.clearfix::after{display:block;content:"";clear:both}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-cell{display:table-cell!important}.d-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}.flex-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.flex-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.flex-unordered{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.flex-sm-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.flex-sm-unordered{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-sm-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-sm-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-sm-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-sm-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.flex-md-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.flex-md-unordered{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-md-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-md-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-md-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-md-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.flex-lg-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.flex-lg-unordered{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-lg-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-lg-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-lg-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-lg-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.flex-xl-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.flex-xl-unordered{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-xl-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xl-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-xl-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-xl-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1030}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.m-0{margin:0 0!important}.mt-0{margin-top:0!important}.mr-0{margin-right:0!important}.mb-0{margin-bottom:0!important}.ml-0{margin-left:0!important}.mx-0{margin-right:0!important;margin-left:0!important}.my-0{margin-top:0!important;margin-bottom:0!important}.m-1{margin:.25rem .25rem!important}.mt-1{margin-top:.25rem!important}.mr-1{margin-right:.25rem!important}.mb-1{margin-bottom:.25rem!important}.ml-1{margin-left:.25rem!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-2{margin:.5rem .5rem!important}.mt-2{margin-top:.5rem!important}.mr-2{margin-right:.5rem!important}.mb-2{margin-bottom:.5rem!important}.ml-2{margin-left:.5rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-3{margin:1rem 1rem!important}.mt-3{margin-top:1rem!important}.mr-3{margin-right:1rem!important}.mb-3{margin-bottom:1rem!important}.ml-3{margin-left:1rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-4{margin:1.5rem 1.5rem!important}.mt-4{margin-top:1.5rem!important}.mr-4{margin-right:1.5rem!important}.mb-4{margin-bottom:1.5rem!important}.ml-4{margin-left:1.5rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-5{margin:3rem 3rem!important}.mt-5{margin-top:3rem!important}.mr-5{margin-right:3rem!important}.mb-5{margin-bottom:3rem!important}.ml-5{margin-left:3rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-0{padding:0 0!important}.pt-0{padding-top:0!important}.pr-0{padding-right:0!important}.pb-0{padding-bottom:0!important}.pl-0{padding-left:0!important}.px-0{padding-right:0!important;padding-left:0!important}.py-0{padding-top:0!important;padding-bottom:0!important}.p-1{padding:.25rem .25rem!important}.pt-1{padding-top:.25rem!important}.pr-1{padding-right:.25rem!important}.pb-1{padding-bottom:.25rem!important}.pl-1{padding-left:.25rem!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-2{padding:.5rem .5rem!important}.pt-2{padding-top:.5rem!important}.pr-2{padding-right:.5rem!important}.pb-2{padding-bottom:.5rem!important}.pl-2{padding-left:.5rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-3{padding:1rem 1rem!important}.pt-3{padding-top:1rem!important}.pr-3{padding-right:1rem!important}.pb-3{padding-bottom:1rem!important}.pl-3{padding-left:1rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-4{padding:1.5rem 1.5rem!important}.pt-4{padding-top:1.5rem!important}.pr-4{padding-right:1.5rem!important}.pb-4{padding-bottom:1.5rem!important}.pl-4{padding-left:1.5rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-5{padding:3rem 3rem!important}.pt-5{padding-top:3rem!important}.pr-5{padding-right:3rem!important}.pb-5{padding-bottom:3rem!important}.pl-5{padding-left:3rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-auto{margin:auto!important}.mt-auto{margin-top:auto!important}.mr-auto{margin-right:auto!important}.mb-auto{margin-bottom:auto!important}.ml-auto{margin-left:auto!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}@media (min-width:576px){.m-sm-0{margin:0 0!important}.mt-sm-0{margin-top:0!important}.mr-sm-0{margin-right:0!important}.mb-sm-0{margin-bottom:0!important}.ml-sm-0{margin-left:0!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.m-sm-1{margin:.25rem .25rem!important}.mt-sm-1{margin-top:.25rem!important}.mr-sm-1{margin-right:.25rem!important}.mb-sm-1{margin-bottom:.25rem!important}.ml-sm-1{margin-left:.25rem!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-sm-2{margin:.5rem .5rem!important}.mt-sm-2{margin-top:.5rem!important}.mr-sm-2{margin-right:.5rem!important}.mb-sm-2{margin-bottom:.5rem!important}.ml-sm-2{margin-left:.5rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-sm-3{margin:1rem 1rem!important}.mt-sm-3{margin-top:1rem!important}.mr-sm-3{margin-right:1rem!important}.mb-sm-3{margin-bottom:1rem!important}.ml-sm-3{margin-left:1rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-sm-4{margin:1.5rem 1.5rem!important}.mt-sm-4{margin-top:1.5rem!important}.mr-sm-4{margin-right:1.5rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.ml-sm-4{margin-left:1.5rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-sm-5{margin:3rem 3rem!important}.mt-sm-5{margin-top:3rem!important}.mr-sm-5{margin-right:3rem!important}.mb-sm-5{margin-bottom:3rem!important}.ml-sm-5{margin-left:3rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-sm-0{padding:0 0!important}.pt-sm-0{padding-top:0!important}.pr-sm-0{padding-right:0!important}.pb-sm-0{padding-bottom:0!important}.pl-sm-0{padding-left:0!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.p-sm-1{padding:.25rem .25rem!important}.pt-sm-1{padding-top:.25rem!important}.pr-sm-1{padding-right:.25rem!important}.pb-sm-1{padding-bottom:.25rem!important}.pl-sm-1{padding-left:.25rem!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-sm-2{padding:.5rem .5rem!important}.pt-sm-2{padding-top:.5rem!important}.pr-sm-2{padding-right:.5rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pl-sm-2{padding-left:.5rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-sm-3{padding:1rem 1rem!important}.pt-sm-3{padding-top:1rem!important}.pr-sm-3{padding-right:1rem!important}.pb-sm-3{padding-bottom:1rem!important}.pl-sm-3{padding-left:1rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-sm-4{padding:1.5rem 1.5rem!important}.pt-sm-4{padding-top:1.5rem!important}.pr-sm-4{padding-right:1.5rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pl-sm-4{padding-left:1.5rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-sm-5{padding:3rem 3rem!important}.pt-sm-5{padding-top:3rem!important}.pr-sm-5{padding-right:3rem!important}.pb-sm-5{padding-bottom:3rem!important}.pl-sm-5{padding-left:3rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto{margin-top:auto!important}.mr-sm-auto{margin-right:auto!important}.mb-sm-auto{margin-bottom:auto!important}.ml-sm-auto{margin-left:auto!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}}@media (min-width:768px){.m-md-0{margin:0 0!important}.mt-md-0{margin-top:0!important}.mr-md-0{margin-right:0!important}.mb-md-0{margin-bottom:0!important}.ml-md-0{margin-left:0!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.m-md-1{margin:.25rem .25rem!important}.mt-md-1{margin-top:.25rem!important}.mr-md-1{margin-right:.25rem!important}.mb-md-1{margin-bottom:.25rem!important}.ml-md-1{margin-left:.25rem!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-md-2{margin:.5rem .5rem!important}.mt-md-2{margin-top:.5rem!important}.mr-md-2{margin-right:.5rem!important}.mb-md-2{margin-bottom:.5rem!important}.ml-md-2{margin-left:.5rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-md-3{margin:1rem 1rem!important}.mt-md-3{margin-top:1rem!important}.mr-md-3{margin-right:1rem!important}.mb-md-3{margin-bottom:1rem!important}.ml-md-3{margin-left:1rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-md-4{margin:1.5rem 1.5rem!important}.mt-md-4{margin-top:1.5rem!important}.mr-md-4{margin-right:1.5rem!important}.mb-md-4{margin-bottom:1.5rem!important}.ml-md-4{margin-left:1.5rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-md-5{margin:3rem 3rem!important}.mt-md-5{margin-top:3rem!important}.mr-md-5{margin-right:3rem!important}.mb-md-5{margin-bottom:3rem!important}.ml-md-5{margin-left:3rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-md-0{padding:0 0!important}.pt-md-0{padding-top:0!important}.pr-md-0{padding-right:0!important}.pb-md-0{padding-bottom:0!important}.pl-md-0{padding-left:0!important}.px-md-0{padding-right:0!important;padding-left:0!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.p-md-1{padding:.25rem .25rem!important}.pt-md-1{padding-top:.25rem!important}.pr-md-1{padding-right:.25rem!important}.pb-md-1{padding-bottom:.25rem!important}.pl-md-1{padding-left:.25rem!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-md-2{padding:.5rem .5rem!important}.pt-md-2{padding-top:.5rem!important}.pr-md-2{padding-right:.5rem!important}.pb-md-2{padding-bottom:.5rem!important}.pl-md-2{padding-left:.5rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-md-3{padding:1rem 1rem!important}.pt-md-3{padding-top:1rem!important}.pr-md-3{padding-right:1rem!important}.pb-md-3{padding-bottom:1rem!important}.pl-md-3{padding-left:1rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-md-4{padding:1.5rem 1.5rem!important}.pt-md-4{padding-top:1.5rem!important}.pr-md-4{padding-right:1.5rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pl-md-4{padding-left:1.5rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-md-5{padding:3rem 3rem!important}.pt-md-5{padding-top:3rem!important}.pr-md-5{padding-right:3rem!important}.pb-md-5{padding-bottom:3rem!important}.pl-md-5{padding-left:3rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto{margin-top:auto!important}.mr-md-auto{margin-right:auto!important}.mb-md-auto{margin-bottom:auto!important}.ml-md-auto{margin-left:auto!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}}@media (min-width:992px){.m-lg-0{margin:0 0!important}.mt-lg-0{margin-top:0!important}.mr-lg-0{margin-right:0!important}.mb-lg-0{margin-bottom:0!important}.ml-lg-0{margin-left:0!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.m-lg-1{margin:.25rem .25rem!important}.mt-lg-1{margin-top:.25rem!important}.mr-lg-1{margin-right:.25rem!important}.mb-lg-1{margin-bottom:.25rem!important}.ml-lg-1{margin-left:.25rem!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-lg-2{margin:.5rem .5rem!important}.mt-lg-2{margin-top:.5rem!important}.mr-lg-2{margin-right:.5rem!important}.mb-lg-2{margin-bottom:.5rem!important}.ml-lg-2{margin-left:.5rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-lg-3{margin:1rem 1rem!important}.mt-lg-3{margin-top:1rem!important}.mr-lg-3{margin-right:1rem!important}.mb-lg-3{margin-bottom:1rem!important}.ml-lg-3{margin-left:1rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-lg-4{margin:1.5rem 1.5rem!important}.mt-lg-4{margin-top:1.5rem!important}.mr-lg-4{margin-right:1.5rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.ml-lg-4{margin-left:1.5rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-lg-5{margin:3rem 3rem!important}.mt-lg-5{margin-top:3rem!important}.mr-lg-5{margin-right:3rem!important}.mb-lg-5{margin-bottom:3rem!important}.ml-lg-5{margin-left:3rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-lg-0{padding:0 0!important}.pt-lg-0{padding-top:0!important}.pr-lg-0{padding-right:0!important}.pb-lg-0{padding-bottom:0!important}.pl-lg-0{padding-left:0!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.p-lg-1{padding:.25rem .25rem!important}.pt-lg-1{padding-top:.25rem!important}.pr-lg-1{padding-right:.25rem!important}.pb-lg-1{padding-bottom:.25rem!important}.pl-lg-1{padding-left:.25rem!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-lg-2{padding:.5rem .5rem!important}.pt-lg-2{padding-top:.5rem!important}.pr-lg-2{padding-right:.5rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pl-lg-2{padding-left:.5rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-lg-3{padding:1rem 1rem!important}.pt-lg-3{padding-top:1rem!important}.pr-lg-3{padding-right:1rem!important}.pb-lg-3{padding-bottom:1rem!important}.pl-lg-3{padding-left:1rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-lg-4{padding:1.5rem 1.5rem!important}.pt-lg-4{padding-top:1.5rem!important}.pr-lg-4{padding-right:1.5rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pl-lg-4{padding-left:1.5rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-lg-5{padding:3rem 3rem!important}.pt-lg-5{padding-top:3rem!important}.pr-lg-5{padding-right:3rem!important}.pb-lg-5{padding-bottom:3rem!important}.pl-lg-5{padding-left:3rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto{margin-top:auto!important}.mr-lg-auto{margin-right:auto!important}.mb-lg-auto{margin-bottom:auto!important}.ml-lg-auto{margin-left:auto!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0 0!important}.mt-xl-0{margin-top:0!important}.mr-xl-0{margin-right:0!important}.mb-xl-0{margin-bottom:0!important}.ml-xl-0{margin-left:0!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.m-xl-1{margin:.25rem .25rem!important}.mt-xl-1{margin-top:.25rem!important}.mr-xl-1{margin-right:.25rem!important}.mb-xl-1{margin-bottom:.25rem!important}.ml-xl-1{margin-left:.25rem!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-xl-2{margin:.5rem .5rem!important}.mt-xl-2{margin-top:.5rem!important}.mr-xl-2{margin-right:.5rem!important}.mb-xl-2{margin-bottom:.5rem!important}.ml-xl-2{margin-left:.5rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-xl-3{margin:1rem 1rem!important}.mt-xl-3{margin-top:1rem!important}.mr-xl-3{margin-right:1rem!important}.mb-xl-3{margin-bottom:1rem!important}.ml-xl-3{margin-left:1rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-xl-4{margin:1.5rem 1.5rem!important}.mt-xl-4{margin-top:1.5rem!important}.mr-xl-4{margin-right:1.5rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.ml-xl-4{margin-left:1.5rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-xl-5{margin:3rem 3rem!important}.mt-xl-5{margin-top:3rem!important}.mr-xl-5{margin-right:3rem!important}.mb-xl-5{margin-bottom:3rem!important}.ml-xl-5{margin-left:3rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-xl-0{padding:0 0!important}.pt-xl-0{padding-top:0!important}.pr-xl-0{padding-right:0!important}.pb-xl-0{padding-bottom:0!important}.pl-xl-0{padding-left:0!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.p-xl-1{padding:.25rem .25rem!important}.pt-xl-1{padding-top:.25rem!important}.pr-xl-1{padding-right:.25rem!important}.pb-xl-1{padding-bottom:.25rem!important}.pl-xl-1{padding-left:.25rem!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-xl-2{padding:.5rem .5rem!important}.pt-xl-2{padding-top:.5rem!important}.pr-xl-2{padding-right:.5rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pl-xl-2{padding-left:.5rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-xl-3{padding:1rem 1rem!important}.pt-xl-3{padding-top:1rem!important}.pr-xl-3{padding-right:1rem!important}.pb-xl-3{padding-bottom:1rem!important}.pl-xl-3{padding-left:1rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-xl-4{padding:1.5rem 1.5rem!important}.pt-xl-4{padding-top:1.5rem!important}.pr-xl-4{padding-right:1.5rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pl-xl-4{padding-left:1.5rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-xl-5{padding:3rem 3rem!important}.pt-xl-5{padding-top:3rem!important}.pr-xl-5{padding-right:3rem!important}.pb-xl-5{padding-bottom:3rem!important}.pl-xl-5{padding-left:3rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto{margin-top:auto!important}.mr-xl-auto{margin-right:auto!important}.mb-xl-auto{margin-bottom:auto!important}.ml-xl-auto{margin-left:auto!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-normal{font-weight:400}.font-weight-bold{font-weight:700}.font-italic{font-style:italic}.text-white{color:#fff!important}.text-muted{color:#636c72!important}a.text-muted:focus,a.text-muted:hover{color:#4b5257!important}.text-primary{color:#0275d8!important}a.text-primary:focus,a.text-primary:hover{color:#025aa5!important}.text-success{color:#5cb85c!important}a.text-success:focus,a.text-success:hover{color:#449d44!important}.text-info{color:#5bc0de!important}a.text-info:focus,a.text-info:hover{color:#31b0d5!important}.text-warning{color:#f0ad4e!important}a.text-warning:focus,a.text-warning:hover{color:#ec971f!important}.text-danger{color:#d9534f!important}a.text-danger:focus,a.text-danger:hover{color:#c9302c!important}.text-gray-dark{color:#292b2c!important}a.text-gray-dark:focus,a.text-gray-dark:hover{color:#101112!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.invisible{visibility:hidden!important}.hidden-xs-up{display:none!important}@media (max-width:575px){.hidden-xs-down{display:none!important}}@media (min-width:576px){.hidden-sm-up{display:none!important}}@media (max-width:767px){.hidden-sm-down{display:none!important}}@media (min-width:768px){.hidden-md-up{display:none!important}}@media (max-width:991px){.hidden-md-down{display:none!important}}@media (min-width:992px){.hidden-lg-up{display:none!important}}@media (max-width:1199px){.hidden-lg-down{display:none!important}}@media (min-width:1200px){.hidden-xl-up{display:none!important}}.hidden-xl-down{display:none!important}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap.min.css.map b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap.min.css.map new file mode 100644 index 0000000..74462f2 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/css/bootstrap.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/_normalize.scss","bootstrap.css","../../scss/_print.scss","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_mixins.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_tables.scss","../../scss/mixins/_table-row.scss","../../scss/_forms.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_nav-divider.scss","../../scss/_button-group.scss","../../scss/_input-group.scss","../../scss/_custom-forms.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/mixins/_cards.scss","../../scss/_breadcrumb.scss","../../scss/mixins/_clearfix.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/mixins/_badge.scss","../../scss/_jumbotron.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/mixins/_gradients.scss","../../scss/_media.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_responsive-embed.scss","../../scss/_close.scss","../../scss/_modal.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_transforms.scss","../../scss/utilities/_align.scss","../../scss/utilities/_background.scss","../../scss/mixins/_background-variant.scss","../../scss/utilities/_borders.scss","../../scss/utilities/_display.scss","../../scss/utilities/_flex.scss","../../scss/utilities/_float.scss","../../scss/mixins/_float.scss","../../scss/utilities/_position.scss","../../scss/utilities/_screenreaders.scss","../../scss/mixins/_screen-reader.scss","../../scss/utilities/_sizing.scss","../../scss/utilities/_spacing.scss","../../scss/utilities/_text.scss","../../scss/mixins/_text-truncate.scss","../../scss/mixins/_text-emphasis.scss","../../scss/mixins/_text-hide.scss","../../scss/utilities/_visibility.scss","../../scss/mixins/_visibility.scss"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/js/bootstrap.js b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/js/bootstrap.js new file mode 100644 index 0000000..dec3775 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/js/bootstrap.js @@ -0,0 +1,3535 @@ +/*! + * Bootstrap v4.0.0-alpha.6 (https://getbootstrap.com) + * Copyright 2011-2017 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +if (typeof jQuery === 'undefined') { + throw new Error('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.') +} + ++function ($) { + var version = $.fn.jquery.split(' ')[0].split('.') + if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] >= 4)) { + throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0') + } +}(jQuery); + + ++function () { + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +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 _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): util.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Util = function ($) { + + /** + * ------------------------------------------------------------------------ + * Private TransitionEnd Helpers + * ------------------------------------------------------------------------ + */ + + var transition = false; + + var MAX_UID = 1000000; + + var TransitionEndEvent = { + WebkitTransition: 'webkitTransitionEnd', + MozTransition: 'transitionend', + OTransition: 'oTransitionEnd otransitionend', + transition: 'transitionend' + }; + + // shoutout AngusCroll (https://goo.gl/pxwQGp) + function toType(obj) { + return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase(); + } + + function isElement(obj) { + return (obj[0] || obj).nodeType; + } + + function getSpecialTransitionEndEvent() { + return { + bindType: transition.end, + delegateType: transition.end, + handle: function handle(event) { + if ($(event.target).is(this)) { + return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params + } + return undefined; + } + }; + } + + function transitionEndTest() { + if (window.QUnit) { + return false; + } + + var el = document.createElement('bootstrap'); + + for (var name in TransitionEndEvent) { + if (el.style[name] !== undefined) { + return { + end: TransitionEndEvent[name] + }; + } + } + + return false; + } + + function transitionEndEmulator(duration) { + var _this = this; + + var called = false; + + $(this).one(Util.TRANSITION_END, function () { + called = true; + }); + + setTimeout(function () { + if (!called) { + Util.triggerTransitionEnd(_this); + } + }, duration); + + return this; + } + + function setTransitionEndSupport() { + transition = transitionEndTest(); + + $.fn.emulateTransitionEnd = transitionEndEmulator; + + if (Util.supportsTransitionEnd()) { + $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); + } + } + + /** + * -------------------------------------------------------------------------- + * Public Util Api + * -------------------------------------------------------------------------- + */ + + var Util = { + + TRANSITION_END: 'bsTransitionEnd', + + getUID: function getUID(prefix) { + do { + // eslint-disable-next-line no-bitwise + prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here + } while (document.getElementById(prefix)); + return prefix; + }, + getSelectorFromElement: function getSelectorFromElement(element) { + var selector = element.getAttribute('data-target'); + + if (!selector) { + selector = element.getAttribute('href') || ''; + selector = /^#[a-z]/i.test(selector) ? selector : null; + } + + return selector; + }, + reflow: function reflow(element) { + return element.offsetHeight; + }, + triggerTransitionEnd: function triggerTransitionEnd(element) { + $(element).trigger(transition.end); + }, + supportsTransitionEnd: function supportsTransitionEnd() { + return Boolean(transition); + }, + typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { + for (var property in configTypes) { + if (configTypes.hasOwnProperty(property)) { + var expectedTypes = configTypes[property]; + var value = config[property]; + var valueType = value && isElement(value) ? 'element' : toType(value); + + if (!new RegExp(expectedTypes).test(valueType)) { + throw new Error(componentName.toUpperCase() + ': ' + ('Option "' + property + '" provided type "' + valueType + '" ') + ('but expected type "' + expectedTypes + '".')); + } + } + } + } + }; + + setTransitionEndSupport(); + + return Util; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): alert.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Alert = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'alert'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.alert'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + + var Selector = { + DISMISS: '[data-dismiss="alert"]' + }; + + var Event = { + CLOSE: 'close' + EVENT_KEY, + CLOSED: 'closed' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + ALERT: 'alert', + FADE: 'fade', + SHOW: 'show' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Alert = function () { + function Alert(element) { + _classCallCheck(this, Alert); + + this._element = element; + } + + // getters + + // public + + Alert.prototype.close = function close(element) { + element = element || this._element; + + var rootElement = this._getRootElement(element); + var customEvent = this._triggerCloseEvent(rootElement); + + if (customEvent.isDefaultPrevented()) { + return; + } + + this._removeElement(rootElement); + }; + + Alert.prototype.dispose = function dispose() { + $.removeData(this._element, DATA_KEY); + this._element = null; + }; + + // private + + Alert.prototype._getRootElement = function _getRootElement(element) { + var selector = Util.getSelectorFromElement(element); + var parent = false; + + if (selector) { + parent = $(selector)[0]; + } + + if (!parent) { + parent = $(element).closest('.' + ClassName.ALERT)[0]; + } + + return parent; + }; + + Alert.prototype._triggerCloseEvent = function _triggerCloseEvent(element) { + var closeEvent = $.Event(Event.CLOSE); + + $(element).trigger(closeEvent); + return closeEvent; + }; + + Alert.prototype._removeElement = function _removeElement(element) { + var _this2 = this; + + $(element).removeClass(ClassName.SHOW); + + if (!Util.supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) { + this._destroyElement(element); + return; + } + + $(element).one(Util.TRANSITION_END, function (event) { + return _this2._destroyElement(element, event); + }).emulateTransitionEnd(TRANSITION_DURATION); + }; + + Alert.prototype._destroyElement = function _destroyElement(element) { + $(element).detach().trigger(Event.CLOSED).remove(); + }; + + // static + + Alert._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var $element = $(this); + var data = $element.data(DATA_KEY); + + if (!data) { + data = new Alert(this); + $element.data(DATA_KEY, data); + } + + if (config === 'close') { + data[config](this); + } + }); + }; + + Alert._handleDismiss = function _handleDismiss(alertInstance) { + return function (event) { + if (event) { + event.preventDefault(); + } + + alertInstance.close(this); + }; + }; + + _createClass(Alert, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }]); + + return Alert; + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert())); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Alert._jQueryInterface; + $.fn[NAME].Constructor = Alert; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Alert._jQueryInterface; + }; + + return Alert; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): button.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Button = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'button'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.button'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var ClassName = { + ACTIVE: 'active', + BUTTON: 'btn', + FOCUS: 'focus' + }; + + var Selector = { + DATA_TOGGLE_CARROT: '[data-toggle^="button"]', + DATA_TOGGLE: '[data-toggle="buttons"]', + INPUT: 'input', + ACTIVE: '.active', + BUTTON: '.btn' + }; + + var Event = { + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY, + FOCUS_BLUR_DATA_API: 'focus' + EVENT_KEY + DATA_API_KEY + ' ' + ('blur' + EVENT_KEY + DATA_API_KEY) + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Button = function () { + function Button(element) { + _classCallCheck(this, Button); + + this._element = element; + } + + // getters + + // public + + Button.prototype.toggle = function toggle() { + var triggerChangeEvent = true; + var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0]; + + if (rootElement) { + var input = $(this._element).find(Selector.INPUT)[0]; + + if (input) { + if (input.type === 'radio') { + if (input.checked && $(this._element).hasClass(ClassName.ACTIVE)) { + triggerChangeEvent = false; + } else { + var activeElement = $(rootElement).find(Selector.ACTIVE)[0]; + + if (activeElement) { + $(activeElement).removeClass(ClassName.ACTIVE); + } + } + } + + if (triggerChangeEvent) { + input.checked = !$(this._element).hasClass(ClassName.ACTIVE); + $(input).trigger('change'); + } + + input.focus(); + } + } + + this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE)); + + if (triggerChangeEvent) { + $(this._element).toggleClass(ClassName.ACTIVE); + } + }; + + Button.prototype.dispose = function dispose() { + $.removeData(this._element, DATA_KEY); + this._element = null; + }; + + // static + + Button._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + + if (!data) { + data = new Button(this); + $(this).data(DATA_KEY, data); + } + + if (config === 'toggle') { + data[config](); + } + }); + }; + + _createClass(Button, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }]); + + return Button; + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + event.preventDefault(); + + var button = event.target; + + if (!$(button).hasClass(ClassName.BUTTON)) { + button = $(button).closest(Selector.BUTTON); + } + + Button._jQueryInterface.call($(button), 'toggle'); + }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + var button = $(event.target).closest(Selector.BUTTON)[0]; + $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type)); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Button._jQueryInterface; + $.fn[NAME].Constructor = Button; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Button._jQueryInterface; + }; + + return Button; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): carousel.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Carousel = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'carousel'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.carousel'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 600; + var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key + var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key + + var Default = { + interval: 5000, + keyboard: true, + slide: false, + pause: 'hover', + wrap: true + }; + + var DefaultType = { + interval: '(number|boolean)', + keyboard: 'boolean', + slide: '(boolean|string)', + pause: '(string|boolean)', + wrap: 'boolean' + }; + + var Direction = { + NEXT: 'next', + PREV: 'prev', + LEFT: 'left', + RIGHT: 'right' + }; + + var Event = { + SLIDE: 'slide' + EVENT_KEY, + SLID: 'slid' + EVENT_KEY, + KEYDOWN: 'keydown' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY, + LOAD_DATA_API: 'load' + EVENT_KEY + DATA_API_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + CAROUSEL: 'carousel', + ACTIVE: 'active', + SLIDE: 'slide', + RIGHT: 'carousel-item-right', + LEFT: 'carousel-item-left', + NEXT: 'carousel-item-next', + PREV: 'carousel-item-prev', + ITEM: 'carousel-item' + }; + + var Selector = { + ACTIVE: '.active', + ACTIVE_ITEM: '.active.carousel-item', + ITEM: '.carousel-item', + NEXT_PREV: '.carousel-item-next, .carousel-item-prev', + INDICATORS: '.carousel-indicators', + DATA_SLIDE: '[data-slide], [data-slide-to]', + DATA_RIDE: '[data-ride="carousel"]' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Carousel = function () { + function Carousel(element, config) { + _classCallCheck(this, Carousel); + + this._items = null; + this._interval = null; + this._activeElement = null; + + this._isPaused = false; + this._isSliding = false; + + this._config = this._getConfig(config); + this._element = $(element)[0]; + this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0]; + + this._addEventListeners(); + } + + // getters + + // public + + Carousel.prototype.next = function next() { + if (this._isSliding) { + throw new Error('Carousel is sliding'); + } + this._slide(Direction.NEXT); + }; + + Carousel.prototype.nextWhenVisible = function nextWhenVisible() { + // Don't call next when the page isn't visible + if (!document.hidden) { + this.next(); + } + }; + + Carousel.prototype.prev = function prev() { + if (this._isSliding) { + throw new Error('Carousel is sliding'); + } + this._slide(Direction.PREVIOUS); + }; + + Carousel.prototype.pause = function pause(event) { + if (!event) { + this._isPaused = true; + } + + if ($(this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) { + Util.triggerTransitionEnd(this._element); + this.cycle(true); + } + + clearInterval(this._interval); + this._interval = null; + }; + + Carousel.prototype.cycle = function cycle(event) { + if (!event) { + this._isPaused = false; + } + + if (this._interval) { + clearInterval(this._interval); + this._interval = null; + } + + if (this._config.interval && !this._isPaused) { + this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval); + } + }; + + Carousel.prototype.to = function to(index) { + var _this3 = this; + + this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]; + + var activeIndex = this._getItemIndex(this._activeElement); + + if (index > this._items.length - 1 || index < 0) { + return; + } + + if (this._isSliding) { + $(this._element).one(Event.SLID, function () { + return _this3.to(index); + }); + return; + } + + if (activeIndex === index) { + this.pause(); + this.cycle(); + return; + } + + var direction = index > activeIndex ? Direction.NEXT : Direction.PREVIOUS; + + this._slide(direction, this._items[index]); + }; + + Carousel.prototype.dispose = function dispose() { + $(this._element).off(EVENT_KEY); + $.removeData(this._element, DATA_KEY); + + this._items = null; + this._config = null; + this._element = null; + this._interval = null; + this._isPaused = null; + this._isSliding = null; + this._activeElement = null; + this._indicatorsElement = null; + }; + + // private + + Carousel.prototype._getConfig = function _getConfig(config) { + config = $.extend({}, Default, config); + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + }; + + Carousel.prototype._addEventListeners = function _addEventListeners() { + var _this4 = this; + + if (this._config.keyboard) { + $(this._element).on(Event.KEYDOWN, function (event) { + return _this4._keydown(event); + }); + } + + if (this._config.pause === 'hover' && !('ontouchstart' in document.documentElement)) { + $(this._element).on(Event.MOUSEENTER, function (event) { + return _this4.pause(event); + }).on(Event.MOUSELEAVE, function (event) { + return _this4.cycle(event); + }); + } + }; + + Carousel.prototype._keydown = function _keydown(event) { + if (/input|textarea/i.test(event.target.tagName)) { + return; + } + + switch (event.which) { + case ARROW_LEFT_KEYCODE: + event.preventDefault(); + this.prev(); + break; + case ARROW_RIGHT_KEYCODE: + event.preventDefault(); + this.next(); + break; + default: + return; + } + }; + + Carousel.prototype._getItemIndex = function _getItemIndex(element) { + this._items = $.makeArray($(element).parent().find(Selector.ITEM)); + return this._items.indexOf(element); + }; + + Carousel.prototype._getItemByDirection = function _getItemByDirection(direction, activeElement) { + var isNextDirection = direction === Direction.NEXT; + var isPrevDirection = direction === Direction.PREVIOUS; + var activeIndex = this._getItemIndex(activeElement); + var lastItemIndex = this._items.length - 1; + var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex; + + if (isGoingToWrap && !this._config.wrap) { + return activeElement; + } + + var delta = direction === Direction.PREVIOUS ? -1 : 1; + var itemIndex = (activeIndex + delta) % this._items.length; + + return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; + }; + + Carousel.prototype._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) { + var slideEvent = $.Event(Event.SLIDE, { + relatedTarget: relatedTarget, + direction: eventDirectionName + }); + + $(this._element).trigger(slideEvent); + + return slideEvent; + }; + + Carousel.prototype._setActiveIndicatorElement = function _setActiveIndicatorElement(element) { + if (this._indicatorsElement) { + $(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE); + + var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; + + if (nextIndicator) { + $(nextIndicator).addClass(ClassName.ACTIVE); + } + } + }; + + Carousel.prototype._slide = function _slide(direction, element) { + var _this5 = this; + + var activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]; + var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); + + var isCycling = Boolean(this._interval); + + var directionalClassName = void 0; + var orderClassName = void 0; + var eventDirectionName = void 0; + + if (direction === Direction.NEXT) { + directionalClassName = ClassName.LEFT; + orderClassName = ClassName.NEXT; + eventDirectionName = Direction.LEFT; + } else { + directionalClassName = ClassName.RIGHT; + orderClassName = ClassName.PREV; + eventDirectionName = Direction.RIGHT; + } + + if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) { + this._isSliding = false; + return; + } + + var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); + if (slideEvent.isDefaultPrevented()) { + return; + } + + if (!activeElement || !nextElement) { + // some weirdness is happening, so we bail + return; + } + + this._isSliding = true; + + if (isCycling) { + this.pause(); + } + + this._setActiveIndicatorElement(nextElement); + + var slidEvent = $.Event(Event.SLID, { + relatedTarget: nextElement, + direction: eventDirectionName + }); + + if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.SLIDE)) { + + $(nextElement).addClass(orderClassName); + + Util.reflow(nextElement); + + $(activeElement).addClass(directionalClassName); + $(nextElement).addClass(directionalClassName); + + $(activeElement).one(Util.TRANSITION_END, function () { + $(nextElement).removeClass(directionalClassName + ' ' + orderClassName).addClass(ClassName.ACTIVE); + + $(activeElement).removeClass(ClassName.ACTIVE + ' ' + orderClassName + ' ' + directionalClassName); + + _this5._isSliding = false; + + setTimeout(function () { + return $(_this5._element).trigger(slidEvent); + }, 0); + }).emulateTransitionEnd(TRANSITION_DURATION); + } else { + $(activeElement).removeClass(ClassName.ACTIVE); + $(nextElement).addClass(ClassName.ACTIVE); + + this._isSliding = false; + $(this._element).trigger(slidEvent); + } + + if (isCycling) { + this.cycle(); + } + }; + + // static + + Carousel._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = $.extend({}, Default, $(this).data()); + + if ((typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object') { + $.extend(_config, config); + } + + var action = typeof config === 'string' ? config : _config.slide; + + if (!data) { + data = new Carousel(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'number') { + data.to(config); + } else if (typeof action === 'string') { + if (data[action] === undefined) { + throw new Error('No method named "' + action + '"'); + } + data[action](); + } else if (_config.interval) { + data.pause(); + data.cycle(); + } + }); + }; + + Carousel._dataApiClickHandler = function _dataApiClickHandler(event) { + var selector = Util.getSelectorFromElement(this); + + if (!selector) { + return; + } + + var target = $(selector)[0]; + + if (!target || !$(target).hasClass(ClassName.CAROUSEL)) { + return; + } + + var config = $.extend({}, $(target).data(), $(this).data()); + var slideIndex = this.getAttribute('data-slide-to'); + + if (slideIndex) { + config.interval = false; + } + + Carousel._jQueryInterface.call($(target), config); + + if (slideIndex) { + $(target).data(DATA_KEY).to(slideIndex); + } + + event.preventDefault(); + }; + + _createClass(Carousel, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; + } + }]); + + return Carousel; + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler); + + $(window).on(Event.LOAD_DATA_API, function () { + $(Selector.DATA_RIDE).each(function () { + var $carousel = $(this); + Carousel._jQueryInterface.call($carousel, $carousel.data()); + }); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Carousel._jQueryInterface; + $.fn[NAME].Constructor = Carousel; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Carousel._jQueryInterface; + }; + + return Carousel; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): collapse.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Collapse = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'collapse'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.collapse'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 600; + + var Default = { + toggle: true, + parent: '' + }; + + var DefaultType = { + toggle: 'boolean', + parent: 'string' + }; + + var Event = { + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + SHOW: 'show', + COLLAPSE: 'collapse', + COLLAPSING: 'collapsing', + COLLAPSED: 'collapsed' + }; + + var Dimension = { + WIDTH: 'width', + HEIGHT: 'height' + }; + + var Selector = { + ACTIVES: '.card > .show, .card > .collapsing', + DATA_TOGGLE: '[data-toggle="collapse"]' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Collapse = function () { + function Collapse(element, config) { + _classCallCheck(this, Collapse); + + this._isTransitioning = false; + this._element = element; + this._config = this._getConfig(config); + this._triggerArray = $.makeArray($('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]'))); + + this._parent = this._config.parent ? this._getParent() : null; + + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._element, this._triggerArray); + } + + if (this._config.toggle) { + this.toggle(); + } + } + + // getters + + // public + + Collapse.prototype.toggle = function toggle() { + if ($(this._element).hasClass(ClassName.SHOW)) { + this.hide(); + } else { + this.show(); + } + }; + + Collapse.prototype.show = function show() { + var _this6 = this; + + if (this._isTransitioning) { + throw new Error('Collapse is transitioning'); + } + + if ($(this._element).hasClass(ClassName.SHOW)) { + return; + } + + var actives = void 0; + var activesData = void 0; + + if (this._parent) { + actives = $.makeArray($(this._parent).find(Selector.ACTIVES)); + if (!actives.length) { + actives = null; + } + } + + if (actives) { + activesData = $(actives).data(DATA_KEY); + if (activesData && activesData._isTransitioning) { + return; + } + } + + var startEvent = $.Event(Event.SHOW); + $(this._element).trigger(startEvent); + if (startEvent.isDefaultPrevented()) { + return; + } + + if (actives) { + Collapse._jQueryInterface.call($(actives), 'hide'); + if (!activesData) { + $(actives).data(DATA_KEY, null); + } + } + + var dimension = this._getDimension(); + + $(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING); + + this._element.style[dimension] = 0; + this._element.setAttribute('aria-expanded', true); + + if (this._triggerArray.length) { + $(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true); + } + + this.setTransitioning(true); + + var complete = function complete() { + $(_this6._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW); + + _this6._element.style[dimension] = ''; + + _this6.setTransitioning(false); + + $(_this6._element).trigger(Event.SHOWN); + }; + + if (!Util.supportsTransitionEnd()) { + complete(); + return; + } + + var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); + var scrollSize = 'scroll' + capitalizedDimension; + + $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + + this._element.style[dimension] = this._element[scrollSize] + 'px'; + }; + + Collapse.prototype.hide = function hide() { + var _this7 = this; + + if (this._isTransitioning) { + throw new Error('Collapse is transitioning'); + } + + if (!$(this._element).hasClass(ClassName.SHOW)) { + return; + } + + var startEvent = $.Event(Event.HIDE); + $(this._element).trigger(startEvent); + if (startEvent.isDefaultPrevented()) { + return; + } + + var dimension = this._getDimension(); + var offsetDimension = dimension === Dimension.WIDTH ? 'offsetWidth' : 'offsetHeight'; + + this._element.style[dimension] = this._element[offsetDimension] + 'px'; + + Util.reflow(this._element); + + $(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW); + + this._element.setAttribute('aria-expanded', false); + + if (this._triggerArray.length) { + $(this._triggerArray).addClass(ClassName.COLLAPSED).attr('aria-expanded', false); + } + + this.setTransitioning(true); + + var complete = function complete() { + _this7.setTransitioning(false); + $(_this7._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN); + }; + + this._element.style[dimension] = ''; + + if (!Util.supportsTransitionEnd()) { + complete(); + return; + } + + $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + }; + + Collapse.prototype.setTransitioning = function setTransitioning(isTransitioning) { + this._isTransitioning = isTransitioning; + }; + + Collapse.prototype.dispose = function dispose() { + $.removeData(this._element, DATA_KEY); + + this._config = null; + this._parent = null; + this._element = null; + this._triggerArray = null; + this._isTransitioning = null; + }; + + // private + + Collapse.prototype._getConfig = function _getConfig(config) { + config = $.extend({}, Default, config); + config.toggle = Boolean(config.toggle); // coerce string values + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + }; + + Collapse.prototype._getDimension = function _getDimension() { + var hasWidth = $(this._element).hasClass(Dimension.WIDTH); + return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT; + }; + + Collapse.prototype._getParent = function _getParent() { + var _this8 = this; + + var parent = $(this._config.parent)[0]; + var selector = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]'; + + $(parent).find(selector).each(function (i, element) { + _this8._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); + }); + + return parent; + }; + + Collapse.prototype._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) { + if (element) { + var isOpen = $(element).hasClass(ClassName.SHOW); + element.setAttribute('aria-expanded', isOpen); + + if (triggerArray.length) { + $(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen); + } + } + }; + + // static + + Collapse._getTargetFromElement = function _getTargetFromElement(element) { + var selector = Util.getSelectorFromElement(element); + return selector ? $(selector)[0] : null; + }; + + Collapse._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DATA_KEY); + var _config = $.extend({}, Default, $this.data(), (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config); + + if (!data && _config.toggle && /show|hide/.test(config)) { + _config.toggle = false; + } + + if (!data) { + data = new Collapse(this, _config); + $this.data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); + }; + + _createClass(Collapse, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; + } + }]); + + return Collapse; + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); + + var target = Collapse._getTargetFromElement(this); + var data = $(target).data(DATA_KEY); + var config = data ? 'toggle' : $(this).data(); + + Collapse._jQueryInterface.call($(target), config); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Collapse._jQueryInterface; + $.fn[NAME].Constructor = Collapse; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Collapse._jQueryInterface; + }; + + return Collapse; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): dropdown.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Dropdown = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'dropdown'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.dropdown'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key + var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key + var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key + var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse) + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY, + FOCUSIN_DATA_API: 'focusin' + EVENT_KEY + DATA_API_KEY, + KEYDOWN_DATA_API: 'keydown' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + BACKDROP: 'dropdown-backdrop', + DISABLED: 'disabled', + SHOW: 'show' + }; + + var Selector = { + BACKDROP: '.dropdown-backdrop', + DATA_TOGGLE: '[data-toggle="dropdown"]', + FORM_CHILD: '.dropdown form', + ROLE_MENU: '[role="menu"]', + ROLE_LISTBOX: '[role="listbox"]', + NAVBAR_NAV: '.navbar-nav', + VISIBLE_ITEMS: '[role="menu"] li:not(.disabled) a, ' + '[role="listbox"] li:not(.disabled) a' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Dropdown = function () { + function Dropdown(element) { + _classCallCheck(this, Dropdown); + + this._element = element; + + this._addEventListeners(); + } + + // getters + + // public + + Dropdown.prototype.toggle = function toggle() { + if (this.disabled || $(this).hasClass(ClassName.DISABLED)) { + return false; + } + + var parent = Dropdown._getParentFromElement(this); + var isActive = $(parent).hasClass(ClassName.SHOW); + + Dropdown._clearMenus(); + + if (isActive) { + return false; + } + + if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) { + + // if mobile we use a backdrop because click events don't delegate + var dropdown = document.createElement('div'); + dropdown.className = ClassName.BACKDROP; + $(dropdown).insertBefore(this); + $(dropdown).on('click', Dropdown._clearMenus); + } + + var relatedTarget = { + relatedTarget: this + }; + var showEvent = $.Event(Event.SHOW, relatedTarget); + + $(parent).trigger(showEvent); + + if (showEvent.isDefaultPrevented()) { + return false; + } + + this.focus(); + this.setAttribute('aria-expanded', true); + + $(parent).toggleClass(ClassName.SHOW); + $(parent).trigger($.Event(Event.SHOWN, relatedTarget)); + + return false; + }; + + Dropdown.prototype.dispose = function dispose() { + $.removeData(this._element, DATA_KEY); + $(this._element).off(EVENT_KEY); + this._element = null; + }; + + // private + + Dropdown.prototype._addEventListeners = function _addEventListeners() { + $(this._element).on(Event.CLICK, this.toggle); + }; + + // static + + Dropdown._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + + if (!data) { + data = new Dropdown(this); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config].call(this); + } + }); + }; + + Dropdown._clearMenus = function _clearMenus(event) { + if (event && event.which === RIGHT_MOUSE_BUTTON_WHICH) { + return; + } + + var backdrop = $(Selector.BACKDROP)[0]; + if (backdrop) { + backdrop.parentNode.removeChild(backdrop); + } + + var toggles = $.makeArray($(Selector.DATA_TOGGLE)); + + for (var i = 0; i < toggles.length; i++) { + var parent = Dropdown._getParentFromElement(toggles[i]); + var relatedTarget = { + relatedTarget: toggles[i] + }; + + if (!$(parent).hasClass(ClassName.SHOW)) { + continue; + } + + if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'focusin') && $.contains(parent, event.target)) { + continue; + } + + var hideEvent = $.Event(Event.HIDE, relatedTarget); + $(parent).trigger(hideEvent); + if (hideEvent.isDefaultPrevented()) { + continue; + } + + toggles[i].setAttribute('aria-expanded', 'false'); + + $(parent).removeClass(ClassName.SHOW).trigger($.Event(Event.HIDDEN, relatedTarget)); + } + }; + + Dropdown._getParentFromElement = function _getParentFromElement(element) { + var parent = void 0; + var selector = Util.getSelectorFromElement(element); + + if (selector) { + parent = $(selector)[0]; + } + + return parent || element.parentNode; + }; + + Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) { + if (!/(38|40|27|32)/.test(event.which) || /input|textarea/i.test(event.target.tagName)) { + return; + } + + event.preventDefault(); + event.stopPropagation(); + + if (this.disabled || $(this).hasClass(ClassName.DISABLED)) { + return; + } + + var parent = Dropdown._getParentFromElement(this); + var isActive = $(parent).hasClass(ClassName.SHOW); + + if (!isActive && event.which !== ESCAPE_KEYCODE || isActive && event.which === ESCAPE_KEYCODE) { + + if (event.which === ESCAPE_KEYCODE) { + var toggle = $(parent).find(Selector.DATA_TOGGLE)[0]; + $(toggle).trigger('focus'); + } + + $(this).trigger('click'); + return; + } + + var items = $(parent).find(Selector.VISIBLE_ITEMS).get(); + + if (!items.length) { + return; + } + + var index = items.indexOf(event.target); + + if (event.which === ARROW_UP_KEYCODE && index > 0) { + // up + index--; + } + + if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { + // down + index++; + } + + if (index < 0) { + index = 0; + } + + items[index].focus(); + }; + + _createClass(Dropdown, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }]); + + return Dropdown; + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_MENU, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_LISTBOX, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + ' ' + Event.FOCUSIN_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, Dropdown.prototype.toggle).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) { + e.stopPropagation(); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Dropdown._jQueryInterface; + $.fn[NAME].Constructor = Dropdown; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Dropdown._jQueryInterface; + }; + + return Dropdown; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): modal.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Modal = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'modal'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.modal'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 300; + var BACKDROP_TRANSITION_DURATION = 150; + var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key + + var Default = { + backdrop: true, + keyboard: true, + focus: true, + show: true + }; + + var DefaultType = { + backdrop: '(boolean|string)', + keyboard: 'boolean', + focus: 'boolean', + show: 'boolean' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + RESIZE: 'resize' + EVENT_KEY, + CLICK_DISMISS: 'click.dismiss' + EVENT_KEY, + KEYDOWN_DISMISS: 'keydown.dismiss' + EVENT_KEY, + MOUSEUP_DISMISS: 'mouseup.dismiss' + EVENT_KEY, + MOUSEDOWN_DISMISS: 'mousedown.dismiss' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + SCROLLBAR_MEASURER: 'modal-scrollbar-measure', + BACKDROP: 'modal-backdrop', + OPEN: 'modal-open', + FADE: 'fade', + SHOW: 'show' + }; + + var Selector = { + DIALOG: '.modal-dialog', + DATA_TOGGLE: '[data-toggle="modal"]', + DATA_DISMISS: '[data-dismiss="modal"]', + FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Modal = function () { + function Modal(element, config) { + _classCallCheck(this, Modal); + + this._config = this._getConfig(config); + this._element = element; + this._dialog = $(element).find(Selector.DIALOG)[0]; + this._backdrop = null; + this._isShown = false; + this._isBodyOverflowing = false; + this._ignoreBackdropClick = false; + this._isTransitioning = false; + this._originalBodyPadding = 0; + this._scrollbarWidth = 0; + } + + // getters + + // public + + Modal.prototype.toggle = function toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + }; + + Modal.prototype.show = function show(relatedTarget) { + var _this9 = this; + + if (this._isTransitioning) { + throw new Error('Modal is transitioning'); + } + + if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { + this._isTransitioning = true; + } + var showEvent = $.Event(Event.SHOW, { + relatedTarget: relatedTarget + }); + + $(this._element).trigger(showEvent); + + if (this._isShown || showEvent.isDefaultPrevented()) { + return; + } + + this._isShown = true; + + this._checkScrollbar(); + this._setScrollbar(); + + $(document.body).addClass(ClassName.OPEN); + + this._setEscapeEvent(); + this._setResizeEvent(); + + $(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) { + return _this9.hide(event); + }); + + $(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () { + $(_this9._element).one(Event.MOUSEUP_DISMISS, function (event) { + if ($(event.target).is(_this9._element)) { + _this9._ignoreBackdropClick = true; + } + }); + }); + + this._showBackdrop(function () { + return _this9._showElement(relatedTarget); + }); + }; + + Modal.prototype.hide = function hide(event) { + var _this10 = this; + + if (event) { + event.preventDefault(); + } + + if (this._isTransitioning) { + throw new Error('Modal is transitioning'); + } + + var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE); + if (transition) { + this._isTransitioning = true; + } + + var hideEvent = $.Event(Event.HIDE); + $(this._element).trigger(hideEvent); + + if (!this._isShown || hideEvent.isDefaultPrevented()) { + return; + } + + this._isShown = false; + + this._setEscapeEvent(); + this._setResizeEvent(); + + $(document).off(Event.FOCUSIN); + + $(this._element).removeClass(ClassName.SHOW); + + $(this._element).off(Event.CLICK_DISMISS); + $(this._dialog).off(Event.MOUSEDOWN_DISMISS); + + if (transition) { + $(this._element).one(Util.TRANSITION_END, function (event) { + return _this10._hideModal(event); + }).emulateTransitionEnd(TRANSITION_DURATION); + } else { + this._hideModal(); + } + }; + + Modal.prototype.dispose = function dispose() { + $.removeData(this._element, DATA_KEY); + + $(window, document, this._element, this._backdrop).off(EVENT_KEY); + + this._config = null; + this._element = null; + this._dialog = null; + this._backdrop = null; + this._isShown = null; + this._isBodyOverflowing = null; + this._ignoreBackdropClick = null; + this._originalBodyPadding = null; + this._scrollbarWidth = null; + }; + + // private + + Modal.prototype._getConfig = function _getConfig(config) { + config = $.extend({}, Default, config); + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + }; + + Modal.prototype._showElement = function _showElement(relatedTarget) { + var _this11 = this; + + var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE); + + if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { + // don't move modals dom position + document.body.appendChild(this._element); + } + + this._element.style.display = 'block'; + this._element.removeAttribute('aria-hidden'); + this._element.scrollTop = 0; + + if (transition) { + Util.reflow(this._element); + } + + $(this._element).addClass(ClassName.SHOW); + + if (this._config.focus) { + this._enforceFocus(); + } + + var shownEvent = $.Event(Event.SHOWN, { + relatedTarget: relatedTarget + }); + + var transitionComplete = function transitionComplete() { + if (_this11._config.focus) { + _this11._element.focus(); + } + _this11._isTransitioning = false; + $(_this11._element).trigger(shownEvent); + }; + + if (transition) { + $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + transitionComplete(); + } + }; + + Modal.prototype._enforceFocus = function _enforceFocus() { + var _this12 = this; + + $(document).off(Event.FOCUSIN) // guard against infinite focus loop + .on(Event.FOCUSIN, function (event) { + if (document !== event.target && _this12._element !== event.target && !$(_this12._element).has(event.target).length) { + _this12._element.focus(); + } + }); + }; + + Modal.prototype._setEscapeEvent = function _setEscapeEvent() { + var _this13 = this; + + if (this._isShown && this._config.keyboard) { + $(this._element).on(Event.KEYDOWN_DISMISS, function (event) { + if (event.which === ESCAPE_KEYCODE) { + _this13.hide(); + } + }); + } else if (!this._isShown) { + $(this._element).off(Event.KEYDOWN_DISMISS); + } + }; + + Modal.prototype._setResizeEvent = function _setResizeEvent() { + var _this14 = this; + + if (this._isShown) { + $(window).on(Event.RESIZE, function (event) { + return _this14._handleUpdate(event); + }); + } else { + $(window).off(Event.RESIZE); + } + }; + + Modal.prototype._hideModal = function _hideModal() { + var _this15 = this; + + this._element.style.display = 'none'; + this._element.setAttribute('aria-hidden', 'true'); + this._isTransitioning = false; + this._showBackdrop(function () { + $(document.body).removeClass(ClassName.OPEN); + _this15._resetAdjustments(); + _this15._resetScrollbar(); + $(_this15._element).trigger(Event.HIDDEN); + }); + }; + + Modal.prototype._removeBackdrop = function _removeBackdrop() { + if (this._backdrop) { + $(this._backdrop).remove(); + this._backdrop = null; + } + }; + + Modal.prototype._showBackdrop = function _showBackdrop(callback) { + var _this16 = this; + + var animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : ''; + + if (this._isShown && this._config.backdrop) { + var doAnimate = Util.supportsTransitionEnd() && animate; + + this._backdrop = document.createElement('div'); + this._backdrop.className = ClassName.BACKDROP; + + if (animate) { + $(this._backdrop).addClass(animate); + } + + $(this._backdrop).appendTo(document.body); + + $(this._element).on(Event.CLICK_DISMISS, function (event) { + if (_this16._ignoreBackdropClick) { + _this16._ignoreBackdropClick = false; + return; + } + if (event.target !== event.currentTarget) { + return; + } + if (_this16._config.backdrop === 'static') { + _this16._element.focus(); + } else { + _this16.hide(); + } + }); + + if (doAnimate) { + Util.reflow(this._backdrop); + } + + $(this._backdrop).addClass(ClassName.SHOW); + + if (!callback) { + return; + } + + if (!doAnimate) { + callback(); + return; + } + + $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); + } else if (!this._isShown && this._backdrop) { + $(this._backdrop).removeClass(ClassName.SHOW); + + var callbackRemove = function callbackRemove() { + _this16._removeBackdrop(); + if (callback) { + callback(); + } + }; + + if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { + $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); + } else { + callbackRemove(); + } + } else if (callback) { + callback(); + } + }; + + // ---------------------------------------------------------------------- + // the following methods are used to handle overflowing modals + // todo (fat): these should probably be refactored out of modal.js + // ---------------------------------------------------------------------- + + Modal.prototype._handleUpdate = function _handleUpdate() { + this._adjustDialog(); + }; + + Modal.prototype._adjustDialog = function _adjustDialog() { + var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + + if (!this._isBodyOverflowing && isModalOverflowing) { + this._element.style.paddingLeft = this._scrollbarWidth + 'px'; + } + + if (this._isBodyOverflowing && !isModalOverflowing) { + this._element.style.paddingRight = this._scrollbarWidth + 'px'; + } + }; + + Modal.prototype._resetAdjustments = function _resetAdjustments() { + this._element.style.paddingLeft = ''; + this._element.style.paddingRight = ''; + }; + + Modal.prototype._checkScrollbar = function _checkScrollbar() { + this._isBodyOverflowing = document.body.clientWidth < window.innerWidth; + this._scrollbarWidth = this._getScrollbarWidth(); + }; + + Modal.prototype._setScrollbar = function _setScrollbar() { + var bodyPadding = parseInt($(Selector.FIXED_CONTENT).css('padding-right') || 0, 10); + + this._originalBodyPadding = document.body.style.paddingRight || ''; + + if (this._isBodyOverflowing) { + document.body.style.paddingRight = bodyPadding + this._scrollbarWidth + 'px'; + } + }; + + Modal.prototype._resetScrollbar = function _resetScrollbar() { + document.body.style.paddingRight = this._originalBodyPadding; + }; + + Modal.prototype._getScrollbarWidth = function _getScrollbarWidth() { + // thx d.walsh + var scrollDiv = document.createElement('div'); + scrollDiv.className = ClassName.SCROLLBAR_MEASURER; + document.body.appendChild(scrollDiv); + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); + return scrollbarWidth; + }; + + // static + + Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = $.extend({}, Modal.Default, $(this).data(), (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config); + + if (!data) { + data = new Modal(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](relatedTarget); + } else if (_config.show) { + data.show(relatedTarget); + } + }); + }; + + _createClass(Modal, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; + } + }]); + + return Modal; + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + var _this17 = this; + + var target = void 0; + var selector = Util.getSelectorFromElement(this); + + if (selector) { + target = $(selector)[0]; + } + + var config = $(target).data(DATA_KEY) ? 'toggle' : $.extend({}, $(target).data(), $(this).data()); + + if (this.tagName === 'A' || this.tagName === 'AREA') { + event.preventDefault(); + } + + var $target = $(target).one(Event.SHOW, function (showEvent) { + if (showEvent.isDefaultPrevented()) { + // only register focus restorer if modal will actually get shown + return; + } + + $target.one(Event.HIDDEN, function () { + if ($(_this17).is(':visible')) { + _this17.focus(); + } + }); + }); + + Modal._jQueryInterface.call($(target), config, this); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Modal._jQueryInterface; + $.fn[NAME].Constructor = Modal; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Modal._jQueryInterface; + }; + + return Modal; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): scrollspy.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var ScrollSpy = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'scrollspy'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.scrollspy'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var Default = { + offset: 10, + method: 'auto', + target: '' + }; + + var DefaultType = { + offset: 'number', + method: 'string', + target: '(string|element)' + }; + + var Event = { + ACTIVATE: 'activate' + EVENT_KEY, + SCROLL: 'scroll' + EVENT_KEY, + LOAD_DATA_API: 'load' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + DROPDOWN_ITEM: 'dropdown-item', + DROPDOWN_MENU: 'dropdown-menu', + NAV_LINK: 'nav-link', + NAV: 'nav', + ACTIVE: 'active' + }; + + var Selector = { + DATA_SPY: '[data-spy="scroll"]', + ACTIVE: '.active', + LIST_ITEM: '.list-item', + LI: 'li', + LI_DROPDOWN: 'li.dropdown', + NAV_LINKS: '.nav-link', + DROPDOWN: '.dropdown', + DROPDOWN_ITEMS: '.dropdown-item', + DROPDOWN_TOGGLE: '.dropdown-toggle' + }; + + var OffsetMethod = { + OFFSET: 'offset', + POSITION: 'position' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var ScrollSpy = function () { + function ScrollSpy(element, config) { + var _this18 = this; + + _classCallCheck(this, ScrollSpy); + + this._element = element; + this._scrollElement = element.tagName === 'BODY' ? window : element; + this._config = this._getConfig(config); + this._selector = this._config.target + ' ' + Selector.NAV_LINKS + ',' + (this._config.target + ' ' + Selector.DROPDOWN_ITEMS); + this._offsets = []; + this._targets = []; + this._activeTarget = null; + this._scrollHeight = 0; + + $(this._scrollElement).on(Event.SCROLL, function (event) { + return _this18._process(event); + }); + + this.refresh(); + this._process(); + } + + // getters + + // public + + ScrollSpy.prototype.refresh = function refresh() { + var _this19 = this; + + var autoMethod = this._scrollElement !== this._scrollElement.window ? OffsetMethod.POSITION : OffsetMethod.OFFSET; + + var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; + + var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0; + + this._offsets = []; + this._targets = []; + + this._scrollHeight = this._getScrollHeight(); + + var targets = $.makeArray($(this._selector)); + + targets.map(function (element) { + var target = void 0; + var targetSelector = Util.getSelectorFromElement(element); + + if (targetSelector) { + target = $(targetSelector)[0]; + } + + if (target && (target.offsetWidth || target.offsetHeight)) { + // todo (fat): remove sketch reliance on jQuery position/offset + return [$(target)[offsetMethod]().top + offsetBase, targetSelector]; + } + return null; + }).filter(function (item) { + return item; + }).sort(function (a, b) { + return a[0] - b[0]; + }).forEach(function (item) { + _this19._offsets.push(item[0]); + _this19._targets.push(item[1]); + }); + }; + + ScrollSpy.prototype.dispose = function dispose() { + $.removeData(this._element, DATA_KEY); + $(this._scrollElement).off(EVENT_KEY); + + this._element = null; + this._scrollElement = null; + this._config = null; + this._selector = null; + this._offsets = null; + this._targets = null; + this._activeTarget = null; + this._scrollHeight = null; + }; + + // private + + ScrollSpy.prototype._getConfig = function _getConfig(config) { + config = $.extend({}, Default, config); + + if (typeof config.target !== 'string') { + var id = $(config.target).attr('id'); + if (!id) { + id = Util.getUID(NAME); + $(config.target).attr('id', id); + } + config.target = '#' + id; + } + + Util.typeCheckConfig(NAME, config, DefaultType); + + return config; + }; + + ScrollSpy.prototype._getScrollTop = function _getScrollTop() { + return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; + }; + + ScrollSpy.prototype._getScrollHeight = function _getScrollHeight() { + return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); + }; + + ScrollSpy.prototype._getOffsetHeight = function _getOffsetHeight() { + return this._scrollElement === window ? window.innerHeight : this._scrollElement.offsetHeight; + }; + + ScrollSpy.prototype._process = function _process() { + var scrollTop = this._getScrollTop() + this._config.offset; + var scrollHeight = this._getScrollHeight(); + var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); + + if (this._scrollHeight !== scrollHeight) { + this.refresh(); + } + + if (scrollTop >= maxScroll) { + var target = this._targets[this._targets.length - 1]; + + if (this._activeTarget !== target) { + this._activate(target); + } + return; + } + + if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) { + this._activeTarget = null; + this._clear(); + return; + } + + for (var i = this._offsets.length; i--;) { + var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (this._offsets[i + 1] === undefined || scrollTop < this._offsets[i + 1]); + + if (isActiveTarget) { + this._activate(this._targets[i]); + } + } + }; + + ScrollSpy.prototype._activate = function _activate(target) { + this._activeTarget = target; + + this._clear(); + + var queries = this._selector.split(','); + queries = queries.map(function (selector) { + return selector + '[data-target="' + target + '"],' + (selector + '[href="' + target + '"]'); + }); + + var $link = $(queries.join(',')); + + if ($link.hasClass(ClassName.DROPDOWN_ITEM)) { + $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); + $link.addClass(ClassName.ACTIVE); + } else { + // todo (fat) this is kinda sus... + // recursively add actives to tested nav-links + $link.parents(Selector.LI).find('> ' + Selector.NAV_LINKS).addClass(ClassName.ACTIVE); + } + + $(this._scrollElement).trigger(Event.ACTIVATE, { + relatedTarget: target + }); + }; + + ScrollSpy.prototype._clear = function _clear() { + $(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE); + }; + + // static + + ScrollSpy._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config; + + if (!data) { + data = new ScrollSpy(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); + }; + + _createClass(ScrollSpy, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; + } + }]); + + return ScrollSpy; + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(window).on(Event.LOAD_DATA_API, function () { + var scrollSpys = $.makeArray($(Selector.DATA_SPY)); + + for (var i = scrollSpys.length; i--;) { + var $spy = $(scrollSpys[i]); + ScrollSpy._jQueryInterface.call($spy, $spy.data()); + } + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = ScrollSpy._jQueryInterface; + $.fn[NAME].Constructor = ScrollSpy; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return ScrollSpy._jQueryInterface; + }; + + return ScrollSpy; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): tab.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Tab = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'tab'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.tab'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + DROPDOWN_MENU: 'dropdown-menu', + ACTIVE: 'active', + DISABLED: 'disabled', + FADE: 'fade', + SHOW: 'show' + }; + + var Selector = { + A: 'a', + LI: 'li', + DROPDOWN: '.dropdown', + LIST: 'ul:not(.dropdown-menu), ol:not(.dropdown-menu), nav:not(.dropdown-menu)', + FADE_CHILD: '> .nav-item .fade, > .fade', + ACTIVE: '.active', + ACTIVE_CHILD: '> .nav-item > .active, > .active', + DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"]', + DROPDOWN_TOGGLE: '.dropdown-toggle', + DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Tab = function () { + function Tab(element) { + _classCallCheck(this, Tab); + + this._element = element; + } + + // getters + + // public + + Tab.prototype.show = function show() { + var _this20 = this; + + if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName.ACTIVE) || $(this._element).hasClass(ClassName.DISABLED)) { + return; + } + + var target = void 0; + var previous = void 0; + var listElement = $(this._element).closest(Selector.LIST)[0]; + var selector = Util.getSelectorFromElement(this._element); + + if (listElement) { + previous = $.makeArray($(listElement).find(Selector.ACTIVE)); + previous = previous[previous.length - 1]; + } + + var hideEvent = $.Event(Event.HIDE, { + relatedTarget: this._element + }); + + var showEvent = $.Event(Event.SHOW, { + relatedTarget: previous + }); + + if (previous) { + $(previous).trigger(hideEvent); + } + + $(this._element).trigger(showEvent); + + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) { + return; + } + + if (selector) { + target = $(selector)[0]; + } + + this._activate(this._element, listElement); + + var complete = function complete() { + var hiddenEvent = $.Event(Event.HIDDEN, { + relatedTarget: _this20._element + }); + + var shownEvent = $.Event(Event.SHOWN, { + relatedTarget: previous + }); + + $(previous).trigger(hiddenEvent); + $(_this20._element).trigger(shownEvent); + }; + + if (target) { + this._activate(target, target.parentNode, complete); + } else { + complete(); + } + }; + + Tab.prototype.dispose = function dispose() { + $.removeClass(this._element, DATA_KEY); + this._element = null; + }; + + // private + + Tab.prototype._activate = function _activate(element, container, callback) { + var _this21 = this; + + var active = $(container).find(Selector.ACTIVE_CHILD)[0]; + var isTransitioning = callback && Util.supportsTransitionEnd() && (active && $(active).hasClass(ClassName.FADE) || Boolean($(container).find(Selector.FADE_CHILD)[0])); + + var complete = function complete() { + return _this21._transitionComplete(element, active, isTransitioning, callback); + }; + + if (active && isTransitioning) { + $(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + complete(); + } + + if (active) { + $(active).removeClass(ClassName.SHOW); + } + }; + + Tab.prototype._transitionComplete = function _transitionComplete(element, active, isTransitioning, callback) { + if (active) { + $(active).removeClass(ClassName.ACTIVE); + + var dropdownChild = $(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0]; + + if (dropdownChild) { + $(dropdownChild).removeClass(ClassName.ACTIVE); + } + + active.setAttribute('aria-expanded', false); + } + + $(element).addClass(ClassName.ACTIVE); + element.setAttribute('aria-expanded', true); + + if (isTransitioning) { + Util.reflow(element); + $(element).addClass(ClassName.SHOW); + } else { + $(element).removeClass(ClassName.FADE); + } + + if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) { + + var dropdownElement = $(element).closest(Selector.DROPDOWN)[0]; + if (dropdownElement) { + $(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); + } + + element.setAttribute('aria-expanded', true); + } + + if (callback) { + callback(); + } + }; + + // static + + Tab._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DATA_KEY); + + if (!data) { + data = new Tab(this); + $this.data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); + }; + + _createClass(Tab, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }]); + + return Tab; + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); + Tab._jQueryInterface.call($(this), 'show'); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Tab._jQueryInterface; + $.fn[NAME].Constructor = Tab; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Tab._jQueryInterface; + }; + + return Tab; +}(jQuery); + +/* global Tether */ + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): tooltip.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Tooltip = function ($) { + + /** + * Check for Tether dependency + * Tether - http://tether.io/ + */ + if (typeof Tether === 'undefined') { + throw new Error('Bootstrap tooltips require Tether (http://tether.io/)'); + } + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'tooltip'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.tooltip'; + var EVENT_KEY = '.' + DATA_KEY; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + var CLASS_PREFIX = 'bs-tether'; + + var Default = { + animation: true, + template: '

', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + selector: false, + placement: 'top', + offset: '0 0', + constraints: [], + container: false + }; + + var DefaultType = { + animation: 'boolean', + template: 'string', + title: '(string|element|function)', + trigger: 'string', + delay: '(number|object)', + html: 'boolean', + selector: '(string|boolean)', + placement: '(string|function)', + offset: 'string', + constraints: 'array', + container: '(string|element|boolean)' + }; + + var AttachmentMap = { + TOP: 'bottom center', + RIGHT: 'middle left', + BOTTOM: 'top center', + LEFT: 'middle right' + }; + + var HoverState = { + SHOW: 'show', + OUT: 'out' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + INSERTED: 'inserted' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + FOCUSOUT: 'focusout' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY + }; + + var ClassName = { + FADE: 'fade', + SHOW: 'show' + }; + + var Selector = { + TOOLTIP: '.tooltip', + TOOLTIP_INNER: '.tooltip-inner' + }; + + var TetherClass = { + element: false, + enabled: false + }; + + var Trigger = { + HOVER: 'hover', + FOCUS: 'focus', + CLICK: 'click', + MANUAL: 'manual' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Tooltip = function () { + function Tooltip(element, config) { + _classCallCheck(this, Tooltip); + + // private + this._isEnabled = true; + this._timeout = 0; + this._hoverState = ''; + this._activeTrigger = {}; + this._isTransitioning = false; + this._tether = null; + + // protected + this.element = element; + this.config = this._getConfig(config); + this.tip = null; + + this._setListeners(); + } + + // getters + + // public + + Tooltip.prototype.enable = function enable() { + this._isEnabled = true; + }; + + Tooltip.prototype.disable = function disable() { + this._isEnabled = false; + }; + + Tooltip.prototype.toggleEnabled = function toggleEnabled() { + this._isEnabled = !this._isEnabled; + }; + + Tooltip.prototype.toggle = function toggle(event) { + if (event) { + var dataKey = this.constructor.DATA_KEY; + var context = $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + context._activeTrigger.click = !context._activeTrigger.click; + + if (context._isWithActiveTrigger()) { + context._enter(null, context); + } else { + context._leave(null, context); + } + } else { + + if ($(this.getTipElement()).hasClass(ClassName.SHOW)) { + this._leave(null, this); + return; + } + + this._enter(null, this); + } + }; + + Tooltip.prototype.dispose = function dispose() { + clearTimeout(this._timeout); + + this.cleanupTether(); + + $.removeData(this.element, this.constructor.DATA_KEY); + + $(this.element).off(this.constructor.EVENT_KEY); + $(this.element).closest('.modal').off('hide.bs.modal'); + + if (this.tip) { + $(this.tip).remove(); + } + + this._isEnabled = null; + this._timeout = null; + this._hoverState = null; + this._activeTrigger = null; + this._tether = null; + + this.element = null; + this.config = null; + this.tip = null; + }; + + Tooltip.prototype.show = function show() { + var _this22 = this; + + if ($(this.element).css('display') === 'none') { + throw new Error('Please use show on visible elements'); + } + + var showEvent = $.Event(this.constructor.Event.SHOW); + if (this.isWithContent() && this._isEnabled) { + if (this._isTransitioning) { + throw new Error('Tooltip is transitioning'); + } + $(this.element).trigger(showEvent); + + var isInTheDom = $.contains(this.element.ownerDocument.documentElement, this.element); + + if (showEvent.isDefaultPrevented() || !isInTheDom) { + return; + } + + var tip = this.getTipElement(); + var tipId = Util.getUID(this.constructor.NAME); + + tip.setAttribute('id', tipId); + this.element.setAttribute('aria-describedby', tipId); + + this.setContent(); + + if (this.config.animation) { + $(tip).addClass(ClassName.FADE); + } + + var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement; + + var attachment = this._getAttachment(placement); + + var container = this.config.container === false ? document.body : $(this.config.container); + + $(tip).data(this.constructor.DATA_KEY, this).appendTo(container); + + $(this.element).trigger(this.constructor.Event.INSERTED); + + this._tether = new Tether({ + attachment: attachment, + element: tip, + target: this.element, + classes: TetherClass, + classPrefix: CLASS_PREFIX, + offset: this.config.offset, + constraints: this.config.constraints, + addTargetClasses: false + }); + + Util.reflow(tip); + this._tether.position(); + + $(tip).addClass(ClassName.SHOW); + + var complete = function complete() { + var prevHoverState = _this22._hoverState; + _this22._hoverState = null; + _this22._isTransitioning = false; + + $(_this22.element).trigger(_this22.constructor.Event.SHOWN); + + if (prevHoverState === HoverState.OUT) { + _this22._leave(null, _this22); + } + }; + + if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) { + this._isTransitioning = true; + $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION); + return; + } + + complete(); + } + }; + + Tooltip.prototype.hide = function hide(callback) { + var _this23 = this; + + var tip = this.getTipElement(); + var hideEvent = $.Event(this.constructor.Event.HIDE); + if (this._isTransitioning) { + throw new Error('Tooltip is transitioning'); + } + var complete = function complete() { + if (_this23._hoverState !== HoverState.SHOW && tip.parentNode) { + tip.parentNode.removeChild(tip); + } + + _this23.element.removeAttribute('aria-describedby'); + $(_this23.element).trigger(_this23.constructor.Event.HIDDEN); + _this23._isTransitioning = false; + _this23.cleanupTether(); + + if (callback) { + callback(); + } + }; + + $(this.element).trigger(hideEvent); + + if (hideEvent.isDefaultPrevented()) { + return; + } + + $(tip).removeClass(ClassName.SHOW); + + this._activeTrigger[Trigger.CLICK] = false; + this._activeTrigger[Trigger.FOCUS] = false; + this._activeTrigger[Trigger.HOVER] = false; + + if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) { + this._isTransitioning = true; + $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + complete(); + } + + this._hoverState = ''; + }; + + // protected + + Tooltip.prototype.isWithContent = function isWithContent() { + return Boolean(this.getTitle()); + }; + + Tooltip.prototype.getTipElement = function getTipElement() { + return this.tip = this.tip || $(this.config.template)[0]; + }; + + Tooltip.prototype.setContent = function setContent() { + var $tip = $(this.getTipElement()); + + this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle()); + + $tip.removeClass(ClassName.FADE + ' ' + ClassName.SHOW); + + this.cleanupTether(); + }; + + Tooltip.prototype.setElementContent = function setElementContent($element, content) { + var html = this.config.html; + if ((typeof content === 'undefined' ? 'undefined' : _typeof(content)) === 'object' && (content.nodeType || content.jquery)) { + // content is a DOM node or a jQuery + if (html) { + if (!$(content).parent().is($element)) { + $element.empty().append(content); + } + } else { + $element.text($(content).text()); + } + } else { + $element[html ? 'html' : 'text'](content); + } + }; + + Tooltip.prototype.getTitle = function getTitle() { + var title = this.element.getAttribute('data-original-title'); + + if (!title) { + title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title; + } + + return title; + }; + + Tooltip.prototype.cleanupTether = function cleanupTether() { + if (this._tether) { + this._tether.destroy(); + } + }; + + // private + + Tooltip.prototype._getAttachment = function _getAttachment(placement) { + return AttachmentMap[placement.toUpperCase()]; + }; + + Tooltip.prototype._setListeners = function _setListeners() { + var _this24 = this; + + var triggers = this.config.trigger.split(' '); + + triggers.forEach(function (trigger) { + if (trigger === 'click') { + $(_this24.element).on(_this24.constructor.Event.CLICK, _this24.config.selector, function (event) { + return _this24.toggle(event); + }); + } else if (trigger !== Trigger.MANUAL) { + var eventIn = trigger === Trigger.HOVER ? _this24.constructor.Event.MOUSEENTER : _this24.constructor.Event.FOCUSIN; + var eventOut = trigger === Trigger.HOVER ? _this24.constructor.Event.MOUSELEAVE : _this24.constructor.Event.FOCUSOUT; + + $(_this24.element).on(eventIn, _this24.config.selector, function (event) { + return _this24._enter(event); + }).on(eventOut, _this24.config.selector, function (event) { + return _this24._leave(event); + }); + } + + $(_this24.element).closest('.modal').on('hide.bs.modal', function () { + return _this24.hide(); + }); + }); + + if (this.config.selector) { + this.config = $.extend({}, this.config, { + trigger: 'manual', + selector: '' + }); + } else { + this._fixTitle(); + } + }; + + Tooltip.prototype._fixTitle = function _fixTitle() { + var titleType = _typeof(this.element.getAttribute('data-original-title')); + if (this.element.getAttribute('title') || titleType !== 'string') { + this.element.setAttribute('data-original-title', this.element.getAttribute('title') || ''); + this.element.setAttribute('title', ''); + } + }; + + Tooltip.prototype._enter = function _enter(event, context) { + var dataKey = this.constructor.DATA_KEY; + + context = context || $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + if (event) { + context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true; + } + + if ($(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) { + context._hoverState = HoverState.SHOW; + return; + } + + clearTimeout(context._timeout); + + context._hoverState = HoverState.SHOW; + + if (!context.config.delay || !context.config.delay.show) { + context.show(); + return; + } + + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.SHOW) { + context.show(); + } + }, context.config.delay.show); + }; + + Tooltip.prototype._leave = function _leave(event, context) { + var dataKey = this.constructor.DATA_KEY; + + context = context || $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + if (event) { + context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false; + } + + if (context._isWithActiveTrigger()) { + return; + } + + clearTimeout(context._timeout); + + context._hoverState = HoverState.OUT; + + if (!context.config.delay || !context.config.delay.hide) { + context.hide(); + return; + } + + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.OUT) { + context.hide(); + } + }, context.config.delay.hide); + }; + + Tooltip.prototype._isWithActiveTrigger = function _isWithActiveTrigger() { + for (var trigger in this._activeTrigger) { + if (this._activeTrigger[trigger]) { + return true; + } + } + + return false; + }; + + Tooltip.prototype._getConfig = function _getConfig(config) { + config = $.extend({}, this.constructor.Default, $(this.element).data(), config); + + if (config.delay && typeof config.delay === 'number') { + config.delay = { + show: config.delay, + hide: config.delay + }; + } + + Util.typeCheckConfig(NAME, config, this.constructor.DefaultType); + + return config; + }; + + Tooltip.prototype._getDelegateConfig = function _getDelegateConfig() { + var config = {}; + + if (this.config) { + for (var key in this.config) { + if (this.constructor.Default[key] !== this.config[key]) { + config[key] = this.config[key]; + } + } + } + + return config; + }; + + // static + + Tooltip._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config; + + if (!data && /dispose|hide/.test(config)) { + return; + } + + if (!data) { + data = new Tooltip(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); + }; + + _createClass(Tooltip, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; + } + }, { + key: 'NAME', + get: function get() { + return NAME; + } + }, { + key: 'DATA_KEY', + get: function get() { + return DATA_KEY; + } + }, { + key: 'Event', + get: function get() { + return Event; + } + }, { + key: 'EVENT_KEY', + get: function get() { + return EVENT_KEY; + } + }, { + key: 'DefaultType', + get: function get() { + return DefaultType; + } + }]); + + return Tooltip; + }(); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Tooltip._jQueryInterface; + $.fn[NAME].Constructor = Tooltip; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Tooltip._jQueryInterface; + }; + + return Tooltip; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): popover.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Popover = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'popover'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.popover'; + var EVENT_KEY = '.' + DATA_KEY; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var Default = $.extend({}, Tooltip.Default, { + placement: 'right', + trigger: 'click', + content: '', + template: '' + }); + + var DefaultType = $.extend({}, Tooltip.DefaultType, { + content: '(string|element|function)' + }); + + var ClassName = { + FADE: 'fade', + SHOW: 'show' + }; + + var Selector = { + TITLE: '.popover-title', + CONTENT: '.popover-content' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + INSERTED: 'inserted' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + FOCUSOUT: 'focusout' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Popover = function (_Tooltip) { + _inherits(Popover, _Tooltip); + + function Popover() { + _classCallCheck(this, Popover); + + return _possibleConstructorReturn(this, _Tooltip.apply(this, arguments)); + } + + // overrides + + Popover.prototype.isWithContent = function isWithContent() { + return this.getTitle() || this._getContent(); + }; + + Popover.prototype.getTipElement = function getTipElement() { + return this.tip = this.tip || $(this.config.template)[0]; + }; + + Popover.prototype.setContent = function setContent() { + var $tip = $(this.getTipElement()); + + // we use append for html objects to maintain js events + this.setElementContent($tip.find(Selector.TITLE), this.getTitle()); + this.setElementContent($tip.find(Selector.CONTENT), this._getContent()); + + $tip.removeClass(ClassName.FADE + ' ' + ClassName.SHOW); + + this.cleanupTether(); + }; + + // private + + Popover.prototype._getContent = function _getContent() { + return this.element.getAttribute('data-content') || (typeof this.config.content === 'function' ? this.config.content.call(this.element) : this.config.content); + }; + + // static + + Popover._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' ? config : null; + + if (!data && /destroy|hide/.test(config)) { + return; + } + + if (!data) { + data = new Popover(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); + }; + + _createClass(Popover, null, [{ + key: 'VERSION', + + + // getters + + get: function get() { + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; + } + }, { + key: 'NAME', + get: function get() { + return NAME; + } + }, { + key: 'DATA_KEY', + get: function get() { + return DATA_KEY; + } + }, { + key: 'Event', + get: function get() { + return Event; + } + }, { + key: 'EVENT_KEY', + get: function get() { + return EVENT_KEY; + } + }, { + key: 'DefaultType', + get: function get() { + return DefaultType; + } + }]); + + return Popover; + }(Tooltip); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Popover._jQueryInterface; + $.fn[NAME].Constructor = Popover; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Popover._jQueryInterface; + }; + + return Popover; +}(jQuery); + +}(); diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/js/bootstrap.min.js b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/js/bootstrap.min.js new file mode 100644 index 0000000..6ecea79 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.0.0-alpha.6 (https://getbootstrap.com) + * Copyright 2011-2017 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");+function(t){var e=t.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1||e[0]>=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(jQuery),+function(){function t(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function e(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=function(){function t(t,e){for(var n=0;nthis._items.length-1||e<0)){if(this._isSliding)return void t(this._element).one(m.SLID,function(){return n.to(e)});if(i===e)return this.pause(),void this.cycle();var o=e>i?p.NEXT:p.PREVIOUS;this._slide(o,this._items[e])}},h.prototype.dispose=function(){t(this._element).off(l),t.removeData(this._element,a),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},h.prototype._getConfig=function(n){return n=t.extend({},_,n),r.typeCheckConfig(e,n,g),n},h.prototype._addEventListeners=function(){var e=this;this._config.keyboard&&t(this._element).on(m.KEYDOWN,function(t){return e._keydown(t)}),"hover"!==this._config.pause||"ontouchstart"in document.documentElement||t(this._element).on(m.MOUSEENTER,function(t){return e.pause(t)}).on(m.MOUSELEAVE,function(t){return e.cycle(t)})},h.prototype._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case d:t.preventDefault(),this.prev();break;case f:t.preventDefault(),this.next();break;default:return}},h.prototype._getItemIndex=function(e){return this._items=t.makeArray(t(e).parent().find(v.ITEM)),this._items.indexOf(e)},h.prototype._getItemByDirection=function(t,e){var n=t===p.NEXT,i=t===p.PREVIOUS,o=this._getItemIndex(e),r=this._items.length-1,s=i&&0===o||n&&o===r;if(s&&!this._config.wrap)return e;var a=t===p.PREVIOUS?-1:1,l=(o+a)%this._items.length;return l===-1?this._items[this._items.length-1]:this._items[l]},h.prototype._triggerSlideEvent=function(e,n){var i=t.Event(m.SLIDE,{relatedTarget:e,direction:n});return t(this._element).trigger(i),i},h.prototype._setActiveIndicatorElement=function(e){if(this._indicatorsElement){t(this._indicatorsElement).find(v.ACTIVE).removeClass(E.ACTIVE);var n=this._indicatorsElement.children[this._getItemIndex(e)];n&&t(n).addClass(E.ACTIVE)}},h.prototype._slide=function(e,n){var i=this,o=t(this._element).find(v.ACTIVE_ITEM)[0],s=n||o&&this._getItemByDirection(e,o),a=Boolean(this._interval),l=void 0,h=void 0,c=void 0;if(e===p.NEXT?(l=E.LEFT,h=E.NEXT,c=p.LEFT):(l=E.RIGHT,h=E.PREV,c=p.RIGHT),s&&t(s).hasClass(E.ACTIVE))return void(this._isSliding=!1);var d=this._triggerSlideEvent(s,c);if(!d.isDefaultPrevented()&&o&&s){this._isSliding=!0,a&&this.pause(),this._setActiveIndicatorElement(s);var f=t.Event(m.SLID,{relatedTarget:s,direction:c});r.supportsTransitionEnd()&&t(this._element).hasClass(E.SLIDE)?(t(s).addClass(h),r.reflow(s),t(o).addClass(l),t(s).addClass(l),t(o).one(r.TRANSITION_END,function(){t(s).removeClass(l+" "+h).addClass(E.ACTIVE),t(o).removeClass(E.ACTIVE+" "+h+" "+l),i._isSliding=!1,setTimeout(function(){return t(i._element).trigger(f)},0)}).emulateTransitionEnd(u)):(t(o).removeClass(E.ACTIVE),t(s).addClass(E.ACTIVE),this._isSliding=!1,t(this._element).trigger(f)),a&&this.cycle()}},h._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(a),o=t.extend({},_,t(this).data());"object"===("undefined"==typeof e?"undefined":i(e))&&t.extend(o,e);var r="string"==typeof e?e:o.slide;if(n||(n=new h(this,o),t(this).data(a,n)),"number"==typeof e)n.to(e);else if("string"==typeof r){if(void 0===n[r])throw new Error('No method named "'+r+'"');n[r]()}else o.interval&&(n.pause(),n.cycle())})},h._dataApiClickHandler=function(e){var n=r.getSelectorFromElement(this);if(n){var i=t(n)[0];if(i&&t(i).hasClass(E.CAROUSEL)){var o=t.extend({},t(i).data(),t(this).data()),s=this.getAttribute("data-slide-to");s&&(o.interval=!1),h._jQueryInterface.call(t(i),o),s&&t(i).data(a).to(s),e.preventDefault()}}},o(h,null,[{key:"VERSION",get:function(){return s}},{key:"Default",get:function(){return _}}]),h}();return t(document).on(m.CLICK_DATA_API,v.DATA_SLIDE,T._dataApiClickHandler),t(window).on(m.LOAD_DATA_API,function(){t(v.DATA_RIDE).each(function(){var e=t(this);T._jQueryInterface.call(e,e.data())})}),t.fn[e]=T._jQueryInterface,t.fn[e].Constructor=T,t.fn[e].noConflict=function(){return t.fn[e]=c,T._jQueryInterface},T}(jQuery),function(t){var e="collapse",s="4.0.0-alpha.6",a="bs.collapse",l="."+a,h=".data-api",c=t.fn[e],u=600,d={toggle:!0,parent:""},f={toggle:"boolean",parent:"string"},_={SHOW:"show"+l,SHOWN:"shown"+l,HIDE:"hide"+l,HIDDEN:"hidden"+l,CLICK_DATA_API:"click"+l+h},g={SHOW:"show",COLLAPSE:"collapse",COLLAPSING:"collapsing",COLLAPSED:"collapsed"},p={WIDTH:"width",HEIGHT:"height"},m={ACTIVES:".card > .show, .card > .collapsing",DATA_TOGGLE:'[data-toggle="collapse"]'},E=function(){function l(e,i){n(this,l),this._isTransitioning=!1,this._element=e,this._config=this._getConfig(i),this._triggerArray=t.makeArray(t('[data-toggle="collapse"][href="#'+e.id+'"],'+('[data-toggle="collapse"][data-target="#'+e.id+'"]'))),this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}return l.prototype.toggle=function(){t(this._element).hasClass(g.SHOW)?this.hide():this.show()},l.prototype.show=function(){var e=this;if(this._isTransitioning)throw new Error("Collapse is transitioning");if(!t(this._element).hasClass(g.SHOW)){var n=void 0,i=void 0;if(this._parent&&(n=t.makeArray(t(this._parent).find(m.ACTIVES)),n.length||(n=null)),!(n&&(i=t(n).data(a),i&&i._isTransitioning))){var o=t.Event(_.SHOW);if(t(this._element).trigger(o),!o.isDefaultPrevented()){n&&(l._jQueryInterface.call(t(n),"hide"),i||t(n).data(a,null));var s=this._getDimension();t(this._element).removeClass(g.COLLAPSE).addClass(g.COLLAPSING),this._element.style[s]=0,this._element.setAttribute("aria-expanded",!0),this._triggerArray.length&&t(this._triggerArray).removeClass(g.COLLAPSED).attr("aria-expanded",!0),this.setTransitioning(!0);var h=function(){t(e._element).removeClass(g.COLLAPSING).addClass(g.COLLAPSE).addClass(g.SHOW),e._element.style[s]="",e.setTransitioning(!1),t(e._element).trigger(_.SHOWN)};if(!r.supportsTransitionEnd())return void h();var c=s[0].toUpperCase()+s.slice(1),d="scroll"+c;t(this._element).one(r.TRANSITION_END,h).emulateTransitionEnd(u),this._element.style[s]=this._element[d]+"px"}}}},l.prototype.hide=function(){var e=this;if(this._isTransitioning)throw new Error("Collapse is transitioning");if(t(this._element).hasClass(g.SHOW)){var n=t.Event(_.HIDE);if(t(this._element).trigger(n),!n.isDefaultPrevented()){var i=this._getDimension(),o=i===p.WIDTH?"offsetWidth":"offsetHeight";this._element.style[i]=this._element[o]+"px",r.reflow(this._element),t(this._element).addClass(g.COLLAPSING).removeClass(g.COLLAPSE).removeClass(g.SHOW),this._element.setAttribute("aria-expanded",!1),this._triggerArray.length&&t(this._triggerArray).addClass(g.COLLAPSED).attr("aria-expanded",!1),this.setTransitioning(!0);var s=function(){e.setTransitioning(!1),t(e._element).removeClass(g.COLLAPSING).addClass(g.COLLAPSE).trigger(_.HIDDEN)};return this._element.style[i]="",r.supportsTransitionEnd()?void t(this._element).one(r.TRANSITION_END,s).emulateTransitionEnd(u):void s()}}},l.prototype.setTransitioning=function(t){this._isTransitioning=t},l.prototype.dispose=function(){t.removeData(this._element,a),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},l.prototype._getConfig=function(n){return n=t.extend({},d,n),n.toggle=Boolean(n.toggle),r.typeCheckConfig(e,n,f),n},l.prototype._getDimension=function(){var e=t(this._element).hasClass(p.WIDTH);return e?p.WIDTH:p.HEIGHT},l.prototype._getParent=function(){var e=this,n=t(this._config.parent)[0],i='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]';return t(n).find(i).each(function(t,n){e._addAriaAndCollapsedClass(l._getTargetFromElement(n),[n])}),n},l.prototype._addAriaAndCollapsedClass=function(e,n){if(e){var i=t(e).hasClass(g.SHOW);e.setAttribute("aria-expanded",i),n.length&&t(n).toggleClass(g.COLLAPSED,!i).attr("aria-expanded",i)}},l._getTargetFromElement=function(e){var n=r.getSelectorFromElement(e);return n?t(n)[0]:null},l._jQueryInterface=function(e){return this.each(function(){var n=t(this),o=n.data(a),r=t.extend({},d,n.data(),"object"===("undefined"==typeof e?"undefined":i(e))&&e);if(!o&&r.toggle&&/show|hide/.test(e)&&(r.toggle=!1),o||(o=new l(this,r),n.data(a,o)),"string"==typeof e){if(void 0===o[e])throw new Error('No method named "'+e+'"');o[e]()}})},o(l,null,[{key:"VERSION",get:function(){return s}},{key:"Default",get:function(){return d}}]),l}();return t(document).on(_.CLICK_DATA_API,m.DATA_TOGGLE,function(e){e.preventDefault();var n=E._getTargetFromElement(this),i=t(n).data(a),o=i?"toggle":t(this).data();E._jQueryInterface.call(t(n),o)}),t.fn[e]=E._jQueryInterface,t.fn[e].Constructor=E,t.fn[e].noConflict=function(){return t.fn[e]=c,E._jQueryInterface},E}(jQuery),function(t){var e="dropdown",i="4.0.0-alpha.6",s="bs.dropdown",a="."+s,l=".data-api",h=t.fn[e],c=27,u=38,d=40,f=3,_={HIDE:"hide"+a,HIDDEN:"hidden"+a,SHOW:"show"+a,SHOWN:"shown"+a,CLICK:"click"+a,CLICK_DATA_API:"click"+a+l,FOCUSIN_DATA_API:"focusin"+a+l,KEYDOWN_DATA_API:"keydown"+a+l},g={BACKDROP:"dropdown-backdrop",DISABLED:"disabled",SHOW:"show"},p={BACKDROP:".dropdown-backdrop",DATA_TOGGLE:'[data-toggle="dropdown"]',FORM_CHILD:".dropdown form",ROLE_MENU:'[role="menu"]',ROLE_LISTBOX:'[role="listbox"]',NAVBAR_NAV:".navbar-nav",VISIBLE_ITEMS:'[role="menu"] li:not(.disabled) a, [role="listbox"] li:not(.disabled) a'},m=function(){function e(t){n(this,e),this._element=t,this._addEventListeners()}return e.prototype.toggle=function(){if(this.disabled||t(this).hasClass(g.DISABLED))return!1;var n=e._getParentFromElement(this),i=t(n).hasClass(g.SHOW);if(e._clearMenus(),i)return!1;if("ontouchstart"in document.documentElement&&!t(n).closest(p.NAVBAR_NAV).length){var o=document.createElement("div");o.className=g.BACKDROP,t(o).insertBefore(this),t(o).on("click",e._clearMenus)}var r={relatedTarget:this},s=t.Event(_.SHOW,r);return t(n).trigger(s),!s.isDefaultPrevented()&&(this.focus(),this.setAttribute("aria-expanded",!0),t(n).toggleClass(g.SHOW),t(n).trigger(t.Event(_.SHOWN,r)),!1)},e.prototype.dispose=function(){t.removeData(this._element,s),t(this._element).off(a),this._element=null},e.prototype._addEventListeners=function(){t(this._element).on(_.CLICK,this.toggle)},e._jQueryInterface=function(n){return this.each(function(){var i=t(this).data(s);if(i||(i=new e(this),t(this).data(s,i)),"string"==typeof n){if(void 0===i[n])throw new Error('No method named "'+n+'"');i[n].call(this)}})},e._clearMenus=function(n){if(!n||n.which!==f){var i=t(p.BACKDROP)[0];i&&i.parentNode.removeChild(i);for(var o=t.makeArray(t(p.DATA_TOGGLE)),r=0;r0&&a--,n.which===d&&adocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},h.prototype._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},h.prototype._checkScrollbar=function(){this._isBodyOverflowing=document.body.clientWidth=n){var i=this._targets[this._targets.length-1];return void(this._activeTarget!==i&&this._activate(i))}if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){var r=this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&(void 0===this._offsets[o+1]||t "+g.NAV_LINKS).addClass(_.ACTIVE),t(this._scrollElement).trigger(f.ACTIVATE,{relatedTarget:e})},h.prototype._clear=function(){t(this._selector).filter(g.ACTIVE).removeClass(_.ACTIVE)},h._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(a),o="object"===("undefined"==typeof e?"undefined":i(e))&&e; +if(n||(n=new h(this,o),t(this).data(a,n)),"string"==typeof e){if(void 0===n[e])throw new Error('No method named "'+e+'"');n[e]()}})},o(h,null,[{key:"VERSION",get:function(){return s}},{key:"Default",get:function(){return u}}]),h}();return t(window).on(f.LOAD_DATA_API,function(){for(var e=t.makeArray(t(g.DATA_SPY)),n=e.length;n--;){var i=t(e[n]);m._jQueryInterface.call(i,i.data())}}),t.fn[e]=m._jQueryInterface,t.fn[e].Constructor=m,t.fn[e].noConflict=function(){return t.fn[e]=c,m._jQueryInterface},m}(jQuery),function(t){var e="tab",i="4.0.0-alpha.6",s="bs.tab",a="."+s,l=".data-api",h=t.fn[e],c=150,u={HIDE:"hide"+a,HIDDEN:"hidden"+a,SHOW:"show"+a,SHOWN:"shown"+a,CLICK_DATA_API:"click"+a+l},d={DROPDOWN_MENU:"dropdown-menu",ACTIVE:"active",DISABLED:"disabled",FADE:"fade",SHOW:"show"},f={A:"a",LI:"li",DROPDOWN:".dropdown",LIST:"ul:not(.dropdown-menu), ol:not(.dropdown-menu), nav:not(.dropdown-menu)",FADE_CHILD:"> .nav-item .fade, > .fade",ACTIVE:".active",ACTIVE_CHILD:"> .nav-item > .active, > .active",DATA_TOGGLE:'[data-toggle="tab"], [data-toggle="pill"]',DROPDOWN_TOGGLE:".dropdown-toggle",DROPDOWN_ACTIVE_CHILD:"> .dropdown-menu .active"},_=function(){function e(t){n(this,e),this._element=t}return e.prototype.show=function(){var e=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&t(this._element).hasClass(d.ACTIVE)||t(this._element).hasClass(d.DISABLED))){var n=void 0,i=void 0,o=t(this._element).closest(f.LIST)[0],s=r.getSelectorFromElement(this._element);o&&(i=t.makeArray(t(o).find(f.ACTIVE)),i=i[i.length-1]);var a=t.Event(u.HIDE,{relatedTarget:this._element}),l=t.Event(u.SHOW,{relatedTarget:i});if(i&&t(i).trigger(a),t(this._element).trigger(l),!l.isDefaultPrevented()&&!a.isDefaultPrevented()){s&&(n=t(s)[0]),this._activate(this._element,o);var h=function(){var n=t.Event(u.HIDDEN,{relatedTarget:e._element}),o=t.Event(u.SHOWN,{relatedTarget:i});t(i).trigger(n),t(e._element).trigger(o)};n?this._activate(n,n.parentNode,h):h()}}},e.prototype.dispose=function(){t.removeClass(this._element,s),this._element=null},e.prototype._activate=function(e,n,i){var o=this,s=t(n).find(f.ACTIVE_CHILD)[0],a=i&&r.supportsTransitionEnd()&&(s&&t(s).hasClass(d.FADE)||Boolean(t(n).find(f.FADE_CHILD)[0])),l=function(){return o._transitionComplete(e,s,a,i)};s&&a?t(s).one(r.TRANSITION_END,l).emulateTransitionEnd(c):l(),s&&t(s).removeClass(d.SHOW)},e.prototype._transitionComplete=function(e,n,i,o){if(n){t(n).removeClass(d.ACTIVE);var s=t(n.parentNode).find(f.DROPDOWN_ACTIVE_CHILD)[0];s&&t(s).removeClass(d.ACTIVE),n.setAttribute("aria-expanded",!1)}if(t(e).addClass(d.ACTIVE),e.setAttribute("aria-expanded",!0),i?(r.reflow(e),t(e).addClass(d.SHOW)):t(e).removeClass(d.FADE),e.parentNode&&t(e.parentNode).hasClass(d.DROPDOWN_MENU)){var a=t(e).closest(f.DROPDOWN)[0];a&&t(a).find(f.DROPDOWN_TOGGLE).addClass(d.ACTIVE),e.setAttribute("aria-expanded",!0)}o&&o()},e._jQueryInterface=function(n){return this.each(function(){var i=t(this),o=i.data(s);if(o||(o=new e(this),i.data(s,o)),"string"==typeof n){if(void 0===o[n])throw new Error('No method named "'+n+'"');o[n]()}})},o(e,null,[{key:"VERSION",get:function(){return i}}]),e}();return t(document).on(u.CLICK_DATA_API,f.DATA_TOGGLE,function(e){e.preventDefault(),_._jQueryInterface.call(t(this),"show")}),t.fn[e]=_._jQueryInterface,t.fn[e].Constructor=_,t.fn[e].noConflict=function(){return t.fn[e]=h,_._jQueryInterface},_}(jQuery),function(t){if("undefined"==typeof Tether)throw new Error("Bootstrap tooltips require Tether (http://tether.io/)");var e="tooltip",s="4.0.0-alpha.6",a="bs.tooltip",l="."+a,h=t.fn[e],c=150,u="bs-tether",d={animation:!0,template:'',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:"0 0",constraints:[],container:!1},f={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"string",constraints:"array",container:"(string|element|boolean)"},_={TOP:"bottom center",RIGHT:"middle left",BOTTOM:"top center",LEFT:"middle right"},g={SHOW:"show",OUT:"out"},p={HIDE:"hide"+l,HIDDEN:"hidden"+l,SHOW:"show"+l,SHOWN:"shown"+l,INSERTED:"inserted"+l,CLICK:"click"+l,FOCUSIN:"focusin"+l,FOCUSOUT:"focusout"+l,MOUSEENTER:"mouseenter"+l,MOUSELEAVE:"mouseleave"+l},m={FADE:"fade",SHOW:"show"},E={TOOLTIP:".tooltip",TOOLTIP_INNER:".tooltip-inner"},v={element:!1,enabled:!1},T={HOVER:"hover",FOCUS:"focus",CLICK:"click",MANUAL:"manual"},I=function(){function h(t,e){n(this,h),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._isTransitioning=!1,this._tether=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}return h.prototype.enable=function(){this._isEnabled=!0},h.prototype.disable=function(){this._isEnabled=!1},h.prototype.toggleEnabled=function(){this._isEnabled=!this._isEnabled},h.prototype.toggle=function(e){if(e){var n=this.constructor.DATA_KEY,i=t(e.currentTarget).data(n);i||(i=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(n,i)),i._activeTrigger.click=!i._activeTrigger.click,i._isWithActiveTrigger()?i._enter(null,i):i._leave(null,i)}else{if(t(this.getTipElement()).hasClass(m.SHOW))return void this._leave(null,this);this._enter(null,this)}},h.prototype.dispose=function(){clearTimeout(this._timeout),this.cleanupTether(),t.removeData(this.element,this.constructor.DATA_KEY),t(this.element).off(this.constructor.EVENT_KEY),t(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&t(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._tether=null,this.element=null,this.config=null,this.tip=null},h.prototype.show=function(){var e=this;if("none"===t(this.element).css("display"))throw new Error("Please use show on visible elements");var n=t.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){if(this._isTransitioning)throw new Error("Tooltip is transitioning");t(this.element).trigger(n);var i=t.contains(this.element.ownerDocument.documentElement,this.element);if(n.isDefaultPrevented()||!i)return;var o=this.getTipElement(),s=r.getUID(this.constructor.NAME);o.setAttribute("id",s),this.element.setAttribute("aria-describedby",s),this.setContent(),this.config.animation&&t(o).addClass(m.FADE);var a="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,l=this._getAttachment(a),c=this.config.container===!1?document.body:t(this.config.container);t(o).data(this.constructor.DATA_KEY,this).appendTo(c),t(this.element).trigger(this.constructor.Event.INSERTED),this._tether=new Tether({attachment:l,element:o,target:this.element,classes:v,classPrefix:u,offset:this.config.offset,constraints:this.config.constraints,addTargetClasses:!1}),r.reflow(o),this._tether.position(),t(o).addClass(m.SHOW);var d=function(){var n=e._hoverState;e._hoverState=null,e._isTransitioning=!1,t(e.element).trigger(e.constructor.Event.SHOWN),n===g.OUT&&e._leave(null,e)};if(r.supportsTransitionEnd()&&t(this.tip).hasClass(m.FADE))return this._isTransitioning=!0,void t(this.tip).one(r.TRANSITION_END,d).emulateTransitionEnd(h._TRANSITION_DURATION);d()}},h.prototype.hide=function(e){var n=this,i=this.getTipElement(),o=t.Event(this.constructor.Event.HIDE);if(this._isTransitioning)throw new Error("Tooltip is transitioning");var s=function(){n._hoverState!==g.SHOW&&i.parentNode&&i.parentNode.removeChild(i),n.element.removeAttribute("aria-describedby"),t(n.element).trigger(n.constructor.Event.HIDDEN),n._isTransitioning=!1,n.cleanupTether(),e&&e()};t(this.element).trigger(o),o.isDefaultPrevented()||(t(i).removeClass(m.SHOW),this._activeTrigger[T.CLICK]=!1,this._activeTrigger[T.FOCUS]=!1,this._activeTrigger[T.HOVER]=!1,r.supportsTransitionEnd()&&t(this.tip).hasClass(m.FADE)?(this._isTransitioning=!0,t(i).one(r.TRANSITION_END,s).emulateTransitionEnd(c)):s(),this._hoverState="")},h.prototype.isWithContent=function(){return Boolean(this.getTitle())},h.prototype.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0]},h.prototype.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(E.TOOLTIP_INNER),this.getTitle()),e.removeClass(m.FADE+" "+m.SHOW),this.cleanupTether()},h.prototype.setElementContent=function(e,n){var o=this.config.html;"object"===("undefined"==typeof n?"undefined":i(n))&&(n.nodeType||n.jquery)?o?t(n).parent().is(e)||e.empty().append(n):e.text(t(n).text()):e[o?"html":"text"](n)},h.prototype.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},h.prototype.cleanupTether=function(){this._tether&&this._tether.destroy()},h.prototype._getAttachment=function(t){return _[t.toUpperCase()]},h.prototype._setListeners=function(){var e=this,n=this.config.trigger.split(" ");n.forEach(function(n){if("click"===n)t(e.element).on(e.constructor.Event.CLICK,e.config.selector,function(t){return e.toggle(t)});else if(n!==T.MANUAL){var i=n===T.HOVER?e.constructor.Event.MOUSEENTER:e.constructor.Event.FOCUSIN,o=n===T.HOVER?e.constructor.Event.MOUSELEAVE:e.constructor.Event.FOCUSOUT;t(e.element).on(i,e.config.selector,function(t){return e._enter(t)}).on(o,e.config.selector,function(t){return e._leave(t)})}t(e.element).closest(".modal").on("hide.bs.modal",function(){return e.hide()})}),this.config.selector?this.config=t.extend({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},h.prototype._fixTitle=function(){var t=i(this.element.getAttribute("data-original-title"));(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},h.prototype._enter=function(e,n){var i=this.constructor.DATA_KEY;return n=n||t(e.currentTarget).data(i),n||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusin"===e.type?T.FOCUS:T.HOVER]=!0),t(n.getTipElement()).hasClass(m.SHOW)||n._hoverState===g.SHOW?void(n._hoverState=g.SHOW):(clearTimeout(n._timeout),n._hoverState=g.SHOW,n.config.delay&&n.config.delay.show?void(n._timeout=setTimeout(function(){n._hoverState===g.SHOW&&n.show()},n.config.delay.show)):void n.show())},h.prototype._leave=function(e,n){var i=this.constructor.DATA_KEY;if(n=n||t(e.currentTarget).data(i),n||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusout"===e.type?T.FOCUS:T.HOVER]=!1),!n._isWithActiveTrigger())return clearTimeout(n._timeout),n._hoverState=g.OUT,n.config.delay&&n.config.delay.hide?void(n._timeout=setTimeout(function(){n._hoverState===g.OUT&&n.hide()},n.config.delay.hide)):void n.hide()},h.prototype._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},h.prototype._getConfig=function(n){return n=t.extend({},this.constructor.Default,t(this.element).data(),n),n.delay&&"number"==typeof n.delay&&(n.delay={show:n.delay,hide:n.delay}),r.typeCheckConfig(e,n,this.constructor.DefaultType),n},h.prototype._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},h._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(a),o="object"===("undefined"==typeof e?"undefined":i(e))&&e;if((n||!/dispose|hide/.test(e))&&(n||(n=new h(this,o),t(this).data(a,n)),"string"==typeof e)){if(void 0===n[e])throw new Error('No method named "'+e+'"');n[e]()}})},o(h,null,[{key:"VERSION",get:function(){return s}},{key:"Default",get:function(){return d}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return a}},{key:"Event",get:function(){return p}},{key:"EVENT_KEY",get:function(){return l}},{key:"DefaultType",get:function(){return f}}]),h}();return t.fn[e]=I._jQueryInterface,t.fn[e].Constructor=I,t.fn[e].noConflict=function(){return t.fn[e]=h,I._jQueryInterface},I}(jQuery));(function(r){var a="popover",l="4.0.0-alpha.6",h="bs.popover",c="."+h,u=r.fn[a],d=r.extend({},s.Default,{placement:"right",trigger:"click",content:"",template:''}),f=r.extend({},s.DefaultType,{content:"(string|element|function)"}),_={FADE:"fade",SHOW:"show"},g={TITLE:".popover-title",CONTENT:".popover-content"},p={HIDE:"hide"+c,HIDDEN:"hidden"+c,SHOW:"show"+c,SHOWN:"shown"+c,INSERTED:"inserted"+c,CLICK:"click"+c,FOCUSIN:"focusin"+c,FOCUSOUT:"focusout"+c,MOUSEENTER:"mouseenter"+c,MOUSELEAVE:"mouseleave"+c},m=function(s){function u(){return n(this,u),t(this,s.apply(this,arguments))}return e(u,s),u.prototype.isWithContent=function(){return this.getTitle()||this._getContent()},u.prototype.getTipElement=function(){return this.tip=this.tip||r(this.config.template)[0]},u.prototype.setContent=function(){var t=r(this.getTipElement());this.setElementContent(t.find(g.TITLE),this.getTitle()),this.setElementContent(t.find(g.CONTENT),this._getContent()),t.removeClass(_.FADE+" "+_.SHOW),this.cleanupTether()},u.prototype._getContent=function(){return this.element.getAttribute("data-content")||("function"==typeof this.config.content?this.config.content.call(this.element):this.config.content)},u._jQueryInterface=function(t){return this.each(function(){var e=r(this).data(h),n="object"===("undefined"==typeof t?"undefined":i(t))?t:null;if((e||!/destroy|hide/.test(t))&&(e||(e=new u(this,n),r(this).data(h,e)),"string"==typeof t)){if(void 0===e[t])throw new Error('No method named "'+t+'"');e[t]()}})},o(u,null,[{key:"VERSION",get:function(){return l}},{key:"Default",get:function(){return d}},{key:"NAME",get:function(){return a}},{key:"DATA_KEY",get:function(){return h}},{key:"Event",get:function(){return p}},{key:"EVENT_KEY",get:function(){return c}},{key:"DefaultType",get:function(){return f}}]),u}(s);return r.fn[a]=m._jQueryInterface,r.fn[a].Constructor=m,r.fn[a].noConflict=function(){return r.fn[a]=u,m._jQueryInterface},m})(jQuery)}(); \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/js/tether.min.js b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/js/tether.min.js new file mode 100644 index 0000000..a49f2a7 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/bootstrap/js/tether.min.js @@ -0,0 +1 @@ +!function(t,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e(require,exports,module):t.Tether=e()}(this,function(t,e,o){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t){var e=t.getBoundingClientRect(),o={};for(var n in e)o[n]=e[n];if(t.ownerDocument!==document){var r=t.ownerDocument.defaultView.frameElement;if(r){var s=i(r);o.top+=s.top,o.bottom+=s.top,o.left+=s.left,o.right+=s.left}}return o}function r(t){var e=getComputedStyle(t)||{},o=e.position,n=[];if("fixed"===o)return[t];for(var i=t;(i=i.parentNode)&&i&&1===i.nodeType;){var r=void 0;try{r=getComputedStyle(i)}catch(s){}if("undefined"==typeof r||null===r)return n.push(i),n;var a=r,f=a.overflow,l=a.overflowX,h=a.overflowY;/(auto|scroll)/.test(f+h+l)&&("absolute"!==o||["relative","absolute","fixed"].indexOf(r.position)>=0)&&n.push(i)}return n.push(t.ownerDocument.body),t.ownerDocument!==document&&n.push(t.ownerDocument.defaultView),n}function s(){A&&document.body.removeChild(A),A=null}function a(t){var e=void 0;t===document?(e=document,t=document.documentElement):e=t.ownerDocument;var o=e.documentElement,n=i(t),r=P();return n.top-=r.top,n.left-=r.left,"undefined"==typeof n.width&&(n.width=document.body.scrollWidth-n.left-n.right),"undefined"==typeof n.height&&(n.height=document.body.scrollHeight-n.top-n.bottom),n.top=n.top-o.clientTop,n.left=n.left-o.clientLeft,n.right=e.body.clientWidth-n.width-n.left,n.bottom=e.body.clientHeight-n.height-n.top,n}function f(t){return t.offsetParent||document.documentElement}function l(){if(M)return M;var t=document.createElement("div");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");h(e.style,{position:"absolute",top:0,left:0,pointerEvents:"none",visibility:"hidden",width:"200px",height:"150px",overflow:"hidden"}),e.appendChild(t),document.body.appendChild(e);var o=t.offsetWidth;e.style.overflow="scroll";var n=t.offsetWidth;o===n&&(n=e.clientWidth),document.body.removeChild(e);var i=o-n;return M={width:i,height:i}}function h(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e=[];return Array.prototype.push.apply(e,arguments),e.slice(1).forEach(function(e){if(e)for(var o in e)({}).hasOwnProperty.call(e,o)&&(t[o]=e[o])}),t}function d(t,e){if("undefined"!=typeof t.classList)e.split(" ").forEach(function(e){e.trim()&&t.classList.remove(e)});else{var o=new RegExp("(^| )"+e.split(" ").join("|")+"( |$)","gi"),n=c(t).replace(o," ");g(t,n)}}function u(t,e){if("undefined"!=typeof t.classList)e.split(" ").forEach(function(e){e.trim()&&t.classList.add(e)});else{d(t,e);var o=c(t)+(" "+e);g(t,o)}}function p(t,e){if("undefined"!=typeof t.classList)return t.classList.contains(e);var o=c(t);return new RegExp("(^| )"+e+"( |$)","gi").test(o)}function c(t){return t.className instanceof t.ownerDocument.defaultView.SVGAnimatedString?t.className.baseVal:t.className}function g(t,e){t.setAttribute("class",e)}function m(t,e,o){o.forEach(function(o){-1===e.indexOf(o)&&p(t,o)&&d(t,o)}),e.forEach(function(e){p(t,e)||u(t,e)})}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function v(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function y(t,e){var o=arguments.length<=2||void 0===arguments[2]?1:arguments[2];return t+o>=e&&e>=t-o}function b(){return"undefined"!=typeof performance&&"undefined"!=typeof performance.now?performance.now():+new Date}function w(){for(var t={top:0,left:0},e=arguments.length,o=Array(e),n=0;e>n;n++)o[n]=arguments[n];return o.forEach(function(e){var o=e.top,n=e.left;"string"==typeof o&&(o=parseFloat(o,10)),"string"==typeof n&&(n=parseFloat(n,10)),t.top+=o,t.left+=n}),t}function C(t,e){return"string"==typeof t.left&&-1!==t.left.indexOf("%")&&(t.left=parseFloat(t.left,10)/100*e.width),"string"==typeof t.top&&-1!==t.top.indexOf("%")&&(t.top=parseFloat(t.top,10)/100*e.height),t}function O(t,e){return"scrollParent"===e?e=t.scrollParents[0]:"window"===e&&(e=[pageXOffset,pageYOffset,innerWidth+pageXOffset,innerHeight+pageYOffset]),e===document&&(e=e.documentElement),"undefined"!=typeof e.nodeType&&!function(){var t=e,o=a(e),n=o,i=getComputedStyle(e);if(e=[n.left,n.top,o.width+n.left,o.height+n.top],t.ownerDocument!==document){var r=t.ownerDocument.defaultView;e[0]+=r.pageXOffset,e[1]+=r.pageYOffset,e[2]+=r.pageXOffset,e[3]+=r.pageYOffset}G.forEach(function(t,o){t=t[0].toUpperCase()+t.substr(1),"Top"===t||"Left"===t?e[o]+=parseFloat(i["border"+t+"Width"]):e[o]-=parseFloat(i["border"+t+"Width"])})}(),e}var E=function(){function t(t,e){for(var o=0;o1?o-1:0),i=1;o>i;i++)n[i-1]=arguments[i];for(;e16?(e=Math.min(e-16,250),void(o=setTimeout(i,250))):void("undefined"!=typeof t&&b()-t<10||(null!=o&&(clearTimeout(o),o=null),t=b(),X(),e=b()-t))};"undefined"!=typeof window&&"undefined"!=typeof window.addEventListener&&["resize","scroll","touchmove"].forEach(function(t){window.addEventListener(t,n)})}();var F={center:"center",left:"right",right:"left"},H={middle:"middle",top:"bottom",bottom:"top"},N={top:0,left:0,middle:"50%",center:"50%",bottom:"100%",right:"100%"},U=function(t,e){var o=t.left,n=t.top;return"auto"===o&&(o=F[e.left]),"auto"===n&&(n=H[e.top]),{left:o,top:n}},V=function(t){var e=t.left,o=t.top;return"undefined"!=typeof N[t.left]&&(e=N[t.left]),"undefined"!=typeof N[t.top]&&(o=N[t.top]),{left:e,top:o}},R=function(t){var e=t.split(" "),o=z(e,2),n=o[0],i=o[1];return{top:n,left:i}},q=R,I=function(t){function e(t){var o=this;n(this,e),j(Object.getPrototypeOf(e.prototype),"constructor",this).call(this),this.position=this.position.bind(this),D.push(this),this.history=[],this.setOptions(t,!1),x.modules.forEach(function(t){"undefined"!=typeof t.initialize&&t.initialize.call(o)}),this.position()}return v(e,t),E(e,[{key:"getClass",value:function(){var t=arguments.length<=0||void 0===arguments[0]?"":arguments[0],e=this.options.classes;return"undefined"!=typeof e&&e[t]?this.options.classes[t]:this.options.classPrefix?this.options.classPrefix+"-"+t:t}},{key:"setOptions",value:function(t){var e=this,o=arguments.length<=1||void 0===arguments[1]?!0:arguments[1],n={offset:"0 0",targetOffset:"0 0",targetAttachment:"auto auto",classPrefix:"tether"};this.options=h(n,t);var i=this.options,s=i.element,a=i.target,f=i.targetModifier;if(this.element=s,this.target=a,this.targetModifier=f,"viewport"===this.target?(this.target=document.body,this.targetModifier="visible"):"scroll-handle"===this.target&&(this.target=document.body,this.targetModifier="scroll-handle"),["element","target"].forEach(function(t){if("undefined"==typeof e[t])throw new Error("Tether Error: Both element and target must be defined");"undefined"!=typeof e[t].jquery?e[t]=e[t][0]:"string"==typeof e[t]&&(e[t]=document.querySelector(e[t]))}),u(this.element,this.getClass("element")),this.options.addTargetClasses!==!1&&u(this.target,this.getClass("target")),!this.options.attachment)throw new Error("Tether Error: You must provide an attachment");this.targetAttachment=q(this.options.targetAttachment),this.attachment=q(this.options.attachment),this.offset=R(this.options.offset),this.targetOffset=R(this.options.targetOffset),"undefined"!=typeof this.scrollParents&&this.disable(),"scroll-handle"===this.targetModifier?this.scrollParents=[this.target]:this.scrollParents=r(this.target),this.options.enabled!==!1&&this.enable(o)}},{key:"getTargetBounds",value:function(){if("undefined"==typeof this.targetModifier)return a(this.target);if("visible"===this.targetModifier){if(this.target===document.body)return{top:pageYOffset,left:pageXOffset,height:innerHeight,width:innerWidth};var t=a(this.target),e={height:t.height,width:t.width,top:t.top,left:t.left};return e.height=Math.min(e.height,t.height-(pageYOffset-t.top)),e.height=Math.min(e.height,t.height-(t.top+t.height-(pageYOffset+innerHeight))),e.height=Math.min(innerHeight,e.height),e.height-=2,e.width=Math.min(e.width,t.width-(pageXOffset-t.left)),e.width=Math.min(e.width,t.width-(t.left+t.width-(pageXOffset+innerWidth))),e.width=Math.min(innerWidth,e.width),e.width-=2,e.topo.clientWidth||[n.overflow,n.overflowX].indexOf("scroll")>=0||this.target!==document.body,r=0;i&&(r=15);var s=t.height-parseFloat(n.borderTopWidth)-parseFloat(n.borderBottomWidth)-r,e={width:15,height:.975*s*(s/o.scrollHeight),left:t.left+t.width-parseFloat(n.borderLeftWidth)-15},f=0;408>s&&this.target===document.body&&(f=-11e-5*Math.pow(s,2)-.00727*s+22.58),this.target!==document.body&&(e.height=Math.max(e.height,24));var l=this.target.scrollTop/(o.scrollHeight-s);return e.top=l*(s-e.height-f)+t.top+parseFloat(n.borderTopWidth),this.target===document.body&&(e.height=Math.max(e.height,24)),e}}},{key:"clearCache",value:function(){this._cache={}}},{key:"cache",value:function(t,e){return"undefined"==typeof this._cache&&(this._cache={}),"undefined"==typeof this._cache[t]&&(this._cache[t]=e.call(this)),this._cache[t]}},{key:"enable",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];this.options.addTargetClasses!==!1&&u(this.target,this.getClass("enabled")),u(this.element,this.getClass("enabled")),this.enabled=!0,this.scrollParents.forEach(function(e){e!==t.target.ownerDocument&&e.addEventListener("scroll",t.position)}),e&&this.position()}},{key:"disable",value:function(){var t=this;d(this.target,this.getClass("enabled")),d(this.element,this.getClass("enabled")),this.enabled=!1,"undefined"!=typeof this.scrollParents&&this.scrollParents.forEach(function(e){e.removeEventListener("scroll",t.position)})}},{key:"destroy",value:function(){var t=this;this.disable(),D.forEach(function(e,o){e===t&&D.splice(o,1)}),0===D.length&&s()}},{key:"updateAttachClasses",value:function(t,e){var o=this;t=t||this.attachment,e=e||this.targetAttachment;var n=["left","top","bottom","right","middle","center"];"undefined"!=typeof this._addAttachClasses&&this._addAttachClasses.length&&this._addAttachClasses.splice(0,this._addAttachClasses.length),"undefined"==typeof this._addAttachClasses&&(this._addAttachClasses=[]);var i=this._addAttachClasses;t.top&&i.push(this.getClass("element-attached")+"-"+t.top),t.left&&i.push(this.getClass("element-attached")+"-"+t.left),e.top&&i.push(this.getClass("target-attached")+"-"+e.top),e.left&&i.push(this.getClass("target-attached")+"-"+e.left);var r=[];n.forEach(function(t){r.push(o.getClass("element-attached")+"-"+t),r.push(o.getClass("target-attached")+"-"+t)}),k(function(){"undefined"!=typeof o._addAttachClasses&&(m(o.element,o._addAttachClasses,r),o.options.addTargetClasses!==!1&&m(o.target,o._addAttachClasses,r),delete o._addAttachClasses)})}},{key:"position",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];if(this.enabled){this.clearCache();var o=U(this.targetAttachment,this.attachment);this.updateAttachClasses(this.attachment,o);var n=this.cache("element-bounds",function(){return a(t.element)}),i=n.width,r=n.height;if(0===i&&0===r&&"undefined"!=typeof this.lastSize){var s=this.lastSize;i=s.width,r=s.height}else this.lastSize={width:i,height:r};var h=this.cache("target-bounds",function(){return t.getTargetBounds()}),d=h,u=C(V(this.attachment),{width:i,height:r}),p=C(V(o),d),c=C(this.offset,{width:i,height:r}),g=C(this.targetOffset,d);u=w(u,c),p=w(p,g);for(var m=h.left+p.left-u.left,v=h.top+p.top-u.top,y=0;yA.documentElement.clientHeight&&(S=this.cache("scrollbar-size",l),E.viewport.bottom-=S.height),T.innerWidth>A.documentElement.clientWidth&&(S=this.cache("scrollbar-size",l),E.viewport.right-=S.width),(-1===["","static"].indexOf(A.body.style.position)||-1===["","static"].indexOf(A.body.parentElement.style.position))&&(E.page.bottom=A.body.scrollHeight-v-r,E.page.right=A.body.scrollWidth-m-i),"undefined"!=typeof this.options.optimizations&&this.options.optimizations.moveElement!==!1&&"undefined"==typeof this.targetModifier&&!function(){var e=t.cache("target-offsetparent",function(){return f(t.target)}),o=t.cache("target-offsetparent-bounds",function(){return a(e)}),n=getComputedStyle(e),i=o,r={};if(["Top","Left","Bottom","Right"].forEach(function(t){r[t.toLowerCase()]=parseFloat(n["border"+t+"Width"])}),o.right=A.body.scrollWidth-o.left-i.width+r.right,o.bottom=A.body.scrollHeight-o.top-i.height+r.bottom,E.page.top>=o.top+r.top&&E.page.bottom>=o.bottom&&E.page.left>=o.left+r.left&&E.page.right>=o.right){var s=e.scrollTop,l=e.scrollLeft;E.offset={top:E.page.top-o.top+s-r.top,left:E.page.left-o.left+l-r.left}}}(),this.move(E),this.history.unshift(E),this.history.length>3&&this.history.pop(),e&&_(),!0}}},{key:"move",value:function(t){var e=this;if("undefined"!=typeof this.element.parentNode){var o={};for(var n in t){o[n]={};for(var i in t[n]){for(var r=!1,s=0;s=0){var c=a.split(" "),m=z(c,2);d=m[0],h=m[1]}else h=d=a;var b=O(e,r);("target"===d||"both"===d)&&(ob[3]&&"bottom"===v.top&&(o-=u,v.top="top")),"together"===d&&("top"===v.top&&("bottom"===y.top&&ob[3]&&o-(s-u)>=b[1]&&(o-=s-u,v.top="bottom",y.top="bottom")),"bottom"===v.top&&("top"===y.top&&o+s>b[3]?(o-=u,v.top="top",o-=s,y.top="bottom"):"bottom"===y.top&&ob[3]&&"top"===y.top?(o-=s,y.top="bottom"):ob[2]&&"right"===v.left&&(n-=p,v.left="left")),"together"===h&&(nb[2]&&"right"===v.left?"left"===y.left?(n-=p,v.left="left",n-=f,y.left="right"):"right"===y.left&&(n-=p,v.left="left",n+=f,y.left="left"):"center"===v.left&&(n+f>b[2]&&"left"===y.left?(n-=f,y.left="right"):nb[3]&&"top"===y.top&&(o-=s,y.top="bottom")),("element"===h||"both"===h)&&(nb[2]&&("left"===y.left?(n-=f,y.left="right"):"center"===y.left&&(n-=f/2,y.left="right"))),"string"==typeof l?l=l.split(",").map(function(t){return t.trim()}):l===!0&&(l=["top","left","right","bottom"]),l=l||[];var w=[],C=[];o=0?(o=b[1],w.push("top")):C.push("top")),o+s>b[3]&&(l.indexOf("bottom")>=0?(o=b[3]-s,w.push("bottom")):C.push("bottom")),n=0?(n=b[0],w.push("left")):C.push("left")),n+f>b[2]&&(l.indexOf("right")>=0?(n=b[2]-f,w.push("right")):C.push("right")),w.length&&!function(){var t=void 0;t="undefined"!=typeof e.options.pinnedClass?e.options.pinnedClass:e.getClass("pinned"),g.push(t),w.forEach(function(e){g.push(t+"-"+e)})}(),C.length&&!function(){var t=void 0;t="undefined"!=typeof e.options.outOfBoundsClass?e.options.outOfBoundsClass:e.getClass("out-of-bounds"),g.push(t),C.forEach(function(e){g.push(t+"-"+e)})}(),(w.indexOf("left")>=0||w.indexOf("right")>=0)&&(y.left=v.left=!1),(w.indexOf("top")>=0||w.indexOf("bottom")>=0)&&(y.top=v.top=!1),(v.top!==i.top||v.left!==i.left||y.top!==e.attachment.top||y.left!==e.attachment.left)&&(e.updateAttachClasses(y,v),e.trigger("update",{attachment:y,targetAttachment:v}))}),k(function(){e.options.addTargetClasses!==!1&&m(e.target,g,c),m(e.element,g,c)}),{top:o,left:n}}});var Y=x.Utils,a=Y.getBounds,m=Y.updateClasses,k=Y.defer;x.modules.push({position:function(t){var e=this,o=t.top,n=t.left,i=this.cache("element-bounds",function(){return a(e.element)}),r=i.height,s=i.width,f=this.getTargetBounds(),l=o+r,h=n+s,d=[];o<=f.bottom&&l>=f.top&&["left","right"].forEach(function(t){var e=f[t];(e===n||e===h)&&d.push(t)}),n<=f.right&&h>=f.left&&["top","bottom"].forEach(function(t){var e=f[t];(e===o||e===l)&&d.push(t)});var u=[],p=[],c=["left","top","right","bottom"];return u.push(this.getClass("abutted")),c.forEach(function(t){u.push(e.getClass("abutted")+"-"+t)}),d.length&&p.push(this.getClass("abutted")),d.forEach(function(t){p.push(e.getClass("abutted")+"-"+t)}),k(function(){e.options.addTargetClasses!==!1&&m(e.target,p,u),m(e.element,p,u)}),!0}});var z=function(){function t(t,e){var o=[],n=!0,i=!1,r=void 0;try{for(var s,a=t[Symbol.iterator]();!(n=(s=a.next()).done)&&(o.push(s.value),!e||o.length!==e);n=!0);}catch(f){i=!0,r=f}finally{try{!n&&a["return"]&&a["return"]()}finally{if(i)throw r}}return o}return function(e,o){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,o);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();return x.modules.push({position:function(t){var e=t.top,o=t.left;if(this.options.shift){var n=this.options.shift;"function"==typeof this.options.shift&&(n=this.options.shift.call(this,{top:e,left:o}));var i=void 0,r=void 0;if("string"==typeof n){n=n.split(" "),n[1]=n[1]||n[0];var s=n,a=z(s,2);i=a[0],r=a[1],i=parseFloat(i,10),r=parseFloat(r,10)}else i=n.top,r=n.left;return e+=i,o+=r,{top:e,left:o}}}}),$}); \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/.bower.json b/SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/.bower.json new file mode 100644 index 0000000..ce26e83 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/.bower.json @@ -0,0 +1,24 @@ +{ + "name": "flot.tooltip", + "version": "0.8.5", + "license": "MIT", + "main": "js/jquery.flot.tooltip.js", + "ignore": [ + ".gitignore", + "Gruntfile.js", + "README.md", + "package.json", + "examples", + "js/old" + ], + "homepage": "https://github.com/krzysu/flot.tooltip", + "_release": "0.8.5", + "_resolution": { + "type": "version", + "tag": "0.8.5", + "commit": "e2dbb407ffcf5ece0f2e6ab922b0192b8a6d168e" + }, + "_source": "git://github.com/krzysu/flot.tooltip.git", + "_target": "~0.8.4", + "_originalSource": "flot.tooltip" +} \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/bower.json b/SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/bower.json new file mode 100644 index 0000000..995f7c5 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/bower.json @@ -0,0 +1,14 @@ +{ + "name": "flot.tooltip", + "version": "0.8.5", + "license": "MIT", + "main": "js/jquery.flot.tooltip.js", + "ignore": [ + ".gitignore", + "Gruntfile.js", + "README.md", + "package.json", + "examples", + "js/old" + ] +} diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/js/excanvas.min.js b/SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/js/excanvas.min.js new file mode 100644 index 0000000..12c74f7 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/js/excanvas.min.js @@ -0,0 +1 @@ +if(!document.createElement("canvas").getContext){(function(){var z=Math;var K=z.round;var J=z.sin;var U=z.cos;var b=z.abs;var k=z.sqrt;var D=10;var F=D/2;function T(){return this.context_||(this.context_=new W(this))}var O=Array.prototype.slice;function G(i,j,m){var Z=O.call(arguments,2);return function(){return i.apply(j,Z.concat(O.call(arguments)))}}function AD(Z){return String(Z).replace(/&/g,"&").replace(/"/g,""")}function r(i){if(!i.namespaces.g_vml_){i.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml","#default#VML")}if(!i.namespaces.g_o_){i.namespaces.add("g_o_","urn:schemas-microsoft-com:office:office","#default#VML")}if(!i.styleSheets.ex_canvas_){var Z=i.createStyleSheet();Z.owningElement.id="ex_canvas_";Z.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}"}}r(document);var E={init:function(Z){if(/MSIE/.test(navigator.userAgent)&&!window.opera){var i=Z||document;i.createElement("canvas");i.attachEvent("onreadystatechange",G(this.init_,this,i))}},init_:function(m){var j=m.getElementsByTagName("canvas");for(var Z=0;Z1){j--}if(6*j<1){return i+(Z-i)*6*j}else{if(2*j<1){return Z}else{if(3*j<2){return i+(Z-i)*(2/3-j)*6}else{return i}}}}function Y(Z){var AE,p=1;Z=String(Z);if(Z.charAt(0)=="#"){AE=Z}else{if(/^rgb/.test(Z)){var m=g(Z);var AE="#",AF;for(var j=0;j<3;j++){if(m[j].indexOf("%")!=-1){AF=Math.floor(C(m[j])*255)}else{AF=Number(m[j])}AE+=I[N(AF,0,255)]}p=m[3]}else{if(/^hsl/.test(Z)){var m=g(Z);AE=c(m);p=m[3]}else{AE=B[Z]||Z}}}return{color:AE,alpha:p}}var L={style:"normal",variant:"normal",weight:"normal",size:10,family:"sans-serif"};var f={};function X(Z){if(f[Z]){return f[Z]}var m=document.createElement("div");var j=m.style;try{j.font=Z}catch(i){}return f[Z]={style:j.fontStyle||L.style,variant:j.fontVariant||L.variant,weight:j.fontWeight||L.weight,size:j.fontSize||L.size,family:j.fontFamily||L.family}}function P(j,i){var Z={};for(var AF in j){Z[AF]=j[AF]}var AE=parseFloat(i.currentStyle.fontSize),m=parseFloat(j.size);if(typeof j.size=="number"){Z.size=j.size}else{if(j.size.indexOf("px")!=-1){Z.size=m}else{if(j.size.indexOf("em")!=-1){Z.size=AE*m}else{if(j.size.indexOf("%")!=-1){Z.size=(AE/100)*m}else{if(j.size.indexOf("pt")!=-1){Z.size=m/0.75}else{Z.size=AE}}}}}Z.size*=0.981;return Z}function AA(Z){return Z.style+" "+Z.variant+" "+Z.weight+" "+Z.size+"px "+Z.family}function t(Z){switch(Z){case"butt":return"flat";case"round":return"round";case"square":default:return"square"}}function W(i){this.m_=V();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.strokeStyle="#000";this.fillStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=D*1;this.globalAlpha=1;this.font="10px sans-serif";this.textAlign="left";this.textBaseline="alphabetic";this.canvas=i;var Z=i.ownerDocument.createElement("div");Z.style.width=i.clientWidth+"px";Z.style.height=i.clientHeight+"px";Z.style.overflow="hidden";Z.style.position="absolute";i.appendChild(Z);this.element_=Z;this.arcScaleX_=1;this.arcScaleY_=1;this.lineScale_=1}var M=W.prototype;M.clearRect=function(){if(this.textMeasureEl_){this.textMeasureEl_.removeNode(true);this.textMeasureEl_=null}this.element_.innerHTML=""};M.beginPath=function(){this.currentPath_=[]};M.moveTo=function(i,Z){var j=this.getCoords_(i,Z);this.currentPath_.push({type:"moveTo",x:j.x,y:j.y});this.currentX_=j.x;this.currentY_=j.y};M.lineTo=function(i,Z){var j=this.getCoords_(i,Z);this.currentPath_.push({type:"lineTo",x:j.x,y:j.y});this.currentX_=j.x;this.currentY_=j.y};M.bezierCurveTo=function(j,i,AI,AH,AG,AE){var Z=this.getCoords_(AG,AE);var AF=this.getCoords_(j,i);var m=this.getCoords_(AI,AH);e(this,AF,m,Z)};function e(Z,m,j,i){Z.currentPath_.push({type:"bezierCurveTo",cp1x:m.x,cp1y:m.y,cp2x:j.x,cp2y:j.y,x:i.x,y:i.y});Z.currentX_=i.x;Z.currentY_=i.y}M.quadraticCurveTo=function(AG,j,i,Z){var AF=this.getCoords_(AG,j);var AE=this.getCoords_(i,Z);var AH={x:this.currentX_+2/3*(AF.x-this.currentX_),y:this.currentY_+2/3*(AF.y-this.currentY_)};var m={x:AH.x+(AE.x-this.currentX_)/3,y:AH.y+(AE.y-this.currentY_)/3};e(this,AH,m,AE)};M.arc=function(AJ,AH,AI,AE,i,j){AI*=D;var AN=j?"at":"wa";var AK=AJ+U(AE)*AI-F;var AM=AH+J(AE)*AI-F;var Z=AJ+U(i)*AI-F;var AL=AH+J(i)*AI-F;if(AK==Z&&!j){AK+=0.125}var m=this.getCoords_(AJ,AH);var AG=this.getCoords_(AK,AM);var AF=this.getCoords_(Z,AL);this.currentPath_.push({type:AN,x:m.x,y:m.y,radius:AI,xStart:AG.x,yStart:AG.y,xEnd:AF.x,yEnd:AF.y})};M.rect=function(j,i,Z,m){this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath()};M.strokeRect=function(j,i,Z,m){var p=this.currentPath_;this.beginPath();this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath();this.stroke();this.currentPath_=p};M.fillRect=function(j,i,Z,m){var p=this.currentPath_;this.beginPath();this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath();this.fill();this.currentPath_=p};M.createLinearGradient=function(i,m,Z,j){var p=new v("gradient");p.x0_=i;p.y0_=m;p.x1_=Z;p.y1_=j;return p};M.createRadialGradient=function(m,AE,j,i,p,Z){var AF=new v("gradientradial");AF.x0_=m;AF.y0_=AE;AF.r0_=j;AF.x1_=i;AF.y1_=p;AF.r1_=Z;return AF};M.drawImage=function(AO,j){var AH,AF,AJ,AV,AM,AK,AQ,AX;var AI=AO.runtimeStyle.width;var AN=AO.runtimeStyle.height;AO.runtimeStyle.width="auto";AO.runtimeStyle.height="auto";var AG=AO.width;var AT=AO.height;AO.runtimeStyle.width=AI;AO.runtimeStyle.height=AN;if(arguments.length==3){AH=arguments[1];AF=arguments[2];AM=AK=0;AQ=AJ=AG;AX=AV=AT}else{if(arguments.length==5){AH=arguments[1];AF=arguments[2];AJ=arguments[3];AV=arguments[4];AM=AK=0;AQ=AG;AX=AT}else{if(arguments.length==9){AM=arguments[1];AK=arguments[2];AQ=arguments[3];AX=arguments[4];AH=arguments[5];AF=arguments[6];AJ=arguments[7];AV=arguments[8]}else{throw Error("Invalid number of arguments")}}}var AW=this.getCoords_(AH,AF);var m=AQ/2;var i=AX/2;var AU=[];var Z=10;var AE=10;AU.push(" ','","");this.element_.insertAdjacentHTML("BeforeEnd",AU.join(""))};M.stroke=function(AM){var m=10;var AN=10;var AE=5000;var AG={x:null,y:null};var AL={x:null,y:null};for(var AH=0;AHAL.x){AL.x=Z.x}if(AG.y==null||Z.yAL.y){AL.y=Z.y}}}AK.push(' ">');if(!AM){R(this,AK)}else{a(this,AK,AG,AL)}AK.push("");this.element_.insertAdjacentHTML("beforeEnd",AK.join(""))}};function R(j,AE){var i=Y(j.strokeStyle);var m=i.color;var p=i.alpha*j.globalAlpha;var Z=j.lineScale_*j.lineWidth;if(Z<1){p*=Z}AE.push("')}function a(AO,AG,Ah,AP){var AH=AO.fillStyle;var AY=AO.arcScaleX_;var AX=AO.arcScaleY_;var Z=AP.x-Ah.x;var m=AP.y-Ah.y;if(AH instanceof v){var AL=0;var Ac={x:0,y:0};var AU=0;var AK=1;if(AH.type_=="gradient"){var AJ=AH.x0_/AY;var j=AH.y0_/AX;var AI=AH.x1_/AY;var Aj=AH.y1_/AX;var Ag=AO.getCoords_(AJ,j);var Af=AO.getCoords_(AI,Aj);var AE=Af.x-Ag.x;var p=Af.y-Ag.y;AL=Math.atan2(AE,p)*180/Math.PI;if(AL<0){AL+=360}if(AL<0.000001){AL=0}}else{var Ag=AO.getCoords_(AH.x0_,AH.y0_);Ac={x:(Ag.x-Ah.x)/Z,y:(Ag.y-Ah.y)/m};Z/=AY*D;m/=AX*D;var Aa=z.max(Z,m);AU=2*AH.r0_/Aa;AK=2*AH.r1_/Aa-AU}var AS=AH.colors_;AS.sort(function(Ak,i){return Ak.offset-i.offset});var AN=AS.length;var AR=AS[0].color;var AQ=AS[AN-1].color;var AW=AS[0].alpha*AO.globalAlpha;var AV=AS[AN-1].alpha*AO.globalAlpha;var Ab=[];for(var Ae=0;Ae')}else{if(AH instanceof u){if(Z&&m){var AF=-Ah.x;var AZ=-Ah.y;AG.push("')}}else{var Ai=Y(AO.fillStyle);var AT=Ai.color;var Ad=Ai.alpha*AO.globalAlpha;AG.push('')}}}M.fill=function(){this.stroke(true)};M.closePath=function(){this.currentPath_.push({type:"close"})};M.getCoords_=function(j,i){var Z=this.m_;return{x:D*(j*Z[0][0]+i*Z[1][0]+Z[2][0])-F,y:D*(j*Z[0][1]+i*Z[1][1]+Z[2][1])-F}};M.save=function(){var Z={};Q(this,Z);this.aStack_.push(Z);this.mStack_.push(this.m_);this.m_=d(V(),this.m_)};M.restore=function(){if(this.aStack_.length){Q(this.aStack_.pop(),this);this.m_=this.mStack_.pop()}};function H(Z){return isFinite(Z[0][0])&&isFinite(Z[0][1])&&isFinite(Z[1][0])&&isFinite(Z[1][1])&&isFinite(Z[2][0])&&isFinite(Z[2][1])}function y(i,Z,j){if(!H(Z)){return }i.m_=Z;if(j){var p=Z[0][0]*Z[1][1]-Z[0][1]*Z[1][0];i.lineScale_=k(b(p))}}M.translate=function(j,i){var Z=[[1,0,0],[0,1,0],[j,i,1]];y(this,d(Z,this.m_),false)};M.rotate=function(i){var m=U(i);var j=J(i);var Z=[[m,j,0],[-j,m,0],[0,0,1]];y(this,d(Z,this.m_),false)};M.scale=function(j,i){this.arcScaleX_*=j;this.arcScaleY_*=i;var Z=[[j,0,0],[0,i,0],[0,0,1]];y(this,d(Z,this.m_),true)};M.transform=function(p,m,AF,AE,i,Z){var j=[[p,m,0],[AF,AE,0],[i,Z,1]];y(this,d(j,this.m_),true)};M.setTransform=function(AE,p,AG,AF,j,i){var Z=[[AE,p,0],[AG,AF,0],[j,i,1]];y(this,Z,true)};M.drawText_=function(AK,AI,AH,AN,AG){var AM=this.m_,AQ=1000,i=0,AP=AQ,AF={x:0,y:0},AE=[];var Z=P(X(this.font),this.element_);var j=AA(Z);var AR=this.element_.currentStyle;var p=this.textAlign.toLowerCase();switch(p){case"left":case"center":case"right":break;case"end":p=AR.direction=="ltr"?"right":"left";break;case"start":p=AR.direction=="rtl"?"right":"left";break;default:p="left"}switch(this.textBaseline){case"hanging":case"top":AF.y=Z.size/1.75;break;case"middle":break;default:case null:case"alphabetic":case"ideographic":case"bottom":AF.y=-Z.size/2.25;break}switch(p){case"right":i=AQ;AP=0.05;break;case"center":i=AP=AQ/2;break}var AO=this.getCoords_(AI+AF.x,AH+AF.y);AE.push('');if(AG){R(this,AE)}else{a(this,AE,{x:-i,y:0},{x:AP,y:Z.size})}var AL=AM[0][0].toFixed(3)+","+AM[1][0].toFixed(3)+","+AM[0][1].toFixed(3)+","+AM[1][1].toFixed(3)+",0,0";var AJ=K(AO.x/D)+","+K(AO.y/D);AE.push('','','');this.element_.insertAdjacentHTML("beforeEnd",AE.join(""))};M.fillText=function(j,Z,m,i){this.drawText_(j,Z,m,i,false)};M.strokeText=function(j,Z,m,i){this.drawText_(j,Z,m,i,true)};M.measureText=function(j){if(!this.textMeasureEl_){var Z='';this.element_.insertAdjacentHTML("beforeEnd",Z);this.textMeasureEl_=this.element_.lastChild}var i=this.element_.ownerDocument;this.textMeasureEl_.innerHTML="";this.textMeasureEl_.style.font=this.font;this.textMeasureEl_.appendChild(i.createTextNode(j));return{width:this.textMeasureEl_.offsetWidth}};M.clip=function(){};M.arcTo=function(){};M.createPattern=function(i,Z){return new u(i,Z)};function v(Z){this.type_=Z;this.x0_=0;this.y0_=0;this.r0_=0;this.x1_=0;this.y1_=0;this.r1_=0;this.colors_=[]}v.prototype.addColorStop=function(i,Z){Z=Y(Z);this.colors_.push({offset:i,color:Z.color,alpha:Z.alpha})};function u(i,Z){q(i);switch(Z){case"repeat":case null:case"":this.repetition_="repeat";break;case"repeat-x":case"repeat-y":case"no-repeat":this.repetition_=Z;break;default:n("SYNTAX_ERR")}this.src_=i.src;this.width_=i.width;this.height_=i.height}function n(Z){throw new o(Z)}function q(Z){if(!Z||Z.nodeType!=1||Z.tagName!="IMG"){n("TYPE_MISMATCH_ERR")}if(Z.readyState!="complete"){n("INVALID_STATE_ERR")}}function o(Z){this.code=this[Z];this.message=Z+": DOM Exception "+this.code}var x=o.prototype=new Error;x.INDEX_SIZE_ERR=1;x.DOMSTRING_SIZE_ERR=2;x.HIERARCHY_REQUEST_ERR=3;x.WRONG_DOCUMENT_ERR=4;x.INVALID_CHARACTER_ERR=5;x.NO_DATA_ALLOWED_ERR=6;x.NO_MODIFICATION_ALLOWED_ERR=7;x.NOT_FOUND_ERR=8;x.NOT_SUPPORTED_ERR=9;x.INUSE_ATTRIBUTE_ERR=10;x.INVALID_STATE_ERR=11;x.SYNTAX_ERR=12;x.INVALID_MODIFICATION_ERR=13;x.NAMESPACE_ERR=14;x.INVALID_ACCESS_ERR=15;x.VALIDATION_ERR=16;x.TYPE_MISMATCH_ERR=17;G_vmlCanvasManager=E;CanvasRenderingContext2D=W;CanvasGradient=v;CanvasPattern=u;DOMException=o})()}; \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/js/jquery.flot.js b/SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/js/jquery.flot.js new file mode 100644 index 0000000..dd20ad6 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/js/jquery.flot.js @@ -0,0 +1,3168 @@ +/* Javascript plotting library for jQuery, version 0.8.3. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +*/ + +// first an inline dependency, jquery.colorhelpers.js, we inline it here +// for convenience + +/* Plugin for jQuery for working with colors. + * + * Version 1.1. + * + * Inspiration from jQuery color animation plugin by John Resig. + * + * Released under the MIT license by Ole Laursen, October 2009. + * + * Examples: + * + * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() + * var c = $.color.extract($("#mydiv"), 'background-color'); + * console.log(c.r, c.g, c.b, c.a); + * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" + * + * Note that .scale() and .add() return the same modified object + * instead of making a new one. + * + * V. 1.1: Fix error handling so e.g. parsing an empty string does + * produce a color rather than just crashing. + */ +(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return valuemax?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery); + +// the actual Flot code +(function($) { + + // Cache the prototype hasOwnProperty for faster access + + var hasOwnProperty = Object.prototype.hasOwnProperty; + + // A shim to provide 'detach' to jQuery versions prior to 1.4. Using a DOM + // operation produces the same effect as detach, i.e. removing the element + // without touching its jQuery data. + + // Do not merge this into Flot 0.9, since it requires jQuery 1.4.4+. + + if (!$.fn.detach) { + $.fn.detach = function() { + return this.each(function() { + if (this.parentNode) { + this.parentNode.removeChild( this ); + } + }); + }; + } + + /////////////////////////////////////////////////////////////////////////// + // The Canvas object is a wrapper around an HTML5 tag. + // + // @constructor + // @param {string} cls List of classes to apply to the canvas. + // @param {element} container Element onto which to append the canvas. + // + // Requiring a container is a little iffy, but unfortunately canvas + // operations don't work unless the canvas is attached to the DOM. + + function Canvas(cls, container) { + + var element = container.children("." + cls)[0]; + + if (element == null) { + + element = document.createElement("canvas"); + element.className = cls; + + $(element).css({ direction: "ltr", position: "absolute", left: 0, top: 0 }) + .appendTo(container); + + // If HTML5 Canvas isn't available, fall back to [Ex|Flash]canvas + + if (!element.getContext) { + if (window.G_vmlCanvasManager) { + element = window.G_vmlCanvasManager.initElement(element); + } else { + throw new Error("Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode."); + } + } + } + + this.element = element; + + var context = this.context = element.getContext("2d"); + + // Determine the screen's ratio of physical to device-independent + // pixels. This is the ratio between the canvas width that the browser + // advertises and the number of pixels actually present in that space. + + // The iPhone 4, for example, has a device-independent width of 320px, + // but its screen is actually 640px wide. It therefore has a pixel + // ratio of 2, while most normal devices have a ratio of 1. + + var devicePixelRatio = window.devicePixelRatio || 1, + backingStoreRatio = + context.webkitBackingStorePixelRatio || + context.mozBackingStorePixelRatio || + context.msBackingStorePixelRatio || + context.oBackingStorePixelRatio || + context.backingStorePixelRatio || 1; + + this.pixelRatio = devicePixelRatio / backingStoreRatio; + + // Size the canvas to match the internal dimensions of its container + + this.resize(container.width(), container.height()); + + // Collection of HTML div layers for text overlaid onto the canvas + + this.textContainer = null; + this.text = {}; + + // Cache of text fragments and metrics, so we can avoid expensively + // re-calculating them when the plot is re-rendered in a loop. + + this._textCache = {}; + } + + // Resizes the canvas to the given dimensions. + // + // @param {number} width New width of the canvas, in pixels. + // @param {number} width New height of the canvas, in pixels. + + Canvas.prototype.resize = function(width, height) { + + if (width <= 0 || height <= 0) { + throw new Error("Invalid dimensions for plot, width = " + width + ", height = " + height); + } + + var element = this.element, + context = this.context, + pixelRatio = this.pixelRatio; + + // Resize the canvas, increasing its density based on the display's + // pixel ratio; basically giving it more pixels without increasing the + // size of its element, to take advantage of the fact that retina + // displays have that many more pixels in the same advertised space. + + // Resizing should reset the state (excanvas seems to be buggy though) + + if (this.width != width) { + element.width = width * pixelRatio; + element.style.width = width + "px"; + this.width = width; + } + + if (this.height != height) { + element.height = height * pixelRatio; + element.style.height = height + "px"; + this.height = height; + } + + // Save the context, so we can reset in case we get replotted. The + // restore ensure that we're really back at the initial state, and + // should be safe even if we haven't saved the initial state yet. + + context.restore(); + context.save(); + + // Scale the coordinate space to match the display density; so even though we + // may have twice as many pixels, we still want lines and other drawing to + // appear at the same size; the extra pixels will just make them crisper. + + context.scale(pixelRatio, pixelRatio); + }; + + // Clears the entire canvas area, not including any overlaid HTML text + + Canvas.prototype.clear = function() { + this.context.clearRect(0, 0, this.width, this.height); + }; + + // Finishes rendering the canvas, including managing the text overlay. + + Canvas.prototype.render = function() { + + var cache = this._textCache; + + // For each text layer, add elements marked as active that haven't + // already been rendered, and remove those that are no longer active. + + for (var layerKey in cache) { + if (hasOwnProperty.call(cache, layerKey)) { + + var layer = this.getTextLayer(layerKey), + layerCache = cache[layerKey]; + + layer.hide(); + + for (var styleKey in layerCache) { + if (hasOwnProperty.call(layerCache, styleKey)) { + var styleCache = layerCache[styleKey]; + for (var key in styleCache) { + if (hasOwnProperty.call(styleCache, key)) { + + var positions = styleCache[key].positions; + + for (var i = 0, position; position = positions[i]; i++) { + if (position.active) { + if (!position.rendered) { + layer.append(position.element); + position.rendered = true; + } + } else { + positions.splice(i--, 1); + if (position.rendered) { + position.element.detach(); + } + } + } + + if (positions.length == 0) { + delete styleCache[key]; + } + } + } + } + } + + layer.show(); + } + } + }; + + // Creates (if necessary) and returns the text overlay container. + // + // @param {string} classes String of space-separated CSS classes used to + // uniquely identify the text layer. + // @return {object} The jQuery-wrapped text-layer div. + + Canvas.prototype.getTextLayer = function(classes) { + + var layer = this.text[classes]; + + // Create the text layer if it doesn't exist + + if (layer == null) { + + // Create the text layer container, if it doesn't exist + + if (this.textContainer == null) { + this.textContainer = $("
") + .css({ + position: "absolute", + top: 0, + left: 0, + bottom: 0, + right: 0, + 'font-size': "smaller", + color: "#545454" + }) + .insertAfter(this.element); + } + + layer = this.text[classes] = $("
") + .addClass(classes) + .css({ + position: "absolute", + top: 0, + left: 0, + bottom: 0, + right: 0 + }) + .appendTo(this.textContainer); + } + + return layer; + }; + + // Creates (if necessary) and returns a text info object. + // + // The object looks like this: + // + // { + // width: Width of the text's wrapper div. + // height: Height of the text's wrapper div. + // element: The jQuery-wrapped HTML div containing the text. + // positions: Array of positions at which this text is drawn. + // } + // + // The positions array contains objects that look like this: + // + // { + // active: Flag indicating whether the text should be visible. + // rendered: Flag indicating whether the text is currently visible. + // element: The jQuery-wrapped HTML div containing the text. + // x: X coordinate at which to draw the text. + // y: Y coordinate at which to draw the text. + // } + // + // Each position after the first receives a clone of the original element. + // + // The idea is that that the width, height, and general 'identity' of the + // text is constant no matter where it is placed; the placements are a + // secondary property. + // + // Canvas maintains a cache of recently-used text info objects; getTextInfo + // either returns the cached element or creates a new entry. + // + // @param {string} layer A string of space-separated CSS classes uniquely + // identifying the layer containing this text. + // @param {string} text Text string to retrieve info for. + // @param {(string|object)=} font Either a string of space-separated CSS + // classes or a font-spec object, defining the text's font and style. + // @param {number=} angle Angle at which to rotate the text, in degrees. + // Angle is currently unused, it will be implemented in the future. + // @param {number=} width Maximum width of the text before it wraps. + // @return {object} a text info object. + + Canvas.prototype.getTextInfo = function(layer, text, font, angle, width) { + + var textStyle, layerCache, styleCache, info; + + // Cast the value to a string, in case we were given a number or such + + text = "" + text; + + // If the font is a font-spec object, generate a CSS font definition + + if (typeof font === "object") { + textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px/" + font.lineHeight + "px " + font.family; + } else { + textStyle = font; + } + + // Retrieve (or create) the cache for the text's layer and styles + + layerCache = this._textCache[layer]; + + if (layerCache == null) { + layerCache = this._textCache[layer] = {}; + } + + styleCache = layerCache[textStyle]; + + if (styleCache == null) { + styleCache = layerCache[textStyle] = {}; + } + + info = styleCache[text]; + + // If we can't find a matching element in our cache, create a new one + + if (info == null) { + + var element = $("
").html(text) + .css({ + position: "absolute", + 'max-width': width, + top: -9999 + }) + .appendTo(this.getTextLayer(layer)); + + if (typeof font === "object") { + element.css({ + font: textStyle, + color: font.color + }); + } else if (typeof font === "string") { + element.addClass(font); + } + + info = styleCache[text] = { + width: element.outerWidth(true), + height: element.outerHeight(true), + element: element, + positions: [] + }; + + element.detach(); + } + + return info; + }; + + // Adds a text string to the canvas text overlay. + // + // The text isn't drawn immediately; it is marked as rendering, which will + // result in its addition to the canvas on the next render pass. + // + // @param {string} layer A string of space-separated CSS classes uniquely + // identifying the layer containing this text. + // @param {number} x X coordinate at which to draw the text. + // @param {number} y Y coordinate at which to draw the text. + // @param {string} text Text string to draw. + // @param {(string|object)=} font Either a string of space-separated CSS + // classes or a font-spec object, defining the text's font and style. + // @param {number=} angle Angle at which to rotate the text, in degrees. + // Angle is currently unused, it will be implemented in the future. + // @param {number=} width Maximum width of the text before it wraps. + // @param {string=} halign Horizontal alignment of the text; either "left", + // "center" or "right". + // @param {string=} valign Vertical alignment of the text; either "top", + // "middle" or "bottom". + + Canvas.prototype.addText = function(layer, x, y, text, font, angle, width, halign, valign) { + + var info = this.getTextInfo(layer, text, font, angle, width), + positions = info.positions; + + // Tweak the div's position to match the text's alignment + + if (halign == "center") { + x -= info.width / 2; + } else if (halign == "right") { + x -= info.width; + } + + if (valign == "middle") { + y -= info.height / 2; + } else if (valign == "bottom") { + y -= info.height; + } + + // Determine whether this text already exists at this position. + // If so, mark it for inclusion in the next render pass. + + for (var i = 0, position; position = positions[i]; i++) { + if (position.x == x && position.y == y) { + position.active = true; + return; + } + } + + // If the text doesn't exist at this position, create a new entry + + // For the very first position we'll re-use the original element, + // while for subsequent ones we'll clone it. + + position = { + active: true, + rendered: false, + element: positions.length ? info.element.clone() : info.element, + x: x, + y: y + }; + + positions.push(position); + + // Move the element to its final position within the container + + position.element.css({ + top: Math.round(y), + left: Math.round(x), + 'text-align': halign // In case the text wraps + }); + }; + + // Removes one or more text strings from the canvas text overlay. + // + // If no parameters are given, all text within the layer is removed. + // + // Note that the text is not immediately removed; it is simply marked as + // inactive, which will result in its removal on the next render pass. + // This avoids the performance penalty for 'clear and redraw' behavior, + // where we potentially get rid of all text on a layer, but will likely + // add back most or all of it later, as when redrawing axes, for example. + // + // @param {string} layer A string of space-separated CSS classes uniquely + // identifying the layer containing this text. + // @param {number=} x X coordinate of the text. + // @param {number=} y Y coordinate of the text. + // @param {string=} text Text string to remove. + // @param {(string|object)=} font Either a string of space-separated CSS + // classes or a font-spec object, defining the text's font and style. + // @param {number=} angle Angle at which the text is rotated, in degrees. + // Angle is currently unused, it will be implemented in the future. + + Canvas.prototype.removeText = function(layer, x, y, text, font, angle) { + if (text == null) { + var layerCache = this._textCache[layer]; + if (layerCache != null) { + for (var styleKey in layerCache) { + if (hasOwnProperty.call(layerCache, styleKey)) { + var styleCache = layerCache[styleKey]; + for (var key in styleCache) { + if (hasOwnProperty.call(styleCache, key)) { + var positions = styleCache[key].positions; + for (var i = 0, position; position = positions[i]; i++) { + position.active = false; + } + } + } + } + } + } + } else { + var positions = this.getTextInfo(layer, text, font, angle).positions; + for (var i = 0, position; position = positions[i]; i++) { + if (position.x == x && position.y == y) { + position.active = false; + } + } + } + }; + + /////////////////////////////////////////////////////////////////////////// + // The top-level container for the entire plot. + + function Plot(placeholder, data_, options_, plugins) { + // data is on the form: + // [ series1, series2 ... ] + // where series is either just the data as [ [x1, y1], [x2, y2], ... ] + // or { data: [ [x1, y1], [x2, y2], ... ], label: "some label", ... } + + var series = [], + options = { + // the color theme used for graphs + colors: ["#edc240", "#afd8f8", "#cb4b4b", "#4da74d", "#9440ed"], + legend: { + show: true, + noColumns: 1, // number of colums in legend table + labelFormatter: null, // fn: string -> string + labelBoxBorderColor: "#ccc", // border color for the little label boxes + container: null, // container (as jQuery object) to put legend in, null means default on top of graph + position: "ne", // position of default legend container within plot + margin: 5, // distance from grid edge to default legend container within plot + backgroundColor: null, // null means auto-detect + backgroundOpacity: 0.85, // set to 0 to avoid background + sorted: null // default to no legend sorting + }, + xaxis: { + show: null, // null = auto-detect, true = always, false = never + position: "bottom", // or "top" + mode: null, // null or "time" + font: null, // null (derived from CSS in placeholder) or object like { size: 11, lineHeight: 13, style: "italic", weight: "bold", family: "sans-serif", variant: "small-caps" } + color: null, // base color, labels, ticks + tickColor: null, // possibly different color of ticks, e.g. "rgba(0,0,0,0.15)" + transform: null, // null or f: number -> number to transform axis + inverseTransform: null, // if transform is set, this should be the inverse function + min: null, // min. value to show, null means set automatically + max: null, // max. value to show, null means set automatically + autoscaleMargin: null, // margin in % to add if auto-setting min/max + ticks: null, // either [1, 3] or [[1, "a"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks + tickFormatter: null, // fn: number -> string + labelWidth: null, // size of tick labels in pixels + labelHeight: null, + reserveSpace: null, // whether to reserve space even if axis isn't shown + tickLength: null, // size in pixels of ticks, or "full" for whole line + alignTicksWithAxis: null, // axis number or null for no sync + tickDecimals: null, // no. of decimals, null means auto + tickSize: null, // number or [number, "unit"] + minTickSize: null // number or [number, "unit"] + }, + yaxis: { + autoscaleMargin: 0.02, + position: "left" // or "right" + }, + xaxes: [], + yaxes: [], + series: { + points: { + show: false, + radius: 3, + lineWidth: 2, // in pixels + fill: true, + fillColor: "#ffffff", + symbol: "circle" // or callback + }, + lines: { + // we don't put in show: false so we can see + // whether lines were actively disabled + lineWidth: 2, // in pixels + fill: false, + fillColor: null, + steps: false + // Omit 'zero', so we can later default its value to + // match that of the 'fill' option. + }, + bars: { + show: false, + lineWidth: 2, // in pixels + barWidth: 1, // in units of the x axis + fill: true, + fillColor: null, + align: "left", // "left", "right", or "center" + horizontal: false, + zero: true + }, + shadowSize: 3, + highlightColor: null + }, + grid: { + show: true, + aboveData: false, + color: "#545454", // primary color used for outline and labels + backgroundColor: null, // null for transparent, else color + borderColor: null, // set if different from the grid color + tickColor: null, // color for the ticks, e.g. "rgba(0,0,0,0.15)" + margin: 0, // distance from the canvas edge to the grid + labelMargin: 5, // in pixels + axisMargin: 8, // in pixels + borderWidth: 2, // in pixels + minBorderMargin: null, // in pixels, null means taken from points radius + markings: null, // array of ranges or fn: axes -> array of ranges + markingsColor: "#f4f4f4", + markingsLineWidth: 2, + // interactive stuff + clickable: false, + hoverable: false, + autoHighlight: true, // highlight in case mouse is near + mouseActiveRadius: 10 // how far the mouse can be away to activate an item + }, + interaction: { + redrawOverlayInterval: 1000/60 // time between updates, -1 means in same flow + }, + hooks: {} + }, + surface = null, // the canvas for the plot itself + overlay = null, // canvas for interactive stuff on top of plot + eventHolder = null, // jQuery object that events should be bound to + ctx = null, octx = null, + xaxes = [], yaxes = [], + plotOffset = { left: 0, right: 0, top: 0, bottom: 0}, + plotWidth = 0, plotHeight = 0, + hooks = { + processOptions: [], + processRawData: [], + processDatapoints: [], + processOffset: [], + drawBackground: [], + drawSeries: [], + draw: [], + bindEvents: [], + drawOverlay: [], + shutdown: [] + }, + plot = this; + + // public functions + plot.setData = setData; + plot.setupGrid = setupGrid; + plot.draw = draw; + plot.getPlaceholder = function() { return placeholder; }; + plot.getCanvas = function() { return surface.element; }; + plot.getPlotOffset = function() { return plotOffset; }; + plot.width = function () { return plotWidth; }; + plot.height = function () { return plotHeight; }; + plot.offset = function () { + var o = eventHolder.offset(); + o.left += plotOffset.left; + o.top += plotOffset.top; + return o; + }; + plot.getData = function () { return series; }; + plot.getAxes = function () { + var res = {}, i; + $.each(xaxes.concat(yaxes), function (_, axis) { + if (axis) + res[axis.direction + (axis.n != 1 ? axis.n : "") + "axis"] = axis; + }); + return res; + }; + plot.getXAxes = function () { return xaxes; }; + plot.getYAxes = function () { return yaxes; }; + plot.c2p = canvasToAxisCoords; + plot.p2c = axisToCanvasCoords; + plot.getOptions = function () { return options; }; + plot.highlight = highlight; + plot.unhighlight = unhighlight; + plot.triggerRedrawOverlay = triggerRedrawOverlay; + plot.pointOffset = function(point) { + return { + left: parseInt(xaxes[axisNumber(point, "x") - 1].p2c(+point.x) + plotOffset.left, 10), + top: parseInt(yaxes[axisNumber(point, "y") - 1].p2c(+point.y) + plotOffset.top, 10) + }; + }; + plot.shutdown = shutdown; + plot.destroy = function () { + shutdown(); + placeholder.removeData("plot").empty(); + + series = []; + options = null; + surface = null; + overlay = null; + eventHolder = null; + ctx = null; + octx = null; + xaxes = []; + yaxes = []; + hooks = null; + highlights = []; + plot = null; + }; + plot.resize = function () { + var width = placeholder.width(), + height = placeholder.height(); + surface.resize(width, height); + overlay.resize(width, height); + }; + + // public attributes + plot.hooks = hooks; + + // initialize + initPlugins(plot); + parseOptions(options_); + setupCanvases(); + setData(data_); + setupGrid(); + draw(); + bindEvents(); + + + function executeHooks(hook, args) { + args = [plot].concat(args); + for (var i = 0; i < hook.length; ++i) + hook[i].apply(this, args); + } + + function initPlugins() { + + // References to key classes, allowing plugins to modify them + + var classes = { + Canvas: Canvas + }; + + for (var i = 0; i < plugins.length; ++i) { + var p = plugins[i]; + p.init(plot, classes); + if (p.options) + $.extend(true, options, p.options); + } + } + + function parseOptions(opts) { + + $.extend(true, options, opts); + + // $.extend merges arrays, rather than replacing them. When less + // colors are provided than the size of the default palette, we + // end up with those colors plus the remaining defaults, which is + // not expected behavior; avoid it by replacing them here. + + if (opts && opts.colors) { + options.colors = opts.colors; + } + + if (options.xaxis.color == null) + options.xaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString(); + if (options.yaxis.color == null) + options.yaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString(); + + if (options.xaxis.tickColor == null) // grid.tickColor for back-compatibility + options.xaxis.tickColor = options.grid.tickColor || options.xaxis.color; + if (options.yaxis.tickColor == null) // grid.tickColor for back-compatibility + options.yaxis.tickColor = options.grid.tickColor || options.yaxis.color; + + if (options.grid.borderColor == null) + options.grid.borderColor = options.grid.color; + if (options.grid.tickColor == null) + options.grid.tickColor = $.color.parse(options.grid.color).scale('a', 0.22).toString(); + + // Fill in defaults for axis options, including any unspecified + // font-spec fields, if a font-spec was provided. + + // If no x/y axis options were provided, create one of each anyway, + // since the rest of the code assumes that they exist. + + var i, axisOptions, axisCount, + fontSize = placeholder.css("font-size"), + fontSizeDefault = fontSize ? +fontSize.replace("px", "") : 13, + fontDefaults = { + style: placeholder.css("font-style"), + size: Math.round(0.8 * fontSizeDefault), + variant: placeholder.css("font-variant"), + weight: placeholder.css("font-weight"), + family: placeholder.css("font-family") + }; + + axisCount = options.xaxes.length || 1; + for (i = 0; i < axisCount; ++i) { + + axisOptions = options.xaxes[i]; + if (axisOptions && !axisOptions.tickColor) { + axisOptions.tickColor = axisOptions.color; + } + + axisOptions = $.extend(true, {}, options.xaxis, axisOptions); + options.xaxes[i] = axisOptions; + + if (axisOptions.font) { + axisOptions.font = $.extend({}, fontDefaults, axisOptions.font); + if (!axisOptions.font.color) { + axisOptions.font.color = axisOptions.color; + } + if (!axisOptions.font.lineHeight) { + axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15); + } + } + } + + axisCount = options.yaxes.length || 1; + for (i = 0; i < axisCount; ++i) { + + axisOptions = options.yaxes[i]; + if (axisOptions && !axisOptions.tickColor) { + axisOptions.tickColor = axisOptions.color; + } + + axisOptions = $.extend(true, {}, options.yaxis, axisOptions); + options.yaxes[i] = axisOptions; + + if (axisOptions.font) { + axisOptions.font = $.extend({}, fontDefaults, axisOptions.font); + if (!axisOptions.font.color) { + axisOptions.font.color = axisOptions.color; + } + if (!axisOptions.font.lineHeight) { + axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15); + } + } + } + + // backwards compatibility, to be removed in future + if (options.xaxis.noTicks && options.xaxis.ticks == null) + options.xaxis.ticks = options.xaxis.noTicks; + if (options.yaxis.noTicks && options.yaxis.ticks == null) + options.yaxis.ticks = options.yaxis.noTicks; + if (options.x2axis) { + options.xaxes[1] = $.extend(true, {}, options.xaxis, options.x2axis); + options.xaxes[1].position = "top"; + // Override the inherit to allow the axis to auto-scale + if (options.x2axis.min == null) { + options.xaxes[1].min = null; + } + if (options.x2axis.max == null) { + options.xaxes[1].max = null; + } + } + if (options.y2axis) { + options.yaxes[1] = $.extend(true, {}, options.yaxis, options.y2axis); + options.yaxes[1].position = "right"; + // Override the inherit to allow the axis to auto-scale + if (options.y2axis.min == null) { + options.yaxes[1].min = null; + } + if (options.y2axis.max == null) { + options.yaxes[1].max = null; + } + } + if (options.grid.coloredAreas) + options.grid.markings = options.grid.coloredAreas; + if (options.grid.coloredAreasColor) + options.grid.markingsColor = options.grid.coloredAreasColor; + if (options.lines) + $.extend(true, options.series.lines, options.lines); + if (options.points) + $.extend(true, options.series.points, options.points); + if (options.bars) + $.extend(true, options.series.bars, options.bars); + if (options.shadowSize != null) + options.series.shadowSize = options.shadowSize; + if (options.highlightColor != null) + options.series.highlightColor = options.highlightColor; + + // save options on axes for future reference + for (i = 0; i < options.xaxes.length; ++i) + getOrCreateAxis(xaxes, i + 1).options = options.xaxes[i]; + for (i = 0; i < options.yaxes.length; ++i) + getOrCreateAxis(yaxes, i + 1).options = options.yaxes[i]; + + // add hooks from options + for (var n in hooks) + if (options.hooks[n] && options.hooks[n].length) + hooks[n] = hooks[n].concat(options.hooks[n]); + + executeHooks(hooks.processOptions, [options]); + } + + function setData(d) { + series = parseData(d); + fillInSeriesOptions(); + processData(); + } + + function parseData(d) { + var res = []; + for (var i = 0; i < d.length; ++i) { + var s = $.extend(true, {}, options.series); + + if (d[i].data != null) { + s.data = d[i].data; // move the data instead of deep-copy + delete d[i].data; + + $.extend(true, s, d[i]); + + d[i].data = s.data; + } + else + s.data = d[i]; + res.push(s); + } + + return res; + } + + function axisNumber(obj, coord) { + var a = obj[coord + "axis"]; + if (typeof a == "object") // if we got a real axis, extract number + a = a.n; + if (typeof a != "number") + a = 1; // default to first axis + return a; + } + + function allAxes() { + // return flat array without annoying null entries + return $.grep(xaxes.concat(yaxes), function (a) { return a; }); + } + + function canvasToAxisCoords(pos) { + // return an object with x/y corresponding to all used axes + var res = {}, i, axis; + for (i = 0; i < xaxes.length; ++i) { + axis = xaxes[i]; + if (axis && axis.used) + res["x" + axis.n] = axis.c2p(pos.left); + } + + for (i = 0; i < yaxes.length; ++i) { + axis = yaxes[i]; + if (axis && axis.used) + res["y" + axis.n] = axis.c2p(pos.top); + } + + if (res.x1 !== undefined) + res.x = res.x1; + if (res.y1 !== undefined) + res.y = res.y1; + + return res; + } + + function axisToCanvasCoords(pos) { + // get canvas coords from the first pair of x/y found in pos + var res = {}, i, axis, key; + + for (i = 0; i < xaxes.length; ++i) { + axis = xaxes[i]; + if (axis && axis.used) { + key = "x" + axis.n; + if (pos[key] == null && axis.n == 1) + key = "x"; + + if (pos[key] != null) { + res.left = axis.p2c(pos[key]); + break; + } + } + } + + for (i = 0; i < yaxes.length; ++i) { + axis = yaxes[i]; + if (axis && axis.used) { + key = "y" + axis.n; + if (pos[key] == null && axis.n == 1) + key = "y"; + + if (pos[key] != null) { + res.top = axis.p2c(pos[key]); + break; + } + } + } + + return res; + } + + function getOrCreateAxis(axes, number) { + if (!axes[number - 1]) + axes[number - 1] = { + n: number, // save the number for future reference + direction: axes == xaxes ? "x" : "y", + options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis) + }; + + return axes[number - 1]; + } + + function fillInSeriesOptions() { + + var neededColors = series.length, maxIndex = -1, i; + + // Subtract the number of series that already have fixed colors or + // color indexes from the number that we still need to generate. + + for (i = 0; i < series.length; ++i) { + var sc = series[i].color; + if (sc != null) { + neededColors--; + if (typeof sc == "number" && sc > maxIndex) { + maxIndex = sc; + } + } + } + + // If any of the series have fixed color indexes, then we need to + // generate at least as many colors as the highest index. + + if (neededColors <= maxIndex) { + neededColors = maxIndex + 1; + } + + // Generate all the colors, using first the option colors and then + // variations on those colors once they're exhausted. + + var c, colors = [], colorPool = options.colors, + colorPoolSize = colorPool.length, variation = 0; + + for (i = 0; i < neededColors; i++) { + + c = $.color.parse(colorPool[i % colorPoolSize] || "#666"); + + // Each time we exhaust the colors in the pool we adjust + // a scaling factor used to produce more variations on + // those colors. The factor alternates negative/positive + // to produce lighter/darker colors. + + // Reset the variation after every few cycles, or else + // it will end up producing only white or black colors. + + if (i % colorPoolSize == 0 && i) { + if (variation >= 0) { + if (variation < 0.5) { + variation = -variation - 0.2; + } else variation = 0; + } else variation = -variation; + } + + colors[i] = c.scale('rgb', 1 + variation); + } + + // Finalize the series options, filling in their colors + + var colori = 0, s; + for (i = 0; i < series.length; ++i) { + s = series[i]; + + // assign colors + if (s.color == null) { + s.color = colors[colori].toString(); + ++colori; + } + else if (typeof s.color == "number") + s.color = colors[s.color].toString(); + + // turn on lines automatically in case nothing is set + if (s.lines.show == null) { + var v, show = true; + for (v in s) + if (s[v] && s[v].show) { + show = false; + break; + } + if (show) + s.lines.show = true; + } + + // If nothing was provided for lines.zero, default it to match + // lines.fill, since areas by default should extend to zero. + + if (s.lines.zero == null) { + s.lines.zero = !!s.lines.fill; + } + + // setup axes + s.xaxis = getOrCreateAxis(xaxes, axisNumber(s, "x")); + s.yaxis = getOrCreateAxis(yaxes, axisNumber(s, "y")); + } + } + + function processData() { + var topSentry = Number.POSITIVE_INFINITY, + bottomSentry = Number.NEGATIVE_INFINITY, + fakeInfinity = Number.MAX_VALUE, + i, j, k, m, length, + s, points, ps, x, y, axis, val, f, p, + data, format; + + function updateAxis(axis, min, max) { + if (min < axis.datamin && min != -fakeInfinity) + axis.datamin = min; + if (max > axis.datamax && max != fakeInfinity) + axis.datamax = max; + } + + $.each(allAxes(), function (_, axis) { + // init axis + axis.datamin = topSentry; + axis.datamax = bottomSentry; + axis.used = false; + }); + + for (i = 0; i < series.length; ++i) { + s = series[i]; + s.datapoints = { points: [] }; + + executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]); + } + + // first pass: clean and copy data + for (i = 0; i < series.length; ++i) { + s = series[i]; + + data = s.data; + format = s.datapoints.format; + + if (!format) { + format = []; + // find out how to copy + format.push({ x: true, number: true, required: true }); + format.push({ y: true, number: true, required: true }); + + if (s.bars.show || (s.lines.show && s.lines.fill)) { + var autoscale = !!((s.bars.show && s.bars.zero) || (s.lines.show && s.lines.zero)); + format.push({ y: true, number: true, required: false, defaultValue: 0, autoscale: autoscale }); + if (s.bars.horizontal) { + delete format[format.length - 1].y; + format[format.length - 1].x = true; + } + } + + s.datapoints.format = format; + } + + if (s.datapoints.pointsize != null) + continue; // already filled in + + s.datapoints.pointsize = format.length; + + ps = s.datapoints.pointsize; + points = s.datapoints.points; + + var insertSteps = s.lines.show && s.lines.steps; + s.xaxis.used = s.yaxis.used = true; + + for (j = k = 0; j < data.length; ++j, k += ps) { + p = data[j]; + + var nullify = p == null; + if (!nullify) { + for (m = 0; m < ps; ++m) { + val = p[m]; + f = format[m]; + + if (f) { + if (f.number && val != null) { + val = +val; // convert to number + if (isNaN(val)) + val = null; + else if (val == Infinity) + val = fakeInfinity; + else if (val == -Infinity) + val = -fakeInfinity; + } + + if (val == null) { + if (f.required) + nullify = true; + + if (f.defaultValue != null) + val = f.defaultValue; + } + } + + points[k + m] = val; + } + } + + if (nullify) { + for (m = 0; m < ps; ++m) { + val = points[k + m]; + if (val != null) { + f = format[m]; + // extract min/max info + if (f.autoscale !== false) { + if (f.x) { + updateAxis(s.xaxis, val, val); + } + if (f.y) { + updateAxis(s.yaxis, val, val); + } + } + } + points[k + m] = null; + } + } + else { + // a little bit of line specific stuff that + // perhaps shouldn't be here, but lacking + // better means... + if (insertSteps && k > 0 + && points[k - ps] != null + && points[k - ps] != points[k] + && points[k - ps + 1] != points[k + 1]) { + // copy the point to make room for a middle point + for (m = 0; m < ps; ++m) + points[k + ps + m] = points[k + m]; + + // middle point has same y + points[k + 1] = points[k - ps + 1]; + + // we've added a point, better reflect that + k += ps; + } + } + } + } + + // give the hooks a chance to run + for (i = 0; i < series.length; ++i) { + s = series[i]; + + executeHooks(hooks.processDatapoints, [ s, s.datapoints]); + } + + // second pass: find datamax/datamin for auto-scaling + for (i = 0; i < series.length; ++i) { + s = series[i]; + points = s.datapoints.points; + ps = s.datapoints.pointsize; + format = s.datapoints.format; + + var xmin = topSentry, ymin = topSentry, + xmax = bottomSentry, ymax = bottomSentry; + + for (j = 0; j < points.length; j += ps) { + if (points[j] == null) + continue; + + for (m = 0; m < ps; ++m) { + val = points[j + m]; + f = format[m]; + if (!f || f.autoscale === false || val == fakeInfinity || val == -fakeInfinity) + continue; + + if (f.x) { + if (val < xmin) + xmin = val; + if (val > xmax) + xmax = val; + } + if (f.y) { + if (val < ymin) + ymin = val; + if (val > ymax) + ymax = val; + } + } + } + + if (s.bars.show) { + // make sure we got room for the bar on the dancing floor + var delta; + + switch (s.bars.align) { + case "left": + delta = 0; + break; + case "right": + delta = -s.bars.barWidth; + break; + default: + delta = -s.bars.barWidth / 2; + } + + if (s.bars.horizontal) { + ymin += delta; + ymax += delta + s.bars.barWidth; + } + else { + xmin += delta; + xmax += delta + s.bars.barWidth; + } + } + + updateAxis(s.xaxis, xmin, xmax); + updateAxis(s.yaxis, ymin, ymax); + } + + $.each(allAxes(), function (_, axis) { + if (axis.datamin == topSentry) + axis.datamin = null; + if (axis.datamax == bottomSentry) + axis.datamax = null; + }); + } + + function setupCanvases() { + + // Make sure the placeholder is clear of everything except canvases + // from a previous plot in this container that we'll try to re-use. + + placeholder.css("padding", 0) // padding messes up the positioning + .children().filter(function(){ + return !$(this).hasClass("flot-overlay") && !$(this).hasClass('flot-base'); + }).remove(); + + if (placeholder.css("position") == 'static') + placeholder.css("position", "relative"); // for positioning labels and overlay + + surface = new Canvas("flot-base", placeholder); + overlay = new Canvas("flot-overlay", placeholder); // overlay canvas for interactive features + + ctx = surface.context; + octx = overlay.context; + + // define which element we're listening for events on + eventHolder = $(overlay.element).unbind(); + + // If we're re-using a plot object, shut down the old one + + var existing = placeholder.data("plot"); + + if (existing) { + existing.shutdown(); + overlay.clear(); + } + + // save in case we get replotted + placeholder.data("plot", plot); + } + + function bindEvents() { + // bind events + if (options.grid.hoverable) { + eventHolder.mousemove(onMouseMove); + + // Use bind, rather than .mouseleave, because we officially + // still support jQuery 1.2.6, which doesn't define a shortcut + // for mouseenter or mouseleave. This was a bug/oversight that + // was fixed somewhere around 1.3.x. We can return to using + // .mouseleave when we drop support for 1.2.6. + + eventHolder.bind("mouseleave", onMouseLeave); + } + + if (options.grid.clickable) + eventHolder.click(onClick); + + executeHooks(hooks.bindEvents, [eventHolder]); + } + + function shutdown() { + if (redrawTimeout) + clearTimeout(redrawTimeout); + + eventHolder.unbind("mousemove", onMouseMove); + eventHolder.unbind("mouseleave", onMouseLeave); + eventHolder.unbind("click", onClick); + + executeHooks(hooks.shutdown, [eventHolder]); + } + + function setTransformationHelpers(axis) { + // set helper functions on the axis, assumes plot area + // has been computed already + + function identity(x) { return x; } + + var s, m, t = axis.options.transform || identity, + it = axis.options.inverseTransform; + + // precompute how much the axis is scaling a point + // in canvas space + if (axis.direction == "x") { + s = axis.scale = plotWidth / Math.abs(t(axis.max) - t(axis.min)); + m = Math.min(t(axis.max), t(axis.min)); + } + else { + s = axis.scale = plotHeight / Math.abs(t(axis.max) - t(axis.min)); + s = -s; + m = Math.max(t(axis.max), t(axis.min)); + } + + // data point to canvas coordinate + if (t == identity) // slight optimization + axis.p2c = function (p) { return (p - m) * s; }; + else + axis.p2c = function (p) { return (t(p) - m) * s; }; + // canvas coordinate to data point + if (!it) + axis.c2p = function (c) { return m + c / s; }; + else + axis.c2p = function (c) { return it(m + c / s); }; + } + + function measureTickLabels(axis) { + + var opts = axis.options, + ticks = axis.ticks || [], + labelWidth = opts.labelWidth || 0, + labelHeight = opts.labelHeight || 0, + maxWidth = labelWidth || (axis.direction == "x" ? Math.floor(surface.width / (ticks.length || 1)) : null), + legacyStyles = axis.direction + "Axis " + axis.direction + axis.n + "Axis", + layer = "flot-" + axis.direction + "-axis flot-" + axis.direction + axis.n + "-axis " + legacyStyles, + font = opts.font || "flot-tick-label tickLabel"; + + for (var i = 0; i < ticks.length; ++i) { + + var t = ticks[i]; + + if (!t.label) + continue; + + var info = surface.getTextInfo(layer, t.label, font, null, maxWidth); + + labelWidth = Math.max(labelWidth, info.width); + labelHeight = Math.max(labelHeight, info.height); + } + + axis.labelWidth = opts.labelWidth || labelWidth; + axis.labelHeight = opts.labelHeight || labelHeight; + } + + function allocateAxisBoxFirstPhase(axis) { + // find the bounding box of the axis by looking at label + // widths/heights and ticks, make room by diminishing the + // plotOffset; this first phase only looks at one + // dimension per axis, the other dimension depends on the + // other axes so will have to wait + + var lw = axis.labelWidth, + lh = axis.labelHeight, + pos = axis.options.position, + isXAxis = axis.direction === "x", + tickLength = axis.options.tickLength, + axisMargin = options.grid.axisMargin, + padding = options.grid.labelMargin, + innermost = true, + outermost = true, + first = true, + found = false; + + // Determine the axis's position in its direction and on its side + + $.each(isXAxis ? xaxes : yaxes, function(i, a) { + if (a && (a.show || a.reserveSpace)) { + if (a === axis) { + found = true; + } else if (a.options.position === pos) { + if (found) { + outermost = false; + } else { + innermost = false; + } + } + if (!found) { + first = false; + } + } + }); + + // The outermost axis on each side has no margin + + if (outermost) { + axisMargin = 0; + } + + // The ticks for the first axis in each direction stretch across + + if (tickLength == null) { + tickLength = first ? "full" : 5; + } + + if (!isNaN(+tickLength)) + padding += +tickLength; + + if (isXAxis) { + lh += padding; + + if (pos == "bottom") { + plotOffset.bottom += lh + axisMargin; + axis.box = { top: surface.height - plotOffset.bottom, height: lh }; + } + else { + axis.box = { top: plotOffset.top + axisMargin, height: lh }; + plotOffset.top += lh + axisMargin; + } + } + else { + lw += padding; + + if (pos == "left") { + axis.box = { left: plotOffset.left + axisMargin, width: lw }; + plotOffset.left += lw + axisMargin; + } + else { + plotOffset.right += lw + axisMargin; + axis.box = { left: surface.width - plotOffset.right, width: lw }; + } + } + + // save for future reference + axis.position = pos; + axis.tickLength = tickLength; + axis.box.padding = padding; + axis.innermost = innermost; + } + + function allocateAxisBoxSecondPhase(axis) { + // now that all axis boxes have been placed in one + // dimension, we can set the remaining dimension coordinates + if (axis.direction == "x") { + axis.box.left = plotOffset.left - axis.labelWidth / 2; + axis.box.width = surface.width - plotOffset.left - plotOffset.right + axis.labelWidth; + } + else { + axis.box.top = plotOffset.top - axis.labelHeight / 2; + axis.box.height = surface.height - plotOffset.bottom - plotOffset.top + axis.labelHeight; + } + } + + function adjustLayoutForThingsStickingOut() { + // possibly adjust plot offset to ensure everything stays + // inside the canvas and isn't clipped off + + var minMargin = options.grid.minBorderMargin, + axis, i; + + // check stuff from the plot (FIXME: this should just read + // a value from the series, otherwise it's impossible to + // customize) + if (minMargin == null) { + minMargin = 0; + for (i = 0; i < series.length; ++i) + minMargin = Math.max(minMargin, 2 * (series[i].points.radius + series[i].points.lineWidth/2)); + } + + var margins = { + left: minMargin, + right: minMargin, + top: minMargin, + bottom: minMargin + }; + + // check axis labels, note we don't check the actual + // labels but instead use the overall width/height to not + // jump as much around with replots + $.each(allAxes(), function (_, axis) { + if (axis.reserveSpace && axis.ticks && axis.ticks.length) { + if (axis.direction === "x") { + margins.left = Math.max(margins.left, axis.labelWidth / 2); + margins.right = Math.max(margins.right, axis.labelWidth / 2); + } else { + margins.bottom = Math.max(margins.bottom, axis.labelHeight / 2); + margins.top = Math.max(margins.top, axis.labelHeight / 2); + } + } + }); + + plotOffset.left = Math.ceil(Math.max(margins.left, plotOffset.left)); + plotOffset.right = Math.ceil(Math.max(margins.right, plotOffset.right)); + plotOffset.top = Math.ceil(Math.max(margins.top, plotOffset.top)); + plotOffset.bottom = Math.ceil(Math.max(margins.bottom, plotOffset.bottom)); + } + + function setupGrid() { + var i, axes = allAxes(), showGrid = options.grid.show; + + // Initialize the plot's offset from the edge of the canvas + + for (var a in plotOffset) { + var margin = options.grid.margin || 0; + plotOffset[a] = typeof margin == "number" ? margin : margin[a] || 0; + } + + executeHooks(hooks.processOffset, [plotOffset]); + + // If the grid is visible, add its border width to the offset + + for (var a in plotOffset) { + if(typeof(options.grid.borderWidth) == "object") { + plotOffset[a] += showGrid ? options.grid.borderWidth[a] : 0; + } + else { + plotOffset[a] += showGrid ? options.grid.borderWidth : 0; + } + } + + $.each(axes, function (_, axis) { + var axisOpts = axis.options; + axis.show = axisOpts.show == null ? axis.used : axisOpts.show; + axis.reserveSpace = axisOpts.reserveSpace == null ? axis.show : axisOpts.reserveSpace; + setRange(axis); + }); + + if (showGrid) { + + var allocatedAxes = $.grep(axes, function (axis) { + return axis.show || axis.reserveSpace; + }); + + $.each(allocatedAxes, function (_, axis) { + // make the ticks + setupTickGeneration(axis); + setTicks(axis); + snapRangeToTicks(axis, axis.ticks); + // find labelWidth/Height for axis + measureTickLabels(axis); + }); + + // with all dimensions calculated, we can compute the + // axis bounding boxes, start from the outside + // (reverse order) + for (i = allocatedAxes.length - 1; i >= 0; --i) + allocateAxisBoxFirstPhase(allocatedAxes[i]); + + // make sure we've got enough space for things that + // might stick out + adjustLayoutForThingsStickingOut(); + + $.each(allocatedAxes, function (_, axis) { + allocateAxisBoxSecondPhase(axis); + }); + } + + plotWidth = surface.width - plotOffset.left - plotOffset.right; + plotHeight = surface.height - plotOffset.bottom - plotOffset.top; + + // now we got the proper plot dimensions, we can compute the scaling + $.each(axes, function (_, axis) { + setTransformationHelpers(axis); + }); + + if (showGrid) { + drawAxisLabels(); + } + + insertLegend(); + } + + function setRange(axis) { + var opts = axis.options, + min = +(opts.min != null ? opts.min : axis.datamin), + max = +(opts.max != null ? opts.max : axis.datamax), + delta = max - min; + + if (delta == 0.0) { + // degenerate case + var widen = max == 0 ? 1 : 0.01; + + if (opts.min == null) + min -= widen; + // always widen max if we couldn't widen min to ensure we + // don't fall into min == max which doesn't work + if (opts.max == null || opts.min != null) + max += widen; + } + else { + // consider autoscaling + var margin = opts.autoscaleMargin; + if (margin != null) { + if (opts.min == null) { + min -= delta * margin; + // make sure we don't go below zero if all values + // are positive + if (min < 0 && axis.datamin != null && axis.datamin >= 0) + min = 0; + } + if (opts.max == null) { + max += delta * margin; + if (max > 0 && axis.datamax != null && axis.datamax <= 0) + max = 0; + } + } + } + axis.min = min; + axis.max = max; + } + + function setupTickGeneration(axis) { + var opts = axis.options; + + // estimate number of ticks + var noTicks; + if (typeof opts.ticks == "number" && opts.ticks > 0) + noTicks = opts.ticks; + else + // heuristic based on the model a*sqrt(x) fitted to + // some data points that seemed reasonable + noTicks = 0.3 * Math.sqrt(axis.direction == "x" ? surface.width : surface.height); + + var delta = (axis.max - axis.min) / noTicks, + dec = -Math.floor(Math.log(delta) / Math.LN10), + maxDec = opts.tickDecimals; + + if (maxDec != null && dec > maxDec) { + dec = maxDec; + } + + var magn = Math.pow(10, -dec), + norm = delta / magn, // norm is between 1.0 and 10.0 + size; + + if (norm < 1.5) { + size = 1; + } else if (norm < 3) { + size = 2; + // special case for 2.5, requires an extra decimal + if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) { + size = 2.5; + ++dec; + } + } else if (norm < 7.5) { + size = 5; + } else { + size = 10; + } + + size *= magn; + + if (opts.minTickSize != null && size < opts.minTickSize) { + size = opts.minTickSize; + } + + axis.delta = delta; + axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec); + axis.tickSize = opts.tickSize || size; + + // Time mode was moved to a plug-in in 0.8, and since so many people use it + // we'll add an especially friendly reminder to make sure they included it. + + if (opts.mode == "time" && !axis.tickGenerator) { + throw new Error("Time mode requires the flot.time plugin."); + } + + // Flot supports base-10 axes; any other mode else is handled by a plug-in, + // like flot.time.js. + + if (!axis.tickGenerator) { + + axis.tickGenerator = function (axis) { + + var ticks = [], + start = floorInBase(axis.min, axis.tickSize), + i = 0, + v = Number.NaN, + prev; + + do { + prev = v; + v = start + i * axis.tickSize; + ticks.push(v); + ++i; + } while (v < axis.max && v != prev); + return ticks; + }; + + axis.tickFormatter = function (value, axis) { + + var factor = axis.tickDecimals ? Math.pow(10, axis.tickDecimals) : 1; + var formatted = "" + Math.round(value * factor) / factor; + + // If tickDecimals was specified, ensure that we have exactly that + // much precision; otherwise default to the value's own precision. + + if (axis.tickDecimals != null) { + var decimal = formatted.indexOf("."); + var precision = decimal == -1 ? 0 : formatted.length - decimal - 1; + if (precision < axis.tickDecimals) { + return (precision ? formatted : formatted + ".") + ("" + factor).substr(1, axis.tickDecimals - precision); + } + } + + return formatted; + }; + } + + if ($.isFunction(opts.tickFormatter)) + axis.tickFormatter = function (v, axis) { return "" + opts.tickFormatter(v, axis); }; + + if (opts.alignTicksWithAxis != null) { + var otherAxis = (axis.direction == "x" ? xaxes : yaxes)[opts.alignTicksWithAxis - 1]; + if (otherAxis && otherAxis.used && otherAxis != axis) { + // consider snapping min/max to outermost nice ticks + var niceTicks = axis.tickGenerator(axis); + if (niceTicks.length > 0) { + if (opts.min == null) + axis.min = Math.min(axis.min, niceTicks[0]); + if (opts.max == null && niceTicks.length > 1) + axis.max = Math.max(axis.max, niceTicks[niceTicks.length - 1]); + } + + axis.tickGenerator = function (axis) { + // copy ticks, scaled to this axis + var ticks = [], v, i; + for (i = 0; i < otherAxis.ticks.length; ++i) { + v = (otherAxis.ticks[i].v - otherAxis.min) / (otherAxis.max - otherAxis.min); + v = axis.min + v * (axis.max - axis.min); + ticks.push(v); + } + return ticks; + }; + + // we might need an extra decimal since forced + // ticks don't necessarily fit naturally + if (!axis.mode && opts.tickDecimals == null) { + var extraDec = Math.max(0, -Math.floor(Math.log(axis.delta) / Math.LN10) + 1), + ts = axis.tickGenerator(axis); + + // only proceed if the tick interval rounded + // with an extra decimal doesn't give us a + // zero at end + if (!(ts.length > 1 && /\..*0$/.test((ts[1] - ts[0]).toFixed(extraDec)))) + axis.tickDecimals = extraDec; + } + } + } + } + + function setTicks(axis) { + var oticks = axis.options.ticks, ticks = []; + if (oticks == null || (typeof oticks == "number" && oticks > 0)) + ticks = axis.tickGenerator(axis); + else if (oticks) { + if ($.isFunction(oticks)) + // generate the ticks + ticks = oticks(axis); + else + ticks = oticks; + } + + // clean up/labelify the supplied ticks, copy them over + var i, v; + axis.ticks = []; + for (i = 0; i < ticks.length; ++i) { + var label = null; + var t = ticks[i]; + if (typeof t == "object") { + v = +t[0]; + if (t.length > 1) + label = t[1]; + } + else + v = +t; + if (label == null) + label = axis.tickFormatter(v, axis); + if (!isNaN(v)) + axis.ticks.push({ v: v, label: label }); + } + } + + function snapRangeToTicks(axis, ticks) { + if (axis.options.autoscaleMargin && ticks.length > 0) { + // snap to ticks + if (axis.options.min == null) + axis.min = Math.min(axis.min, ticks[0].v); + if (axis.options.max == null && ticks.length > 1) + axis.max = Math.max(axis.max, ticks[ticks.length - 1].v); + } + } + + function draw() { + + surface.clear(); + + executeHooks(hooks.drawBackground, [ctx]); + + var grid = options.grid; + + // draw background, if any + if (grid.show && grid.backgroundColor) + drawBackground(); + + if (grid.show && !grid.aboveData) { + drawGrid(); + } + + for (var i = 0; i < series.length; ++i) { + executeHooks(hooks.drawSeries, [ctx, series[i]]); + drawSeries(series[i]); + } + + executeHooks(hooks.draw, [ctx]); + + if (grid.show && grid.aboveData) { + drawGrid(); + } + + surface.render(); + + // A draw implies that either the axes or data have changed, so we + // should probably update the overlay highlights as well. + + triggerRedrawOverlay(); + } + + function extractRange(ranges, coord) { + var axis, from, to, key, axes = allAxes(); + + for (var i = 0; i < axes.length; ++i) { + axis = axes[i]; + if (axis.direction == coord) { + key = coord + axis.n + "axis"; + if (!ranges[key] && axis.n == 1) + key = coord + "axis"; // support x1axis as xaxis + if (ranges[key]) { + from = ranges[key].from; + to = ranges[key].to; + break; + } + } + } + + // backwards-compat stuff - to be removed in future + if (!ranges[key]) { + axis = coord == "x" ? xaxes[0] : yaxes[0]; + from = ranges[coord + "1"]; + to = ranges[coord + "2"]; + } + + // auto-reverse as an added bonus + if (from != null && to != null && from > to) { + var tmp = from; + from = to; + to = tmp; + } + + return { from: from, to: to, axis: axis }; + } + + function drawBackground() { + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, "rgba(255, 255, 255, 0)"); + ctx.fillRect(0, 0, plotWidth, plotHeight); + ctx.restore(); + } + + function drawGrid() { + var i, axes, bw, bc; + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + // draw markings + var markings = options.grid.markings; + if (markings) { + if ($.isFunction(markings)) { + axes = plot.getAxes(); + // xmin etc. is backwards compatibility, to be + // removed in the future + axes.xmin = axes.xaxis.min; + axes.xmax = axes.xaxis.max; + axes.ymin = axes.yaxis.min; + axes.ymax = axes.yaxis.max; + + markings = markings(axes); + } + + for (i = 0; i < markings.length; ++i) { + var m = markings[i], + xrange = extractRange(m, "x"), + yrange = extractRange(m, "y"); + + // fill in missing + if (xrange.from == null) + xrange.from = xrange.axis.min; + if (xrange.to == null) + xrange.to = xrange.axis.max; + if (yrange.from == null) + yrange.from = yrange.axis.min; + if (yrange.to == null) + yrange.to = yrange.axis.max; + + // clip + if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max || + yrange.to < yrange.axis.min || yrange.from > yrange.axis.max) + continue; + + xrange.from = Math.max(xrange.from, xrange.axis.min); + xrange.to = Math.min(xrange.to, xrange.axis.max); + yrange.from = Math.max(yrange.from, yrange.axis.min); + yrange.to = Math.min(yrange.to, yrange.axis.max); + + var xequal = xrange.from === xrange.to, + yequal = yrange.from === yrange.to; + + if (xequal && yequal) { + continue; + } + + // then draw + xrange.from = Math.floor(xrange.axis.p2c(xrange.from)); + xrange.to = Math.floor(xrange.axis.p2c(xrange.to)); + yrange.from = Math.floor(yrange.axis.p2c(yrange.from)); + yrange.to = Math.floor(yrange.axis.p2c(yrange.to)); + + if (xequal || yequal) { + var lineWidth = m.lineWidth || options.grid.markingsLineWidth, + subPixel = lineWidth % 2 ? 0.5 : 0; + ctx.beginPath(); + ctx.strokeStyle = m.color || options.grid.markingsColor; + ctx.lineWidth = lineWidth; + if (xequal) { + ctx.moveTo(xrange.to + subPixel, yrange.from); + ctx.lineTo(xrange.to + subPixel, yrange.to); + } else { + ctx.moveTo(xrange.from, yrange.to + subPixel); + ctx.lineTo(xrange.to, yrange.to + subPixel); + } + ctx.stroke(); + } else { + ctx.fillStyle = m.color || options.grid.markingsColor; + ctx.fillRect(xrange.from, yrange.to, + xrange.to - xrange.from, + yrange.from - yrange.to); + } + } + } + + // draw the ticks + axes = allAxes(); + bw = options.grid.borderWidth; + + for (var j = 0; j < axes.length; ++j) { + var axis = axes[j], box = axis.box, + t = axis.tickLength, x, y, xoff, yoff; + if (!axis.show || axis.ticks.length == 0) + continue; + + ctx.lineWidth = 1; + + // find the edges + if (axis.direction == "x") { + x = 0; + if (t == "full") + y = (axis.position == "top" ? 0 : plotHeight); + else + y = box.top - plotOffset.top + (axis.position == "top" ? box.height : 0); + } + else { + y = 0; + if (t == "full") + x = (axis.position == "left" ? 0 : plotWidth); + else + x = box.left - plotOffset.left + (axis.position == "left" ? box.width : 0); + } + + // draw tick bar + if (!axis.innermost) { + ctx.strokeStyle = axis.options.color; + ctx.beginPath(); + xoff = yoff = 0; + if (axis.direction == "x") + xoff = plotWidth + 1; + else + yoff = plotHeight + 1; + + if (ctx.lineWidth == 1) { + if (axis.direction == "x") { + y = Math.floor(y) + 0.5; + } else { + x = Math.floor(x) + 0.5; + } + } + + ctx.moveTo(x, y); + ctx.lineTo(x + xoff, y + yoff); + ctx.stroke(); + } + + // draw ticks + + ctx.strokeStyle = axis.options.tickColor; + + ctx.beginPath(); + for (i = 0; i < axis.ticks.length; ++i) { + var v = axis.ticks[i].v; + + xoff = yoff = 0; + + if (isNaN(v) || v < axis.min || v > axis.max + // skip those lying on the axes if we got a border + || (t == "full" + && ((typeof bw == "object" && bw[axis.position] > 0) || bw > 0) + && (v == axis.min || v == axis.max))) + continue; + + if (axis.direction == "x") { + x = axis.p2c(v); + yoff = t == "full" ? -plotHeight : t; + + if (axis.position == "top") + yoff = -yoff; + } + else { + y = axis.p2c(v); + xoff = t == "full" ? -plotWidth : t; + + if (axis.position == "left") + xoff = -xoff; + } + + if (ctx.lineWidth == 1) { + if (axis.direction == "x") + x = Math.floor(x) + 0.5; + else + y = Math.floor(y) + 0.5; + } + + ctx.moveTo(x, y); + ctx.lineTo(x + xoff, y + yoff); + } + + ctx.stroke(); + } + + + // draw border + if (bw) { + // If either borderWidth or borderColor is an object, then draw the border + // line by line instead of as one rectangle + bc = options.grid.borderColor; + if(typeof bw == "object" || typeof bc == "object") { + if (typeof bw !== "object") { + bw = {top: bw, right: bw, bottom: bw, left: bw}; + } + if (typeof bc !== "object") { + bc = {top: bc, right: bc, bottom: bc, left: bc}; + } + + if (bw.top > 0) { + ctx.strokeStyle = bc.top; + ctx.lineWidth = bw.top; + ctx.beginPath(); + ctx.moveTo(0 - bw.left, 0 - bw.top/2); + ctx.lineTo(plotWidth, 0 - bw.top/2); + ctx.stroke(); + } + + if (bw.right > 0) { + ctx.strokeStyle = bc.right; + ctx.lineWidth = bw.right; + ctx.beginPath(); + ctx.moveTo(plotWidth + bw.right / 2, 0 - bw.top); + ctx.lineTo(plotWidth + bw.right / 2, plotHeight); + ctx.stroke(); + } + + if (bw.bottom > 0) { + ctx.strokeStyle = bc.bottom; + ctx.lineWidth = bw.bottom; + ctx.beginPath(); + ctx.moveTo(plotWidth + bw.right, plotHeight + bw.bottom / 2); + ctx.lineTo(0, plotHeight + bw.bottom / 2); + ctx.stroke(); + } + + if (bw.left > 0) { + ctx.strokeStyle = bc.left; + ctx.lineWidth = bw.left; + ctx.beginPath(); + ctx.moveTo(0 - bw.left/2, plotHeight + bw.bottom); + ctx.lineTo(0- bw.left/2, 0); + ctx.stroke(); + } + } + else { + ctx.lineWidth = bw; + ctx.strokeStyle = options.grid.borderColor; + ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw); + } + } + + ctx.restore(); + } + + function drawAxisLabels() { + + $.each(allAxes(), function (_, axis) { + var box = axis.box, + legacyStyles = axis.direction + "Axis " + axis.direction + axis.n + "Axis", + layer = "flot-" + axis.direction + "-axis flot-" + axis.direction + axis.n + "-axis " + legacyStyles, + font = axis.options.font || "flot-tick-label tickLabel", + tick, x, y, halign, valign; + + // Remove text before checking for axis.show and ticks.length; + // otherwise plugins, like flot-tickrotor, that draw their own + // tick labels will end up with both theirs and the defaults. + + surface.removeText(layer); + + if (!axis.show || axis.ticks.length == 0) + return; + + for (var i = 0; i < axis.ticks.length; ++i) { + + tick = axis.ticks[i]; + if (!tick.label || tick.v < axis.min || tick.v > axis.max) + continue; + + if (axis.direction == "x") { + halign = "center"; + x = plotOffset.left + axis.p2c(tick.v); + if (axis.position == "bottom") { + y = box.top + box.padding; + } else { + y = box.top + box.height - box.padding; + valign = "bottom"; + } + } else { + valign = "middle"; + y = plotOffset.top + axis.p2c(tick.v); + if (axis.position == "left") { + x = box.left + box.width - box.padding; + halign = "right"; + } else { + x = box.left + box.padding; + } + } + + surface.addText(layer, x, y, tick.label, font, null, null, halign, valign); + } + }); + } + + function drawSeries(series) { + if (series.lines.show) + drawSeriesLines(series); + if (series.bars.show) + drawSeriesBars(series); + if (series.points.show) + drawSeriesPoints(series); + } + + function drawSeriesLines(series) { + function plotLine(datapoints, xoffset, yoffset, axisx, axisy) { + var points = datapoints.points, + ps = datapoints.pointsize, + prevx = null, prevy = null; + + ctx.beginPath(); + for (var i = ps; i < points.length; i += ps) { + var x1 = points[i - ps], y1 = points[i - ps + 1], + x2 = points[i], y2 = points[i + 1]; + + if (x1 == null || x2 == null) + continue; + + // clip with ymin + if (y1 <= y2 && y1 < axisy.min) { + if (y2 < axisy.min) + continue; // line segment is outside + // compute new intersection point + x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.min; + } + else if (y2 <= y1 && y2 < axisy.min) { + if (y1 < axisy.min) + continue; + x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.min; + } + + // clip with ymax + if (y1 >= y2 && y1 > axisy.max) { + if (y2 > axisy.max) + continue; + x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.max; + } + else if (y2 >= y1 && y2 > axisy.max) { + if (y1 > axisy.max) + continue; + x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.max; + } + + // clip with xmin + if (x1 <= x2 && x1 < axisx.min) { + if (x2 < axisx.min) + continue; + y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.min; + } + else if (x2 <= x1 && x2 < axisx.min) { + if (x1 < axisx.min) + continue; + y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.min; + } + + // clip with xmax + if (x1 >= x2 && x1 > axisx.max) { + if (x2 > axisx.max) + continue; + y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.max; + } + else if (x2 >= x1 && x2 > axisx.max) { + if (x1 > axisx.max) + continue; + y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.max; + } + + if (x1 != prevx || y1 != prevy) + ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset); + + prevx = x2; + prevy = y2; + ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset); + } + ctx.stroke(); + } + + function plotLineArea(datapoints, axisx, axisy) { + var points = datapoints.points, + ps = datapoints.pointsize, + bottom = Math.min(Math.max(0, axisy.min), axisy.max), + i = 0, top, areaOpen = false, + ypos = 1, segmentStart = 0, segmentEnd = 0; + + // we process each segment in two turns, first forward + // direction to sketch out top, then once we hit the + // end we go backwards to sketch the bottom + while (true) { + if (ps > 0 && i > points.length + ps) + break; + + i += ps; // ps is negative if going backwards + + var x1 = points[i - ps], + y1 = points[i - ps + ypos], + x2 = points[i], y2 = points[i + ypos]; + + if (areaOpen) { + if (ps > 0 && x1 != null && x2 == null) { + // at turning point + segmentEnd = i; + ps = -ps; + ypos = 2; + continue; + } + + if (ps < 0 && i == segmentStart + ps) { + // done with the reverse sweep + ctx.fill(); + areaOpen = false; + ps = -ps; + ypos = 1; + i = segmentStart = segmentEnd + ps; + continue; + } + } + + if (x1 == null || x2 == null) + continue; + + // clip x values + + // clip with xmin + if (x1 <= x2 && x1 < axisx.min) { + if (x2 < axisx.min) + continue; + y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.min; + } + else if (x2 <= x1 && x2 < axisx.min) { + if (x1 < axisx.min) + continue; + y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.min; + } + + // clip with xmax + if (x1 >= x2 && x1 > axisx.max) { + if (x2 > axisx.max) + continue; + y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.max; + } + else if (x2 >= x1 && x2 > axisx.max) { + if (x1 > axisx.max) + continue; + y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.max; + } + + if (!areaOpen) { + // open area + ctx.beginPath(); + ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom)); + areaOpen = true; + } + + // now first check the case where both is outside + if (y1 >= axisy.max && y2 >= axisy.max) { + ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max)); + continue; + } + else if (y1 <= axisy.min && y2 <= axisy.min) { + ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min)); + continue; + } + + // else it's a bit more complicated, there might + // be a flat maxed out rectangle first, then a + // triangular cutout or reverse; to find these + // keep track of the current x values + var x1old = x1, x2old = x2; + + // clip the y values, without shortcutting, we + // go through all cases in turn + + // clip with ymin + if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) { + x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.min; + } + else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) { + x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.min; + } + + // clip with ymax + if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) { + x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.max; + } + else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) { + x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.max; + } + + // if the x value was changed we got a rectangle + // to fill + if (x1 != x1old) { + ctx.lineTo(axisx.p2c(x1old), axisy.p2c(y1)); + // it goes to (x1, y1), but we fill that below + } + + // fill triangular section, this sometimes result + // in redundant points if (x1, y1) hasn't changed + // from previous line to, but we just ignore that + ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); + + // fill the other rectangle if it's there + if (x2 != x2old) { + ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); + ctx.lineTo(axisx.p2c(x2old), axisy.p2c(y2)); + } + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + ctx.lineJoin = "round"; + + var lw = series.lines.lineWidth, + sw = series.shadowSize; + // FIXME: consider another form of shadow when filling is turned on + if (lw > 0 && sw > 0) { + // draw shadow as a thick and thin line with transparency + ctx.lineWidth = sw; + ctx.strokeStyle = "rgba(0,0,0,0.1)"; + // position shadow at angle from the mid of line + var angle = Math.PI/18; + plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis); + ctx.lineWidth = sw/2; + plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis); + } + + ctx.lineWidth = lw; + ctx.strokeStyle = series.color; + var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight); + if (fillStyle) { + ctx.fillStyle = fillStyle; + plotLineArea(series.datapoints, series.xaxis, series.yaxis); + } + + if (lw > 0) + plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis); + ctx.restore(); + } + + function drawSeriesPoints(series) { + function plotPoints(datapoints, radius, fillStyle, offset, shadow, axisx, axisy, symbol) { + var points = datapoints.points, ps = datapoints.pointsize; + + for (var i = 0; i < points.length; i += ps) { + var x = points[i], y = points[i + 1]; + if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) + continue; + + ctx.beginPath(); + x = axisx.p2c(x); + y = axisy.p2c(y) + offset; + if (symbol == "circle") + ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false); + else + symbol(ctx, x, y, radius, shadow); + ctx.closePath(); + + if (fillStyle) { + ctx.fillStyle = fillStyle; + ctx.fill(); + } + ctx.stroke(); + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + var lw = series.points.lineWidth, + sw = series.shadowSize, + radius = series.points.radius, + symbol = series.points.symbol; + + // If the user sets the line width to 0, we change it to a very + // small value. A line width of 0 seems to force the default of 1. + // Doing the conditional here allows the shadow setting to still be + // optional even with a lineWidth of 0. + + if( lw == 0 ) + lw = 0.0001; + + if (lw > 0 && sw > 0) { + // draw shadow in two steps + var w = sw / 2; + ctx.lineWidth = w; + ctx.strokeStyle = "rgba(0,0,0,0.1)"; + plotPoints(series.datapoints, radius, null, w + w/2, true, + series.xaxis, series.yaxis, symbol); + + ctx.strokeStyle = "rgba(0,0,0,0.2)"; + plotPoints(series.datapoints, radius, null, w/2, true, + series.xaxis, series.yaxis, symbol); + } + + ctx.lineWidth = lw; + ctx.strokeStyle = series.color; + plotPoints(series.datapoints, radius, + getFillStyle(series.points, series.color), 0, false, + series.xaxis, series.yaxis, symbol); + ctx.restore(); + } + + function drawBar(x, y, b, barLeft, barRight, fillStyleCallback, axisx, axisy, c, horizontal, lineWidth) { + var left, right, bottom, top, + drawLeft, drawRight, drawTop, drawBottom, + tmp; + + // in horizontal mode, we start the bar from the left + // instead of from the bottom so it appears to be + // horizontal rather than vertical + if (horizontal) { + drawBottom = drawRight = drawTop = true; + drawLeft = false; + left = b; + right = x; + top = y + barLeft; + bottom = y + barRight; + + // account for negative bars + if (right < left) { + tmp = right; + right = left; + left = tmp; + drawLeft = true; + drawRight = false; + } + } + else { + drawLeft = drawRight = drawTop = true; + drawBottom = false; + left = x + barLeft; + right = x + barRight; + bottom = b; + top = y; + + // account for negative bars + if (top < bottom) { + tmp = top; + top = bottom; + bottom = tmp; + drawBottom = true; + drawTop = false; + } + } + + // clip + if (right < axisx.min || left > axisx.max || + top < axisy.min || bottom > axisy.max) + return; + + if (left < axisx.min) { + left = axisx.min; + drawLeft = false; + } + + if (right > axisx.max) { + right = axisx.max; + drawRight = false; + } + + if (bottom < axisy.min) { + bottom = axisy.min; + drawBottom = false; + } + + if (top > axisy.max) { + top = axisy.max; + drawTop = false; + } + + left = axisx.p2c(left); + bottom = axisy.p2c(bottom); + right = axisx.p2c(right); + top = axisy.p2c(top); + + // fill the bar + if (fillStyleCallback) { + c.fillStyle = fillStyleCallback(bottom, top); + c.fillRect(left, top, right - left, bottom - top) + } + + // draw outline + if (lineWidth > 0 && (drawLeft || drawRight || drawTop || drawBottom)) { + c.beginPath(); + + // FIXME: inline moveTo is buggy with excanvas + c.moveTo(left, bottom); + if (drawLeft) + c.lineTo(left, top); + else + c.moveTo(left, top); + if (drawTop) + c.lineTo(right, top); + else + c.moveTo(right, top); + if (drawRight) + c.lineTo(right, bottom); + else + c.moveTo(right, bottom); + if (drawBottom) + c.lineTo(left, bottom); + else + c.moveTo(left, bottom); + c.stroke(); + } + } + + function drawSeriesBars(series) { + function plotBars(datapoints, barLeft, barRight, fillStyleCallback, axisx, axisy) { + var points = datapoints.points, ps = datapoints.pointsize; + + for (var i = 0; i < points.length; i += ps) { + if (points[i] == null) + continue; + drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal, series.bars.lineWidth); + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + // FIXME: figure out a way to add shadows (for instance along the right edge) + ctx.lineWidth = series.bars.lineWidth; + ctx.strokeStyle = series.color; + + var barLeft; + + switch (series.bars.align) { + case "left": + barLeft = 0; + break; + case "right": + barLeft = -series.bars.barWidth; + break; + default: + barLeft = -series.bars.barWidth / 2; + } + + var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null; + plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, fillStyleCallback, series.xaxis, series.yaxis); + ctx.restore(); + } + + function getFillStyle(filloptions, seriesColor, bottom, top) { + var fill = filloptions.fill; + if (!fill) + return null; + + if (filloptions.fillColor) + return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor); + + var c = $.color.parse(seriesColor); + c.a = typeof fill == "number" ? fill : 0.4; + c.normalize(); + return c.toString(); + } + + function insertLegend() { + + if (options.legend.container != null) { + $(options.legend.container).html(""); + } else { + placeholder.find(".legend").remove(); + } + + if (!options.legend.show) { + return; + } + + var fragments = [], entries = [], rowStarted = false, + lf = options.legend.labelFormatter, s, label; + + // Build a list of legend entries, with each having a label and a color + + for (var i = 0; i < series.length; ++i) { + s = series[i]; + if (s.label) { + label = lf ? lf(s.label, s) : s.label; + if (label) { + entries.push({ + label: label, + color: s.color + }); + } + } + } + + // Sort the legend using either the default or a custom comparator + + if (options.legend.sorted) { + if ($.isFunction(options.legend.sorted)) { + entries.sort(options.legend.sorted); + } else if (options.legend.sorted == "reverse") { + entries.reverse(); + } else { + var ascending = options.legend.sorted != "descending"; + entries.sort(function(a, b) { + return a.label == b.label ? 0 : ( + (a.label < b.label) != ascending ? 1 : -1 // Logical XOR + ); + }); + } + } + + // Generate markup for the list of entries, in their final order + + for (var i = 0; i < entries.length; ++i) { + + var entry = entries[i]; + + if (i % options.legend.noColumns == 0) { + if (rowStarted) + fragments.push(''); + fragments.push(''); + rowStarted = true; + } + + fragments.push( + '
' + + '' + entry.label + '' + ); + } + + if (rowStarted) + fragments.push(''); + + if (fragments.length == 0) + return; + + var table = '' + fragments.join("") + '
'; + if (options.legend.container != null) + $(options.legend.container).html(table); + else { + var pos = "", + p = options.legend.position, + m = options.legend.margin; + if (m[0] == null) + m = [m, m]; + if (p.charAt(0) == "n") + pos += 'top:' + (m[1] + plotOffset.top) + 'px;'; + else if (p.charAt(0) == "s") + pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;'; + if (p.charAt(1) == "e") + pos += 'right:' + (m[0] + plotOffset.right) + 'px;'; + else if (p.charAt(1) == "w") + pos += 'left:' + (m[0] + plotOffset.left) + 'px;'; + var legend = $('
' + table.replace('style="', 'style="position:absolute;' + pos +';') + '
').appendTo(placeholder); + if (options.legend.backgroundOpacity != 0.0) { + // put in the transparent background + // separately to avoid blended labels and + // label boxes + var c = options.legend.backgroundColor; + if (c == null) { + c = options.grid.backgroundColor; + if (c && typeof c == "string") + c = $.color.parse(c); + else + c = $.color.extract(legend, 'background-color'); + c.a = 1; + c = c.toString(); + } + var div = legend.children(); + $('
').prependTo(legend).css('opacity', options.legend.backgroundOpacity); + } + } + } + + + // interactive features + + var highlights = [], + redrawTimeout = null; + + // returns the data item the mouse is over, or null if none is found + function findNearbyItem(mouseX, mouseY, seriesFilter) { + var maxDistance = options.grid.mouseActiveRadius, + smallestDistance = maxDistance * maxDistance + 1, + item = null, foundPoint = false, i, j, ps; + + for (i = series.length - 1; i >= 0; --i) { + if (!seriesFilter(series[i])) + continue; + + var s = series[i], + axisx = s.xaxis, + axisy = s.yaxis, + points = s.datapoints.points, + mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster + my = axisy.c2p(mouseY), + maxx = maxDistance / axisx.scale, + maxy = maxDistance / axisy.scale; + + ps = s.datapoints.pointsize; + // with inverse transforms, we can't use the maxx/maxy + // optimization, sadly + if (axisx.options.inverseTransform) + maxx = Number.MAX_VALUE; + if (axisy.options.inverseTransform) + maxy = Number.MAX_VALUE; + + if (s.lines.show || s.points.show) { + for (j = 0; j < points.length; j += ps) { + var x = points[j], y = points[j + 1]; + if (x == null) + continue; + + // For points and lines, the cursor must be within a + // certain distance to the data point + if (x - mx > maxx || x - mx < -maxx || + y - my > maxy || y - my < -maxy) + continue; + + // We have to calculate distances in pixels, not in + // data units, because the scales of the axes may be different + var dx = Math.abs(axisx.p2c(x) - mouseX), + dy = Math.abs(axisy.p2c(y) - mouseY), + dist = dx * dx + dy * dy; // we save the sqrt + + // use <= to ensure last point takes precedence + // (last generally means on top of) + if (dist < smallestDistance) { + smallestDistance = dist; + item = [i, j / ps]; + } + } + } + + if (s.bars.show && !item) { // no other point can be nearby + + var barLeft, barRight; + + switch (s.bars.align) { + case "left": + barLeft = 0; + break; + case "right": + barLeft = -s.bars.barWidth; + break; + default: + barLeft = -s.bars.barWidth / 2; + } + + barRight = barLeft + s.bars.barWidth; + + for (j = 0; j < points.length; j += ps) { + var x = points[j], y = points[j + 1], b = points[j + 2]; + if (x == null) + continue; + + // for a bar graph, the cursor must be inside the bar + if (series[i].bars.horizontal ? + (mx <= Math.max(b, x) && mx >= Math.min(b, x) && + my >= y + barLeft && my <= y + barRight) : + (mx >= x + barLeft && mx <= x + barRight && + my >= Math.min(b, y) && my <= Math.max(b, y))) + item = [i, j / ps]; + } + } + } + + if (item) { + i = item[0]; + j = item[1]; + ps = series[i].datapoints.pointsize; + + return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps), + dataIndex: j, + series: series[i], + seriesIndex: i }; + } + + return null; + } + + function onMouseMove(e) { + if (options.grid.hoverable) + triggerClickHoverEvent("plothover", e, + function (s) { return s["hoverable"] != false; }); + } + + function onMouseLeave(e) { + if (options.grid.hoverable) + triggerClickHoverEvent("plothover", e, + function (s) { return false; }); + } + + function onClick(e) { + triggerClickHoverEvent("plotclick", e, + function (s) { return s["clickable"] != false; }); + } + + // trigger click or hover event (they send the same parameters + // so we share their code) + function triggerClickHoverEvent(eventname, event, seriesFilter) { + var offset = eventHolder.offset(), + canvasX = event.pageX - offset.left - plotOffset.left, + canvasY = event.pageY - offset.top - plotOffset.top, + pos = canvasToAxisCoords({ left: canvasX, top: canvasY }); + + pos.pageX = event.pageX; + pos.pageY = event.pageY; + + var item = findNearbyItem(canvasX, canvasY, seriesFilter); + + if (item) { + // fill in mouse pos for any listeners out there + item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left, 10); + item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top, 10); + } + + if (options.grid.autoHighlight) { + // clear auto-highlights + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.auto == eventname && + !(item && h.series == item.series && + h.point[0] == item.datapoint[0] && + h.point[1] == item.datapoint[1])) + unhighlight(h.series, h.point); + } + + if (item) + highlight(item.series, item.datapoint, eventname); + } + + placeholder.trigger(eventname, [ pos, item ]); + } + + function triggerRedrawOverlay() { + var t = options.interaction.redrawOverlayInterval; + if (t == -1) { // skip event queue + drawOverlay(); + return; + } + + if (!redrawTimeout) + redrawTimeout = setTimeout(drawOverlay, t); + } + + function drawOverlay() { + redrawTimeout = null; + + // draw highlights + octx.save(); + overlay.clear(); + octx.translate(plotOffset.left, plotOffset.top); + + var i, hi; + for (i = 0; i < highlights.length; ++i) { + hi = highlights[i]; + + if (hi.series.bars.show) + drawBarHighlight(hi.series, hi.point); + else + drawPointHighlight(hi.series, hi.point); + } + octx.restore(); + + executeHooks(hooks.drawOverlay, [octx]); + } + + function highlight(s, point, auto) { + if (typeof s == "number") + s = series[s]; + + if (typeof point == "number") { + var ps = s.datapoints.pointsize; + point = s.datapoints.points.slice(ps * point, ps * (point + 1)); + } + + var i = indexOfHighlight(s, point); + if (i == -1) { + highlights.push({ series: s, point: point, auto: auto }); + + triggerRedrawOverlay(); + } + else if (!auto) + highlights[i].auto = false; + } + + function unhighlight(s, point) { + if (s == null && point == null) { + highlights = []; + triggerRedrawOverlay(); + return; + } + + if (typeof s == "number") + s = series[s]; + + if (typeof point == "number") { + var ps = s.datapoints.pointsize; + point = s.datapoints.points.slice(ps * point, ps * (point + 1)); + } + + var i = indexOfHighlight(s, point); + if (i != -1) { + highlights.splice(i, 1); + + triggerRedrawOverlay(); + } + } + + function indexOfHighlight(s, p) { + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.series == s && h.point[0] == p[0] + && h.point[1] == p[1]) + return i; + } + return -1; + } + + function drawPointHighlight(series, point) { + var x = point[0], y = point[1], + axisx = series.xaxis, axisy = series.yaxis, + highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(); + + if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) + return; + + var pointRadius = series.points.radius + series.points.lineWidth / 2; + octx.lineWidth = pointRadius; + octx.strokeStyle = highlightColor; + var radius = 1.5 * pointRadius; + x = axisx.p2c(x); + y = axisy.p2c(y); + + octx.beginPath(); + if (series.points.symbol == "circle") + octx.arc(x, y, radius, 0, 2 * Math.PI, false); + else + series.points.symbol(octx, x, y, radius, false); + octx.closePath(); + octx.stroke(); + } + + function drawBarHighlight(series, point) { + var highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(), + fillStyle = highlightColor, + barLeft; + + switch (series.bars.align) { + case "left": + barLeft = 0; + break; + case "right": + barLeft = -series.bars.barWidth; + break; + default: + barLeft = -series.bars.barWidth / 2; + } + + octx.lineWidth = series.bars.lineWidth; + octx.strokeStyle = highlightColor; + + drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth, + function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth); + } + + function getColorOrGradient(spec, bottom, top, defaultColor) { + if (typeof spec == "string") + return spec; + else { + // assume this is a gradient spec; IE currently only + // supports a simple vertical gradient properly, so that's + // what we support too + var gradient = ctx.createLinearGradient(0, top, 0, bottom); + + for (var i = 0, l = spec.colors.length; i < l; ++i) { + var c = spec.colors[i]; + if (typeof c != "string") { + var co = $.color.parse(defaultColor); + if (c.brightness != null) + co = co.scale('rgb', c.brightness); + if (c.opacity != null) + co.a *= c.opacity; + c = co.toString(); + } + gradient.addColorStop(i / (l - 1), c); + } + + return gradient; + } + } + } + + // Add the plot function to the top level of the jQuery object + + $.plot = function(placeholder, data, options) { + //var t0 = new Date(); + var plot = new Plot($(placeholder), data, options, $.plot.plugins); + //(window.console ? console.log : alert)("time used (msecs): " + ((new Date()).getTime() - t0.getTime())); + return plot; + }; + + $.plot.version = "0.8.3"; + + $.plot.plugins = []; + + // Also add the plot function as a chainable property + + $.fn.plot = function(data, options) { + return this.each(function() { + $.plot(this, data, options); + }); + }; + + // round to nearby lower multiple of base + function floorInBase(n, base) { + return base * Math.floor(n / base); + } + +})(jQuery); diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/js/jquery.flot.tooltip.js b/SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/js/jquery.flot.tooltip.js new file mode 100644 index 0000000..d2365b1 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/js/jquery.flot.tooltip.js @@ -0,0 +1,517 @@ +/* + * jquery.flot.tooltip + * + * description: easy-to-use tooltips for Flot charts + * version: 0.8.5 + * authors: Krzysztof Urbas @krzysu [myviews.pl],Evan Steinkerchner @Roundaround + * website: https://github.com/krzysu/flot.tooltip + * + * build on 2015-05-11 + * released under MIT License, 2012 +*/ +(function ($) { + // plugin options, default values + var defaultOptions = { + tooltip: { + show: false, + cssClass: "flotTip", + content: "%s | X: %x | Y: %y", + // allowed templates are: + // %s -> series label, + // %c -> series color, + // %lx -> x axis label (requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels), + // %ly -> y axis label (requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels), + // %x -> X value, + // %y -> Y value, + // %x.2 -> precision of X value, + // %p -> percent + xDateFormat: null, + yDateFormat: null, + monthNames: null, + dayNames: null, + shifts: { + x: 10, + y: 20 + }, + defaultTheme: true, + lines: false, + + // callbacks + onHover: function (flotItem, $tooltipEl) {}, + + $compat: false + } + }; + + // dummy default options object for legacy code (<0.8.5) - is deleted later + defaultOptions.tooltipOpts = defaultOptions.tooltip; + + // object + var FlotTooltip = function (plot) { + // variables + this.tipPosition = {x: 0, y: 0}; + + this.init(plot); + }; + + // main plugin function + FlotTooltip.prototype.init = function (plot) { + var that = this; + + // detect other flot plugins + var plotPluginsLength = $.plot.plugins.length; + this.plotPlugins = []; + + if (plotPluginsLength) { + for (var p = 0; p < plotPluginsLength; p++) { + this.plotPlugins.push($.plot.plugins[p].name); + } + } + + plot.hooks.bindEvents.push(function (plot, eventHolder) { + + // get plot options + that.plotOptions = plot.getOptions(); + + // for legacy (<0.8.5) implementations + if (typeof(that.plotOptions.tooltip) === 'boolean') { + that.plotOptions.tooltipOpts.show = that.plotOptions.tooltip; + that.plotOptions.tooltip = that.plotOptions.tooltipOpts; + delete that.plotOptions.tooltipOpts; + } + + // if not enabled return + if (that.plotOptions.tooltip.show === false || typeof that.plotOptions.tooltip.show === 'undefined') return; + + // shortcut to access tooltip options + that.tooltipOptions = that.plotOptions.tooltip; + + if (that.tooltipOptions.$compat) { + that.wfunc = 'width'; + that.hfunc = 'height'; + } else { + that.wfunc = 'innerWidth'; + that.hfunc = 'innerHeight'; + } + + // create tooltip DOM element + var $tip = that.getDomElement(); + + // bind event + $( plot.getPlaceholder() ).bind("plothover", plothover); + + $(eventHolder).bind('mousemove', mouseMove); + }); + + plot.hooks.shutdown.push(function (plot, eventHolder){ + $(plot.getPlaceholder()).unbind("plothover", plothover); + $(eventHolder).unbind("mousemove", mouseMove); + }); + + function mouseMove(e){ + var pos = {}; + pos.x = e.pageX; + pos.y = e.pageY; + plot.setTooltipPosition(pos); + } + + function plothover(event, pos, item) { + // Simple distance formula. + var lineDistance = function (p1x, p1y, p2x, p2y) { + return Math.sqrt((p2x - p1x) * (p2x - p1x) + (p2y - p1y) * (p2y - p1y)); + }; + + // Here is some voodoo magic for determining the distance to a line form a given point {x, y}. + var dotLineLength = function (x, y, x0, y0, x1, y1, o) { + if (o && !(o = + function (x, y, x0, y0, x1, y1) { + if (typeof x0 !== 'undefined') return { x: x0, y: y }; + else if (typeof y0 !== 'undefined') return { x: x, y: y0 }; + + var left, + tg = -1 / ((y1 - y0) / (x1 - x0)); + + return { + x: left = (x1 * (x * tg - y + y0) + x0 * (x * -tg + y - y1)) / (tg * (x1 - x0) + y0 - y1), + y: tg * left - tg * x + y + }; + } (x, y, x0, y0, x1, y1), + o.x >= Math.min(x0, x1) && o.x <= Math.max(x0, x1) && o.y >= Math.min(y0, y1) && o.y <= Math.max(y0, y1)) + ) { + var l1 = lineDistance(x, y, x0, y0), l2 = lineDistance(x, y, x1, y1); + return l1 > l2 ? l2 : l1; + } else { + var a = y0 - y1, b = x1 - x0, c = x0 * y1 - y0 * x1; + return Math.abs(a * x + b * y + c) / Math.sqrt(a * a + b * b); + } + }; + + if (item) { + plot.showTooltip(item, pos); + } else if (that.plotOptions.series.lines.show && that.tooltipOptions.lines === true) { + var maxDistance = that.plotOptions.grid.mouseActiveRadius; + + var closestTrace = { + distance: maxDistance + 1 + }; + + $.each(plot.getData(), function (i, series) { + var xBeforeIndex = 0, + xAfterIndex = -1; + + // Our search here assumes our data is sorted via the x-axis. + // TODO: Improve efficiency somehow - search smaller sets of data. + for (var j = 1; j < series.data.length; j++) { + if (series.data[j - 1][0] <= pos.x && series.data[j][0] >= pos.x) { + xBeforeIndex = j - 1; + xAfterIndex = j; + } + } + + if (xAfterIndex === -1) { + plot.hideTooltip(); + return; + } + + var pointPrev = { x: series.data[xBeforeIndex][0], y: series.data[xBeforeIndex][1] }, + pointNext = { x: series.data[xAfterIndex][0], y: series.data[xAfterIndex][1] }; + + var distToLine = dotLineLength(series.xaxis.p2c(pos.x), series.yaxis.p2c(pos.y), series.xaxis.p2c(pointPrev.x), + series.yaxis.p2c(pointPrev.y), series.xaxis.p2c(pointNext.x), series.yaxis.p2c(pointNext.y), false); + + if (distToLine < closestTrace.distance) { + + var closestIndex = lineDistance(pointPrev.x, pointPrev.y, pos.x, pos.y) < + lineDistance(pos.x, pos.y, pointNext.x, pointNext.y) ? xBeforeIndex : xAfterIndex; + + var pointSize = series.datapoints.pointsize; + + // Calculate the point on the line vertically closest to our cursor. + var pointOnLine = [ + pos.x, + pointPrev.y + ((pointNext.y - pointPrev.y) * ((pos.x - pointPrev.x) / (pointNext.x - pointPrev.x))) + ]; + + var item = { + datapoint: pointOnLine, + dataIndex: closestIndex, + series: series, + seriesIndex: i + }; + + closestTrace = { + distance: distToLine, + item: item + }; + } + }); + + if (closestTrace.distance < maxDistance + 1) + plot.showTooltip(closestTrace.item, pos); + else + plot.hideTooltip(); + } else { + plot.hideTooltip(); + } + } + + // Quick little function for setting the tooltip position. + plot.setTooltipPosition = function (pos) { + var $tip = that.getDomElement(); + + var totalTipWidth = $tip.outerWidth() + that.tooltipOptions.shifts.x; + var totalTipHeight = $tip.outerHeight() + that.tooltipOptions.shifts.y; + if ((pos.x - $(window).scrollLeft()) > ($(window)[that.wfunc]() - totalTipWidth)) { + pos.x -= totalTipWidth; + } + if ((pos.y - $(window).scrollTop()) > ($(window)[that.hfunc]() - totalTipHeight)) { + pos.y -= totalTipHeight; + } + that.tipPosition.x = pos.x; + that.tipPosition.y = pos.y; + }; + + // Quick little function for showing the tooltip. + plot.showTooltip = function (target, position) { + var $tip = that.getDomElement(); + + // convert tooltip content template to real tipText + var tipText = that.stringFormat(that.tooltipOptions.content, target); + if (tipText === '') + return; + + $tip.html(tipText); + plot.setTooltipPosition({ x: position.pageX, y: position.pageY }); + $tip.css({ + left: that.tipPosition.x + that.tooltipOptions.shifts.x, + top: that.tipPosition.y + that.tooltipOptions.shifts.y + }).show(); + + // run callback + if (typeof that.tooltipOptions.onHover === 'function') { + that.tooltipOptions.onHover(target, $tip); + } + }; + + // Quick little function for hiding the tooltip. + plot.hideTooltip = function () { + that.getDomElement().hide().html(''); + }; + }; + + /** + * get or create tooltip DOM element + * @return jQuery object + */ + FlotTooltip.prototype.getDomElement = function () { + var $tip = $('.' + this.tooltipOptions.cssClass); + + if( $tip.length === 0 ){ + $tip = $('
').addClass(this.tooltipOptions.cssClass); + $tip.appendTo('body').hide().css({position: 'absolute'}); + + if(this.tooltipOptions.defaultTheme) { + $tip.css({ + 'background': '#fff', + 'z-index': '1040', + 'padding': '0.4em 0.6em', + 'border-radius': '0.5em', + 'font-size': '0.8em', + 'border': '1px solid #111', + 'display': 'none', + 'white-space': 'nowrap' + }); + } + } + + return $tip; + }; + + /** + * core function, create tooltip content + * @param {string} content - template with tooltip content + * @param {object} item - Flot item + * @return {string} real tooltip content for current item + */ + FlotTooltip.prototype.stringFormat = function (content, item) { + + var percentPattern = /%p\.{0,1}(\d{0,})/; + var seriesPattern = /%s/; + var colorPattern = /%c/; + var xLabelPattern = /%lx/; // requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels, will be ignored if plugin isn't loaded + var yLabelPattern = /%ly/; // requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels, will be ignored if plugin isn't loaded + var xPattern = /%x\.{0,1}(\d{0,})/; + var yPattern = /%y\.{0,1}(\d{0,})/; + var xPatternWithoutPrecision = "%x"; + var yPatternWithoutPrecision = "%y"; + var customTextPattern = "%ct"; + + var x, y, customText, p; + + // for threshold plugin we need to read data from different place + if (typeof item.series.threshold !== "undefined") { + x = item.datapoint[0]; + y = item.datapoint[1]; + customText = item.datapoint[2]; + } else if (typeof item.series.lines !== "undefined" && item.series.lines.steps) { + x = item.series.datapoints.points[item.dataIndex * 2]; + y = item.series.datapoints.points[item.dataIndex * 2 + 1]; + // TODO: where to find custom text in this variant? + customText = ""; + } else { + x = item.series.data[item.dataIndex][0]; + y = item.series.data[item.dataIndex][1]; + customText = item.series.data[item.dataIndex][2]; + } + + // I think this is only in case of threshold plugin + if (item.series.label === null && item.series.originSeries) { + item.series.label = item.series.originSeries.label; + } + + // if it is a function callback get the content string + if (typeof(content) === 'function') { + content = content(item.series.label, x, y, item); + } + + // the case where the passed content is equal to false + if (typeof(content) === 'boolean' && !content) { + return ''; + } + + // percent match for pie charts and stacked percent + if (typeof (item.series.percent) !== 'undefined') { + p = item.series.percent; + } else if (typeof (item.series.percents) !== 'undefined') { + p = item.series.percents[item.dataIndex]; + } + if (typeof p === 'number') { + content = this.adjustValPrecision(percentPattern, content, p); + } + + // series match + if (typeof(item.series.label) !== 'undefined') { + content = content.replace(seriesPattern, item.series.label); + } else { + //remove %s if label is undefined + content = content.replace(seriesPattern, ""); + } + + // color match + if (typeof(item.series.color) !== 'undefined') { + content = content.replace(colorPattern, item.series.color); + } else { + //remove %s if color is undefined + content = content.replace(colorPattern, ""); + } + + // x axis label match + if (this.hasAxisLabel('xaxis', item)) { + content = content.replace(xLabelPattern, item.series.xaxis.options.axisLabel); + } else { + //remove %lx if axis label is undefined or axislabels plugin not present + content = content.replace(xLabelPattern, ""); + } + + // y axis label match + if (this.hasAxisLabel('yaxis', item)) { + content = content.replace(yLabelPattern, item.series.yaxis.options.axisLabel); + } else { + //remove %ly if axis label is undefined or axislabels plugin not present + content = content.replace(yLabelPattern, ""); + } + + // time mode axes with custom dateFormat + if (this.isTimeMode('xaxis', item) && this.isXDateFormat(item)) { + content = content.replace(xPattern, this.timestampToDate(x, this.tooltipOptions.xDateFormat, item.series.xaxis.options)); + } + if (this.isTimeMode('yaxis', item) && this.isYDateFormat(item)) { + content = content.replace(yPattern, this.timestampToDate(y, this.tooltipOptions.yDateFormat, item.series.yaxis.options)); + } + + // set precision if defined + if (typeof x === 'number') { + content = this.adjustValPrecision(xPattern, content, x); + } + if (typeof y === 'number') { + content = this.adjustValPrecision(yPattern, content, y); + } + + // change x from number to given label, if given + if (typeof item.series.xaxis.ticks !== 'undefined') { + + var ticks; + if (this.hasRotatedXAxisTicks(item)) { + // xaxis.ticks will be an empty array if tickRotor is being used, but the values are available in rotatedTicks + ticks = 'rotatedTicks'; + } else { + ticks = 'ticks'; + } + + // see https://github.com/krzysu/flot.tooltip/issues/65 + var tickIndex = item.dataIndex + item.seriesIndex; + + for (var index in item.series.xaxis[ticks]) { + if (item.series.xaxis[ticks].hasOwnProperty(tickIndex) && !this.isTimeMode('xaxis', item)) { + var valueX = (this.isCategoriesMode('xaxis', item)) ? item.series.xaxis[ticks][tickIndex].label : item.series.xaxis[ticks][tickIndex].v; + if (valueX === x) { + content = content.replace(xPattern, item.series.xaxis[ticks][tickIndex].label); + } + } + } + } + + // change y from number to given label, if given + if (typeof item.series.yaxis.ticks !== 'undefined') { + for (var index in item.series.yaxis.ticks) { + if (item.series.yaxis.ticks.hasOwnProperty(index)) { + var valueY = (this.isCategoriesMode('yaxis', item)) ? item.series.yaxis.ticks[index].label : item.series.yaxis.ticks[index].v; + if (valueY === y) { + content = content.replace(yPattern, item.series.yaxis.ticks[index].label); + } + } + } + } + + // if no value customization, use tickFormatter by default + if (typeof item.series.xaxis.tickFormatter !== 'undefined') { + //escape dollar + content = content.replace(xPatternWithoutPrecision, item.series.xaxis.tickFormatter(x, item.series.xaxis).replace(/\$/g, '$$')); + } + if (typeof item.series.yaxis.tickFormatter !== 'undefined') { + //escape dollar + content = content.replace(yPatternWithoutPrecision, item.series.yaxis.tickFormatter(y, item.series.yaxis).replace(/\$/g, '$$')); + } + + if (customText) + content = content.replace(customTextPattern, customText); + + return content; + }; + + // helpers just for readability + FlotTooltip.prototype.isTimeMode = function (axisName, item) { + return (typeof item.series[axisName].options.mode !== 'undefined' && item.series[axisName].options.mode === 'time'); + }; + + FlotTooltip.prototype.isXDateFormat = function (item) { + return (typeof this.tooltipOptions.xDateFormat !== 'undefined' && this.tooltipOptions.xDateFormat !== null); + }; + + FlotTooltip.prototype.isYDateFormat = function (item) { + return (typeof this.tooltipOptions.yDateFormat !== 'undefined' && this.tooltipOptions.yDateFormat !== null); + }; + + FlotTooltip.prototype.isCategoriesMode = function (axisName, item) { + return (typeof item.series[axisName].options.mode !== 'undefined' && item.series[axisName].options.mode === 'categories'); + }; + + // + FlotTooltip.prototype.timestampToDate = function (tmst, dateFormat, options) { + var theDate = $.plot.dateGenerator(tmst, options); + return $.plot.formatDate(theDate, dateFormat, this.tooltipOptions.monthNames, this.tooltipOptions.dayNames); + }; + + // + FlotTooltip.prototype.adjustValPrecision = function (pattern, content, value) { + + var precision; + var matchResult = content.match(pattern); + if( matchResult !== null ) { + if(RegExp.$1 !== '') { + precision = RegExp.$1; + value = value.toFixed(precision); + + // only replace content if precision exists, in other case use thickformater + content = content.replace(pattern, value); + } + } + return content; + }; + + // other plugins detection below + + // check if flot-axislabels plugin (https://github.com/markrcote/flot-axislabels) is used and that an axis label is given + FlotTooltip.prototype.hasAxisLabel = function (axisName, item) { + return ($.inArray(this.plotPlugins, 'axisLabels') !== -1 && typeof item.series[axisName].options.axisLabel !== 'undefined' && item.series[axisName].options.axisLabel.length > 0); + }; + + // check whether flot-tickRotor, a plugin which allows rotation of X-axis ticks, is being used + FlotTooltip.prototype.hasRotatedXAxisTicks = function (item) { + return ($.inArray(this.plotPlugins, 'tickRotor') !== -1 && typeof item.series.xaxis.rotatedTicks !== 'undefined'); + }; + + // + var init = function (plot) { + new FlotTooltip(plot); + }; + + // define Flot plugin + $.plot.plugins.push({ + init: init, + options: defaultOptions, + name: 'tooltip', + version: '0.8.5' + }); + +})(jQuery); diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/js/jquery.flot.tooltip.min.js b/SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/js/jquery.flot.tooltip.min.js new file mode 100644 index 0000000..7eb217d --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/js/jquery.flot.tooltip.min.js @@ -0,0 +1,12 @@ +/* + * jquery.flot.tooltip + * + * description: easy-to-use tooltips for Flot charts + * version: 0.8.5 + * authors: Krzysztof Urbas @krzysu [myviews.pl],Evan Steinkerchner @Roundaround + * website: https://github.com/krzysu/flot.tooltip + * + * build on 2015-05-11 + * released under MIT License, 2012 +*/ +!function(a){var b={tooltip:{show:!1,cssClass:"flotTip",content:"%s | X: %x | Y: %y",xDateFormat:null,yDateFormat:null,monthNames:null,dayNames:null,shifts:{x:10,y:20},defaultTheme:!0,lines:!1,onHover:function(a,b){},$compat:!1}};b.tooltipOpts=b.tooltip;var c=function(a){this.tipPosition={x:0,y:0},this.init(a)};c.prototype.init=function(b){function c(a){var c={};c.x=a.pageX,c.y=a.pageY,b.setTooltipPosition(c)}function d(c,d,f){var g=function(a,b,c,d){return Math.sqrt((c-a)*(c-a)+(d-b)*(d-b))},h=function(a,b,c,d,e,f,h){if(!h||(h=function(a,b,c,d,e,f){if("undefined"!=typeof c)return{x:c,y:b};if("undefined"!=typeof d)return{x:a,y:d};var g,h=-1/((f-d)/(e-c));return{x:g=(e*(a*h-b+d)+c*(a*-h+b-f))/(h*(e-c)+d-f),y:h*g-h*a+b}}(a,b,c,d,e,f),h.x>=Math.min(c,e)&&h.x<=Math.max(c,e)&&h.y>=Math.min(d,f)&&h.y<=Math.max(d,f))){var i=d-f,j=e-c,k=c*f-d*e;return Math.abs(i*a+j*b+k)/Math.sqrt(i*i+j*j)}var l=g(a,b,c,d),m=g(a,b,e,f);return l>m?m:l};if(f)b.showTooltip(f,d);else if(e.plotOptions.series.lines.show&&e.tooltipOptions.lines===!0){var i=e.plotOptions.grid.mouseActiveRadius,j={distance:i+1};a.each(b.getData(),function(a,c){for(var e=0,f=-1,i=1;i=d.x&&(e=i-1,f=i);if(-1===f)return void b.hideTooltip();var k={x:c.data[e][0],y:c.data[e][1]},l={x:c.data[f][0],y:c.data[f][1]},m=h(c.xaxis.p2c(d.x),c.yaxis.p2c(d.y),c.xaxis.p2c(k.x),c.yaxis.p2c(k.y),c.xaxis.p2c(l.x),c.yaxis.p2c(l.y),!1);if(mg;g++)this.plotPlugins.push(a.plot.plugins[g].name);b.hooks.bindEvents.push(function(b,f){if(e.plotOptions=b.getOptions(),"boolean"==typeof e.plotOptions.tooltip&&(e.plotOptions.tooltipOpts.show=e.plotOptions.tooltip,e.plotOptions.tooltip=e.plotOptions.tooltipOpts,delete e.plotOptions.tooltipOpts),e.plotOptions.tooltip.show!==!1&&"undefined"!=typeof e.plotOptions.tooltip.show){e.tooltipOptions=e.plotOptions.tooltip,e.tooltipOptions.$compat?(e.wfunc="width",e.hfunc="height"):(e.wfunc="innerWidth",e.hfunc="innerHeight");e.getDomElement();a(b.getPlaceholder()).bind("plothover",d),a(f).bind("mousemove",c)}}),b.hooks.shutdown.push(function(b,e){a(b.getPlaceholder()).unbind("plothover",d),a(e).unbind("mousemove",c)}),b.setTooltipPosition=function(b){var c=e.getDomElement(),d=c.outerWidth()+e.tooltipOptions.shifts.x,f=c.outerHeight()+e.tooltipOptions.shifts.y;b.x-a(window).scrollLeft()>a(window)[e.wfunc]()-d&&(b.x-=d),b.y-a(window).scrollTop()>a(window)[e.hfunc]()-f&&(b.y-=f),e.tipPosition.x=b.x,e.tipPosition.y=b.y},b.showTooltip=function(a,c){var d=e.getDomElement(),f=e.stringFormat(e.tooltipOptions.content,a);""!==f&&(d.html(f),b.setTooltipPosition({x:c.pageX,y:c.pageY}),d.css({left:e.tipPosition.x+e.tooltipOptions.shifts.x,top:e.tipPosition.y+e.tooltipOptions.shifts.y}).show(),"function"==typeof e.tooltipOptions.onHover&&e.tooltipOptions.onHover(a,d))},b.hideTooltip=function(){e.getDomElement().hide().html("")}},c.prototype.getDomElement=function(){var b=a("."+this.tooltipOptions.cssClass);return 0===b.length&&(b=a("
").addClass(this.tooltipOptions.cssClass),b.appendTo("body").hide().css({position:"absolute"}),this.tooltipOptions.defaultTheme&&b.css({background:"#fff","z-index":"1040",padding:"0.4em 0.6em","border-radius":"0.5em","font-size":"0.8em",border:"1px solid #111",display:"none","white-space":"nowrap"})),b},c.prototype.stringFormat=function(a,b){var c,d,e,f,g=/%p\.{0,1}(\d{0,})/,h=/%s/,i=/%c/,j=/%lx/,k=/%ly/,l=/%x\.{0,1}(\d{0,})/,m=/%y\.{0,1}(\d{0,})/,n="%x",o="%y",p="%ct";if("undefined"!=typeof b.series.threshold?(c=b.datapoint[0],d=b.datapoint[1],e=b.datapoint[2]):"undefined"!=typeof b.series.lines&&b.series.lines.steps?(c=b.series.datapoints.points[2*b.dataIndex],d=b.series.datapoints.points[2*b.dataIndex+1],e=""):(c=b.series.data[b.dataIndex][0],d=b.series.data[b.dataIndex][1],e=b.series.data[b.dataIndex][2]),null===b.series.label&&b.series.originSeries&&(b.series.label=b.series.originSeries.label),"function"==typeof a&&(a=a(b.series.label,c,d,b)),"boolean"==typeof a&&!a)return"";if("undefined"!=typeof b.series.percent?f=b.series.percent:"undefined"!=typeof b.series.percents&&(f=b.series.percents[b.dataIndex]),"number"==typeof f&&(a=this.adjustValPrecision(g,a,f)),a="undefined"!=typeof b.series.label?a.replace(h,b.series.label):a.replace(h,""),a="undefined"!=typeof b.series.color?a.replace(i,b.series.color):a.replace(i,""),a=this.hasAxisLabel("xaxis",b)?a.replace(j,b.series.xaxis.options.axisLabel):a.replace(j,""),a=this.hasAxisLabel("yaxis",b)?a.replace(k,b.series.yaxis.options.axisLabel):a.replace(k,""),this.isTimeMode("xaxis",b)&&this.isXDateFormat(b)&&(a=a.replace(l,this.timestampToDate(c,this.tooltipOptions.xDateFormat,b.series.xaxis.options))),this.isTimeMode("yaxis",b)&&this.isYDateFormat(b)&&(a=a.replace(m,this.timestampToDate(d,this.tooltipOptions.yDateFormat,b.series.yaxis.options))),"number"==typeof c&&(a=this.adjustValPrecision(l,a,c)),"number"==typeof d&&(a=this.adjustValPrecision(m,a,d)),"undefined"!=typeof b.series.xaxis.ticks){var q;q=this.hasRotatedXAxisTicks(b)?"rotatedTicks":"ticks";var r=b.dataIndex+b.seriesIndex;for(var s in b.series.xaxis[q])if(b.series.xaxis[q].hasOwnProperty(r)&&!this.isTimeMode("xaxis",b)){var t=this.isCategoriesMode("xaxis",b)?b.series.xaxis[q][r].label:b.series.xaxis[q][r].v;t===c&&(a=a.replace(l,b.series.xaxis[q][r].label))}}if("undefined"!=typeof b.series.yaxis.ticks)for(var s in b.series.yaxis.ticks)if(b.series.yaxis.ticks.hasOwnProperty(s)){var u=this.isCategoriesMode("yaxis",b)?b.series.yaxis.ticks[s].label:b.series.yaxis.ticks[s].v;u===d&&(a=a.replace(m,b.series.yaxis.ticks[s].label))}return"undefined"!=typeof b.series.xaxis.tickFormatter&&(a=a.replace(n,b.series.xaxis.tickFormatter(c,b.series.xaxis).replace(/\$/g,"$$"))),"undefined"!=typeof b.series.yaxis.tickFormatter&&(a=a.replace(o,b.series.yaxis.tickFormatter(d,b.series.yaxis).replace(/\$/g,"$$"))),e&&(a=a.replace(p,e)),a},c.prototype.isTimeMode=function(a,b){return"undefined"!=typeof b.series[a].options.mode&&"time"===b.series[a].options.mode},c.prototype.isXDateFormat=function(a){return"undefined"!=typeof this.tooltipOptions.xDateFormat&&null!==this.tooltipOptions.xDateFormat},c.prototype.isYDateFormat=function(a){return"undefined"!=typeof this.tooltipOptions.yDateFormat&&null!==this.tooltipOptions.yDateFormat},c.prototype.isCategoriesMode=function(a,b){return"undefined"!=typeof b.series[a].options.mode&&"categories"===b.series[a].options.mode},c.prototype.timestampToDate=function(b,c,d){var e=a.plot.dateGenerator(b,d);return a.plot.formatDate(e,c,this.tooltipOptions.monthNames,this.tooltipOptions.dayNames)},c.prototype.adjustValPrecision=function(a,b,c){var d,e=b.match(a);return null!==e&&""!==RegExp.$1&&(d=RegExp.$1,c=c.toFixed(d),b=b.replace(a,c)),b},c.prototype.hasAxisLabel=function(b,c){return-1!==a.inArray(this.plotPlugins,"axisLabels")&&"undefined"!=typeof c.series[b].options.axisLabel&&c.series[b].options.axisLabel.length>0},c.prototype.hasRotatedXAxisTicks=function(b){return-1!==a.inArray(this.plotPlugins,"tickRotor")&&"undefined"!=typeof b.series.xaxis.rotatedTicks};var d=function(a){new c(a)};a.plot.plugins.push({init:d,options:b,name:"tooltip",version:"0.8.5"})}(jQuery); \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/js/jquery.flot.tooltip.source.js b/SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/js/jquery.flot.tooltip.source.js new file mode 100644 index 0000000..ed7b9fc --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot.tooltip/js/jquery.flot.tooltip.source.js @@ -0,0 +1,506 @@ +(function ($) { + // plugin options, default values + var defaultOptions = { + tooltip: { + show: false, + cssClass: "flotTip", + content: "%s | X: %x | Y: %y", + // allowed templates are: + // %s -> series label, + // %c -> series color, + // %lx -> x axis label (requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels), + // %ly -> y axis label (requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels), + // %x -> X value, + // %y -> Y value, + // %x.2 -> precision of X value, + // %p -> percent + xDateFormat: null, + yDateFormat: null, + monthNames: null, + dayNames: null, + shifts: { + x: 10, + y: 20 + }, + defaultTheme: true, + lines: false, + + // callbacks + onHover: function (flotItem, $tooltipEl) {}, + + $compat: false + } + }; + + // dummy default options object for legacy code (<0.8.5) - is deleted later + defaultOptions.tooltipOpts = defaultOptions.tooltip; + + // object + var FlotTooltip = function (plot) { + // variables + this.tipPosition = {x: 0, y: 0}; + + this.init(plot); + }; + + // main plugin function + FlotTooltip.prototype.init = function (plot) { + var that = this; + + // detect other flot plugins + var plotPluginsLength = $.plot.plugins.length; + this.plotPlugins = []; + + if (plotPluginsLength) { + for (var p = 0; p < plotPluginsLength; p++) { + this.plotPlugins.push($.plot.plugins[p].name); + } + } + + plot.hooks.bindEvents.push(function (plot, eventHolder) { + + // get plot options + that.plotOptions = plot.getOptions(); + + // for legacy (<0.8.5) implementations + if (typeof(that.plotOptions.tooltip) === 'boolean') { + that.plotOptions.tooltipOpts.show = that.plotOptions.tooltip; + that.plotOptions.tooltip = that.plotOptions.tooltipOpts; + delete that.plotOptions.tooltipOpts; + } + + // if not enabled return + if (that.plotOptions.tooltip.show === false || typeof that.plotOptions.tooltip.show === 'undefined') return; + + // shortcut to access tooltip options + that.tooltipOptions = that.plotOptions.tooltip; + + if (that.tooltipOptions.$compat) { + that.wfunc = 'width'; + that.hfunc = 'height'; + } else { + that.wfunc = 'innerWidth'; + that.hfunc = 'innerHeight'; + } + + // create tooltip DOM element + var $tip = that.getDomElement(); + + // bind event + $( plot.getPlaceholder() ).bind("plothover", plothover); + + $(eventHolder).bind('mousemove', mouseMove); + }); + + plot.hooks.shutdown.push(function (plot, eventHolder){ + $(plot.getPlaceholder()).unbind("plothover", plothover); + $(eventHolder).unbind("mousemove", mouseMove); + }); + + function mouseMove(e){ + var pos = {}; + pos.x = e.pageX; + pos.y = e.pageY; + plot.setTooltipPosition(pos); + } + + function plothover(event, pos, item) { + // Simple distance formula. + var lineDistance = function (p1x, p1y, p2x, p2y) { + return Math.sqrt((p2x - p1x) * (p2x - p1x) + (p2y - p1y) * (p2y - p1y)); + }; + + // Here is some voodoo magic for determining the distance to a line form a given point {x, y}. + var dotLineLength = function (x, y, x0, y0, x1, y1, o) { + if (o && !(o = + function (x, y, x0, y0, x1, y1) { + if (typeof x0 !== 'undefined') return { x: x0, y: y }; + else if (typeof y0 !== 'undefined') return { x: x, y: y0 }; + + var left, + tg = -1 / ((y1 - y0) / (x1 - x0)); + + return { + x: left = (x1 * (x * tg - y + y0) + x0 * (x * -tg + y - y1)) / (tg * (x1 - x0) + y0 - y1), + y: tg * left - tg * x + y + }; + } (x, y, x0, y0, x1, y1), + o.x >= Math.min(x0, x1) && o.x <= Math.max(x0, x1) && o.y >= Math.min(y0, y1) && o.y <= Math.max(y0, y1)) + ) { + var l1 = lineDistance(x, y, x0, y0), l2 = lineDistance(x, y, x1, y1); + return l1 > l2 ? l2 : l1; + } else { + var a = y0 - y1, b = x1 - x0, c = x0 * y1 - y0 * x1; + return Math.abs(a * x + b * y + c) / Math.sqrt(a * a + b * b); + } + }; + + if (item) { + plot.showTooltip(item, pos); + } else if (that.plotOptions.series.lines.show && that.tooltipOptions.lines === true) { + var maxDistance = that.plotOptions.grid.mouseActiveRadius; + + var closestTrace = { + distance: maxDistance + 1 + }; + + $.each(plot.getData(), function (i, series) { + var xBeforeIndex = 0, + xAfterIndex = -1; + + // Our search here assumes our data is sorted via the x-axis. + // TODO: Improve efficiency somehow - search smaller sets of data. + for (var j = 1; j < series.data.length; j++) { + if (series.data[j - 1][0] <= pos.x && series.data[j][0] >= pos.x) { + xBeforeIndex = j - 1; + xAfterIndex = j; + } + } + + if (xAfterIndex === -1) { + plot.hideTooltip(); + return; + } + + var pointPrev = { x: series.data[xBeforeIndex][0], y: series.data[xBeforeIndex][1] }, + pointNext = { x: series.data[xAfterIndex][0], y: series.data[xAfterIndex][1] }; + + var distToLine = dotLineLength(series.xaxis.p2c(pos.x), series.yaxis.p2c(pos.y), series.xaxis.p2c(pointPrev.x), + series.yaxis.p2c(pointPrev.y), series.xaxis.p2c(pointNext.x), series.yaxis.p2c(pointNext.y), false); + + if (distToLine < closestTrace.distance) { + + var closestIndex = lineDistance(pointPrev.x, pointPrev.y, pos.x, pos.y) < + lineDistance(pos.x, pos.y, pointNext.x, pointNext.y) ? xBeforeIndex : xAfterIndex; + + var pointSize = series.datapoints.pointsize; + + // Calculate the point on the line vertically closest to our cursor. + var pointOnLine = [ + pos.x, + pointPrev.y + ((pointNext.y - pointPrev.y) * ((pos.x - pointPrev.x) / (pointNext.x - pointPrev.x))) + ]; + + var item = { + datapoint: pointOnLine, + dataIndex: closestIndex, + series: series, + seriesIndex: i + }; + + closestTrace = { + distance: distToLine, + item: item + }; + } + }); + + if (closestTrace.distance < maxDistance + 1) + plot.showTooltip(closestTrace.item, pos); + else + plot.hideTooltip(); + } else { + plot.hideTooltip(); + } + } + + // Quick little function for setting the tooltip position. + plot.setTooltipPosition = function (pos) { + var $tip = that.getDomElement(); + + var totalTipWidth = $tip.outerWidth() + that.tooltipOptions.shifts.x; + var totalTipHeight = $tip.outerHeight() + that.tooltipOptions.shifts.y; + if ((pos.x - $(window).scrollLeft()) > ($(window)[that.wfunc]() - totalTipWidth)) { + pos.x -= totalTipWidth; + } + if ((pos.y - $(window).scrollTop()) > ($(window)[that.hfunc]() - totalTipHeight)) { + pos.y -= totalTipHeight; + } + that.tipPosition.x = pos.x; + that.tipPosition.y = pos.y; + }; + + // Quick little function for showing the tooltip. + plot.showTooltip = function (target, position) { + var $tip = that.getDomElement(); + + // convert tooltip content template to real tipText + var tipText = that.stringFormat(that.tooltipOptions.content, target); + if (tipText === '') + return; + + $tip.html(tipText); + plot.setTooltipPosition({ x: position.pageX, y: position.pageY }); + $tip.css({ + left: that.tipPosition.x + that.tooltipOptions.shifts.x, + top: that.tipPosition.y + that.tooltipOptions.shifts.y + }).show(); + + // run callback + if (typeof that.tooltipOptions.onHover === 'function') { + that.tooltipOptions.onHover(target, $tip); + } + }; + + // Quick little function for hiding the tooltip. + plot.hideTooltip = function () { + that.getDomElement().hide().html(''); + }; + }; + + /** + * get or create tooltip DOM element + * @return jQuery object + */ + FlotTooltip.prototype.getDomElement = function () { + var $tip = $('.' + this.tooltipOptions.cssClass); + + if( $tip.length === 0 ){ + $tip = $('
').addClass(this.tooltipOptions.cssClass); + $tip.appendTo('body').hide().css({position: 'absolute'}); + + if(this.tooltipOptions.defaultTheme) { + $tip.css({ + 'background': '#fff', + 'z-index': '1040', + 'padding': '0.4em 0.6em', + 'border-radius': '0.5em', + 'font-size': '0.8em', + 'border': '1px solid #111', + 'display': 'none', + 'white-space': 'nowrap' + }); + } + } + + return $tip; + }; + + /** + * core function, create tooltip content + * @param {string} content - template with tooltip content + * @param {object} item - Flot item + * @return {string} real tooltip content for current item + */ + FlotTooltip.prototype.stringFormat = function (content, item) { + + var percentPattern = /%p\.{0,1}(\d{0,})/; + var seriesPattern = /%s/; + var colorPattern = /%c/; + var xLabelPattern = /%lx/; // requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels, will be ignored if plugin isn't loaded + var yLabelPattern = /%ly/; // requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels, will be ignored if plugin isn't loaded + var xPattern = /%x\.{0,1}(\d{0,})/; + var yPattern = /%y\.{0,1}(\d{0,})/; + var xPatternWithoutPrecision = "%x"; + var yPatternWithoutPrecision = "%y"; + var customTextPattern = "%ct"; + + var x, y, customText, p; + + // for threshold plugin we need to read data from different place + if (typeof item.series.threshold !== "undefined") { + x = item.datapoint[0]; + y = item.datapoint[1]; + customText = item.datapoint[2]; + } else if (typeof item.series.lines !== "undefined" && item.series.lines.steps) { + x = item.series.datapoints.points[item.dataIndex * 2]; + y = item.series.datapoints.points[item.dataIndex * 2 + 1]; + // TODO: where to find custom text in this variant? + customText = ""; + } else { + x = item.series.data[item.dataIndex][0]; + y = item.series.data[item.dataIndex][1]; + customText = item.series.data[item.dataIndex][2]; + } + + // I think this is only in case of threshold plugin + if (item.series.label === null && item.series.originSeries) { + item.series.label = item.series.originSeries.label; + } + + // if it is a function callback get the content string + if (typeof(content) === 'function') { + content = content(item.series.label, x, y, item); + } + + // the case where the passed content is equal to false + if (typeof(content) === 'boolean' && !content) { + return ''; + } + + // percent match for pie charts and stacked percent + if (typeof (item.series.percent) !== 'undefined') { + p = item.series.percent; + } else if (typeof (item.series.percents) !== 'undefined') { + p = item.series.percents[item.dataIndex]; + } + if (typeof p === 'number') { + content = this.adjustValPrecision(percentPattern, content, p); + } + + // series match + if (typeof(item.series.label) !== 'undefined') { + content = content.replace(seriesPattern, item.series.label); + } else { + //remove %s if label is undefined + content = content.replace(seriesPattern, ""); + } + + // color match + if (typeof(item.series.color) !== 'undefined') { + content = content.replace(colorPattern, item.series.color); + } else { + //remove %s if color is undefined + content = content.replace(colorPattern, ""); + } + + // x axis label match + if (this.hasAxisLabel('xaxis', item)) { + content = content.replace(xLabelPattern, item.series.xaxis.options.axisLabel); + } else { + //remove %lx if axis label is undefined or axislabels plugin not present + content = content.replace(xLabelPattern, ""); + } + + // y axis label match + if (this.hasAxisLabel('yaxis', item)) { + content = content.replace(yLabelPattern, item.series.yaxis.options.axisLabel); + } else { + //remove %ly if axis label is undefined or axislabels plugin not present + content = content.replace(yLabelPattern, ""); + } + + // time mode axes with custom dateFormat + if (this.isTimeMode('xaxis', item) && this.isXDateFormat(item)) { + content = content.replace(xPattern, this.timestampToDate(x, this.tooltipOptions.xDateFormat, item.series.xaxis.options)); + } + if (this.isTimeMode('yaxis', item) && this.isYDateFormat(item)) { + content = content.replace(yPattern, this.timestampToDate(y, this.tooltipOptions.yDateFormat, item.series.yaxis.options)); + } + + // set precision if defined + if (typeof x === 'number') { + content = this.adjustValPrecision(xPattern, content, x); + } + if (typeof y === 'number') { + content = this.adjustValPrecision(yPattern, content, y); + } + + // change x from number to given label, if given + if (typeof item.series.xaxis.ticks !== 'undefined') { + + var ticks; + if (this.hasRotatedXAxisTicks(item)) { + // xaxis.ticks will be an empty array if tickRotor is being used, but the values are available in rotatedTicks + ticks = 'rotatedTicks'; + } else { + ticks = 'ticks'; + } + + // see https://github.com/krzysu/flot.tooltip/issues/65 + var tickIndex = item.dataIndex + item.seriesIndex; + + for (var index in item.series.xaxis[ticks]) { + if (item.series.xaxis[ticks].hasOwnProperty(tickIndex) && !this.isTimeMode('xaxis', item)) { + var valueX = (this.isCategoriesMode('xaxis', item)) ? item.series.xaxis[ticks][tickIndex].label : item.series.xaxis[ticks][tickIndex].v; + if (valueX === x) { + content = content.replace(xPattern, item.series.xaxis[ticks][tickIndex].label); + } + } + } + } + + // change y from number to given label, if given + if (typeof item.series.yaxis.ticks !== 'undefined') { + for (var index in item.series.yaxis.ticks) { + if (item.series.yaxis.ticks.hasOwnProperty(index)) { + var valueY = (this.isCategoriesMode('yaxis', item)) ? item.series.yaxis.ticks[index].label : item.series.yaxis.ticks[index].v; + if (valueY === y) { + content = content.replace(yPattern, item.series.yaxis.ticks[index].label); + } + } + } + } + + // if no value customization, use tickFormatter by default + if (typeof item.series.xaxis.tickFormatter !== 'undefined') { + //escape dollar + content = content.replace(xPatternWithoutPrecision, item.series.xaxis.tickFormatter(x, item.series.xaxis).replace(/\$/g, '$$')); + } + if (typeof item.series.yaxis.tickFormatter !== 'undefined') { + //escape dollar + content = content.replace(yPatternWithoutPrecision, item.series.yaxis.tickFormatter(y, item.series.yaxis).replace(/\$/g, '$$')); + } + + if (customText) + content = content.replace(customTextPattern, customText); + + return content; + }; + + // helpers just for readability + FlotTooltip.prototype.isTimeMode = function (axisName, item) { + return (typeof item.series[axisName].options.mode !== 'undefined' && item.series[axisName].options.mode === 'time'); + }; + + FlotTooltip.prototype.isXDateFormat = function (item) { + return (typeof this.tooltipOptions.xDateFormat !== 'undefined' && this.tooltipOptions.xDateFormat !== null); + }; + + FlotTooltip.prototype.isYDateFormat = function (item) { + return (typeof this.tooltipOptions.yDateFormat !== 'undefined' && this.tooltipOptions.yDateFormat !== null); + }; + + FlotTooltip.prototype.isCategoriesMode = function (axisName, item) { + return (typeof item.series[axisName].options.mode !== 'undefined' && item.series[axisName].options.mode === 'categories'); + }; + + // + FlotTooltip.prototype.timestampToDate = function (tmst, dateFormat, options) { + var theDate = $.plot.dateGenerator(tmst, options); + return $.plot.formatDate(theDate, dateFormat, this.tooltipOptions.monthNames, this.tooltipOptions.dayNames); + }; + + // + FlotTooltip.prototype.adjustValPrecision = function (pattern, content, value) { + + var precision; + var matchResult = content.match(pattern); + if( matchResult !== null ) { + if(RegExp.$1 !== '') { + precision = RegExp.$1; + value = value.toFixed(precision); + + // only replace content if precision exists, in other case use thickformater + content = content.replace(pattern, value); + } + } + return content; + }; + + // other plugins detection below + + // check if flot-axislabels plugin (https://github.com/markrcote/flot-axislabels) is used and that an axis label is given + FlotTooltip.prototype.hasAxisLabel = function (axisName, item) { + return ($.inArray(this.plotPlugins, 'axisLabels') !== -1 && typeof item.series[axisName].options.axisLabel !== 'undefined' && item.series[axisName].options.axisLabel.length > 0); + }; + + // check whether flot-tickRotor, a plugin which allows rotation of X-axis ticks, is being used + FlotTooltip.prototype.hasRotatedXAxisTicks = function (item) { + return ($.inArray(this.plotPlugins, 'tickRotor') !== -1 && typeof item.series.xaxis.rotatedTicks !== 'undefined'); + }; + + // + var init = function (plot) { + new FlotTooltip(plot); + }; + + // define Flot plugin + $.plot.plugins.push({ + init: init, + options: defaultOptions, + name: 'tooltip', + version: '0.8.5' + }); + +})(jQuery); diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/.bower.json b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/.bower.json new file mode 100644 index 0000000..8b6d434 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/.bower.json @@ -0,0 +1,19 @@ +{ + "name": "Flot", + "version": "0.8.3", + "main": "jquery.flot.js", + "dependencies": { + "jquery": ">= 1.2.6" + }, + "homepage": "https://github.com/flot/flot", + "_release": "0.8.3", + "_resolution": { + "type": "version", + "tag": "v0.8.3", + "commit": "453b017cc5acfd75e252b93e8635f57f4196d45d" + }, + "_source": "git://github.com/flot/flot.git", + "_target": "~0.8.3", + "_originalSource": "flot", + "_direct": true +} \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/.gitignore b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/.gitignore new file mode 100644 index 0000000..18ba980 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/.gitignore @@ -0,0 +1,3 @@ +*.min.js +!excanvas.min.js +node_modules/ diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/.travis.yml b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/.travis.yml new file mode 100644 index 0000000..4e80ca0 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/.travis.yml @@ -0,0 +1,3 @@ +language: node_js +node_js: + - 0.8 diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/API.md b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/API.md new file mode 100644 index 0000000..06c3a09 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/API.md @@ -0,0 +1,1498 @@ +# Flot Reference # + +**Table of Contents** + +[Introduction](#introduction) +| [Data Format](#data-format) +| [Plot Options](#plot-options) +| [Customizing the legend](#customizing-the-legend) +| [Customizing the axes](#customizing-the-axes) +| [Multiple axes](#multiple-axes) +| [Time series data](#time-series-data) +| [Customizing the data series](#customizing-the-data-series) +| [Customizing the grid](#customizing-the-grid) +| [Specifying gradients](#specifying-gradients) +| [Plot Methods](#plot-methods) +| [Hooks](#hooks) +| [Plugins](#plugins) +| [Version number](#version-number) + +--- + +## Introduction ## + +Consider a call to the plot function: + +```js +var plot = $.plot(placeholder, data, options) +``` + +The placeholder is a jQuery object or DOM element or jQuery expression +that the plot will be put into. This placeholder needs to have its +width and height set as explained in the [README](README.md) (go read that now if +you haven't, it's short). The plot will modify some properties of the +placeholder so it's recommended you simply pass in a div that you +don't use for anything else. Make sure you check any fancy styling +you apply to the div, e.g. background images have been reported to be a +problem on IE 7. + +The plot function can also be used as a jQuery chainable property. This form +naturally can't return the plot object directly, but you can still access it +via the 'plot' data key, like this: + +```js +var plot = $("#placeholder").plot(data, options).data("plot"); +``` + +The format of the data is documented below, as is the available +options. The plot object returned from the call has some methods you +can call. These are documented separately below. + +Note that in general Flot gives no guarantees if you change any of the +objects you pass in to the plot function or get out of it since +they're not necessarily deep-copied. + + +## Data Format ## + +The data is an array of data series: + +```js +[ series1, series2, ... ] +``` + +A series can either be raw data or an object with properties. The raw +data format is an array of points: + +```js +[ [x1, y1], [x2, y2], ... ] +``` + +E.g. + +```js +[ [1, 3], [2, 14.01], [3.5, 3.14] ] +``` + +Note that to simplify the internal logic in Flot both the x and y +values must be numbers (even if specifying time series, see below for +how to do this). This is a common problem because you might retrieve +data from the database and serialize them directly to JSON without +noticing the wrong type. If you're getting mysterious errors, double +check that you're inputting numbers and not strings. + +If a null is specified as a point or if one of the coordinates is null +or couldn't be converted to a number, the point is ignored when +drawing. As a special case, a null value for lines is interpreted as a +line segment end, i.e. the points before and after the null value are +not connected. + +Lines and points take two coordinates. For filled lines and bars, you +can specify a third coordinate which is the bottom of the filled +area/bar (defaults to 0). + +The format of a single series object is as follows: + +```js +{ + color: color or number + data: rawdata + label: string + lines: specific lines options + bars: specific bars options + points: specific points options + xaxis: number + yaxis: number + clickable: boolean + hoverable: boolean + shadowSize: number + highlightColor: color or number +} +``` + +You don't have to specify any of them except the data, the rest are +options that will get default values. Typically you'd only specify +label and data, like this: + +```js +{ + label: "y = 3", + data: [[0, 3], [10, 3]] +} +``` + +The label is used for the legend, if you don't specify one, the series +will not show up in the legend. + +If you don't specify color, the series will get a color from the +auto-generated colors. The color is either a CSS color specification +(like "rgb(255, 100, 123)") or an integer that specifies which of +auto-generated colors to select, e.g. 0 will get color no. 0, etc. + +The latter is mostly useful if you let the user add and remove series, +in which case you can hard-code the color index to prevent the colors +from jumping around between the series. + +The "xaxis" and "yaxis" options specify which axis to use. The axes +are numbered from 1 (default), so { yaxis: 2} means that the series +should be plotted against the second y axis. + +"clickable" and "hoverable" can be set to false to disable +interactivity for specific series if interactivity is turned on in +the plot, see below. + +The rest of the options are all documented below as they are the same +as the default options passed in via the options parameter in the plot +commmand. When you specify them for a specific data series, they will +override the default options for the plot for that data series. + +Here's a complete example of a simple data specification: + +```js +[ { label: "Foo", data: [ [10, 1], [17, -14], [30, 5] ] }, + { label: "Bar", data: [ [11, 13], [19, 11], [30, -7] ] } +] +``` + + +## Plot Options ## + +All options are completely optional. They are documented individually +below, to change them you just specify them in an object, e.g. + +```js +var options = { + series: { + lines: { show: true }, + points: { show: true } + } +}; + +$.plot(placeholder, data, options); +``` + + +## Customizing the legend ## + +```js +legend: { + show: boolean + labelFormatter: null or (fn: string, series object -> string) + labelBoxBorderColor: color + noColumns: number + position: "ne" or "nw" or "se" or "sw" + margin: number of pixels or [x margin, y margin] + backgroundColor: null or color + backgroundOpacity: number between 0 and 1 + container: null or jQuery object/DOM element/jQuery expression + sorted: null/false, true, "ascending", "descending", "reverse", or a comparator +} +``` + +The legend is generated as a table with the data series labels and +small label boxes with the color of the series. If you want to format +the labels in some way, e.g. make them to links, you can pass in a +function for "labelFormatter". Here's an example that makes them +clickable: + +```js +labelFormatter: function(label, series) { + // series is the series object for the label + return '' + label + ''; +} +``` + +To prevent a series from showing up in the legend, simply have the function +return null. + +"noColumns" is the number of columns to divide the legend table into. +"position" specifies the overall placement of the legend within the +plot (top-right, top-left, etc.) and margin the distance to the plot +edge (this can be either a number or an array of two numbers like [x, +y]). "backgroundColor" and "backgroundOpacity" specifies the +background. The default is a partly transparent auto-detected +background. + +If you want the legend to appear somewhere else in the DOM, you can +specify "container" as a jQuery object/expression to put the legend +table into. The "position" and "margin" etc. options will then be +ignored. Note that Flot will overwrite the contents of the container. + +Legend entries appear in the same order as their series by default. If "sorted" +is "reverse" then they appear in the opposite order from their series. To sort +them alphabetically, you can specify true, "ascending" or "descending", where +true and "ascending" are equivalent. + +You can also provide your own comparator function that accepts two +objects with "label" and "color" properties, and returns zero if they +are equal, a positive value if the first is greater than the second, +and a negative value if the first is less than the second. + +```js +sorted: function(a, b) { + // sort alphabetically in ascending order + return a.label == b.label ? 0 : ( + a.label > b.label ? 1 : -1 + ) +} +``` + + +## Customizing the axes ## + +```js +xaxis, yaxis: { + show: null or true/false + position: "bottom" or "top" or "left" or "right" + mode: null or "time" ("time" requires jquery.flot.time.js plugin) + timezone: null, "browser" or timezone (only makes sense for mode: "time") + + color: null or color spec + tickColor: null or color spec + font: null or font spec object + + min: null or number + max: null or number + autoscaleMargin: null or number + + transform: null or fn: number -> number + inverseTransform: null or fn: number -> number + + ticks: null or number or ticks array or (fn: axis -> ticks array) + tickSize: number or array + minTickSize: number or array + tickFormatter: (fn: number, object -> string) or string + tickDecimals: null or number + + labelWidth: null or number + labelHeight: null or number + reserveSpace: null or true + + tickLength: null or number + + alignTicksWithAxis: null or number +} +``` + +All axes have the same kind of options. The following describes how to +configure one axis, see below for what to do if you've got more than +one x axis or y axis. + +If you don't set the "show" option (i.e. it is null), visibility is +auto-detected, i.e. the axis will show up if there's data associated +with it. You can override this by setting the "show" option to true or +false. + +The "position" option specifies where the axis is placed, bottom or +top for x axes, left or right for y axes. The "mode" option determines +how the data is interpreted, the default of null means as decimal +numbers. Use "time" for time series data; see the time series data +section. The time plugin (jquery.flot.time.js) is required for time +series support. + +The "color" option determines the color of the line and ticks for the axis, and +defaults to the grid color with transparency. For more fine-grained control you +can also set the color of the ticks separately with "tickColor". + +You can customize the font and color used to draw the axis tick labels with CSS +or directly via the "font" option. When "font" is null - the default - each +tick label is given the 'flot-tick-label' class. For compatibility with Flot +0.7 and earlier the labels are also given the 'tickLabel' class, but this is +deprecated and scheduled to be removed with the release of version 1.0.0. + +To enable more granular control over styles, labels are divided between a set +of text containers, with each holding the labels for one axis. These containers +are given the classes 'flot-[x|y]-axis', and 'flot-[x|y]#-axis', where '#' is +the number of the axis when there are multiple axes. For example, the x-axis +labels for a simple plot with only a single x-axis might look like this: + +```html +
+
January 2013
+ ... +
+``` + +For direct control over label styles you can also provide "font" as an object +with this format: + +```js +{ + size: 11, + lineHeight: 13, + style: "italic", + weight: "bold", + family: "sans-serif", + variant: "small-caps", + color: "#545454" +} +``` + +The size and lineHeight must be expressed in pixels; CSS units such as 'em' +or 'smaller' are not allowed. + +The options "min"/"max" are the precise minimum/maximum value on the +scale. If you don't specify either of them, a value will automatically +be chosen based on the minimum/maximum data values. Note that Flot +always examines all the data values you feed to it, even if a +restriction on another axis may make some of them invisible (this +makes interactive use more stable). + +The "autoscaleMargin" is a bit esoteric: it's the fraction of margin +that the scaling algorithm will add to avoid that the outermost points +ends up on the grid border. Note that this margin is only applied when +a min or max value is not explicitly set. If a margin is specified, +the plot will furthermore extend the axis end-point to the nearest +whole tick. The default value is "null" for the x axes and 0.02 for y +axes which seems appropriate for most cases. + +"transform" and "inverseTransform" are callbacks you can put in to +change the way the data is drawn. You can design a function to +compress or expand certain parts of the axis non-linearly, e.g. +suppress weekends or compress far away points with a logarithm or some +other means. When Flot draws the plot, each value is first put through +the transform function. Here's an example, the x axis can be turned +into a natural logarithm axis with the following code: + +```js +xaxis: { + transform: function (v) { return Math.log(v); }, + inverseTransform: function (v) { return Math.exp(v); } +} +``` + +Similarly, for reversing the y axis so the values appear in inverse +order: + +```js +yaxis: { + transform: function (v) { return -v; }, + inverseTransform: function (v) { return -v; } +} +``` + +Note that for finding extrema, Flot assumes that the transform +function does not reorder values (it should be monotone). + +The inverseTransform is simply the inverse of the transform function +(so v == inverseTransform(transform(v)) for all relevant v). It is +required for converting from canvas coordinates to data coordinates, +e.g. for a mouse interaction where a certain pixel is clicked. If you +don't use any interactive features of Flot, you may not need it. + + +The rest of the options deal with the ticks. + +If you don't specify any ticks, a tick generator algorithm will make +some for you. The algorithm has two passes. It first estimates how +many ticks would be reasonable and uses this number to compute a nice +round tick interval size. Then it generates the ticks. + +You can specify how many ticks the algorithm aims for by setting +"ticks" to a number. The algorithm always tries to generate reasonably +round tick values so even if you ask for three ticks, you might get +five if that fits better with the rounding. If you don't want any +ticks at all, set "ticks" to 0 or an empty array. + +Another option is to skip the rounding part and directly set the tick +interval size with "tickSize". If you set it to 2, you'll get ticks at +2, 4, 6, etc. Alternatively, you can specify that you just don't want +ticks at a size less than a specific tick size with "minTickSize". +Note that for time series, the format is an array like [2, "month"], +see the next section. + +If you want to completely override the tick algorithm, you can specify +an array for "ticks", either like this: + +```js +ticks: [0, 1.2, 2.4] +``` + +Or like this where the labels are also customized: + +```js +ticks: [[0, "zero"], [1.2, "one mark"], [2.4, "two marks"]] +``` + +You can mix the two if you like. + +For extra flexibility you can specify a function as the "ticks" +parameter. The function will be called with an object with the axis +min and max and should return a ticks array. Here's a simplistic tick +generator that spits out intervals of pi, suitable for use on the x +axis for trigonometric functions: + +```js +function piTickGenerator(axis) { + var res = [], i = Math.floor(axis.min / Math.PI); + do { + var v = i * Math.PI; + res.push([v, i + "\u03c0"]); + ++i; + } while (v < axis.max); + return res; +} +``` + +You can control how the ticks look like with "tickDecimals", the +number of decimals to display (default is auto-detected). + +Alternatively, for ultimate control over how ticks are formatted you can +provide a function to "tickFormatter". The function is passed two +parameters, the tick value and an axis object with information, and +should return a string. The default formatter looks like this: + +```js +function formatter(val, axis) { + return val.toFixed(axis.tickDecimals); +} +``` + +The axis object has "min" and "max" with the range of the axis, +"tickDecimals" with the number of decimals to round the value to and +"tickSize" with the size of the interval between ticks as calculated +by the automatic axis scaling algorithm (or specified by you). Here's +an example of a custom formatter: + +```js +function suffixFormatter(val, axis) { + if (val > 1000000) + return (val / 1000000).toFixed(axis.tickDecimals) + " MB"; + else if (val > 1000) + return (val / 1000).toFixed(axis.tickDecimals) + " kB"; + else + return val.toFixed(axis.tickDecimals) + " B"; +} +``` + +"labelWidth" and "labelHeight" specifies a fixed size of the tick +labels in pixels. They're useful in case you need to align several +plots. "reserveSpace" means that even if an axis isn't shown, Flot +should reserve space for it - it is useful in combination with +labelWidth and labelHeight for aligning multi-axis charts. + +"tickLength" is the length of the tick lines in pixels. By default, the +innermost axes will have ticks that extend all across the plot, while +any extra axes use small ticks. A value of null means use the default, +while a number means small ticks of that length - set it to 0 to hide +the lines completely. + +If you set "alignTicksWithAxis" to the number of another axis, e.g. +alignTicksWithAxis: 1, Flot will ensure that the autogenerated ticks +of this axis are aligned with the ticks of the other axis. This may +improve the looks, e.g. if you have one y axis to the left and one to +the right, because the grid lines will then match the ticks in both +ends. The trade-off is that the forced ticks won't necessarily be at +natural places. + + +## Multiple axes ## + +If you need more than one x axis or y axis, you need to specify for +each data series which axis they are to use, as described under the +format of the data series, e.g. { data: [...], yaxis: 2 } specifies +that a series should be plotted against the second y axis. + +To actually configure that axis, you can't use the xaxis/yaxis options +directly - instead there are two arrays in the options: + +```js +xaxes: [] +yaxes: [] +``` + +Here's an example of configuring a single x axis and two y axes (we +can leave options of the first y axis empty as the defaults are fine): + +```js +{ + xaxes: [ { position: "top" } ], + yaxes: [ { }, { position: "right", min: 20 } ] +} +``` + +The arrays get their default values from the xaxis/yaxis settings, so +say you want to have all y axes start at zero, you can simply specify +yaxis: { min: 0 } instead of adding a min parameter to all the axes. + +Generally, the various interfaces in Flot dealing with data points +either accept an xaxis/yaxis parameter to specify which axis number to +use (starting from 1), or lets you specify the coordinate directly as +x2/x3/... or x2axis/x3axis/... instead of "x" or "xaxis". + + +## Time series data ## + +Please note that it is now required to include the time plugin, +jquery.flot.time.js, for time series support. + +Time series are a bit more difficult than scalar data because +calendars don't follow a simple base 10 system. For many cases, Flot +abstracts most of this away, but it can still be a bit difficult to +get the data into Flot. So we'll first discuss the data format. + +The time series support in Flot is based on Javascript timestamps, +i.e. everywhere a time value is expected or handed over, a Javascript +timestamp number is used. This is a number, not a Date object. A +Javascript timestamp is the number of milliseconds since January 1, +1970 00:00:00 UTC. This is almost the same as Unix timestamps, except it's +in milliseconds, so remember to multiply by 1000! + +You can see a timestamp like this + +```js +alert((new Date()).getTime()) +``` + +There are different schools of thought when it comes to display of +timestamps. Many will want the timestamps to be displayed according to +a certain time zone, usually the time zone in which the data has been +produced. Some want the localized experience, where the timestamps are +displayed according to the local time of the visitor. Flot supports +both. Optionally you can include a third-party library to get +additional timezone support. + +Default behavior is that Flot always displays timestamps according to +UTC. The reason being that the core Javascript Date object does not +support other fixed time zones. Often your data is at another time +zone, so it may take a little bit of tweaking to work around this +limitation. + +The easiest way to think about it is to pretend that the data +production time zone is UTC, even if it isn't. So if you have a +datapoint at 2002-02-20 08:00, you can generate a timestamp for eight +o'clock UTC even if it really happened eight o'clock UTC+0200. + +In PHP you can get an appropriate timestamp with: + +```php +strtotime("2002-02-20 UTC") * 1000 +``` + +In Python you can get it with something like: + +```python +calendar.timegm(datetime_object.timetuple()) * 1000 +``` +In Ruby you can get it using the `#to_i` method on the +[`Time`](http://apidock.com/ruby/Time/to_i) object. If you're using the +`active_support` gem (default for Ruby on Rails applications) `#to_i` is also +available on the `DateTime` and `ActiveSupport::TimeWithZone` objects. You +simply need to multiply the result by 1000: + +```ruby +Time.now.to_i * 1000 # => 1383582043000 +# ActiveSupport examples: +DateTime.now.to_i * 1000 # => 1383582043000 +ActiveSupport::TimeZone.new('Asia/Shanghai').now.to_i * 1000 +# => 1383582043000 +``` + +In .NET you can get it with something like: + +```aspx +public static int GetJavascriptTimestamp(System.DateTime input) +{ + System.TimeSpan span = new System.TimeSpan(System.DateTime.Parse("1/1/1970").Ticks); + System.DateTime time = input.Subtract(span); + return (long)(time.Ticks / 10000); +} +``` + +Javascript also has some support for parsing date strings, so it is +possible to generate the timestamps manually client-side. + +If you've already got the real UTC timestamp, it's too late to use the +pretend trick described above. But you can fix up the timestamps by +adding the time zone offset, e.g. for UTC+0200 you would add 2 hours +to the UTC timestamp you got. Then it'll look right on the plot. Most +programming environments have some means of getting the timezone +offset for a specific date (note that you need to get the offset for +each individual timestamp to account for daylight savings). + +The alternative with core Javascript is to interpret the timestamps +according to the time zone that the visitor is in, which means that +the ticks will shift with the time zone and daylight savings of each +visitor. This behavior is enabled by setting the axis option +"timezone" to the value "browser". + +If you need more time zone functionality than this, there is still +another option. If you include the "timezone-js" library + in the page and set axis.timezone +to a value recognized by said library, Flot will use timezone-js to +interpret the timestamps according to that time zone. + +Once you've gotten the timestamps into the data and specified "time" +as the axis mode, Flot will automatically generate relevant ticks and +format them. As always, you can tweak the ticks via the "ticks" option +- just remember that the values should be timestamps (numbers), not +Date objects. + +Tick generation and formatting can also be controlled separately +through the following axis options: + +```js +minTickSize: array +timeformat: null or format string +monthNames: null or array of size 12 of strings +dayNames: null or array of size 7 of strings +twelveHourClock: boolean +``` + +Here "timeformat" is a format string to use. You might use it like +this: + +```js +xaxis: { + mode: "time", + timeformat: "%Y/%m/%d" +} +``` + +This will result in tick labels like "2000/12/24". A subset of the +standard strftime specifiers are supported (plus the nonstandard %q): + +```js +%a: weekday name (customizable) +%b: month name (customizable) +%d: day of month, zero-padded (01-31) +%e: day of month, space-padded ( 1-31) +%H: hours, 24-hour time, zero-padded (00-23) +%I: hours, 12-hour time, zero-padded (01-12) +%m: month, zero-padded (01-12) +%M: minutes, zero-padded (00-59) +%q: quarter (1-4) +%S: seconds, zero-padded (00-59) +%y: year (two digits) +%Y: year (four digits) +%p: am/pm +%P: AM/PM (uppercase version of %p) +%w: weekday as number (0-6, 0 being Sunday) +``` + +Flot 0.8 switched from %h to the standard %H hours specifier. The %h specifier +is still available, for backwards-compatibility, but is deprecated and +scheduled to be removed permanently with the release of version 1.0. + +You can customize the month names with the "monthNames" option. For +instance, for Danish you might specify: + +```js +monthNames: ["jan", "feb", "mar", "apr", "maj", "jun", "jul", "aug", "sep", "okt", "nov", "dec"] +``` + +Similarly you can customize the weekday names with the "dayNames" +option. An example in French: + +```js +dayNames: ["dim", "lun", "mar", "mer", "jeu", "ven", "sam"] +``` + +If you set "twelveHourClock" to true, the autogenerated timestamps +will use 12 hour AM/PM timestamps instead of 24 hour. This only +applies if you have not set "timeformat". Use the "%I" and "%p" or +"%P" options if you want to build your own format string with 12-hour +times. + +If the Date object has a strftime property (and it is a function), it +will be used instead of the built-in formatter. Thus you can include +a strftime library such as http://hacks.bluesmoon.info/strftime/ for +more powerful date/time formatting. + +If everything else fails, you can control the formatting by specifying +a custom tick formatter function as usual. Here's a simple example +which will format December 24 as 24/12: + +```js +tickFormatter: function (val, axis) { + var d = new Date(val); + return d.getUTCDate() + "/" + (d.getUTCMonth() + 1); +} +``` + +Note that for the time mode "tickSize" and "minTickSize" are a bit +special in that they are arrays on the form "[value, unit]" where unit +is one of "second", "minute", "hour", "day", "month" and "year". So +you can specify + +```js +minTickSize: [1, "month"] +``` + +to get a tick interval size of at least 1 month and correspondingly, +if axis.tickSize is [2, "day"] in the tick formatter, the ticks have +been produced with two days in-between. + + +## Customizing the data series ## + +```js +series: { + lines, points, bars: { + show: boolean + lineWidth: number + fill: boolean or number + fillColor: null or color/gradient + } + + lines, bars: { + zero: boolean + } + + points: { + radius: number + symbol: "circle" or function + } + + bars: { + barWidth: number + align: "left", "right" or "center" + horizontal: boolean + } + + lines: { + steps: boolean + } + + shadowSize: number + highlightColor: color or number +} + +colors: [ color1, color2, ... ] +``` + +The options inside "series: {}" are copied to each of the series. So +you can specify that all series should have bars by putting it in the +global options, or override it for individual series by specifying +bars in a particular the series object in the array of data. + +The most important options are "lines", "points" and "bars" that +specify whether and how lines, points and bars should be shown for +each data series. In case you don't specify anything at all, Flot will +default to showing lines (you can turn this off with +lines: { show: false }). You can specify the various types +independently of each other, and Flot will happily draw each of them +in turn (this is probably only useful for lines and points), e.g. + +```js +var options = { + series: { + lines: { show: true, fill: true, fillColor: "rgba(255, 255, 255, 0.8)" }, + points: { show: true, fill: false } + } +}; +``` + +"lineWidth" is the thickness of the line or outline in pixels. You can +set it to 0 to prevent a line or outline from being drawn; this will +also hide the shadow. + +"fill" is whether the shape should be filled. For lines, this produces +area graphs. You can use "fillColor" to specify the color of the fill. +If "fillColor" evaluates to false (default for everything except +points which are filled with white), the fill color is auto-set to the +color of the data series. You can adjust the opacity of the fill by +setting fill to a number between 0 (fully transparent) and 1 (fully +opaque). + +For bars, fillColor can be a gradient, see the gradient documentation +below. "barWidth" is the width of the bars in units of the x axis (or +the y axis if "horizontal" is true), contrary to most other measures +that are specified in pixels. For instance, for time series the unit +is milliseconds so 24 * 60 * 60 * 1000 produces bars with the width of +a day. "align" specifies whether a bar should be left-aligned +(default), right-aligned or centered on top of the value it represents. +When "horizontal" is on, the bars are drawn horizontally, i.e. from the +y axis instead of the x axis; note that the bar end points are still +defined in the same way so you'll probably want to swap the +coordinates if you've been plotting vertical bars first. + +Area and bar charts normally start from zero, regardless of the data's range. +This is because they convey information through size, and starting from a +different value would distort their meaning. In cases where the fill is purely +for decorative purposes, however, "zero" allows you to override this behavior. +It defaults to true for filled lines and bars; setting it to false tells the +series to use the same automatic scaling as an un-filled line. + +For lines, "steps" specifies whether two adjacent data points are +connected with a straight (possibly diagonal) line or with first a +horizontal and then a vertical line. Note that this transforms the +data by adding extra points. + +For points, you can specify the radius and the symbol. The only +built-in symbol type is circles, for other types you can use a plugin +or define them yourself by specifying a callback: + +```js +function cross(ctx, x, y, radius, shadow) { + var size = radius * Math.sqrt(Math.PI) / 2; + ctx.moveTo(x - size, y - size); + ctx.lineTo(x + size, y + size); + ctx.moveTo(x - size, y + size); + ctx.lineTo(x + size, y - size); +} +``` + +The parameters are the drawing context, x and y coordinates of the +center of the point, a radius which corresponds to what the circle +would have used and whether the call is to draw a shadow (due to +limited canvas support, shadows are currently faked through extra +draws). It's good practice to ensure that the area covered by the +symbol is the same as for the circle with the given radius, this +ensures that all symbols have approximately the same visual weight. + +"shadowSize" is the default size of shadows in pixels. Set it to 0 to +remove shadows. + +"highlightColor" is the default color of the translucent overlay used +to highlight the series when the mouse hovers over it. + +The "colors" array specifies a default color theme to get colors for +the data series from. You can specify as many colors as you like, like +this: + +```js +colors: ["#d18b2c", "#dba255", "#919733"] +``` + +If there are more data series than colors, Flot will try to generate +extra colors by lightening and darkening colors in the theme. + + +## Customizing the grid ## + +```js +grid: { + show: boolean + aboveData: boolean + color: color + backgroundColor: color/gradient or null + margin: number or margin object + labelMargin: number + axisMargin: number + markings: array of markings or (fn: axes -> array of markings) + borderWidth: number or object with "top", "right", "bottom" and "left" properties with different widths + borderColor: color or null or object with "top", "right", "bottom" and "left" properties with different colors + minBorderMargin: number or null + clickable: boolean + hoverable: boolean + autoHighlight: boolean + mouseActiveRadius: number +} + +interaction: { + redrawOverlayInterval: number or -1 +} +``` + +The grid is the thing with the axes and a number of ticks. Many of the +things in the grid are configured under the individual axes, but not +all. "color" is the color of the grid itself whereas "backgroundColor" +specifies the background color inside the grid area, here null means +that the background is transparent. You can also set a gradient, see +the gradient documentation below. + +You can turn off the whole grid including tick labels by setting +"show" to false. "aboveData" determines whether the grid is drawn +above the data or below (below is default). + +"margin" is the space in pixels between the canvas edge and the grid, +which can be either a number or an object with individual margins for +each side, in the form: + +```js +margin: { + top: top margin in pixels + left: left margin in pixels + bottom: bottom margin in pixels + right: right margin in pixels +} +``` + +"labelMargin" is the space in pixels between tick labels and axis +line, and "axisMargin" is the space in pixels between axes when there +are two next to each other. + +"borderWidth" is the width of the border around the plot. Set it to 0 +to disable the border. Set it to an object with "top", "right", +"bottom" and "left" properties to use different widths. You can +also set "borderColor" if you want the border to have a different color +than the grid lines. Set it to an object with "top", "right", "bottom" +and "left" properties to use different colors. "minBorderMargin" controls +the default minimum margin around the border - it's used to make sure +that points aren't accidentally clipped by the canvas edge so by default +the value is computed from the point radius. + +"markings" is used to draw simple lines and rectangular areas in the +background of the plot. You can either specify an array of ranges on +the form { xaxis: { from, to }, yaxis: { from, to } } (with multiple +axes, you can specify coordinates for other axes instead, e.g. as +x2axis/x3axis/...) or with a function that returns such an array given +the axes for the plot in an object as the first parameter. + +You can set the color of markings by specifying "color" in the ranges +object. Here's an example array: + +```js +markings: [ { xaxis: { from: 0, to: 2 }, yaxis: { from: 10, to: 10 }, color: "#bb0000" }, ... ] +``` + +If you leave out one of the values, that value is assumed to go to the +border of the plot. So for example if you only specify { xaxis: { +from: 0, to: 2 } } it means an area that extends from the top to the +bottom of the plot in the x range 0-2. + +A line is drawn if from and to are the same, e.g. + +```js +markings: [ { yaxis: { from: 1, to: 1 } }, ... ] +``` + +would draw a line parallel to the x axis at y = 1. You can control the +line width with "lineWidth" in the range object. + +An example function that makes vertical stripes might look like this: + +```js +markings: function (axes) { + var markings = []; + for (var x = Math.floor(axes.xaxis.min); x < axes.xaxis.max; x += 2) + markings.push({ xaxis: { from: x, to: x + 1 } }); + return markings; +} +``` + +If you set "clickable" to true, the plot will listen for click events +on the plot area and fire a "plotclick" event on the placeholder with +a position and a nearby data item object as parameters. The coordinates +are available both in the unit of the axes (not in pixels) and in +global screen coordinates. + +Likewise, if you set "hoverable" to true, the plot will listen for +mouse move events on the plot area and fire a "plothover" event with +the same parameters as the "plotclick" event. If "autoHighlight" is +true (the default), nearby data items are highlighted automatically. +If needed, you can disable highlighting and control it yourself with +the highlight/unhighlight plot methods described elsewhere. + +You can use "plotclick" and "plothover" events like this: + +```js +$.plot($("#placeholder"), [ d ], { grid: { clickable: true } }); + +$("#placeholder").bind("plotclick", function (event, pos, item) { + alert("You clicked at " + pos.x + ", " + pos.y); + // axis coordinates for other axes, if present, are in pos.x2, pos.x3, ... + // if you need global screen coordinates, they are pos.pageX, pos.pageY + + if (item) { + highlight(item.series, item.datapoint); + alert("You clicked a point!"); + } +}); +``` + +The item object in this example is either null or a nearby object on the form: + +```js +item: { + datapoint: the point, e.g. [0, 2] + dataIndex: the index of the point in the data array + series: the series object + seriesIndex: the index of the series + pageX, pageY: the global screen coordinates of the point +} +``` + +For instance, if you have specified the data like this + +```js +$.plot($("#placeholder"), [ { label: "Foo", data: [[0, 10], [7, 3]] } ], ...); +``` + +and the mouse is near the point (7, 3), "datapoint" is [7, 3], +"dataIndex" will be 1, "series" is a normalized series object with +among other things the "Foo" label in series.label and the color in +series.color, and "seriesIndex" is 0. Note that plugins and options +that transform the data can shift the indexes from what you specified +in the original data array. + +If you use the above events to update some other information and want +to clear out that info in case the mouse goes away, you'll probably +also need to listen to "mouseout" events on the placeholder div. + +"mouseActiveRadius" specifies how far the mouse can be from an item +and still activate it. If there are two or more points within this +radius, Flot chooses the closest item. For bars, the top-most bar +(from the latest specified data series) is chosen. + +If you want to disable interactivity for a specific data series, you +can set "hoverable" and "clickable" to false in the options for that +series, like this: + +```js +{ data: [...], label: "Foo", clickable: false } +``` + +"redrawOverlayInterval" specifies the maximum time to delay a redraw +of interactive things (this works as a rate limiting device). The +default is capped to 60 frames per second. You can set it to -1 to +disable the rate limiting. + + +## Specifying gradients ## + +A gradient is specified like this: + +```js +{ colors: [ color1, color2, ... ] } +``` + +For instance, you might specify a background on the grid going from +black to gray like this: + +```js +grid: { + backgroundColor: { colors: ["#000", "#999"] } +} +``` + +For the series you can specify the gradient as an object that +specifies the scaling of the brightness and the opacity of the series +color, e.g. + +```js +{ colors: [{ opacity: 0.8 }, { brightness: 0.6, opacity: 0.8 } ] } +``` + +where the first color simply has its alpha scaled, whereas the second +is also darkened. For instance, for bars the following makes the bars +gradually disappear, without outline: + +```js +bars: { + show: true, + lineWidth: 0, + fill: true, + fillColor: { colors: [ { opacity: 0.8 }, { opacity: 0.1 } ] } +} +``` + +Flot currently only supports vertical gradients drawn from top to +bottom because that's what works with IE. + + +## Plot Methods ## + +The Plot object returned from the plot function has some methods you +can call: + + - highlight(series, datapoint) + + Highlight a specific datapoint in the data series. You can either + specify the actual objects, e.g. if you got them from a + "plotclick" event, or you can specify the indices, e.g. + highlight(1, 3) to highlight the fourth point in the second series + (remember, zero-based indexing). + + - unhighlight(series, datapoint) or unhighlight() + + Remove the highlighting of the point, same parameters as + highlight. + + If you call unhighlight with no parameters, e.g. as + plot.unhighlight(), all current highlights are removed. + + - setData(data) + + You can use this to reset the data used. Note that axis scaling, + ticks, legend etc. will not be recomputed (use setupGrid() to do + that). You'll probably want to call draw() afterwards. + + You can use this function to speed up redrawing a small plot if + you know that the axes won't change. Put in the new data with + setData(newdata), call draw(), and you're good to go. Note that + for large datasets, almost all the time is consumed in draw() + plotting the data so in this case don't bother. + + - setupGrid() + + Recalculate and set axis scaling, ticks, legend etc. + + Note that because of the drawing model of the canvas, this + function will immediately redraw (actually reinsert in the DOM) + the labels and the legend, but not the actual tick lines because + they're drawn on the canvas. You need to call draw() to get the + canvas redrawn. + + - draw() + + Redraws the plot canvas. + + - triggerRedrawOverlay() + + Schedules an update of an overlay canvas used for drawing + interactive things like a selection and point highlights. This + is mostly useful for writing plugins. The redraw doesn't happen + immediately, instead a timer is set to catch multiple successive + redraws (e.g. from a mousemove). You can get to the overlay by + setting up a drawOverlay hook. + + - width()/height() + + Gets the width and height of the plotting area inside the grid. + This is smaller than the canvas or placeholder dimensions as some + extra space is needed (e.g. for labels). + + - offset() + + Returns the offset of the plotting area inside the grid relative + to the document, useful for instance for calculating mouse + positions (event.pageX/Y minus this offset is the pixel position + inside the plot). + + - pointOffset({ x: xpos, y: ypos }) + + Returns the calculated offset of the data point at (x, y) in data + space within the placeholder div. If you are working with multiple + axes, you can specify the x and y axis references, e.g. + + ```js + o = pointOffset({ x: xpos, y: ypos, xaxis: 2, yaxis: 3 }) + // o.left and o.top now contains the offset within the div + ```` + + - resize() + + Tells Flot to resize the drawing canvas to the size of the + placeholder. You need to run setupGrid() and draw() afterwards as + canvas resizing is a destructive operation. This is used + internally by the resize plugin. + + - shutdown() + + Cleans up any event handlers Flot has currently registered. This + is used internally. + +There are also some members that let you peek inside the internal +workings of Flot which is useful in some cases. Note that if you change +something in the objects returned, you're changing the objects used by +Flot to keep track of its state, so be careful. + + - getData() + + Returns an array of the data series currently used in normalized + form with missing settings filled in according to the global + options. So for instance to find out what color Flot has assigned + to the data series, you could do this: + + ```js + var series = plot.getData(); + for (var i = 0; i < series.length; ++i) + alert(series[i].color); + ``` + + A notable other interesting field besides color is datapoints + which has a field "points" with the normalized data points in a + flat array (the field "pointsize" is the increment in the flat + array to get to the next point so for a dataset consisting only of + (x,y) pairs it would be 2). + + - getAxes() + + Gets an object with the axes. The axes are returned as the + attributes of the object, so for instance getAxes().xaxis is the + x axis. + + Various things are stuffed inside an axis object, e.g. you could + use getAxes().xaxis.ticks to find out what the ticks are for the + xaxis. Two other useful attributes are p2c and c2p, functions for + transforming from data point space to the canvas plot space and + back. Both returns values that are offset with the plot offset. + Check the Flot source code for the complete set of attributes (or + output an axis with console.log() and inspect it). + + With multiple axes, the extra axes are returned as x2axis, x3axis, + etc., e.g. getAxes().y2axis is the second y axis. You can check + y2axis.used to see whether the axis is associated with any data + points and y2axis.show to see if it is currently shown. + + - getPlaceholder() + + Returns placeholder that the plot was put into. This can be useful + for plugins for adding DOM elements or firing events. + + - getCanvas() + + Returns the canvas used for drawing in case you need to hack on it + yourself. You'll probably need to get the plot offset too. + + - getPlotOffset() + + Gets the offset that the grid has within the canvas as an object + with distances from the canvas edges as "left", "right", "top", + "bottom". I.e., if you draw a circle on the canvas with the center + placed at (left, top), its center will be at the top-most, left + corner of the grid. + + - getOptions() + + Gets the options for the plot, normalized, with default values + filled in. You get a reference to actual values used by Flot, so + if you modify the values in here, Flot will use the new values. + If you change something, you probably have to call draw() or + setupGrid() or triggerRedrawOverlay() to see the change. + + +## Hooks ## + +In addition to the public methods, the Plot object also has some hooks +that can be used to modify the plotting process. You can install a +callback function at various points in the process, the function then +gets access to the internal data structures in Flot. + +Here's an overview of the phases Flot goes through: + + 1. Plugin initialization, parsing options + + 2. Constructing the canvases used for drawing + + 3. Set data: parsing data specification, calculating colors, + copying raw data points into internal format, + normalizing them, finding max/min for axis auto-scaling + + 4. Grid setup: calculating axis spacing, ticks, inserting tick + labels, the legend + + 5. Draw: drawing the grid, drawing each of the series in turn + + 6. Setting up event handling for interactive features + + 7. Responding to events, if any + + 8. Shutdown: this mostly happens in case a plot is overwritten + +Each hook is simply a function which is put in the appropriate array. +You can add them through the "hooks" option, and they are also available +after the plot is constructed as the "hooks" attribute on the returned +plot object, e.g. + +```js + // define a simple draw hook + function hellohook(plot, canvascontext) { alert("hello!"); }; + + // pass it in, in an array since we might want to specify several + var plot = $.plot(placeholder, data, { hooks: { draw: [hellohook] } }); + + // we can now find it again in plot.hooks.draw[0] unless a plugin + // has added other hooks +``` + +The available hooks are described below. All hook callbacks get the +plot object as first parameter. You can find some examples of defined +hooks in the plugins bundled with Flot. + + - processOptions [phase 1] + + ```function(plot, options)``` + + Called after Flot has parsed and merged options. Useful in the + instance where customizations beyond simple merging of default + values is needed. A plugin might use it to detect that it has been + enabled and then turn on or off other options. + + + - processRawData [phase 3] + + ```function(plot, series, data, datapoints)``` + + Called before Flot copies and normalizes the raw data for the given + series. If the function fills in datapoints.points with normalized + points and sets datapoints.pointsize to the size of the points, + Flot will skip the copying/normalization step for this series. + + In any case, you might be interested in setting datapoints.format, + an array of objects for specifying how a point is normalized and + how it interferes with axis scaling. It accepts the following options: + + ```js + { + x, y: boolean, + number: boolean, + required: boolean, + defaultValue: value, + autoscale: boolean + } + ``` + + "x" and "y" specify whether the value is plotted against the x or y axis, + and is currently used only to calculate axis min-max ranges. The default + format array, for example, looks like this: + + ```js + [ + { x: true, number: true, required: true }, + { y: true, number: true, required: true } + ] + ``` + + This indicates that a point, i.e. [0, 25], consists of two values, with the + first being plotted on the x axis and the second on the y axis. + + If "number" is true, then the value must be numeric, and is set to null if + it cannot be converted to a number. + + "defaultValue" provides a fallback in case the original value is null. This + is for instance handy for bars, where one can omit the third coordinate + (the bottom of the bar), which then defaults to zero. + + If "required" is true, then the value must exist (be non-null) for the + point as a whole to be valid. If no value is provided, then the entire + point is cleared out with nulls, turning it into a gap in the series. + + "autoscale" determines whether the value is considered when calculating an + automatic min-max range for the axes that the value is plotted against. + + - processDatapoints [phase 3] + + ```function(plot, series, datapoints)``` + + Called after normalization of the given series but before finding + min/max of the data points. This hook is useful for implementing data + transformations. "datapoints" contains the normalized data points in + a flat array as datapoints.points with the size of a single point + given in datapoints.pointsize. Here's a simple transform that + multiplies all y coordinates by 2: + + ```js + function multiply(plot, series, datapoints) { + var points = datapoints.points, ps = datapoints.pointsize; + for (var i = 0; i < points.length; i += ps) + points[i + 1] *= 2; + } + ``` + + Note that you must leave datapoints in a good condition as Flot + doesn't check it or do any normalization on it afterwards. + + - processOffset [phase 4] + + ```function(plot, offset)``` + + Called after Flot has initialized the plot's offset, but before it + draws any axes or plot elements. This hook is useful for customizing + the margins between the grid and the edge of the canvas. "offset" is + an object with attributes "top", "bottom", "left" and "right", + corresponding to the margins on the four sides of the plot. + + - drawBackground [phase 5] + + ```function(plot, canvascontext)``` + + Called before all other drawing operations. Used to draw backgrounds + or other custom elements before the plot or axes have been drawn. + + - drawSeries [phase 5] + + ```function(plot, canvascontext, series)``` + + Hook for custom drawing of a single series. Called just before the + standard drawing routine has been called in the loop that draws + each series. + + - draw [phase 5] + + ```function(plot, canvascontext)``` + + Hook for drawing on the canvas. Called after the grid is drawn + (unless it's disabled or grid.aboveData is set) and the series have + been plotted (in case any points, lines or bars have been turned + on). For examples of how to draw things, look at the source code. + + - bindEvents [phase 6] + + ```function(plot, eventHolder)``` + + Called after Flot has setup its event handlers. Should set any + necessary event handlers on eventHolder, a jQuery object with the + canvas, e.g. + + ```js + function (plot, eventHolder) { + eventHolder.mousedown(function (e) { + alert("You pressed the mouse at " + e.pageX + " " + e.pageY); + }); + } + ``` + + Interesting events include click, mousemove, mouseup/down. You can + use all jQuery events. Usually, the event handlers will update the + state by drawing something (add a drawOverlay hook and call + triggerRedrawOverlay) or firing an externally visible event for + user code. See the crosshair plugin for an example. + + Currently, eventHolder actually contains both the static canvas + used for the plot itself and the overlay canvas used for + interactive features because some versions of IE get the stacking + order wrong. The hook only gets one event, though (either for the + overlay or for the static canvas). + + Note that custom plot events generated by Flot are not generated on + eventHolder, but on the div placeholder supplied as the first + argument to the plot call. You can get that with + plot.getPlaceholder() - that's probably also the one you should use + if you need to fire a custom event. + + - drawOverlay [phase 7] + + ```function (plot, canvascontext)``` + + The drawOverlay hook is used for interactive things that need a + canvas to draw on. The model currently used by Flot works the way + that an extra overlay canvas is positioned on top of the static + canvas. This overlay is cleared and then completely redrawn + whenever something interesting happens. This hook is called when + the overlay canvas is to be redrawn. + + "canvascontext" is the 2D context of the overlay canvas. You can + use this to draw things. You'll most likely need some of the + metrics computed by Flot, e.g. plot.width()/plot.height(). See the + crosshair plugin for an example. + + - shutdown [phase 8] + + ```function (plot, eventHolder)``` + + Run when plot.shutdown() is called, which usually only happens in + case a plot is overwritten by a new plot. If you're writing a + plugin that adds extra DOM elements or event handlers, you should + add a callback to clean up after you. Take a look at the section in + the [PLUGINS](PLUGINS.md) document for more info. + + +## Plugins ## + +Plugins extend the functionality of Flot. To use a plugin, simply +include its Javascript file after Flot in the HTML page. + +If you're worried about download size/latency, you can concatenate all +the plugins you use, and Flot itself for that matter, into one big file +(make sure you get the order right), then optionally run it through a +Javascript minifier such as YUI Compressor. + +Here's a brief explanation of how the plugin plumbings work: + +Each plugin registers itself in the global array $.plot.plugins. When +you make a new plot object with $.plot, Flot goes through this array +calling the "init" function of each plugin and merging default options +from the "option" attribute of the plugin. The init function gets a +reference to the plot object created and uses this to register hooks +and add new public methods if needed. + +See the [PLUGINS](PLUGINS.md) document for details on how to write a plugin. As the +above description hints, it's actually pretty easy. + + +## Version number ## + +The version number of Flot is available in ```$.plot.version```. diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/CONTRIBUTING.md b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/CONTRIBUTING.md new file mode 100644 index 0000000..92067b2 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/CONTRIBUTING.md @@ -0,0 +1,98 @@ +## Contributing to Flot ## + +We welcome all contributions, but following these guidelines results in less +work for us, and a faster and better response. + +### Issues ### + +Issues are not a way to ask general questions about Flot. If you see unexpected +behavior but are not 100% certain that it is a bug, please try posting to the +[forum](http://groups.google.com/group/flot-graphs) first, and confirm that +what you see is really a Flot problem before creating a new issue for it. When +reporting a bug, please include a working demonstration of the problem, if +possible, or at least a clear description of the options you're using and the +environment (browser and version, jQuery version, other libraries) that you're +running under. + +If you have suggestions for new features, or changes to existing ones, we'd +love to hear them! Please submit each suggestion as a separate new issue. + +If you would like to work on an existing issue, please make sure it is not +already assigned to someone else. If an issue is assigned to someone, that +person has already started working on it. So, pick unassigned issues to prevent +duplicated effort. + +### Pull Requests ### + +To make merging as easy as possible, please keep these rules in mind: + + 1. Submit new features or architectural changes to the *<version>-work* + branch for the next major release. Submit bug fixes to the master branch. + + 2. Divide larger changes into a series of small, logical commits with + descriptive messages. + + 3. Rebase, if necessary, before submitting your pull request, to reduce the + work we need to do to merge it. + + 4. Format your code according to the style guidelines below. + +### Flot Style Guidelines ### + +Flot follows the [jQuery Core Style Guidelines](http://docs.jquery.com/JQuery_Core_Style_Guidelines), +with the following updates and exceptions: + +#### Spacing #### + +Use four-space indents, no tabs. Do not add horizontal space around parameter +lists, loop definitions, or array/object indices. For example: + +```js + for ( var i = 0; i < data.length; i++ ) { // This block is wrong! + if ( data[ i ] > 1 ) { + data[ i ] = 2; + } + } + + for (var i = 0; i < data.length; i++) { // This block is correct! + if (data[i] > 1) { + data[i] = 2; + } + } +``` + +#### Comments #### + +Use [jsDoc](http://usejsdoc.org) comments for all file and function headers. +Use // for all inline and block comments, regardless of length. + +All // comment blocks should have an empty line above *and* below them. For +example: + +```js + var a = 5; + + // We're going to loop here + // TODO: Make this loop faster, better, stronger! + + for (var x = 0; x < 10; x++) {} +``` + +#### Wrapping #### + +Block comments should be wrapped at 80 characters. + +Code should attempt to wrap at 80 characters, but may run longer if wrapping +would hurt readability more than having to scroll horizontally. This is a +judgement call made on a situational basis. + +Statements containing complex logic should not be wrapped arbitrarily if they +do not exceed 80 characters. For example: + +```js + if (a == 1 && // This block is wrong! + b == 2 && + c == 3) {} + + if (a == 1 && b == 2 && c == 3) {} // This block is correct! +``` diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/FAQ.md b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/FAQ.md new file mode 100644 index 0000000..7501625 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/FAQ.md @@ -0,0 +1,75 @@ +## Frequently asked questions ## + +#### How much data can Flot cope with? #### + +Flot will happily draw everything you send to it so the answer +depends on the browser. The excanvas emulation used for IE (built with +VML) makes IE by far the slowest browser so be sure to test with that +if IE users are in your target group (for large plots in IE, you can +also check out Flashcanvas which may be faster). + +1000 points is not a problem, but as soon as you start having more +points than the pixel width, you should probably start thinking about +downsampling/aggregation as this is near the resolution limit of the +chart anyway. If you downsample server-side, you also save bandwidth. + + +#### Flot isn't working when I'm using JSON data as source! #### + +Actually, Flot loves JSON data, you just got the format wrong. +Double check that you're not inputting strings instead of numbers, +like [["0", "-2.13"], ["5", "4.3"]]. This is most common mistake, and +the error might not show up immediately because Javascript can do some +conversion automatically. + + +#### Can I export the graph? #### + +You can grab the image rendered by the canvas element used by Flot +as a PNG or JPEG (remember to set a background). Note that it won't +include anything not drawn in the canvas (such as the legend). And it +doesn't work with excanvas which uses VML, but you could try +Flashcanvas. + + +#### The bars are all tiny in time mode? #### + +It's not really possible to determine the bar width automatically. +So you have to set the width with the barWidth option which is NOT in +pixels, but in the units of the x axis (or the y axis for horizontal +bars). For time mode that's milliseconds so the default value of 1 +makes the bars 1 millisecond wide. + + +#### Can I use Flot with libraries like Mootools or Prototype? #### + +Yes, Flot supports it out of the box and it's easy! Just use jQuery +instead of $, e.g. call jQuery.plot instead of $.plot and use +jQuery(something) instead of $(something). As a convenience, you can +put in a DOM element for the graph placeholder where the examples and +the API documentation are using jQuery objects. + +Depending on how you include jQuery, you may have to add one line of +code to prevent jQuery from overwriting functions from the other +libraries, see the documentation in jQuery ("Using jQuery with other +libraries") for details. + + +#### Flot doesn't work with [insert name of Javascript UI framework]! #### + +Flot is using standard HTML to make charts. If this is not working, +it's probably because the framework you're using is doing something +weird with the DOM or with the CSS that is interfering with Flot. + +A common problem is that there's display:none on a container until the +user does something. Many tab widgets work this way, and there's +nothing wrong with it - you just can't call Flot inside a display:none +container as explained in the README so you need to hold off the Flot +call until the container is actually displayed (or use +visibility:hidden instead of display:none or move the container +off-screen). + +If you find there's a specific thing we can do to Flot to help, feel +free to submit a bug report. Otherwise, you're welcome to ask for help +on the forum/mailing list, but please don't submit a bug report to +Flot. diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/Makefile b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/Makefile new file mode 100644 index 0000000..c3aba86 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/Makefile @@ -0,0 +1,12 @@ +# Makefile for generating minified files + +.PHONY: all + +# we cheat and process all .js files instead of an exhaustive list +all: $(patsubst %.js,%.min.js,$(filter-out %.min.js,$(wildcard *.js))) + +%.min.js: %.js + yui-compressor $< -o $@ + +test: + ./node_modules/.bin/jshint *jquery.flot.js diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/NEWS.md b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/NEWS.md new file mode 100644 index 0000000..9858f82 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/NEWS.md @@ -0,0 +1,1026 @@ +## Flot 0.8.3 ## + +### Changes ### + +- Updated example code to avoid encouraging unnecessary re-plots. + (patch by soenter, pull request #1221) + +### Bug fixes ### + + - Added a work-around to disable the allocation of extra space for first and + last axis ticks, allowing plots to span the full width of their container. + A proper solution for this bug will be implemented in the 0.9 release. + (reported by Josh Pigford and andig, issue #1212, pull request #1290) + + - Fixed a regression introduced in 0.8.1, where the last tick label would + sometimes wrap rather than extending the plot's offset to create space. + (reported by Elite Gamer, issue #1283) + + - Fixed a regression introduced in 0.8.2, where the resize plugin would use + unexpectedly high amounts of CPU even when idle. + (reported by tommie, issue #1277, pull request #1289) + + - Fixed the selection example to work with jQuery 1.9.x and later. + (reported by EGLadona and dmfalke, issue #1250, pull request #1285) + + - Added a detach shim to fix support for jQuery versions earlier than 1.4.x. + (reported by ngavard, issue #1240, pull request #1286) + + - Fixed a rare 'Uncaught TypeError' when using the resize plugin in IE 7/8. + (reported by tleish, issue #1265, pull request #1289) + + - Fixed zoom constraints to apply only in the direction of the zoom. + (patch by Neil Katin, issue #1204, pull request #1205) + + - Markings lines are no longer blurry when drawn on pixel boundaries. + (reported by btccointicker and Rouillard, issue #1210) + + - Don't discard original pie data-series values when combining slices. + (patch by Phil Tsarik, pull request #1238) + + - Fixed broken auto-scale behavior when using deprecated [x|y]2axis options. + (reported by jorese, issue #1228, pull request #1284) + + - Exposed the dateGenerator function on the plot object, as it used to be + before time-mode was moved into a separate plugin. + (patch by Paolo Valleri, pull request #1028) + + +## Flot 0.8.2 ## + +### Changes ### + + - Added a plot.destroy method as a way to free memory when emptying the plot + placeholder and then re-using it for some other purpose. + (patch by Thodoris Greasidis, issue #1129, pull request #1130) + + - Added a table of contents and PLUGINS link to the API documentation. + (patches by Brian Peiris, pull requests #1064 and #1127) + + - Added Ruby code examples for time conversion. + (patch by Mike Połtyn, pull request #1182) + + - Minor improvements to API.md and README.md. + (patches by Patrik Ragnarsson, pull requests #1085 and #1086) + + - Updated inlined jQuery Resize to the latest version to fix errors. + (reported by Matthew Sabol and sloker, issues #997 ad #1081) + +### Bug fixes ### + + - Fixed an unexpected change in behavior that resulted in duplicate tick + labels when using a plugin, like flot-tickrotor, that overrode tick labels. + (patch by Mark Cote, pull request #1091) + + - Fixed a regression from 0.7 where axis labels were given the wrong width, + causing them to overlap at certain scales and ignore the labelWidth option. + (patch by Benjamin Gram, pull request #1177) + + - Fixed a bug where the second axis in an xaxes/yaxes array incorrectly had + its 'innermost' property set to false or undefined, even if it was on the + other side of the plot from the first axis. This resulted in the axis bar + being visible when it shouldn't have been, which was especially obvious + when the grid had a left/right border width of zero. + (reported by Teq1, fix researched by ryleyb, issue #1056) + + - Fixed an error when using a placeholder that has no font-size property. + (patch by Craig Oldford, pull request #1135) + + - Fixed a regression from 0.7 where nulls at the end of a series were ignored + for purposes of determing the range of the x-axis. + (reported by Munsifali Rashid, issue #1095) + + - If a font size is provided, base the default lineHeight on that size rather + that the font size of the plot placeholder, which may be very different. + (reported by Daniel Hoffmann Bernardes, issue #1131, pull request #1199) + + - Fix broken highlighting for right-aligned bars. + (reported by BeWiBu and Mihai Stanciu, issues #975 and #1093, with further + assistance by Eric Byers, pull request #1120) + + - Prevent white circles from sometimes showing up inside of pie charts. + (reported by Pierre Dubois and Jack Klink, issues #1128 and #1073) + + - Label formatting no longer breaks when a page contains multiple pie charts. + (reported by Brend Wanders, issue #1055) + + - When using multiple axes on opposite sides of the plot, the innermost axis + coming later in the list no longer has its bar drawn incorrectly. + (reported by ryleyb, issue #1056) + + - When removing series labels and redrawing the plot, the legend now updates + correctly even when using an external container. + (patch by Luis Silva, issue #1159, pull request #1160) + + - The pie plugin no longer ignores the value of the left offset option. + (reported by melanker, issue #1136) + + - Fixed a regression from 0.7, where extra padding was added unnecessarily to + sides of the plot where there was no last tick label. + (reported by sknob001, issue #1048, pull request #1200) + + - Fixed incorrect tooltip behavior in the interacting example. + (patch by cleroux, issue #686, pull request #1074) + + - Fixed an error in CSS color extraction with elements outside the DOM. + (patch by execjosh, pull request #1084) + + - Fixed :not selector error when using jQuery without Sizzle. + (patch by Anthony Ryan, pull request #1180) + + - Worked around a browser issue that caused bars to appear un-filled. + (reported by irbian, issue #915) + +## Flot 0.8.1 ## + +### Bug fixes ### + + - Fixed a regression in the time plugin, introduced in 0.8, that caused dates + to align to the minute rather than to the highest appropriate unit. This + caused many x-axes in 0.8 to have different ticks than they did in 0.7. + (reported by Tom Sheppard, patch by Daniel Shapiro, issue #1017, pull + request #1023) + + - Fixed a regression in text rendering, introduced in 0.8, that caused axis + labels with the same text as another label on the same axis to disappear. + More generally, it's again possible to have the same text in two locations. + (issue #1032) + + - Fixed a regression in text rendering, introduced in 0.8, where axis labels + were no longer assigned an explicit width, and their text could not wrap. + (reported by sabregreen, issue #1019) + + - Fixed a regression in the pie plugin, introduced in 0.8, that prevented it + from accepting data in the format '[[x, y]]'. + (patch by Nicolas Morel, pull request #1024) + + - The 'zero' series option and 'autoscale' format option are no longer + ignored when the series contains a null value. + (reported by Daniel Shapiro, issue #1033) + + - Avoid triggering the time-mode plugin exception when there are zero series. + (reported by Daniel Rothig, patch by Mark Raymond, issue #1016) + + - When a custom color palette has fewer colors than the default palette, Flot + no longer fills out the colors with the remainder of the default. + (patch by goorpy, issue #1031, pull request #1034) + + - Fixed missing update for bar highlights after a zoom or other redraw. + (reported by Paolo Valleri, issue #1030) + + - Fixed compatibility with jQuery versions earlier than 1.7. + (patch by Lee Willis, issue #1027, pull request #1027) + + - The mouse wheel no longer scrolls the page when using the navigate plugin. + (patch by vird, pull request #1020) + + - Fixed missing semicolons in the core library. + (reported by Michal Zglinski) + + +## Flot 0.8.0 ## + +### API changes ### + +Support for time series has been moved into a plugin, jquery.flot.time.js. +This results in less code if time series are not used. The functionality +remains the same (plus timezone support, as described below); however, the +plugin must be included if axis.mode is set to "time". + +When the axis mode is "time", the axis option "timezone" can be set to null, +"browser", or a particular timezone (e.g. "America/New_York") to control how +the dates are displayed. If null, the dates are displayed as UTC. If +"browser", the dates are displayed in the time zone of the user's browser. + +Date/time formatting has changed and now follows a proper subset of the +standard strftime specifiers, plus one nonstandard specifier for quarters. +Additionally, if a strftime function is found in the Date object's prototype, +it will be used instead of the built-in formatter. + +Axis tick labels now use the class 'flot-tick-label' instead of 'tickLabel'. +The text containers for each axis now use the classes 'flot-[x|y]-axis' and +'flot-[x|y]#-axis' instead of '[x|y]Axis' and '[x|y]#Axis'. For compatibility +with Flot 0.7 and earlier text will continue to use the old classes as well, +but they are considered deprecated and will be removed in a future version. + +In previous versions the axis 'color' option was used to set the color of tick +marks and their label text. It now controls the color of the axis line, which +previously could not be changed separately, and continues to act as a default +for the tick-mark color. The color of tick label text is now set either by +overriding the 'flot-tick-label' CSS rule or via the axis 'font' option. + +A new plugin, jquery.flot.canvas.js, allows axis tick labels to be rendered +directly to the canvas, rather than using HTML elements. This feature can be +toggled with a simple option, making it easy to create interactive plots in the +browser using HTML, then re-render them to canvas for export as an image. + +The plugin tries to remain as faithful as possible to the original HTML render, +and goes so far as to automatically extract styles from CSS, to avoid having to +provide a separate set of styles when rendering to canvas. Due to limitations +of the canvas text API, the plugin cannot reproduce certain features, including +HTML markup embedded in labels, and advanced text styles such as 'em' units. + +The plugin requires support for canvas text, which may not be present in some +older browsers, even if they support the canvas tag itself. To use the plugin +with these browsers try using a shim such as canvas-text or FlashCanvas. + +The base and overlay canvas are now using the CSS classes "flot-base" and +"flot-overlay" to prevent accidental clashes (issue 540). + +### Changes ### + + - Addition of nonstandard %q specifier to date/time formatting. (patch + by risicle, issue 49) + + - Date/time formatting follows proper subset of strftime specifiers, and + support added for Date.prototype.strftime, if found. (patch by Mark Cote, + issues 419 and 558) + + - Fixed display of year ticks. (patch by Mark Cote, issue 195) + + - Support for time series moved to plugin. (patch by Mark Cote) + + - Display time series in different time zones. (patch by Knut Forkalsrud, + issue 141) + + - Added a canvas plugin to enable rendering axis tick labels to the canvas. + (sponsored by YCharts.com, implementation by Ole Laursen and David Schnur) + + - Support for setting the interval between redraws of the overlay canvas with + redrawOverlayInterval. (suggested in issue 185) + + - Support for multiple thresholds in thresholds plugin. (patch by Arnaud + Bellec, issue 523) + + - Support for plotting categories/textual data directly with new categories + plugin. + + - Tick generators now get the whole axis rather than just min/max. + + - Added processOffset and drawBackground hooks. (suggested in issue 639) + + - Added a grid "margin" option to set the space between the canvas edge and + the grid. + + - Prevent the pie example page from generating single-slice pies. (patch by + Shane Reustle) + + - In addition to "left" and "center", bars now recognize "right" as an + alignment option. (patch by Michael Mayer, issue 520) + + - Switched from toFixed to a much faster default tickFormatter. (patch by + Clemens Stolle) + + - Added to a more helpful error when using a time-mode axis without including + the flot.time plugin. (patch by Yael Elmatad) + + - Added a legend "sorted" option to control sorting of legend entries + independent of their series order. (patch by Tom Cleaveland) + + - Added a series "highlightColor" option to control the color of the + translucent overlay that identifies the dataset when the mouse hovers over + it. (patch by Eric Wendelin and Nate Abele, issues 168 and 299) + + - Added a plugin jquery.flot.errorbars, with an accompanying example, that + adds the ability to plot error bars, commonly used in many kinds of + statistical data visualizations. (patch by Rui Pereira, issue 215) + + - The legend now omits entries whose labelFormatter returns null. (patch by + Tom Cleaveland, Christopher Lambert, and Simon Strandgaard) + + - Added support for high pixel density (retina) displays, resulting in much + crisper charts on such devices. (patch by Olivier Guerriat, additional + fixes by Julien Thomas, maimairel, and Lau Bech Lauritzen) + + - Added the ability to control pie shadow position and alpha via a new pie + 'shadow' option. (patch by Julien Thomas, pull request #78) + + - Added the ability to set width and color for individual sides of the grid. + (patch by Ara Anjargolian, additional fixes by Karl Swedberg, pull requests #855 + and #880) + + - The selection plugin's getSelection now returns null when the selection + has been cleared. (patch by Nick Campbell, pull request #852) + + - Added a new option called 'zero' to bars and filled lines series, to control + whether the y-axis minimum is scaled to fit the data or set to zero. + (patch by David Schnur, issues #316, #529, and #856, pull request #911) + + - The plot function is now also a jQuery chainable property. + (patch by David Schnur, issues #734 and #816, pull request #953) + + - When only a single pie slice is beneath the combine threshold it is no longer + replaced by an 'other' slice. (suggested by Devin Bayer, issue #638) + + - Added lineJoin and minSize options to the selection plugin to control the + corner style and minimum size of the selection, respectively. + (patch by Ruth Linehan, pull request #963) + +### Bug fixes ### + + - Fix problem with null values and pie plugin. (patch by gcruxifix, + issue 500) + + - Fix problem with threshold plugin and bars. (based on patch by + kaarlenkaski, issue 348) + + - Fix axis box calculations so the boxes include the outermost part of the + labels too. + + - Fix problem with event clicking and hovering in IE 8 by updating Excanvas + and removing previous work-around. (test case by Ara Anjargolian) + + - Fix issues with blurry 1px border when some measures aren't integer. + (reported by Ara Anjargolian) + + - Fix bug with formats in the data processor. (reported by Peter Hull, + issue 534) + + - Prevent i from being declared global in extractRange. (reported by + Alexander Obukhov, issue 627) + + - Throw errors in a more cross-browser-compatible manner. (patch by + Eddie Kay) + + - Prevent pie slice outlines from being drawn when the stroke width is zero. + (reported by Chris Minett, issue 585) + + - Updated the navigate plugin's inline copy of jquery.mousewheel to fix + Webkit zoom problems. (reported by Hau Nguyen, issue 685) + + - Axis labels no longer appear as decimals rather than integers in certain + cases. (patch by Clemens Stolle, issue 541) + + - Automatic color generation no longer produces only whites and blacks when + there are many series. (patch by David Schnur and Tom Cleaveland) + + - Fixed an error when custom tick labels weren't provided as strings. (patch + by Shad Downey) + + - Prevented the local insertSteps and fmt variables from becoming global. + (first reported by Marc Bennewitz and Szymon Barglowski, patch by Nick + Campbell, issues #825 and #831, pull request #851) + + - Prevented several threshold plugin variables from becoming global. (patch + by Lasse Dahl Ebert) + + - Fixed various jQuery 1.8 compatibility issues. (issues #814 and #819, + pull request #877) + + - Pie charts with a slice equal to or approaching 100% of the pie no longer + appear invisible. (patch by David Schnur, issues #444, #658, #726, #824 + and #850, pull request #879) + + - Prevented several local variables from becoming global. (patch by aaa707) + + - Ensure that the overlay and primary canvases remain aligned. (issue #670, + pull request #901) + + - Added support for jQuery 1.9 by removing and replacing uses of $.browser. + (analysis and patch by Anthony Ryan, pull request #905) + + - Pie charts no longer disappear when redrawn during a resize or update. + (reported by Julien Bec, issue #656, pull request #910) + + - Avoided floating-point precision errors when calculating pie percentages. + (patch by James Ward, pull request #918) + + - Fixed compatibility with jQuery 1.2.6, which has no 'mouseleave' shortcut. + (reported by Bevan, original pull request #920, replaced by direct patch) + + - Fixed sub-pixel rendering issues with crosshair and selection lines. + (patches by alanayoub and Daniel Shapiro, pull requests #17 and #925) + + - Fixed rendering issues when using the threshold plugin with several series. + (patch by Ivan Novikov, pull request #934) + + - Pie charts no longer disappear when redrawn after calling setData(). + (reported by zengge1984 and pareeohnos, issues #810 and #945) + + - Added a work-around for the problem where points with a lineWidth of zero + still showed up with a visible line. (reported by SalvoSav, issue #842, + patch by Jamie Hamel-Smith, pull request #937) + + - Pie charts now accept values in string form, like other plot types. + (reported by laerdal.no, issue #534) + + - Avoid rounding errors in the threshold plugin. + (reported by jerikojerk, issue #895) + + - Fixed an error when using the navigate plugin with jQuery 1.9.x or later. + (reported by Paolo Valleri, issue #964) + + - Fixed inconsistencies between the highlight and unhighlight functions. + (reported by djamshed, issue #987) + + - Fixed recalculation of tickSize and tickDecimals on calls to setupGrid. + (patch by thecountofzero, pull request #861, issues #860, #1000) + + +## Flot 0.7 ## + +### API changes ### + +Multiple axes support. Code using dual axes should be changed from using +x2axis/y2axis in the options to using an array (although backwards- +compatibility hooks are in place). For instance, + +```js +{ + xaxis: { ... }, x2axis: { ... }, + yaxis: { ... }, y2axis: { ... } +} +``` + +becomes + +```js +{ + xaxes: [ { ... }, { ... } ], + yaxes: [ { ... }, { ... } ] +} +``` + +Note that if you're just using one axis, continue to use the xaxis/yaxis +directly (it now sets the default settings for the arrays). Plugins touching +the axes must be ported to take the extra axes into account, check the source +to see some examples. + +A related change is that the visibility of axes is now auto-detected. So if +you were relying on an axis to show up even without any data in the chart, you +now need to set the axis "show" option explicitly. + +"tickColor" on the grid options is now deprecated in favour of a corresponding +option on the axes, so: + +```js +{ grid: { tickColor: "#000" }} +``` + +becomes + +```js +{ xaxis: { tickColor: "#000"}, yaxis: { tickColor: "#000"} } +``` + +But if you just configure a base color Flot will now autogenerate a tick color +by adding transparency. Backwards-compatibility hooks are in place. + +Final note: now that IE 9 is coming out with canvas support, you may want to +adapt the excanvas include to skip loading it in IE 9 (the examples have been +adapted thanks to Ryley Breiddal). An alternative to excanvas using Flash has +also surfaced, if your graphs are slow in IE, you may want to give it a spin: + + http://code.google.com/p/flashcanvas/ + +### Changes ### + + - Support for specifying a bottom for each point for line charts when filling + them, this means that an arbitrary bottom can be used instead of just the x + axis. (based on patches patiently provided by Roman V. Prikhodchenko) + + - New fillbetween plugin that can compute a bottom for a series from another + series, useful for filling areas between lines. + + See new example percentiles.html for a use case. + + - More predictable handling of gaps for the stacking plugin, now all + undefined ranges are skipped. + + - Stacking plugin can stack horizontal bar charts. + + - Navigate plugin now redraws the plot while panning instead of only after + the fact. (raised by lastthemy, issue 235) + + Can be disabled by setting the pan.frameRate option to null. + + - Date formatter now accepts %0m and %0d to get a zero-padded month or day. + (issue raised by Maximillian Dornseif) + + - Revamped internals to support an unlimited number of axes, not just dual. + (sponsored by Flight Data Services, www.flightdataservices.com) + + - New setting on axes, "tickLength", to control the size of ticks or turn + them off without turning off the labels. + + - Axis labels are now put in container divs with classes, for instance labels + in the x axes can be reached via ".xAxis .tickLabel". + + - Support for setting the color of an axis. (sponsored by Flight Data + Services, www.flightdataservices.com) + + - Tick color is now auto-generated as the base color with some transparency, + unless you override it. + + - Support for aligning ticks in the axes with "alignTicksWithAxis" to ensure + that they appear next to each other rather than in between, at the expense + of possibly awkward tick steps. (sponsored by Flight Data Services, + www.flightdataservices.com) + + - Support for customizing the point type through a callback when plotting + points and new symbol plugin with some predefined point types. (sponsored + by Utility Data Corporation) + + - Resize plugin for automatically redrawing when the placeholder changes + size, e.g. on window resizes. (sponsored by Novus Partners) + + A resize() method has been added to plot object facilitate this. + + - Support Infinity/-Infinity for plotting asymptotes by hacking it into + +/-Number.MAX_VALUE. (reported by rabaea.mircea) + + - Support for restricting navigate plugin to not pan/zoom an axis. (based on + patch by kkaefer) + + - Support for providing the drag cursor for the navigate plugin as an option. + (based on patch by Kelly T. Moore) + + - Options for controlling whether an axis is shown or not (suggestion by Timo + Tuominen) and whether to reserve space for it even if it isn't shown. + + - New attribute $.plot.version with the Flot version as a string. + + - The version comment is now included in the minified jquery.flot.min.js. + + - New options.grid.minBorderMargin for adjusting the minimum margin provided + around the border (based on patch by corani, issue 188). + + - Refactor replot behaviour so Flot tries to reuse the existing canvas, + adding shutdown() methods to the plot. (based on patch by Ryley Breiddal, + issue 269) + + This prevents a memory leak in Chrome and hopefully makes replotting faster + for those who are using $.plot instead of .setData()/.draw(). Also update + jQuery to 1.5.1 to prevent IE leaks fixed in jQuery. + + - New real-time line chart example. + + - New hooks: drawSeries, shutdown. + +### Bug fixes ### + + - Fixed problem with findNearbyItem and bars on top of each other. (reported + by ragingchikn, issue 242) + + - Fixed problem with ticks and the border. (based on patch from + ultimatehustler69, issue 236) + + - Fixed problem with plugins adding options to the series objects. + + - Fixed a problem introduced in 0.6 with specifying a gradient with: + + ```{brightness: x, opacity: y }``` + + - Don't use $.browser.msie, check for getContext on the created canvas element + instead and try to use excanvas if it's not found. + + Fixes IE 9 compatibility. + + - highlight(s, index) was looking up the point in the original s.data instead + of in the computed datapoints array, which breaks with plugins that modify + the datapoints, such as the stacking plugin. (reported by curlypaul924, + issue 316) + + - More robust handling of axis from data passed in from getData(). (reported) + by Morgan) + + - Fixed problem with turning off bar outline. (fix by Jordi Castells, + issue 253) + + - Check the selection passed into setSelection in the selection + plugin, to guard against errors when synchronizing plots (fix by Lau + Bech Lauritzen). + + - Fix bug in crosshair code with mouseout resetting the crosshair even + if it is locked (fix by Lau Bech Lauritzen and Banko Adam). + + - Fix bug with points plotting using line width from lines rather than + points. + + - Fix bug with passing non-array 0 data (for plugins that don't expect + arrays, patch by vpapp1). + + - Fix errors in JSON in examples so they work with jQuery 1.4.2 + (fix reported by honestbleeps, issue 357). + + - Fix bug with tooltip in interacting.html, this makes the tooltip + much smoother (fix by bdkahn). Fix related bug inside highlighting + handler in Flot. + + - Use closure trick to make inline colorhelpers plugin respect + jQuery.noConflict(true), renaming the global jQuery object (reported + by Nick Stielau). + + - Listen for mouseleave events and fire a plothover event with empty + item when it occurs to drop highlights when the mouse leaves the + plot (reported by by outspirit). + + - Fix bug with using aboveData with a background (reported by + amitayd). + + - Fix possible excanvas leak (report and suggested fix by tom9729). + + - Fix bug with backwards compatibility for shadowSize = 0 (report and + suggested fix by aspinak). + + - Adapt examples to skip loading excanvas (fix by Ryley Breiddal). + + - Fix bug that prevent a simple f(x) = -x transform from working + correctly (fix by Mike, issue 263). + + - Fix bug in restoring cursor in navigate plugin (reported by Matteo + Gattanini, issue 395). + + - Fix bug in picking items when transform/inverseTransform is in use + (reported by Ofri Raviv, and patches and analysis by Jan and Tom + Paton, issue 334 and 467). + + - Fix problem with unaligned ticks and hover/click events caused by + padding on the placeholder by hardcoding the placeholder padding to + 0 (reported by adityadineshsaxena, Matt Sommer, Daniel Atos and some + other people, issue 301). + + - Update colorhelpers plugin to avoid dying when trying to parse an + invalid string (reported by cadavor, issue 483). + + + +## Flot 0.6 ## + +### API changes ### + +Selection support has been moved to a plugin. Thus if you're passing +selection: { mode: something }, you MUST include the file +jquery.flot.selection.js after jquery.flot.js. This reduces the size of +base Flot and makes it easier to customize the selection as well as +improving code clarity. The change is based on a patch from andershol. + +In the global options specified in the $.plot command, "lines", "points", +"bars" and "shadowSize" have been moved to a sub-object called "series": + +```js +$.plot(placeholder, data, { lines: { show: true }}) +``` + +should be changed to + +```js + $.plot(placeholder, data, { series: { lines: { show: true }}}) +``` + +All future series-specific options will go into this sub-object to +simplify plugin writing. Backward-compatibility code is in place, so +old code should not break. + +"plothover" no longer provides the original data point, but instead a +normalized one, since there may be no corresponding original point. + +Due to a bug in previous versions of jQuery, you now need at least +jQuery 1.2.6. But if you can, try jQuery 1.3.2 as it got some improvements +in event handling speed. + +## Changes ## + + - Added support for disabling interactivity for specific data series. + (request from Ronald Schouten and Steve Upton) + + - Flot now calls $() on the placeholder and optional legend container passed + in so you can specify DOM elements or CSS expressions to make it easier to + use Flot with libraries like Prototype or Mootools or through raw JSON from + Ajax responses. + + - A new "plotselecting" event is now emitted while the user is making a + selection. + + - The "plothover" event is now emitted immediately instead of at most 10 + times per second, you'll have to put in a setTimeout yourself if you're + doing something really expensive on this event. + + - The built-in date formatter can now be accessed as $.plot.formatDate(...) + (suggestion by Matt Manela) and even replaced. + + - Added "borderColor" option to the grid. (patches from Amaury Chamayou and + Mike R. Williamson) + + - Added support for gradient backgrounds for the grid. (based on patch from + Amaury Chamayou, issue 90) + + The "setting options" example provides a demonstration. + + - Gradient bars. (suggestion by stefpet) + + - Added a "plotunselected" event which is triggered when the selection is + removed, see "selection" example. (suggestion by Meda Ugo) + + - The option legend.margin can now specify horizontal and vertical margins + independently. (suggestion by someone who's annoyed) + + - Data passed into Flot is now copied to a new canonical format to enable + further processing before it hits the drawing routines. As a side-effect, + this should make Flot more robust in the face of bad data. (issue 112) + + - Step-wise charting: line charts have a new option "steps" that when set to + true connects the points with horizontal/vertical steps instead of diagonal + lines. + + - The legend labelFormatter now passes the series in addition to just the + label. (suggestion by Vincent Lemeltier) + + - Horizontal bars (based on patch by Jason LeBrun). + + - Support for partial bars by specifying a third coordinate, i.e. they don't + have to start from the axis. This can be used to make stacked bars. + + - New option to disable the (grid.show). + + - Added pointOffset method for converting a point in data space to an offset + within the placeholder. + + - Plugin system: register an init method in the $.flot.plugins array to get + started, see PLUGINS.txt for details on how to write plugins (it's easy). + There are also some extra methods to enable access to internal state. + + - Hooks: you can register functions that are called while Flot is crunching + the data and doing the plot. This can be used to modify Flot without + changing the source, useful for writing plugins. Some hooks are defined, + more are likely to come. + + - Threshold plugin: you can set a threshold and a color, and the data points + below that threshold will then get the color. Useful for marking data + below 0, for instance. + + - Stack plugin: you can specify a stack key for each series to have them + summed. This is useful for drawing additive/cumulative graphs with bars and + (currently unfilled) lines. + + - Crosshairs plugin: trace the mouse position on the axes, enable with + crosshair: { mode: "x"} (see the new tracking example for a use). + + - Image plugin: plot prerendered images. + + - Navigation plugin for panning and zooming a plot. + + - More configurable grid. + + - Axis transformation support, useful for non-linear plots, e.g. log axes and + compressed time axes (like omitting weekends). + + - Support for twelve-hour date formatting (patch by Forrest Aldridge). + + - The color parsing code in Flot has been cleaned up and split out so it's + now available as a separate jQuery plugin. It's included inline in the Flot + source to make dependency managing easier. This also makes it really easy + to use the color helpers in Flot plugins. + +## Bug fixes ## + + - Fixed two corner-case bugs when drawing filled curves. (report and analysis + by Joshua Varner) + + - Fix auto-adjustment code when setting min to 0 for an axis where the + dataset is completely flat on that axis. (report by chovy) + + - Fixed a bug with passing in data from getData to setData when the secondary + axes are used. (reported by nperelman, issue 65) + + - Fixed so that it is possible to turn lines off when no other chart type is + shown (based on problem reported by Glenn Vanderburg), and fixed so that + setting lineWidth to 0 also hides the shadow. (based on problem reported by + Sergio Nunes) + + - Updated mousemove position expression to the latest from jQuery. (reported + by meyuchas) + + - Use CSS borders instead of background in legend. (issues 25 and 45) + + - Explicitly convert axis min/max to numbers. + + - Fixed a bug with drawing marking lines with different colors. (reported by + Khurram) + + - Fixed a bug with returning y2 values in the selection event. (fix by + exists, issue 75) + + - Only set position relative on placeholder if it hasn't already a position + different from static. (reported by kyberneticist, issue 95) + + - Don't round markings to prevent sub-pixel problems. (reported by + Dan Lipsitt) + + - Make the grid border act similarly to a regular CSS border, i.e. prevent + it from overlapping the plot itself. This also fixes a problem with anti- + aliasing when the width is 1 pixel. (reported by Anthony Ettinger) + + - Imported version 3 of excanvas and fixed two issues with the newer version. + Hopefully, this will make Flot work with IE8. (nudge by Fabien Menager, + further analysis by Booink, issue 133) + + - Changed the shadow code for lines to hopefully look a bit better with + vertical lines. + + - Round tick positions to avoid possible problems with fractions. (suggestion + by Fred, issue 130) + + - Made the heuristic for determining how many ticks to aim for a bit smarter. + + - Fix for uneven axis margins (report and patch by Paul Kienzle) and snapping + to ticks. (report and patch by lifthrasiir) + + - Fixed bug with slicing in findNearbyItems. (patch by zollman) + + - Make heuristic for x axis label widths more dynamic. (patch by + rickinhethuis) + + - Make sure points on top take precedence when finding nearby points when + hovering. (reported by didroe, issue 224) + + + +## Flot 0.5 ## + +Timestamps are now in UTC. Also "selected" event -> becomes "plotselected" +with new data, the parameters for setSelection are now different (but +backwards compatibility hooks are in place), coloredAreas becomes markings +with a new interface (but backwards compatibility hooks are in place). + +### API changes ### + +Timestamps in time mode are now displayed according to UTC instead of the time +zone of the visitor. This affects the way the timestamps should be input; +you'll probably have to offset the timestamps according to your local time +zone. It also affects any custom date handling code (which basically now +should use the equivalent UTC date mehods, e.g. .setUTCMonth() instead of +.setMonth(). + +Markings, previously coloredAreas, are now specified as ranges on the axes, +like ```{ xaxis: { from: 0, to: 10 }}```. Furthermore with markings you can +now draw horizontal/vertical lines by setting from and to to the same +coordinate. (idea from line support patch by by Ryan Funduk) + +Interactivity: added a new "plothover" event and this and the "plotclick" +event now returns the closest data item (based on patch by /david, patch by +Mark Byers for bar support). See the revamped "interacting with the data" +example for some hints on what you can do. + +Highlighting: you can now highlight points and datapoints are autohighlighted +when you hover over them (if hovering is turned on). + +Support for dual axis has been added (based on patch by someone who's annoyed +and /david). For each data series you can specify which axes it belongs to, +and there are two more axes, x2axis and y2axis, to customize. This affects the +"selected" event which has been renamed to "plotselected" and spews out +```{ xaxis: { from: -10, to: 20 } ... },``` setSelection in which the +parameters are on a new form (backwards compatible hooks are in place so old +code shouldn't break) and markings (formerly coloredAreas). + +## Changes ## + + - Added support for specifying the size of tick labels (axis.labelWidth, + axis.labelHeight). Useful for specifying a max label size to keep multiple + plots aligned. + + - The "fill" option can now be a number that specifies the opacity of the + fill. + + - You can now specify a coordinate as null (like [2, null]) and Flot will + take the other coordinate into account when scaling the axes. (based on + patch by joebno) + + - New option for bars "align". Set it to "center" to center the bars on the + value they represent. + + - setSelection now takes a second parameter which you can use to prevent the + method from firing the "plotselected" handler. + + - Improved the handling of axis auto-scaling with bars. + +## Bug fixes ## + + - Fixed a bug in calculating spacing around the plot. (reported by + timothytoe) + + - Fixed a bug in finding max values for all-negative data sets. + + - Prevent the possibility of eternal looping in tick calculations. + + - Fixed a bug when borderWidth is set to 0. (reported by Rob/sanchothefat) + + - Fixed a bug with drawing bars extending below 0. (reported by James Hewitt, + patch by Ryan Funduk). + + - Fixed a bug with line widths of bars. (reported by MikeM) + + - Fixed a bug with 'nw' and 'sw' legend positions. + + - Fixed a bug with multi-line x-axis tick labels. (reported by Luca Ciano, + IE-fix help by Savage Zhang) + + - Using the "container" option in legend now overwrites the container element + instead of just appending to it, fixing the infinite legend bug. (reported + by several people, fix by Brad Dewey) + + + +## Flot 0.4 ## + +### API changes ### + +Deprecated axis.noTicks in favor of just specifying the number as axis.ticks. +So ```xaxis: { noTicks: 10 }``` becomes ```xaxis: { ticks: 10 }```. + +Time series support. Specify axis.mode: "time", put in Javascript timestamps +as data, and Flot will automatically spit out sensible ticks. Take a look at +the two new examples. The format can be customized with axis.timeformat and +axis.monthNames, or if that fails with axis.tickFormatter. + +Support for colored background areas via grid.coloredAreas. Specify an array +of { x1, y1, x2, y2 } objects or a function that returns these given +{ xmin, xmax, ymin, ymax }. + +More members on the plot object (report by Chris Davies and others). +"getData" for inspecting the assigned settings on data series (e.g. color) and +"setData", "setupGrid" and "draw" for updating the contents without a total +replot. + +The default number of ticks to aim for is now dependent on the size of the +plot in pixels. Support for customizing tick interval sizes directly with +axis.minTickSize and axis.tickSize. + +Cleaned up the automatic axis scaling algorithm and fixed how it interacts +with ticks. Also fixed a couple of tick-related corner case bugs (one reported +by mainstreetmark, another reported by timothytoe). + +The option axis.tickFormatter now takes a function with two parameters, the +second parameter is an optional object with information about the axis. It has +min, max, tickDecimals, tickSize. + +## Changes ## + + - Added support for segmented lines. (based on patch from Michael MacDonald) + + - Added support for ignoring null and bad values. (suggestion from Nick + Konidaris and joshwaihi) + + - Added support for changing the border width. (thanks to joebno and safoo) + + - Label colors can be changed via CSS by selecting the tickLabel class. + +## Bug fixes ## + + - Fixed a bug in handling single-item bar series. (reported by Emil Filipov) + + - Fixed erratic behaviour when interacting with the plot with IE 7. (reported + by Lau Bech Lauritzen). + + - Prevent IE/Safari text selection when selecting stuff on the canvas. + + + +## Flot 0.3 ## + +This is mostly a quick-fix release because jquery.js wasn't included in the +previous zip/tarball. + +## Changes ## + + - Include jquery.js in the zip/tarball. + + - Support clicking on the plot. Turn it on with grid: { clickable: true }, + then you get a "plotclick" event on the graph placeholder with the position + in units of the plot. + +## Bug fixes ## + + - Fixed a bug in dealing with data where min = max. (thanks to Michael + Messinides) + + + +## Flot 0.2 ## + +The API should now be fully documented. + +### API changes ### + +Moved labelMargin option to grid from x/yaxis. + +## Changes ## + + - Added support for putting a background behind the default legend. The + default is the partly transparent background color. Added backgroundColor + and backgroundOpacity to the legend options to control this. + + - The ticks options can now be a callback function that takes one parameter, + an object with the attributes min and max. The function should return a + ticks array. + + - Added labelFormatter option in legend, useful for turning the legend + labels into links. + + - Reduced the size of the code. (patch by Guy Fraser) + + + +## Flot 0.1 ## + +First public release. diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/PLUGINS.md b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/PLUGINS.md new file mode 100644 index 0000000..3358356 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/PLUGINS.md @@ -0,0 +1,143 @@ +## Writing plugins ## + +All you need to do to make a new plugin is creating an init function +and a set of options (if needed), stuffing it into an object and +putting it in the $.plot.plugins array. For example: + +```js +function myCoolPluginInit(plot) { + plot.coolstring = "Hello!"; +}; + +$.plot.plugins.push({ init: myCoolPluginInit, options: { ... } }); + +// if $.plot is called, it will return a plot object with the +// attribute "coolstring" +``` + +Now, given that the plugin might run in many different places, it's +a good idea to avoid leaking names. The usual trick here is wrap the +above lines in an anonymous function which is called immediately, like +this: (function () { inner code ... })(). To make it even more robust +in case $ is not bound to jQuery but some other Javascript library, we +can write it as + +```js +(function ($) { + // plugin definition + // ... +})(jQuery); +``` + +There's a complete example below, but you should also check out the +plugins bundled with Flot. + + +## Complete example ## + +Here is a simple debug plugin which alerts each of the series in the +plot. It has a single option that control whether it is enabled and +how much info to output: + +```js +(function ($) { + function init(plot) { + var debugLevel = 1; + + function checkDebugEnabled(plot, options) { + if (options.debug) { + debugLevel = options.debug; + plot.hooks.processDatapoints.push(alertSeries); + } + } + + function alertSeries(plot, series, datapoints) { + var msg = "series " + series.label; + if (debugLevel > 1) { + msg += " with " + series.data.length + " points"; + alert(msg); + } + } + + plot.hooks.processOptions.push(checkDebugEnabled); + } + + var options = { debug: 0 }; + + $.plot.plugins.push({ + init: init, + options: options, + name: "simpledebug", + version: "0.1" + }); +})(jQuery); +``` + +We also define "name" and "version". It's not used by Flot, but might +be helpful for other plugins in resolving dependencies. + +Put the above in a file named "jquery.flot.debug.js", include it in an +HTML page and then it can be used with: + +```js + $.plot($("#placeholder"), [...], { debug: 2 }); +``` + +This simple plugin illustrates a couple of points: + + - It uses the anonymous function trick to avoid name pollution. + - It can be enabled/disabled through an option. + - Variables in the init function can be used to store plot-specific + state between the hooks. + +The two last points are important because there may be multiple plots +on the same page, and you'd want to make sure they are not mixed up. + + +## Shutting down a plugin ## + +Each plot object has a shutdown hook which is run when plot.shutdown() +is called. This usually mostly happens in case another plot is made on +top of an existing one. + +The purpose of the hook is to give you a chance to unbind any event +handlers you've registered and remove any extra DOM things you've +inserted. + +The problem with event handlers is that you can have registered a +handler which is run in some point in the future, e.g. with +setTimeout(). Meanwhile, the plot may have been shutdown and removed, +but because your event handler is still referencing it, it can't be +garbage collected yet, and worse, if your handler eventually runs, it +may overwrite stuff on a completely different plot. + + +## Some hints on the options ## + +Plugins should always support appropriate options to enable/disable +them because the plugin user may have several plots on the same page +where only one should use the plugin. In most cases it's probably a +good idea if the plugin is turned off rather than on per default, just +like most of the powerful features in Flot. + +If the plugin needs options that are specific to each series, like the +points or lines options in core Flot, you can put them in "series" in +the options object, e.g. + +```js +var options = { + series: { + downsample: { + algorithm: null, + maxpoints: 1000 + } + } +} +``` + +Then they will be copied by Flot into each series, providing default +values in case none are specified. + +Think hard and long about naming the options. These names are going to +be public API, and code is going to depend on them if the plugin is +successful. diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/README.md b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/README.md new file mode 100644 index 0000000..fc64147 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/README.md @@ -0,0 +1,110 @@ +# Flot [![Build status](https://travis-ci.org/flot/flot.png)](https://travis-ci.org/flot/flot) + +## About ## + +Flot is a Javascript plotting library for jQuery. +Read more at the website: + +Take a look at the the examples in examples/index.html; they should give a good +impression of what Flot can do, and the source code of the examples is probably +the fastest way to learn how to use Flot. + + +## Installation ## + +Just include the Javascript file after you've included jQuery. + +Generally, all browsers that support the HTML5 canvas tag are +supported. + +For support for Internet Explorer < 9, you can use [Excanvas] +[excanvas], a canvas emulator; this is used in the examples bundled +with Flot. You just include the excanvas script like this: + +```html + +``` + +If it's not working on your development IE 6.0, check that it has +support for VML which Excanvas is relying on. It appears that some +stripped down versions used for test environments on virtual machines +lack the VML support. + +You can also try using [Flashcanvas][flashcanvas], which uses Flash to +do the emulation. Although Flash can be a bit slower to load than VML, +if you've got a lot of points, the Flash version can be much faster +overall. Flot contains some wrapper code for activating Excanvas which +Flashcanvas is compatible with. + +You need at least jQuery 1.2.6, but try at least 1.3.2 for interactive +charts because of performance improvements in event handling. + + +## Basic usage ## + +Create a placeholder div to put the graph in: + +```html +
+``` + +You need to set the width and height of this div, otherwise the plot +library doesn't know how to scale the graph. You can do it inline like +this: + +```html +
+``` + +You can also do it with an external stylesheet. Make sure that the +placeholder isn't within something with a display:none CSS property - +in that case, Flot has trouble measuring label dimensions which +results in garbled looks and might have trouble measuring the +placeholder dimensions which is fatal (it'll throw an exception). + +Then when the div is ready in the DOM, which is usually on document +ready, run the plot function: + +```js +$.plot($("#placeholder"), data, options); +``` + +Here, data is an array of data series and options is an object with +settings if you want to customize the plot. Take a look at the +examples for some ideas of what to put in or look at the +[API reference](API.md). Here's a quick example that'll draw a line +from (0, 0) to (1, 1): + +```js +$.plot($("#placeholder"), [ [[0, 0], [1, 1]] ], { yaxis: { max: 1 } }); +``` + +The plot function immediately draws the chart and then returns a plot +object with a couple of methods. + + +## What's with the name? ## + +First: it's pronounced with a short o, like "plot". Not like "flawed". + +So "Flot" rhymes with "plot". + +And if you look up "flot" in a Danish-to-English dictionary, some of +the words that come up are "good-looking", "attractive", "stylish", +"smart", "impressive", "extravagant". One of the main goals with Flot +is pretty looks. + + +## Notes about the examples ## + +In order to have a useful, functional example of time-series plots using time +zones, date.js from [timezone-js][timezone-js] (released under the Apache 2.0 +license) and the [Olson][olson] time zone database (released to the public +domain) have been included in the examples directory. They are used in +examples/axes-time-zones/index.html. + + +[excanvas]: http://code.google.com/p/explorercanvas/ +[flashcanvas]: http://code.google.com/p/flashcanvas/ +[timezone-js]: https://github.com/mde/timezone-js +[olson]: http://ftp.iana.org/time-zones diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/component.json b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/component.json new file mode 100644 index 0000000..5f5bea6 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/component.json @@ -0,0 +1,8 @@ +{ + "name": "Flot", + "version": "0.8.3", + "main": "jquery.flot.js", + "dependencies": { + "jquery": ">= 1.2.6" + } +} diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-1.json b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-1.json new file mode 100644 index 0000000..32f0fb1 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-1.json @@ -0,0 +1,4 @@ +{ + "label": "Europe (EU27)", + "data": [[1999, 3.0], [2000, 3.9]] +} diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-2.json b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-2.json new file mode 100644 index 0000000..bc9d069 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-2.json @@ -0,0 +1,4 @@ +{ + "label": "Europe (EU27)", + "data": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2]] +} diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-3.json b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-3.json new file mode 100644 index 0000000..77deca5 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-3.json @@ -0,0 +1,4 @@ +{ + "label": "Europe (EU27)", + "data": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5]] +} diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-4.json b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-4.json new file mode 100644 index 0000000..8ab0796 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-4.json @@ -0,0 +1,4 @@ +{ + "label": "Europe (EU27)", + "data": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1]] +} diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-5.json b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-5.json new file mode 100644 index 0000000..9f81c14 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-5.json @@ -0,0 +1,4 @@ +{ + "label": "Europe (EU27)", + "data": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]] +} diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth.json b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth.json new file mode 100644 index 0000000..9f81c14 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth.json @@ -0,0 +1,4 @@ +{ + "label": "Europe (EU27)", + "data": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]] +} diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-japan-gdp-growth.json b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-japan-gdp-growth.json new file mode 100644 index 0000000..f3f7f7f --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-japan-gdp-growth.json @@ -0,0 +1,4 @@ +{ + "label": "Japan", + "data": [[1999, -0.1], [2000, 2.9], [2001, 0.2], [2002, 0.3], [2003, 1.4], [2004, 2.7], [2005, 1.9], [2006, 2.0], [2007, 2.3], [2008, -0.7]] +} diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-usa-gdp-growth.json b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-usa-gdp-growth.json new file mode 100644 index 0000000..271542c --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/data-usa-gdp-growth.json @@ -0,0 +1,4 @@ +{ + "label": "USA", + "data": [[1999, 4.4], [2000, 3.7], [2001, 0.8], [2002, 1.6], [2003, 2.5], [2004, 3.6], [2005, 2.9], [2006, 2.8], [2007, 2.0], [2008, 1.1]] +} diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/index.html new file mode 100644 index 0000000..75ab0fd --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/ajax/index.html @@ -0,0 +1,173 @@ + + + + + Flot Examples: AJAX + + + + + + + + + + +
+ +
+
+
+ +

Example of loading data dynamically with AJAX. Percentage change in GDP (source: Eurostat). Click the buttons below:

+ +

The data is fetched over HTTP, in this case directly from text files. Usually the URL would point to some web server handler (e.g. a PHP page or Java/.NET/Python/Ruby on Rails handler) that extracts it from a database and serializes it to JSON.

+ +

+ + [ see data ] + +

+ +

+ + [ see data ] + +

+ +

+ + [ see data ] + +

+ +

If you combine AJAX with setTimeout, you can poll the server for new data.

+ +

+ +

+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/annotating/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/annotating/index.html new file mode 100644 index 0000000..7a50277 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/annotating/index.html @@ -0,0 +1,87 @@ + + + + + Flot Examples: Adding Annotations + + + + + + + + + + +
+ +
+
+
+ +

Flot has support for simple background decorations such as lines and rectangles. They can be useful for marking up certain areas. You can easily add any HTML you need with standard DOM manipulation, e.g. for labels. For drawing custom shapes there is also direct access to the canvas.

+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-interacting/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-interacting/index.html new file mode 100644 index 0000000..befc837 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-interacting/index.html @@ -0,0 +1,97 @@ + + + + + Flot Examples: Interacting with axes + + + + + + + + + + +
+ +
+
+
+ +

With multiple axes, you sometimes need to interact with them. A simple way to do this is to draw the plot, deduce the axis placements and insert a couple of divs on top to catch events.

+ +

Try clicking an axis.

+ +

+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-multiple/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-multiple/index.html new file mode 100644 index 0000000..776a962 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-multiple/index.html @@ -0,0 +1,77 @@ + + + + + Flot Examples: Multiple Axes + + + + + + + + + + + +
+ +
+
+
+ +

Multiple axis support showing the raw oil price in US $/barrel of crude oil vs. the exchange rate from US $ to €.

+ +

As illustrated, you can put in multiple axes if you need to. For each data series, simply specify the axis number. In the options, you can then configure where you want the extra axes to appear.

+ +

Position axis or .

+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/date.js b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/date.js new file mode 100644 index 0000000..954e299 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/date.js @@ -0,0 +1,893 @@ +// ----- +// The `timezoneJS.Date` object gives you full-blown timezone support, independent from the timezone set on the end-user's machine running the browser. It uses the Olson zoneinfo files for its timezone data. +// +// The constructor function and setter methods use proxy JavaScript Date objects behind the scenes, so you can use strings like '10/22/2006' with the constructor. You also get the same sensible wraparound behavior with numeric parameters (like setting a value of 14 for the month wraps around to the next March). +// +// The other significant difference from the built-in JavaScript Date is that `timezoneJS.Date` also has named properties that store the values of year, month, date, etc., so it can be directly serialized to JSON and used for data transfer. + +/* + * Copyright 2010 Matthew Eernisse (mde@fleegix.org) + * and Open Source Applications Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Credits: Ideas included from incomplete JS implementation of Olson + * parser, "XMLDAte" by Philippe Goetz (philippe.goetz@wanadoo.fr) + * + * Contributions: + * Jan Niehusmann + * Ricky Romero + * Preston Hunt (prestonhunt@gmail.com) + * Dov. B Katz (dov.katz@morganstanley.com) + * Peter Bergström (pbergstr@mac.com) + * Long Ho + */ +(function () { + // Standard initialization stuff to make sure the library is + // usable on both client and server (node) side. + + var root = this; + + var timezoneJS; + if (typeof exports !== 'undefined') { + timezoneJS = exports; + } else { + timezoneJS = root.timezoneJS = {}; + } + + timezoneJS.VERSION = '1.0.0'; + + // Grab the ajax library from global context. + // This can be jQuery, Zepto or fleegix. + // You can also specify your own transport mechanism by declaring + // `timezoneJS.timezone.transport` to a `function`. More details will follow + var $ = root.$ || root.jQuery || root.Zepto + , fleegix = root.fleegix + // Declare constant list of days and months. Unfortunately this doesn't leave room for i18n due to the Olson data being in English itself + , DAYS = timezoneJS.Days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] + , MONTHS = timezoneJS.Months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] + , SHORT_MONTHS = {} + , SHORT_DAYS = {} + , EXACT_DATE_TIME = {} + , TZ_REGEXP = new RegExp('^[a-zA-Z]+/'); + + //`{ "Jan": 0, "Feb": 1, "Mar": 2, "Apr": 3, "May": 4, "Jun": 5, "Jul": 6, "Aug": 7, "Sep": 8, "Oct": 9, "Nov": 10, "Dec": 11 }` + for (var i = 0; i < MONTHS.length; i++) { + SHORT_MONTHS[MONTHS[i].substr(0, 3)] = i; + } + + //`{ "Sun": 0, "Mon": 1, "Tue": 2, "Wed": 3, "Thu": 4, "Fri": 5, "Sat": 6 }` + for (i = 0; i < DAYS.length; i++) { + SHORT_DAYS[DAYS[i].substr(0, 3)] = i; + } + + + //Handle array indexOf in IE + if (!Array.prototype.indexOf) { + Array.prototype.indexOf = function (el) { + for (var i = 0; i < this.length; i++ ) { + if (el === this[i]) return i; + } + return -1; + } + } + + // Format a number to the length = digits. For ex: + // + // `_fixWidth(2, 2) = '02'` + // + // `_fixWidth(1998, 2) = '98'` + // + // This is used to pad numbers in converting date to string in ISO standard. + var _fixWidth = function (number, digits) { + if (typeof number !== "number") { throw "not a number: " + number; } + var s = number.toString(); + if (number.length > digits) { + return number.substr(number.length - digits, number.length); + } + while (s.length < digits) { + s = '0' + s; + } + return s; + }; + + // Abstraction layer for different transport layers, including fleegix/jQuery/Zepto + // + // Object `opts` include + // + // - `url`: url to ajax query + // + // - `async`: true for asynchronous, false otherwise. If false, return value will be response from URL. This is true by default + // + // - `success`: success callback function + // + // - `error`: error callback function + // Returns response from URL if async is false, otherwise the AJAX request object itself + var _transport = function (opts) { + if ((!fleegix || typeof fleegix.xhr === 'undefined') && (!$ || typeof $.ajax === 'undefined')) { + throw new Error('Please use the Fleegix.js XHR module, jQuery ajax, Zepto ajax, or define your own transport mechanism for downloading zone files.'); + } + if (!opts) return; + if (!opts.url) throw new Error ('URL must be specified'); + if (!('async' in opts)) opts.async = true; + if (!opts.async) { + return fleegix && fleegix.xhr + ? fleegix.xhr.doReq({ url: opts.url, async: false }) + : $.ajax({ url : opts.url, async : false }).responseText; + } + return fleegix && fleegix.xhr + ? fleegix.xhr.send({ + url : opts.url, + method : 'get', + handleSuccess : opts.success, + handleErr : opts.error + }) + : $.ajax({ + url : opts.url, + dataType: 'text', + method : 'GET', + error : opts.error, + success : opts.success + }); + }; + + // Constructor, which is similar to that of the native Date object itself + timezoneJS.Date = function () { + var args = Array.prototype.slice.apply(arguments) + , dt = null + , tz = null + , arr = []; + + + //We support several different constructors, including all the ones from `Date` object + // with a timezone string at the end. + // + //- `[tz]`: Returns object with time in `tz` specified. + // + // - `utcMillis`, `[tz]`: Return object with UTC time = `utcMillis`, in `tz`. + // + // - `Date`, `[tz]`: Returns object with UTC time = `Date.getTime()`, in `tz`. + // + // - `year, month, [date,] [hours,] [minutes,] [seconds,] [millis,] [tz]: Same as `Date` object + // with tz. + // + // - `Array`: Can be any combo of the above. + // + //If 1st argument is an array, we can use it as a list of arguments itself + if (Object.prototype.toString.call(args[0]) === '[object Array]') { + args = args[0]; + } + if (typeof args[args.length - 1] === 'string' && TZ_REGEXP.test(args[args.length - 1])) { + tz = args.pop(); + } + switch (args.length) { + case 0: + dt = new Date(); + break; + case 1: + dt = new Date(args[0]); + break; + default: + for (var i = 0; i < 7; i++) { + arr[i] = args[i] || 0; + } + dt = new Date(arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6]); + break; + } + + this._useCache = false; + this._tzInfo = {}; + this._day = 0; + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.milliseconds = 0; + this.timezone = tz || null; + //Tricky part: + // For the cases where there are 1/2 arguments: `timezoneJS.Date(millis, [tz])` and `timezoneJS.Date(Date, [tz])`. The + // Date `dt` created should be in UTC. Thus the way I detect such cases is to determine if `arr` is not populated & `tz` + // is specified. Because if `tz` is not specified, `dt` can be in local time. + if (arr.length) { + this.setFromDateObjProxy(dt); + } else { + this.setFromTimeProxy(dt.getTime(), tz); + } + }; + + // Implements most of the native Date object + timezoneJS.Date.prototype = { + getDate: function () { return this.date; }, + getDay: function () { return this._day; }, + getFullYear: function () { return this.year; }, + getMonth: function () { return this.month; }, + getYear: function () { return this.year; }, + getHours: function () { return this.hours; }, + getMilliseconds: function () { return this.milliseconds; }, + getMinutes: function () { return this.minutes; }, + getSeconds: function () { return this.seconds; }, + getUTCDate: function () { return this.getUTCDateProxy().getUTCDate(); }, + getUTCDay: function () { return this.getUTCDateProxy().getUTCDay(); }, + getUTCFullYear: function () { return this.getUTCDateProxy().getUTCFullYear(); }, + getUTCHours: function () { return this.getUTCDateProxy().getUTCHours(); }, + getUTCMilliseconds: function () { return this.getUTCDateProxy().getUTCMilliseconds(); }, + getUTCMinutes: function () { return this.getUTCDateProxy().getUTCMinutes(); }, + getUTCMonth: function () { return this.getUTCDateProxy().getUTCMonth(); }, + getUTCSeconds: function () { return this.getUTCDateProxy().getUTCSeconds(); }, + // Time adjusted to user-specified timezone + getTime: function () { + return this._timeProxy + (this.getTimezoneOffset() * 60 * 1000); + }, + getTimezone: function () { return this.timezone; }, + getTimezoneOffset: function () { return this.getTimezoneInfo().tzOffset; }, + getTimezoneAbbreviation: function () { return this.getTimezoneInfo().tzAbbr; }, + getTimezoneInfo: function () { + if (this._useCache) return this._tzInfo; + var res; + // If timezone is specified, get the correct timezone info based on the Date given + if (this.timezone) { + res = this.timezone === 'Etc/UTC' || this.timezone === 'Etc/GMT' + ? { tzOffset: 0, tzAbbr: 'UTC' } + : timezoneJS.timezone.getTzInfo(this._timeProxy, this.timezone); + } + // If no timezone was specified, use the local browser offset + else { + res = { tzOffset: this.getLocalOffset(), tzAbbr: null }; + } + this._tzInfo = res; + this._useCache = true; + return res + }, + getUTCDateProxy: function () { + var dt = new Date(this._timeProxy); + dt.setUTCMinutes(dt.getUTCMinutes() + this.getTimezoneOffset()); + return dt; + }, + setDate: function (n) { this.setAttribute('date', n); }, + setFullYear: function (n) { this.setAttribute('year', n); }, + setMonth: function (n) { this.setAttribute('month', n); }, + setYear: function (n) { this.setUTCAttribute('year', n); }, + setHours: function (n) { this.setAttribute('hours', n); }, + setMilliseconds: function (n) { this.setAttribute('milliseconds', n); }, + setMinutes: function (n) { this.setAttribute('minutes', n); }, + setSeconds: function (n) { this.setAttribute('seconds', n); }, + setTime: function (n) { + if (isNaN(n)) { throw new Error('Units must be a number.'); } + this.setFromTimeProxy(n, this.timezone); + }, + setUTCDate: function (n) { this.setUTCAttribute('date', n); }, + setUTCFullYear: function (n) { this.setUTCAttribute('year', n); }, + setUTCHours: function (n) { this.setUTCAttribute('hours', n); }, + setUTCMilliseconds: function (n) { this.setUTCAttribute('milliseconds', n); }, + setUTCMinutes: function (n) { this.setUTCAttribute('minutes', n); }, + setUTCMonth: function (n) { this.setUTCAttribute('month', n); }, + setUTCSeconds: function (n) { this.setUTCAttribute('seconds', n); }, + setFromDateObjProxy: function (dt) { + this.year = dt.getFullYear(); + this.month = dt.getMonth(); + this.date = dt.getDate(); + this.hours = dt.getHours(); + this.minutes = dt.getMinutes(); + this.seconds = dt.getSeconds(); + this.milliseconds = dt.getMilliseconds(); + this._day = dt.getDay(); + this._dateProxy = dt; + this._timeProxy = Date.UTC(this.year, this.month, this.date, this.hours, this.minutes, this.seconds, this.milliseconds); + this._useCache = false; + }, + setFromTimeProxy: function (utcMillis, tz) { + var dt = new Date(utcMillis); + var tzOffset; + tzOffset = tz ? timezoneJS.timezone.getTzInfo(dt, tz).tzOffset : dt.getTimezoneOffset(); + dt.setTime(utcMillis + (dt.getTimezoneOffset() - tzOffset) * 60000); + this.setFromDateObjProxy(dt); + }, + setAttribute: function (unit, n) { + if (isNaN(n)) { throw new Error('Units must be a number.'); } + var dt = this._dateProxy; + var meth = unit === 'year' ? 'FullYear' : unit.substr(0, 1).toUpperCase() + unit.substr(1); + dt['set' + meth](n); + this.setFromDateObjProxy(dt); + }, + setUTCAttribute: function (unit, n) { + if (isNaN(n)) { throw new Error('Units must be a number.'); } + var meth = unit === 'year' ? 'FullYear' : unit.substr(0, 1).toUpperCase() + unit.substr(1); + var dt = this.getUTCDateProxy(); + dt['setUTC' + meth](n); + dt.setUTCMinutes(dt.getUTCMinutes() - this.getTimezoneOffset()); + this.setFromTimeProxy(dt.getTime() + this.getTimezoneOffset() * 60000, this.timezone); + }, + setTimezone: function (tz) { + var previousOffset = this.getTimezoneInfo().tzOffset; + this.timezone = tz; + this._useCache = false; + // Set UTC minutes offsets by the delta of the two timezones + this.setUTCMinutes(this.getUTCMinutes() - this.getTimezoneInfo().tzOffset + previousOffset); + }, + removeTimezone: function () { + this.timezone = null; + this._useCache = false; + }, + valueOf: function () { return this.getTime(); }, + clone: function () { + return this.timezone ? new timezoneJS.Date(this.getTime(), this.timezone) : new timezoneJS.Date(this.getTime()); + }, + toGMTString: function () { return this.toString('EEE, dd MMM yyyy HH:mm:ss Z', 'Etc/GMT'); }, + toLocaleString: function () {}, + toLocaleDateString: function () {}, + toLocaleTimeString: function () {}, + toSource: function () {}, + toISOString: function () { return this.toString('yyyy-MM-ddTHH:mm:ss.SSS', 'Etc/UTC') + 'Z'; }, + toJSON: function () { return this.toISOString(); }, + // Allows different format following ISO8601 format: + toString: function (format, tz) { + // Default format is the same as toISOString + if (!format) format = 'yyyy-MM-dd HH:mm:ss'; + var result = format; + var tzInfo = tz ? timezoneJS.timezone.getTzInfo(this.getTime(), tz) : this.getTimezoneInfo(); + var _this = this; + // If timezone is specified, get a clone of the current Date object and modify it + if (tz) { + _this = this.clone(); + _this.setTimezone(tz); + } + var hours = _this.getHours(); + return result + // fix the same characters in Month names + .replace(/a+/g, function () { return 'k'; }) + // `y`: year + .replace(/y+/g, function (token) { return _fixWidth(_this.getFullYear(), token.length); }) + // `d`: date + .replace(/d+/g, function (token) { return _fixWidth(_this.getDate(), token.length); }) + // `m`: minute + .replace(/m+/g, function (token) { return _fixWidth(_this.getMinutes(), token.length); }) + // `s`: second + .replace(/s+/g, function (token) { return _fixWidth(_this.getSeconds(), token.length); }) + // `S`: millisecond + .replace(/S+/g, function (token) { return _fixWidth(_this.getMilliseconds(), token.length); }) + // `M`: month. Note: `MM` will be the numeric representation (e.g February is 02) but `MMM` will be text representation (e.g February is Feb) + .replace(/M+/g, function (token) { + var _month = _this.getMonth(), + _len = token.length; + if (_len > 3) { + return timezoneJS.Months[_month]; + } else if (_len > 2) { + return timezoneJS.Months[_month].substring(0, _len); + } + return _fixWidth(_month + 1, _len); + }) + // `k`: AM/PM + .replace(/k+/g, function () { + if (hours >= 12) { + if (hours > 12) { + hours -= 12; + } + return 'PM'; + } + return 'AM'; + }) + // `H`: hour + .replace(/H+/g, function (token) { return _fixWidth(hours, token.length); }) + // `E`: day + .replace(/E+/g, function (token) { return DAYS[_this.getDay()].substring(0, token.length); }) + // `Z`: timezone abbreviation + .replace(/Z+/gi, function () { return tzInfo.tzAbbr; }); + }, + toUTCString: function () { return this.toGMTString(); }, + civilToJulianDayNumber: function (y, m, d) { + var a; + // Adjust for zero-based JS-style array + m++; + if (m > 12) { + a = parseInt(m/12, 10); + m = m % 12; + y += a; + } + if (m <= 2) { + y -= 1; + m += 12; + } + a = Math.floor(y / 100); + var b = 2 - a + Math.floor(a / 4) + , jDt = Math.floor(365.25 * (y + 4716)) + Math.floor(30.6001 * (m + 1)) + d + b - 1524; + return jDt; + }, + getLocalOffset: function () { + return this._dateProxy.getTimezoneOffset(); + } + }; + + + timezoneJS.timezone = new function () { + var _this = this + , regionMap = {'Etc':'etcetera','EST':'northamerica','MST':'northamerica','HST':'northamerica','EST5EDT':'northamerica','CST6CDT':'northamerica','MST7MDT':'northamerica','PST8PDT':'northamerica','America':'northamerica','Pacific':'australasia','Atlantic':'europe','Africa':'africa','Indian':'africa','Antarctica':'antarctica','Asia':'asia','Australia':'australasia','Europe':'europe','WET':'europe','CET':'europe','MET':'europe','EET':'europe'} + , regionExceptions = {'Pacific/Honolulu':'northamerica','Atlantic/Bermuda':'northamerica','Atlantic/Cape_Verde':'africa','Atlantic/St_Helena':'africa','Indian/Kerguelen':'antarctica','Indian/Chagos':'asia','Indian/Maldives':'asia','Indian/Christmas':'australasia','Indian/Cocos':'australasia','America/Danmarkshavn':'europe','America/Scoresbysund':'europe','America/Godthab':'europe','America/Thule':'europe','Asia/Yekaterinburg':'europe','Asia/Omsk':'europe','Asia/Novosibirsk':'europe','Asia/Krasnoyarsk':'europe','Asia/Irkutsk':'europe','Asia/Yakutsk':'europe','Asia/Vladivostok':'europe','Asia/Sakhalin':'europe','Asia/Magadan':'europe','Asia/Kamchatka':'europe','Asia/Anadyr':'europe','Africa/Ceuta':'europe','America/Argentina/Buenos_Aires':'southamerica','America/Argentina/Cordoba':'southamerica','America/Argentina/Tucuman':'southamerica','America/Argentina/La_Rioja':'southamerica','America/Argentina/San_Juan':'southamerica','America/Argentina/Jujuy':'southamerica','America/Argentina/Catamarca':'southamerica','America/Argentina/Mendoza':'southamerica','America/Argentina/Rio_Gallegos':'southamerica','America/Argentina/Ushuaia':'southamerica','America/Aruba':'southamerica','America/La_Paz':'southamerica','America/Noronha':'southamerica','America/Belem':'southamerica','America/Fortaleza':'southamerica','America/Recife':'southamerica','America/Araguaina':'southamerica','America/Maceio':'southamerica','America/Bahia':'southamerica','America/Sao_Paulo':'southamerica','America/Campo_Grande':'southamerica','America/Cuiaba':'southamerica','America/Porto_Velho':'southamerica','America/Boa_Vista':'southamerica','America/Manaus':'southamerica','America/Eirunepe':'southamerica','America/Rio_Branco':'southamerica','America/Santiago':'southamerica','Pacific/Easter':'southamerica','America/Bogota':'southamerica','America/Curacao':'southamerica','America/Guayaquil':'southamerica','Pacific/Galapagos':'southamerica','Atlantic/Stanley':'southamerica','America/Cayenne':'southamerica','America/Guyana':'southamerica','America/Asuncion':'southamerica','America/Lima':'southamerica','Atlantic/South_Georgia':'southamerica','America/Paramaribo':'southamerica','America/Port_of_Spain':'southamerica','America/Montevideo':'southamerica','America/Caracas':'southamerica'}; + function invalidTZError(t) { throw new Error('Timezone "' + t + '" is either incorrect, or not loaded in the timezone registry.'); } + function builtInLoadZoneFile(fileName, opts) { + var url = _this.zoneFileBasePath + '/' + fileName; + return !opts || !opts.async + ? _this.parseZones(_this.transport({ url : url, async : false })) + : _this.transport({ + async: true, + url : url, + success : function (str) { + if (_this.parseZones(str) && typeof opts.callback === 'function') { + opts.callback(); + } + return true; + }, + error : function () { + throw new Error('Error retrieving "' + url + '" zoneinfo files'); + } + }); + } + function getRegionForTimezone(tz) { + var exc = regionExceptions[tz] + , reg + , ret; + if (exc) return exc; + reg = tz.split('/')[0]; + ret = regionMap[reg]; + // If there's nothing listed in the main regions for this TZ, check the 'backward' links + if (ret) return ret; + var link = _this.zones[tz]; + if (typeof link === 'string') { + return getRegionForTimezone(link); + } + // Backward-compat file hasn't loaded yet, try looking in there + if (!_this.loadedZones.backward) { + // This is for obvious legacy zones (e.g., Iceland) that don't even have a prefix like "America/" that look like normal zones + _this.loadZoneFile('backward'); + return getRegionForTimezone(tz); + } + invalidTZError(tz); + } + function parseTimeString(str) { + var pat = /(\d+)(?::0*(\d*))?(?::0*(\d*))?([wsugz])?$/; + var hms = str.match(pat); + hms[1] = parseInt(hms[1], 10); + hms[2] = hms[2] ? parseInt(hms[2], 10) : 0; + hms[3] = hms[3] ? parseInt(hms[3], 10) : 0; + + return hms; + } + function processZone(z) { + if (!z[3]) { return; } + var yea = parseInt(z[3], 10); + var mon = 11; + var dat = 31; + if (z[4]) { + mon = SHORT_MONTHS[z[4].substr(0, 3)]; + dat = parseInt(z[5], 10) || 1; + } + var string = z[6] ? z[6] : '00:00:00' + , t = parseTimeString(string); + return [yea, mon, dat, t[1], t[2], t[3]]; + } + function getZone(dt, tz) { + var utcMillis = typeof dt === 'number' ? dt : new Date(dt).getTime(); + var t = tz; + var zoneList = _this.zones[t]; + // Follow links to get to an actual zone + while (typeof zoneList === "string") { + t = zoneList; + zoneList = _this.zones[t]; + } + if (!zoneList) { + // Backward-compat file hasn't loaded yet, try looking in there + if (!_this.loadedZones.backward) { + //This is for backward entries like "America/Fort_Wayne" that + // getRegionForTimezone *thinks* it has a region file and zone + // for (e.g., America => 'northamerica'), but in reality it's a + // legacy zone we need the backward file for. + _this.loadZoneFile('backward'); + return getZone(dt, tz); + } + invalidTZError(t); + } + if (zoneList.length === 0) { + throw new Error('No Zone found for "' + tz + '" on ' + dt); + } + //Do backwards lookup since most use cases deal with newer dates. + for (var i = zoneList.length - 1; i >= 0; i--) { + var z = zoneList[i]; + if (z[3] && utcMillis > z[3]) break; + } + return zoneList[i+1]; + } + function getBasicOffset(time) { + var off = parseTimeString(time) + , adj = time.indexOf('-') === 0 ? -1 : 1; + off = adj * (((off[1] * 60 + off[2]) * 60 + off[3]) * 1000); + return off/60/1000; + } + + //if isUTC is true, date is given in UTC, otherwise it's given + // in local time (ie. date.getUTC*() returns local time components) + function getRule(dt, zone, isUTC) { + var date = typeof dt === 'number' ? new Date(dt) : dt; + var ruleset = zone[1]; + var basicOffset = zone[0]; + + //Convert a date to UTC. Depending on the 'type' parameter, the date + // parameter may be: + // + // - `u`, `g`, `z`: already UTC (no adjustment). + // + // - `s`: standard time (adjust for time zone offset but not for DST) + // + // - `w`: wall clock time (adjust for both time zone and DST offset). + // + // DST adjustment is done using the rule given as third argument. + var convertDateToUTC = function (date, type, rule) { + var offset = 0; + + if (type === 'u' || type === 'g' || type === 'z') { // UTC + offset = 0; + } else if (type === 's') { // Standard Time + offset = basicOffset; + } else if (type === 'w' || !type) { // Wall Clock Time + offset = getAdjustedOffset(basicOffset, rule); + } else { + throw("unknown type " + type); + } + offset *= 60 * 1000; // to millis + + return new Date(date.getTime() + offset); + }; + + //Step 1: Find applicable rules for this year. + // + //Step 2: Sort the rules by effective date. + // + //Step 3: Check requested date to see if a rule has yet taken effect this year. If not, + // + //Step 4: Get the rules for the previous year. If there isn't an applicable rule for last year, then + // there probably is no current time offset since they seem to explicitly turn off the offset + // when someone stops observing DST. + // + // FIXME if this is not the case and we'll walk all the way back (ugh). + // + //Step 5: Sort the rules by effective date. + //Step 6: Apply the most recent rule before the current time. + var convertRuleToExactDateAndTime = function (yearAndRule, prevRule) { + var year = yearAndRule[0] + , rule = yearAndRule[1]; + // Assume that the rule applies to the year of the given date. + + var hms = rule[5]; + var effectiveDate; + + if (!EXACT_DATE_TIME[year]) + EXACT_DATE_TIME[year] = {}; + + // Result for given parameters is already stored + if (EXACT_DATE_TIME[year][rule]) + effectiveDate = EXACT_DATE_TIME[year][rule]; + else { + //If we have a specific date, use that! + if (!isNaN(rule[4])) { + effectiveDate = new Date(Date.UTC(year, SHORT_MONTHS[rule[3]], rule[4], hms[1], hms[2], hms[3], 0)); + } + //Let's hunt for the date. + else { + var targetDay + , operator; + //Example: `lastThu` + if (rule[4].substr(0, 4) === "last") { + // Start at the last day of the month and work backward. + effectiveDate = new Date(Date.UTC(year, SHORT_MONTHS[rule[3]] + 1, 1, hms[1] - 24, hms[2], hms[3], 0)); + targetDay = SHORT_DAYS[rule[4].substr(4, 3)]; + operator = "<="; + } + //Example: `Sun>=15` + else { + //Start at the specified date. + effectiveDate = new Date(Date.UTC(year, SHORT_MONTHS[rule[3]], rule[4].substr(5), hms[1], hms[2], hms[3], 0)); + targetDay = SHORT_DAYS[rule[4].substr(0, 3)]; + operator = rule[4].substr(3, 2); + } + var ourDay = effectiveDate.getUTCDay(); + //Go forwards. + if (operator === ">=") { + effectiveDate.setUTCDate(effectiveDate.getUTCDate() + (targetDay - ourDay + ((targetDay < ourDay) ? 7 : 0))); + } + //Go backwards. Looking for the last of a certain day, or operator is "<=" (less likely). + else { + effectiveDate.setUTCDate(effectiveDate.getUTCDate() + (targetDay - ourDay - ((targetDay > ourDay) ? 7 : 0))); + } + } + EXACT_DATE_TIME[year][rule] = effectiveDate; + } + + + //If previous rule is given, correct for the fact that the starting time of the current + // rule may be specified in local time. + if (prevRule) { + effectiveDate = convertDateToUTC(effectiveDate, hms[4], prevRule); + } + return effectiveDate; + }; + + var findApplicableRules = function (year, ruleset) { + var applicableRules = []; + for (var i = 0; ruleset && i < ruleset.length; i++) { + //Exclude future rules. + if (ruleset[i][0] <= year && + ( + // Date is in a set range. + ruleset[i][1] >= year || + // Date is in an "only" year. + (ruleset[i][0] === year && ruleset[i][1] === "only") || + //We're in a range from the start year to infinity. + ruleset[i][1] === "max" + ) + ) { + //It's completely okay to have any number of matches here. + // Normally we should only see two, but that doesn't preclude other numbers of matches. + // These matches are applicable to this year. + applicableRules.push([year, ruleset[i]]); + } + } + return applicableRules; + }; + + var compareDates = function (a, b, prev) { + var year, rule; + if (a.constructor !== Date) { + year = a[0]; + rule = a[1]; + a = (!prev && EXACT_DATE_TIME[year] && EXACT_DATE_TIME[year][rule]) + ? EXACT_DATE_TIME[year][rule] + : convertRuleToExactDateAndTime(a, prev); + } else if (prev) { + a = convertDateToUTC(a, isUTC ? 'u' : 'w', prev); + } + if (b.constructor !== Date) { + year = b[0]; + rule = b[1]; + b = (!prev && EXACT_DATE_TIME[year] && EXACT_DATE_TIME[year][rule]) ? EXACT_DATE_TIME[year][rule] + : convertRuleToExactDateAndTime(b, prev); + } else if (prev) { + b = convertDateToUTC(b, isUTC ? 'u' : 'w', prev); + } + a = Number(a); + b = Number(b); + return a - b; + }; + + var year = date.getUTCFullYear(); + var applicableRules; + + applicableRules = findApplicableRules(year, _this.rules[ruleset]); + applicableRules.push(date); + //While sorting, the time zone in which the rule starting time is specified + // is ignored. This is ok as long as the timespan between two DST changes is + // larger than the DST offset, which is probably always true. + // As the given date may indeed be close to a DST change, it may get sorted + // to a wrong position (off by one), which is corrected below. + applicableRules.sort(compareDates); + + //If there are not enough past DST rules... + if (applicableRules.indexOf(date) < 2) { + applicableRules = applicableRules.concat(findApplicableRules(year-1, _this.rules[ruleset])); + applicableRules.sort(compareDates); + } + var pinpoint = applicableRules.indexOf(date); + if (pinpoint > 1 && compareDates(date, applicableRules[pinpoint-1], applicableRules[pinpoint-2][1]) < 0) { + //The previous rule does not really apply, take the one before that. + return applicableRules[pinpoint - 2][1]; + } else if (pinpoint > 0 && pinpoint < applicableRules.length - 1 && compareDates(date, applicableRules[pinpoint+1], applicableRules[pinpoint-1][1]) > 0) { + + //The next rule does already apply, take that one. + return applicableRules[pinpoint + 1][1]; + } else if (pinpoint === 0) { + //No applicable rule found in this and in previous year. + return null; + } + return applicableRules[pinpoint - 1][1]; + } + function getAdjustedOffset(off, rule) { + return -Math.ceil(rule[6] - off); + } + function getAbbreviation(zone, rule) { + var res; + var base = zone[2]; + if (base.indexOf('%s') > -1) { + var repl; + if (rule) { + repl = rule[7] === '-' ? '' : rule[7]; + } + //FIXME: Right now just falling back to Standard -- + // apparently ought to use the last valid rule, + // although in practice that always ought to be Standard + else { + repl = 'S'; + } + res = base.replace('%s', repl); + } + else if (base.indexOf('/') > -1) { + //Chose one of two alternative strings. + res = base.split("/", 2)[rule[6] ? 1 : 0]; + } else { + res = base; + } + return res; + } + + this.zoneFileBasePath; + this.zoneFiles = ['africa', 'antarctica', 'asia', 'australasia', 'backward', 'etcetera', 'europe', 'northamerica', 'pacificnew', 'southamerica']; + this.loadingSchemes = { + PRELOAD_ALL: 'preloadAll', + LAZY_LOAD: 'lazyLoad', + MANUAL_LOAD: 'manualLoad' + }; + this.loadingScheme = this.loadingSchemes.LAZY_LOAD; + this.loadedZones = {}; + this.zones = {}; + this.rules = {}; + + this.init = function (o) { + var opts = { async: true } + , def = this.defaultZoneFile = this.loadingScheme === this.loadingSchemes.PRELOAD_ALL + ? this.zoneFiles + : 'northamerica' + , done = 0 + , callbackFn; + //Override default with any passed-in opts + for (var p in o) { + opts[p] = o[p]; + } + if (typeof def === 'string') { + return this.loadZoneFile(def, opts); + } + //Wraps callback function in another one that makes + // sure all files have been loaded. + callbackFn = opts.callback; + opts.callback = function () { + done++; + (done === def.length) && typeof callbackFn === 'function' && callbackFn(); + }; + for (var i = 0; i < def.length; i++) { + this.loadZoneFile(def[i], opts); + } + }; + + //Get the zone files via XHR -- if the sync flag + // is set to true, it's being called by the lazy-loading + // mechanism, so the result needs to be returned inline. + this.loadZoneFile = function (fileName, opts) { + if (typeof this.zoneFileBasePath === 'undefined') { + throw new Error('Please define a base path to your zone file directory -- timezoneJS.timezone.zoneFileBasePath.'); + } + //Ignore already loaded zones. + if (this.loadedZones[fileName]) { + return; + } + this.loadedZones[fileName] = true; + return builtInLoadZoneFile(fileName, opts); + }; + this.loadZoneJSONData = function (url, sync) { + var processData = function (data) { + data = eval('('+ data +')'); + for (var z in data.zones) { + _this.zones[z] = data.zones[z]; + } + for (var r in data.rules) { + _this.rules[r] = data.rules[r]; + } + }; + return sync + ? processData(_this.transport({ url : url, async : false })) + : _this.transport({ url : url, success : processData }); + }; + this.loadZoneDataFromObject = function (data) { + if (!data) { return; } + for (var z in data.zones) { + _this.zones[z] = data.zones[z]; + } + for (var r in data.rules) { + _this.rules[r] = data.rules[r]; + } + }; + this.getAllZones = function () { + var arr = []; + for (var z in this.zones) { arr.push(z); } + return arr.sort(); + }; + this.parseZones = function (str) { + var lines = str.split('\n') + , arr = [] + , chunk = '' + , l + , zone = null + , rule = null; + for (var i = 0; i < lines.length; i++) { + l = lines[i]; + if (l.match(/^\s/)) { + l = "Zone " + zone + l; + } + l = l.split("#")[0]; + if (l.length > 3) { + arr = l.split(/\s+/); + chunk = arr.shift(); + //Ignore Leap. + switch (chunk) { + case 'Zone': + zone = arr.shift(); + if (!_this.zones[zone]) { + _this.zones[zone] = []; + } + if (arr.length < 3) break; + //Process zone right here and replace 3rd element with the processed array. + arr.splice(3, arr.length, processZone(arr)); + if (arr[3]) arr[3] = Date.UTC.apply(null, arr[3]); + arr[0] = -getBasicOffset(arr[0]); + _this.zones[zone].push(arr); + break; + case 'Rule': + rule = arr.shift(); + if (!_this.rules[rule]) { + _this.rules[rule] = []; + } + //Parse int FROM year and TO year + arr[0] = parseInt(arr[0], 10); + arr[1] = parseInt(arr[1], 10) || arr[1]; + //Parse time string AT + arr[5] = parseTimeString(arr[5]); + //Parse offset SAVE + arr[6] = getBasicOffset(arr[6]); + _this.rules[rule].push(arr); + break; + case 'Link': + //No zones for these should already exist. + if (_this.zones[arr[1]]) { + throw new Error('Error with Link ' + arr[1] + '. Cannot create link of a preexisted zone.'); + } + //Create the link. + _this.zones[arr[1]] = arr[0]; + break; + } + } + } + return true; + }; + //Expose transport mechanism and allow overwrite. + this.transport = _transport; + this.getTzInfo = function (dt, tz, isUTC) { + //Lazy-load any zones not yet loaded. + if (this.loadingScheme === this.loadingSchemes.LAZY_LOAD) { + //Get the correct region for the zone. + var zoneFile = getRegionForTimezone(tz); + if (!zoneFile) { + throw new Error('Not a valid timezone ID.'); + } + if (!this.loadedZones[zoneFile]) { + //Get the file and parse it -- use synchronous XHR. + this.loadZoneFile(zoneFile); + } + } + var z = getZone(dt, tz); + var off = z[0]; + //See if the offset needs adjustment. + var rule = getRule(dt, z, isUTC); + if (rule) { + off = getAdjustedOffset(off, rule); + } + var abbr = getAbbreviation(z, rule); + return { tzOffset: off, tzAbbr: abbr }; + }; + }; +}).call(this); diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/index.html new file mode 100644 index 0000000..1b893af --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/index.html @@ -0,0 +1,114 @@ + + + + + Flot Examples: Time zones + + + + + + + + + + + + +
+ +

UTC

+
+
+
+ +

Browser

+
+
+
+ +

Chicago

+
+
+
+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/africa b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/africa new file mode 100644 index 0000000..e3e5508 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/africa @@ -0,0 +1,1181 @@ +#
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
+
+# This data is by no means authoritative; if you think you know better,
+# go ahead and edit the file (and please send any changes to
+# tz@iana.org for general use in the future).
+
+# From Paul Eggert (2006-03-22):
+#
+# A good source for time zone historical data outside the U.S. is
+# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+# San Diego: ACS Publications, Inc. (2003).
+#
+# Gwillim Law writes that a good source
+# for recent time zone data is the International Air Transport
+# Association's Standard Schedules Information Manual (IATA SSIM),
+# published semiannually.  Law sent in several helpful summaries
+# of the IATA's data after 1990.
+#
+# Except where otherwise noted, Shanks & Pottenger is the source for
+# entries through 1990, and IATA SSIM is the source for entries afterwards.
+#
+# Another source occasionally used is Edward W. Whitman, World Time Differences,
+# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
+# I found in the UCLA library.
+#
+# A reliable and entertaining source about time zones is
+# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+#
+# Previous editions of this database used WAT, CAT, SAT, and EAT
+# for +0:00 through +3:00, respectively,
+# but Mark R V Murray reports that
+# `SAST' is the official abbreviation for +2:00 in the country of South Africa,
+# `CAT' is commonly used for +2:00 in countries north of South Africa, and
+# `WAT' is probably the best name for +1:00, as the common phrase for
+# the area that includes Nigeria is ``West Africa''.
+# He has heard of ``Western Sahara Time'' for +0:00 but can find no reference.
+#
+# To make things confusing, `WAT' seems to have been used for -1:00 long ago;
+# I'd guess that this was because people needed _some_ name for -1:00,
+# and at the time, far west Africa was the only major land area in -1:00.
+# This usage is now obsolete, as the last use of -1:00 on the African
+# mainland seems to have been 1976 in Western Sahara.
+#
+# To summarize, the following abbreviations seem to have some currency:
+#	-1:00	WAT	West Africa Time (no longer used)
+#	 0:00	GMT	Greenwich Mean Time
+#	 2:00	CAT	Central Africa Time
+#	 2:00	SAST	South Africa Standard Time
+# and Murray suggests the following abbreviation:
+#	 1:00	WAT	West Africa Time
+# I realize that this leads to `WAT' being used for both -1:00 and 1:00
+# for times before 1976, but this is the best I can think of
+# until we get more information.
+#
+# I invented the following abbreviations; corrections are welcome!
+#	 2:00	WAST	West Africa Summer Time
+#	 2:30	BEAT	British East Africa Time (no longer used)
+#	 2:45	BEAUT	British East Africa Unified Time (no longer used)
+#	 3:00	CAST	Central Africa Summer Time (no longer used)
+#	 3:00	SAST	South Africa Summer Time (no longer used)
+#	 3:00	EAT	East Africa Time
+#	 4:00	EAST	East Africa Summer Time (no longer used)
+
+# Algeria
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Algeria	1916	only	-	Jun	14	23:00s	1:00	S
+Rule	Algeria	1916	1919	-	Oct	Sun>=1	23:00s	0	-
+Rule	Algeria	1917	only	-	Mar	24	23:00s	1:00	S
+Rule	Algeria	1918	only	-	Mar	 9	23:00s	1:00	S
+Rule	Algeria	1919	only	-	Mar	 1	23:00s	1:00	S
+Rule	Algeria	1920	only	-	Feb	14	23:00s	1:00	S
+Rule	Algeria	1920	only	-	Oct	23	23:00s	0	-
+Rule	Algeria	1921	only	-	Mar	14	23:00s	1:00	S
+Rule	Algeria	1921	only	-	Jun	21	23:00s	0	-
+Rule	Algeria	1939	only	-	Sep	11	23:00s	1:00	S
+Rule	Algeria	1939	only	-	Nov	19	 1:00	0	-
+Rule	Algeria	1944	1945	-	Apr	Mon>=1	 2:00	1:00	S
+Rule	Algeria	1944	only	-	Oct	 8	 2:00	0	-
+Rule	Algeria	1945	only	-	Sep	16	 1:00	0	-
+Rule	Algeria	1971	only	-	Apr	25	23:00s	1:00	S
+Rule	Algeria	1971	only	-	Sep	26	23:00s	0	-
+Rule	Algeria	1977	only	-	May	 6	 0:00	1:00	S
+Rule	Algeria	1977	only	-	Oct	21	 0:00	0	-
+Rule	Algeria	1978	only	-	Mar	24	 1:00	1:00	S
+Rule	Algeria	1978	only	-	Sep	22	 3:00	0	-
+Rule	Algeria	1980	only	-	Apr	25	 0:00	1:00	S
+Rule	Algeria	1980	only	-	Oct	31	 2:00	0	-
+# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
+# more precise 0:09:21.
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Algiers	0:12:12 -	LMT	1891 Mar 15 0:01
+			0:09:21	-	PMT	1911 Mar 11    # Paris Mean Time
+			0:00	Algeria	WE%sT	1940 Feb 25 2:00
+			1:00	Algeria	CE%sT	1946 Oct  7
+			0:00	-	WET	1956 Jan 29
+			1:00	-	CET	1963 Apr 14
+			0:00	Algeria	WE%sT	1977 Oct 21
+			1:00	Algeria	CE%sT	1979 Oct 26
+			0:00	Algeria	WE%sT	1981 May
+			1:00	-	CET
+
+# Angola
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Luanda	0:52:56	-	LMT	1892
+			0:52:04	-	AOT	1911 May 26 # Angola Time
+			1:00	-	WAT
+
+# Benin
+# Whitman says they switched to 1:00 in 1946, not 1934;
+# go with Shanks & Pottenger.
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Africa/Porto-Novo	0:10:28	-	LMT	1912
+			0:00	-	GMT	1934 Feb 26
+			1:00	-	WAT
+
+# Botswana
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Gaborone	1:43:40 -	LMT	1885
+			2:00	-	CAT	1943 Sep 19 2:00
+			2:00	1:00	CAST	1944 Mar 19 2:00
+			2:00	-	CAT
+
+# Burkina Faso
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Africa/Ouagadougou	-0:06:04 -	LMT	1912
+			 0:00	-	GMT
+
+# Burundi
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Africa/Bujumbura	1:57:28	-	LMT	1890
+			2:00	-	CAT
+
+# Cameroon
+# Whitman says they switched to 1:00 in 1920; go with Shanks & Pottenger.
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Douala	0:38:48	-	LMT	1912
+			1:00	-	WAT
+
+# Cape Verde
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Atlantic/Cape_Verde -1:34:04 -	LMT	1907			# Praia
+			-2:00	-	CVT	1942 Sep
+			-2:00	1:00	CVST	1945 Oct 15
+			-2:00	-	CVT	1975 Nov 25 2:00
+			-1:00	-	CVT
+
+# Central African Republic
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Bangui	1:14:20	-	LMT	1912
+			1:00	-	WAT
+
+# Chad
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Ndjamena	1:00:12 -	LMT	1912
+			1:00	-	WAT	1979 Oct 14
+			1:00	1:00	WAST	1980 Mar  8
+			1:00	-	WAT
+
+# Comoros
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Indian/Comoro	2:53:04 -	LMT	1911 Jul   # Moroni, Gran Comoro
+			3:00	-	EAT
+
+# Democratic Republic of Congo
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Africa/Kinshasa	1:01:12 -	LMT	1897 Nov 9
+			1:00	-	WAT
+Zone Africa/Lubumbashi	1:49:52 -	LMT	1897 Nov 9
+			2:00	-	CAT
+
+# Republic of the Congo
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Africa/Brazzaville	1:01:08 -	LMT	1912
+			1:00	-	WAT
+
+# Cote D'Ivoire
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Abidjan	-0:16:08 -	LMT	1912
+			 0:00	-	GMT
+
+# Djibouti
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Djibouti	2:52:36 -	LMT	1911 Jul
+			3:00	-	EAT
+
+###############################################################################
+
+# Egypt
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Egypt	1940	only	-	Jul	15	0:00	1:00	S
+Rule	Egypt	1940	only	-	Oct	 1	0:00	0	-
+Rule	Egypt	1941	only	-	Apr	15	0:00	1:00	S
+Rule	Egypt	1941	only	-	Sep	16	0:00	0	-
+Rule	Egypt	1942	1944	-	Apr	 1	0:00	1:00	S
+Rule	Egypt	1942	only	-	Oct	27	0:00	0	-
+Rule	Egypt	1943	1945	-	Nov	 1	0:00	0	-
+Rule	Egypt	1945	only	-	Apr	16	0:00	1:00	S
+Rule	Egypt	1957	only	-	May	10	0:00	1:00	S
+Rule	Egypt	1957	1958	-	Oct	 1	0:00	0	-
+Rule	Egypt	1958	only	-	May	 1	0:00	1:00	S
+Rule	Egypt	1959	1981	-	May	 1	1:00	1:00	S
+Rule	Egypt	1959	1965	-	Sep	30	3:00	0	-
+Rule	Egypt	1966	1994	-	Oct	 1	3:00	0	-
+Rule	Egypt	1982	only	-	Jul	25	1:00	1:00	S
+Rule	Egypt	1983	only	-	Jul	12	1:00	1:00	S
+Rule	Egypt	1984	1988	-	May	 1	1:00	1:00	S
+Rule	Egypt	1989	only	-	May	 6	1:00	1:00	S
+Rule	Egypt	1990	1994	-	May	 1	1:00	1:00	S
+# IATA (after 1990) says transitions are at 0:00.
+# Go with IATA starting in 1995, except correct 1995 entry from 09-30 to 09-29.
+
+# From Alexander Krivenyshev (2011-04-20):
+# "...Egypt's interim cabinet decided on Wednesday to cancel daylight
+# saving time after a poll posted on its website showed the majority of
+# Egyptians would approve the cancellation."
+#
+# Egypt to cancel daylight saving time
+# 
+# http://www.almasryalyoum.com/en/node/407168
+# 
+# or
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_egypt04.html
+# 
+Rule	Egypt	1995	2010	-	Apr	lastFri	 0:00s	1:00	S
+Rule	Egypt	1995	2005	-	Sep	lastThu	23:00s	0	-
+# From Steffen Thorsen (2006-09-19):
+# The Egyptian Gazette, issue 41,090 (2006-09-18), page 1, reports:
+# Egypt will turn back clocks by one hour at the midnight of Thursday
+# after observing the daylight saving time since May.
+# http://news.gom.com.eg/gazette/pdf/2006/09/18/01.pdf
+Rule	Egypt	2006	only	-	Sep	21	23:00s	0	-
+# From Dirk Losch (2007-08-14):
+# I received a mail from an airline which says that the daylight
+# saving time in Egypt will end in the night of 2007-09-06 to 2007-09-07.
+# From Jesper Norgaard Welen (2007-08-15): [The following agree:]
+# http://www.nentjes.info/Bill/bill5.htm
+# http://www.timeanddate.com/worldclock/city.html?n=53
+# From Steffen Thorsen (2007-09-04): The official information...:
+# http://www.sis.gov.eg/En/EgyptOnline/Miscellaneous/000002/0207000000000000001580.htm
+Rule	Egypt	2007	only	-	Sep	Thu>=1	23:00s	0	-
+# From Abdelrahman Hassan (2007-09-06):
+# Due to the Hijri (lunar Islamic calendar) year being 11 days shorter
+# than the year of the Gregorian calendar, Ramadan shifts earlier each
+# year. This year it will be observed September 13 (September is quite
+# hot in Egypt), and the idea is to make fasting easier for workers by
+# shifting business hours one hour out of daytime heat. Consequently,
+# unless discontinued, next DST may end Thursday 28 August 2008.
+# From Paul Eggert (2007-08-17):
+# For lack of better info, assume the new rule is last Thursday in August.
+
+# From Petr Machata (2009-04-06):
+# The following appeared in Red Hat bugzilla[1] (edited):
+#
+# > $ zdump -v /usr/share/zoneinfo/Africa/Cairo | grep 2009
+# > /usr/share/zoneinfo/Africa/Cairo  Thu Apr 23 21:59:59 2009 UTC = Thu =
+# Apr 23
+# > 23:59:59 2009 EET isdst=0 gmtoff=7200
+# > /usr/share/zoneinfo/Africa/Cairo  Thu Apr 23 22:00:00 2009 UTC = Fri =
+# Apr 24
+# > 01:00:00 2009 EEST isdst=1 gmtoff=10800
+# > /usr/share/zoneinfo/Africa/Cairo  Thu Aug 27 20:59:59 2009 UTC = Thu =
+# Aug 27
+# > 23:59:59 2009 EEST isdst=1 gmtoff=10800
+# > /usr/share/zoneinfo/Africa/Cairo  Thu Aug 27 21:00:00 2009 UTC = Thu =
+# Aug 27
+# > 23:00:00 2009 EET isdst=0 gmtoff=7200
+#
+# > end date should be Thu Sep 24 2009 (Last Thursday in September at 23:59=
+# :59)
+# > http://support.microsoft.com/kb/958729/
+#
+# timeanddate[2] and another site I've found[3] also support that.
+#
+# [1] 
+# https://bugzilla.redhat.com/show_bug.cgi?id=492263
+# 
+# [2] 
+# http://www.timeanddate.com/worldclock/clockchange.html?n=53
+# 
+# [3] 
+# http://wwp.greenwichmeantime.com/time-zone/africa/egypt/
+# 
+
+# From Arthur David Olson (2009-04-20):
+# In 2009 (and for the next several years), Ramadan ends before the fourth
+# Thursday in September; Egypt is expected to revert to the last Thursday
+# in September.
+
+# From Steffen Thorsen (2009-08-11):
+# We have been able to confirm the August change with the Egyptian Cabinet
+# Information and Decision Support Center:
+# 
+# http://www.timeanddate.com/news/time/egypt-dst-ends-2009.html
+# 
+#
+# The Middle East News Agency
+# 
+# http://www.mena.org.eg/index.aspx
+# 
+# also reports "Egypt starts winter time on August 21"
+# today in article numbered "71, 11/08/2009 12:25 GMT."
+# Only the title above is available without a subscription to their service,
+# and can be found by searching for "winter" in their search engine
+# (at least today).
+
+# From Alexander Krivenyshev (2010-07-20):
+# According to News from Egypt -  Al-Masry Al-Youm Egypt's cabinet has
+# decided that Daylight Saving Time will not be used in Egypt during
+# Ramadan.
+#
+# Arabic translation:
+# "Clocks to go back during Ramadan--and then forward again"
+# 
+# http://www.almasryalyoum.com/en/news/clocks-go-back-during-ramadan-and-then-forward-again
+# 
+# or
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_egypt02.html
+# 
+
+Rule	Egypt	2008	only	-	Aug	lastThu	23:00s	0	-
+Rule	Egypt	2009	only	-	Aug	20	23:00s	0	-
+Rule	Egypt	2010	only	-	Aug	11	0:00	0	-
+Rule	Egypt	2010	only	-	Sep	10	0:00	1:00	S
+Rule	Egypt	2010	only	-	Sep	lastThu	23:00s	0	-
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Cairo	2:05:00 -	LMT	1900 Oct
+			2:00	Egypt	EE%sT
+
+# Equatorial Guinea
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Malabo	0:35:08 -	LMT	1912
+			0:00	-	GMT	1963 Dec 15
+			1:00	-	WAT
+
+# Eritrea
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Asmara	2:35:32 -	LMT	1870
+			2:35:32	-	AMT	1890	      # Asmara Mean Time
+			2:35:20	-	ADMT	1936 May 5    # Adis Dera MT
+			3:00	-	EAT
+
+# Ethiopia
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger write that Ethiopia had six narrowly-spaced time zones
+# between 1870 and 1890, and that they merged to 38E50 (2:35:20) in 1890.
+# We'll guess that 38E50 is for Adis Dera.
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Africa/Addis_Ababa	2:34:48 -	LMT	1870
+			2:35:20	-	ADMT	1936 May 5    # Adis Dera MT
+			3:00	-	EAT
+
+# Gabon
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Africa/Libreville	0:37:48 -	LMT	1912
+			1:00	-	WAT
+
+# Gambia
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Banjul	-1:06:36 -	LMT	1912
+			-1:06:36 -	BMT	1935	# Banjul Mean Time
+			-1:00	-	WAT	1964
+			 0:00	-	GMT
+
+# Ghana
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+# Whitman says DST was observed from 1931 to ``the present'';
+# go with Shanks & Pottenger.
+Rule	Ghana	1936	1942	-	Sep	 1	0:00	0:20	GHST
+Rule	Ghana	1936	1942	-	Dec	31	0:00	0	GMT
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Accra	-0:00:52 -	LMT	1918
+			 0:00	Ghana	%s
+
+# Guinea
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Conakry	-0:54:52 -	LMT	1912
+			 0:00	-	GMT	1934 Feb 26
+			-1:00	-	WAT	1960
+			 0:00	-	GMT
+
+# Guinea-Bissau
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Bissau	-1:02:20 -	LMT	1911 May 26
+			-1:00	-	WAT	1975
+			 0:00	-	GMT
+
+# Kenya
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Nairobi	2:27:16	-	LMT	1928 Jul
+			3:00	-	EAT	1930
+			2:30	-	BEAT	1940
+			2:45	-	BEAUT	1960
+			3:00	-	EAT
+
+# Lesotho
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Maseru	1:50:00 -	LMT	1903 Mar
+			2:00	-	SAST	1943 Sep 19 2:00
+			2:00	1:00	SAST	1944 Mar 19 2:00
+			2:00	-	SAST
+
+# Liberia
+# From Paul Eggert (2006-03-22):
+# In 1972 Liberia was the last country to switch
+# from a UTC offset that was not a multiple of 15 or 20 minutes.
+# Howse reports that it was in honor of their president's birthday.
+# Shank & Pottenger report the date as May 1, whereas Howse reports Jan;
+# go with Shanks & Pottenger.
+# For Liberia before 1972, Shanks & Pottenger report -0:44, whereas Howse and
+# Whitman each report -0:44:30; go with the more precise figure.
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Monrovia	-0:43:08 -	LMT	1882
+			-0:43:08 -	MMT	1919 Mar # Monrovia Mean Time
+			-0:44:30 -	LRT	1972 May # Liberia Time
+			 0:00	-	GMT
+
+###############################################################################
+
+# Libya
+
+# From Even Scharning (2012-11-10):
+# Libya set their time one hour back at 02:00 on Saturday November 10.
+# http://www.libyaherald.com/2012/11/04/clocks-to-go-back-an-hour-on-saturday/
+# Here is an official source [in Arabic]: http://ls.ly/fb6Yc
+#
+# Steffen Thorsen forwarded a translation (2012-11-10) in
+# http://mm.icann.org/pipermail/tz/2012-November/018451.html
+#
+# From Tim Parenti (2012-11-11):
+# Treat the 2012-11-10 change as a zone change from UTC+2 to UTC+1.
+# The DST rules planned for 2013 and onward roughly mirror those of Europe
+# (either two days before them or five days after them, so as to fall on
+# lastFri instead of lastSun).
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Libya	1951	only	-	Oct	14	2:00	1:00	S
+Rule	Libya	1952	only	-	Jan	 1	0:00	0	-
+Rule	Libya	1953	only	-	Oct	 9	2:00	1:00	S
+Rule	Libya	1954	only	-	Jan	 1	0:00	0	-
+Rule	Libya	1955	only	-	Sep	30	0:00	1:00	S
+Rule	Libya	1956	only	-	Jan	 1	0:00	0	-
+Rule	Libya	1982	1984	-	Apr	 1	0:00	1:00	S
+Rule	Libya	1982	1985	-	Oct	 1	0:00	0	-
+Rule	Libya	1985	only	-	Apr	 6	0:00	1:00	S
+Rule	Libya	1986	only	-	Apr	 4	0:00	1:00	S
+Rule	Libya	1986	only	-	Oct	 3	0:00	0	-
+Rule	Libya	1987	1989	-	Apr	 1	0:00	1:00	S
+Rule	Libya	1987	1989	-	Oct	 1	0:00	0	-
+Rule	Libya	1997	only	-	Apr	 4	0:00	1:00	S
+Rule	Libya	1997	only	-	Oct	 4	0:00	0	-
+Rule	Libya	2013	max	-	Mar	lastFri	1:00	1:00	S
+Rule	Libya	2013	max	-	Oct	lastFri	2:00	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Tripoli	0:52:44 -	LMT	1920
+			1:00	Libya	CE%sT	1959
+			2:00	-	EET	1982
+			1:00	Libya	CE%sT	1990 May  4
+# The 1996 and 1997 entries are from Shanks & Pottenger;
+# the IATA SSIM data contain some obvious errors.
+			2:00	-	EET	1996 Sep 30
+			1:00	Libya	CE%sT	1997 Oct  4
+			2:00	-	EET	2012 Nov 10 2:00
+			1:00	Libya	CE%sT
+
+# Madagascar
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Indian/Antananarivo 3:10:04 -	LMT	1911 Jul
+			3:00	-	EAT	1954 Feb 27 23:00s
+			3:00	1:00	EAST	1954 May 29 23:00s
+			3:00	-	EAT
+
+# Malawi
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Blantyre	2:20:00 -	LMT	1903 Mar
+			2:00	-	CAT
+
+# Mali
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Bamako	-0:32:00 -	LMT	1912
+			 0:00	-	GMT	1934 Feb 26
+			-1:00	-	WAT	1960 Jun 20
+			 0:00	-	GMT
+
+# Mauritania
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Africa/Nouakchott	-1:03:48 -	LMT	1912
+			 0:00	-	GMT	1934 Feb 26
+			-1:00	-	WAT	1960 Nov 28
+			 0:00	-	GMT
+
+# Mauritius
+
+# From Steffen Thorsen (2008-06-25):
+# Mauritius plans to observe DST from 2008-11-01 to 2009-03-31 on a trial
+# basis....
+# It seems that Mauritius observed daylight saving time from 1982-10-10 to
+# 1983-03-20 as well, but that was not successful....
+# http://www.timeanddate.com/news/time/mauritius-daylight-saving-time.html
+
+# From Alex Krivenyshev (2008-06-25):
+# http://economicdevelopment.gov.mu/portal/site/Mainhomepage/menuitem.a42b24128104d9845dabddd154508a0c/?content_id=0a7cee8b5d69a110VgnVCM1000000a04a8c0RCRD
+
+# From Arthur David Olson (2008-06-30):
+# The www.timeanddate.com article cited by Steffen Thorsen notes that "A
+# final decision has yet to be made on the times that daylight saving
+# would begin and end on these dates." As a place holder, use midnight.
+
+# From Paul Eggert (2008-06-30):
+# Follow Thorsen on DST in 1982/1983, instead of Shanks & Pottenger.
+
+# From Steffen Thorsen (2008-07-10):
+# According to
+# 
+# http://www.lexpress.mu/display_article.php?news_id=111216
+# 
+# (in French), Mauritius will start and end their DST a few days earlier
+# than previously announced (2008-11-01 to 2009-03-31).  The new start
+# date is 2008-10-26 at 02:00 and the new end date is 2009-03-27 (no time
+# given, but it is probably at either 2 or 3 wall clock time).
+#
+# A little strange though, since the article says that they moved the date
+# to align itself with Europe and USA which also change time on that date,
+# but that means they have not paid attention to what happened in
+# USA/Canada last year (DST ends first Sunday in November). I also wonder
+# why that they end on a Friday, instead of aligning with Europe which
+# changes two days later.
+
+# From Alex Krivenyshev (2008-07-11):
+# Seems that English language article "The revival of daylight saving
+# time:  Energy conservation?"-# No. 16578 (07/11/2008) was originally
+# published on Monday, June 30, 2008...
+#
+# I guess that article in French "Le gouvernement avance l'introduction
+# de l'heure d'ete" stating that DST in Mauritius starting on October 26
+# and ending on March 27, 2009 is the most recent one.
+# ...
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_mauritius02.html
+# 
+
+# From Riad M. Hossen Ally (2008-08-03):
+# The Government of Mauritius weblink
+# 
+# http://www.gov.mu/portal/site/pmosite/menuitem.4ca0efdee47462e7440a600248a521ca/?content_id=4728ca68b2a5b110VgnVCM1000000a04a8c0RCRD
+# 
+# Cabinet Decision of July 18th, 2008 states as follows:
+#
+# 4. ...Cabinet has agreed to the introduction into the National Assembly
+# of the Time Bill which provides for the introduction of summer time in
+# Mauritius. The summer time period which will be of one hour ahead of
+# the standard time, will be aligned with that in Europe and the United
+# States of America. It will start at two o'clock in the morning on the
+# last Sunday of October and will end at two o'clock in the morning on
+# the last Sunday of March the following year. The summer time for the
+# year 2008 - 2009 will, therefore, be effective as from 26 October 2008
+# and end on 29 March 2009.
+
+# From Ed Maste (2008-10-07):
+# THE TIME BILL (No. XXVII of 2008) Explanatory Memorandum states the
+# beginning / ending of summer time is 2 o'clock standard time in the
+# morning of the last Sunday of October / last Sunday of March.
+# 
+# http://www.gov.mu/portal/goc/assemblysite/file/bill2708.pdf
+# 
+
+# From Steffen Thorsen (2009-06-05):
+# According to several sources, Mauritius will not continue to observe
+# DST the coming summer...
+#
+# Some sources, in French:
+# 
+# http://www.defimedia.info/news/946/Rashid-Beebeejaun-:-%C2%AB-L%E2%80%99heure-d%E2%80%99%C3%A9t%C3%A9-ne-sera-pas-appliqu%C3%A9e-cette-ann%C3%A9e-%C2%BB
+# 
+# 
+# http://lexpress.mu/Story/3398~Beebeejaun---Les-objectifs-d-%C3%A9conomie-d-%C3%A9nergie-de-l-heure-d-%C3%A9t%C3%A9-ont-%C3%A9t%C3%A9-atteints-
+# 
+#
+# Our wrap-up:
+# 
+# http://www.timeanddate.com/news/time/mauritius-dst-will-not-repeat.html
+# 
+
+# From Arthur David Olson (2009-07-11):
+# The "mauritius-dst-will-not-repeat" wrapup includes this:
+# "The trial ended on March 29, 2009, when the clocks moved back by one hour
+# at 2am (or 02:00) local time..."
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule Mauritius	1982	only	-	Oct	10	0:00	1:00	S
+Rule Mauritius	1983	only	-	Mar	21	0:00	0	-
+Rule Mauritius	2008	only	-	Oct	lastSun	2:00	1:00	S
+Rule Mauritius	2009	only	-	Mar	lastSun	2:00	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Indian/Mauritius	3:50:00 -	LMT	1907		# Port Louis
+			4:00 Mauritius	MU%sT	# Mauritius Time
+# Agalega Is, Rodriguez
+# no information; probably like Indian/Mauritius
+
+# Mayotte
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Indian/Mayotte	3:00:56 -	LMT	1911 Jul	# Mamoutzou
+			3:00	-	EAT
+
+# Morocco
+# See the `europe' file for Spanish Morocco (Africa/Ceuta).
+
+# From Alex Krivenyshev (2008-05-09):
+# Here is an article that Morocco plan to introduce Daylight Saving Time between
+# 1 June, 2008 and 27 September, 2008.
+#
+# "... Morocco is to save energy by adjusting its clock during summer so it will
+# be one hour ahead of GMT between 1 June and 27 September, according to
+# Communication Minister and Gov ernment Spokesman, Khalid Naciri...."
+#
+# 
+# http://www.worldtimezone.net/dst_news/dst_news_morocco01.html
+# 
+# OR
+# 
+# http://en.afrik.com/news11892.html
+# 
+
+# From Alex Krivenyshev (2008-05-09):
+# The Morocco time change can be confirmed on Morocco web site Maghreb Arabe Presse:
+# 
+# http://www.map.ma/eng/sections/box3/morocco_shifts_to_da/view
+# 
+#
+# Morocco shifts to daylight time on June 1st through September 27, Govt.
+# spokesman.
+
+# From Patrice Scattolin (2008-05-09):
+# According to this article:
+# 
+# http://www.avmaroc.com/actualite/heure-dete-comment-a127896.html
+# 
+# (and republished here:
+# 
+# http://www.actu.ma/heure-dete-comment_i127896_0.html
+# 
+# )
+# the changes occurs at midnight:
+#
+# saturday night may 31st at midnight (which in french is to be
+# intrepreted as the night between saturday and sunday)
+# sunday night the 28th  at midnight
+#
+# Seeing that the 28th is monday, I am guessing that she intends to say
+# the midnight of the 28th which is the midnight between sunday and
+# monday, which jives with other sources that say that it's inclusive
+# june1st to sept 27th.
+#
+# The decision was taken by decree *2-08-224 *but I can't find the decree
+# published on the web.
+#
+# It's also confirmed here:
+# 
+# http://www.maroc.ma/NR/exeres/FACF141F-D910-44B0-B7FA-6E03733425D1.htm
+# 
+# on a government portal as being  between june 1st and sept 27th (not yet
+# posted in english).
+#
+# The following google query will generate many relevant hits:
+# 
+# http://www.google.com/search?hl=en&q=Conseil+de+gouvernement+maroc+heure+avance&btnG=Search
+# 
+
+# From Alex Krivenyshev (2008-05-09):
+# Is Western Sahara (part which administrated by Morocco) going to follow
+# Morocco DST changes?  Any information?  What about other part of
+# Western Sahara - under administration of POLISARIO Front (also named
+# SADR Saharawi Arab Democratic Republic)?
+
+# From Arthur David Olson (2008-05-09):
+# XXX--guess that it is only Morocco for now; guess only 2008 for now.
+
+# From Steffen Thorsen (2008-08-27):
+# Morocco will change the clocks back on the midnight between August 31
+# and September 1. They originally planned to observe DST to near the end
+# of September:
+#
+# One article about it (in French):
+# 
+# http://www.menara.ma/fr/Actualites/Maroc/Societe/ci.retour_a_l_heure_gmt_a_partir_du_dimanche_31_aout_a_minuit_officiel_.default
+# 
+#
+# We have some further details posted here:
+# 
+# http://www.timeanddate.com/news/time/morocco-ends-dst-early-2008.html
+# 
+
+# From Steffen Thorsen (2009-03-17):
+# Morocco will observe DST from 2009-06-01 00:00 to 2009-08-21 00:00 according
+# to many sources, such as
+# 
+# http://news.marweb.com/morocco/entertainment/morocco-daylight-saving.html
+# 
+# 
+# http://www.medi1sat.ma/fr/depeche.aspx?idp=2312
+# 
+# (French)
+#
+# Our summary:
+# 
+# http://www.timeanddate.com/news/time/morocco-starts-dst-2009.html
+# 
+
+# From Alexander Krivenyshev (2009-03-17):
+# Here is a link to official document from Royaume du Maroc Premier Ministre,
+# Ministere de la Modernisation des Secteurs Publics
+#
+# Under Article 1 of Royal Decree No. 455-67 of Act 23 safar 1387 (2 june 1967)
+# concerning the amendment of the legal time, the Ministry of Modernization of
+# Public Sectors announced that the official time in the Kingdom will be
+# advanced 60 minutes from Sunday 31 May 2009 at midnight.
+#
+# 
+# http://www.mmsp.gov.ma/francais/Actualites_fr/PDF_Actualites_Fr/HeureEte_FR.pdf
+# 
+#
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_morocco03.html
+# 
+
+# From Steffen Thorsen (2010-04-13):
+# Several news media in Morocco report that the Ministry of Modernization
+# of Public Sectors has announced that Morocco will have DST from
+# 2010-05-02 to 2010-08-08.
+#
+# Example:
+# 
+# http://www.lavieeco.com/actualites/4099-le-maroc-passera-a-l-heure-d-ete-gmt1-le-2-mai.html
+# 
+# (French)
+# Our page:
+# 
+# http://www.timeanddate.com/news/time/morocco-starts-dst-2010.html
+# 
+
+# From Dan Abitol (2011-03-30):
+# ...Rules for Africa/Casablanca are the following (24h format)
+# The 3rd april 2011 at 00:00:00, [it] will be 3rd april 1:00:00
+# The 31th july 2011 at 00:59:59,  [it] will be 31th July 00:00:00
+# ...Official links of change in morocco
+# The change was broadcast on the FM Radio
+# I ve called ANRT (telecom regulations in Morocco) at
+# +212.537.71.84.00
+# 
+# http://www.anrt.net.ma/fr/
+# 
+# They said that
+# 
+# http://www.map.ma/fr/sections/accueil/l_heure_legale_au_ma/view
+# 
+# is the official publication to look at.
+# They said that the decision was already taken.
+#
+# More articles in the press
+# 
+# http://www.yabiladi.com/articles/details/5058/secret-l-heure-d-ete-maroc-lev
+# 
+# e.html
+# 
+# http://www.lematin.ma/Actualite/Express/Article.asp?id=148923
+# 
+# 
+# http://www.lavieeco.com/actualite/Le-Maroc-passe-sur-GMT%2B1-a-partir-de-dim
+# anche-prochain-5538.html
+# 
+
+# From Petr Machata (2011-03-30):
+# They have it written in English here:
+# 
+# http://www.map.ma/eng/sections/home/morocco_to_spring_fo/view
+# 
+#
+# It says there that "Morocco will resume its standard time on July 31,
+# 2011 at midnight." Now they don't say whether they mean midnight of
+# wall clock time (i.e. 11pm UTC), but that's what I would assume. It has
+# also been like that in the past.
+
+# From Alexander Krivenyshev (2012-03-09):
+# According to Infomédiaire web site from Morocco (infomediaire.ma),
+# on March 9, 2012, (in French) Heure légale:
+# Le Maroc adopte officiellement l'heure d'été
+# 
+# http://www.infomediaire.ma/news/maroc/heure-l%C3%A9gale-le-maroc-adopte-officiellement-lheure-d%C3%A9t%C3%A9
+# 
+# Governing Council adopted draft decree, that Morocco DST starts on
+# the last Sunday of March (March 25, 2012) and ends on
+# last Sunday of September (September 30, 2012)
+# except the month of Ramadan.
+# or (brief)
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_morocco06.html
+# 
+
+# From Arthur David Olson (2012-03-10):
+# The infomediaire.ma source indicates that the system is to be in
+# effect every year. It gives 03H00 as the "fall back" time of day;
+# it lacks a "spring forward" time of day; assume 2:00 XXX.
+# Wait on specifying the Ramadan exception for details about
+# start date, start time of day, end date, and end time of day XXX.
+
+# From Christophe Tropamer (2012-03-16):
+# Seen Morocco change again:
+# 
+# http://www.le2uminutes.com/actualite.php
+# 
+# "...à partir du dernier dimance d'avril et non fins mars,
+# comme annoncé précédemment."
+
+# From Milamber Space Network (2012-07-17):
+# The official return to GMT is announced by the Moroccan government:
+# 
+# http://www.mmsp.gov.ma/fr/actualites.aspx?id=288 [in French]
+# 
+#
+# Google translation, lightly edited:
+# Back to the standard time of the Kingdom (GMT)
+# Pursuant to Decree No. 2-12-126 issued on 26 Jumada (I) 1433 (April 18,
+# 2012) and in accordance with the order of Mr. President of the
+# Government No. 3-47-12 issued on 24 Sha'ban (11 July 2012), the Ministry
+# of Public Service and Administration Modernization announces the return
+# of the legal time of the Kingdom (GMT) from Friday, July 20, 2012 until
+# Monday, August 20, 2012.  So the time will be delayed by 60 minutes from
+# 3:00 am Friday, July 20, 2012 and will again be advanced by 60 minutes
+# August 20, 2012 from 2:00 am.
+
+# RULE	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+
+Rule	Morocco	1939	only	-	Sep	12	 0:00	1:00	S
+Rule	Morocco	1939	only	-	Nov	19	 0:00	0	-
+Rule	Morocco	1940	only	-	Feb	25	 0:00	1:00	S
+Rule	Morocco	1945	only	-	Nov	18	 0:00	0	-
+Rule	Morocco	1950	only	-	Jun	11	 0:00	1:00	S
+Rule	Morocco	1950	only	-	Oct	29	 0:00	0	-
+Rule	Morocco	1967	only	-	Jun	 3	12:00	1:00	S
+Rule	Morocco	1967	only	-	Oct	 1	 0:00	0	-
+Rule	Morocco	1974	only	-	Jun	24	 0:00	1:00	S
+Rule	Morocco	1974	only	-	Sep	 1	 0:00	0	-
+Rule	Morocco	1976	1977	-	May	 1	 0:00	1:00	S
+Rule	Morocco	1976	only	-	Aug	 1	 0:00	0	-
+Rule	Morocco	1977	only	-	Sep	28	 0:00	0	-
+Rule	Morocco	1978	only	-	Jun	 1	 0:00	1:00	S
+Rule	Morocco	1978	only	-	Aug	 4	 0:00	0	-
+Rule	Morocco	2008	only	-	Jun	 1	 0:00	1:00	S
+Rule	Morocco	2008	only	-	Sep	 1	 0:00	0	-
+Rule	Morocco	2009	only	-	Jun	 1	 0:00	1:00	S
+Rule	Morocco	2009	only	-	Aug	 21	 0:00	0	-
+Rule	Morocco	2010	only	-	May	 2	 0:00	1:00	S
+Rule	Morocco	2010	only	-	Aug	 8	 0:00	0	-
+Rule	Morocco	2011	only	-	Apr	 3	 0:00	1:00	S
+Rule	Morocco	2011	only	-	Jul	 31	 0	0	-
+Rule	Morocco	2012	max	-	Apr	 lastSun 2:00	1:00	S
+Rule	Morocco	2012	max	-	Sep	 lastSun 3:00	0	-
+Rule	Morocco	2012	only	-	Jul	 20	 3:00	0	-
+Rule	Morocco	2012	only	-	Aug	 20	 2:00	1:00	S
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Africa/Casablanca	-0:30:20 -	LMT	1913 Oct 26
+			 0:00	Morocco	WE%sT	1984 Mar 16
+			 1:00	-	CET	1986
+			 0:00	Morocco	WE%sT
+# Western Sahara
+Zone Africa/El_Aaiun	-0:52:48 -	LMT	1934 Jan
+			-1:00	-	WAT	1976 Apr 14
+			 0:00	-	WET
+
+# Mozambique
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Maputo	2:10:20 -	LMT	1903 Mar
+			2:00	-	CAT
+
+# Namibia
+# The 1994-04-03 transition is from Shanks & Pottenger.
+# Shanks & Pottenger report no DST after 1998-04; go with IATA.
+
+# From Petronella Sibeene (2007-03-30) in
+# :
+# While the entire country changes its time, Katima Mulilo and other
+# settlements in Caprivi unofficially will not because the sun there
+# rises and sets earlier compared to other regions.  Chief of
+# Forecasting Riaan van Zyl explained that the far eastern parts of
+# the country are close to 40 minutes earlier in sunrise than the rest
+# of the country.
+#
+# From Paul Eggert (2007-03-31):
+# Apparently the Caprivi Strip informally observes Botswana time, but
+# we have no details.  In the meantime people there can use Africa/Gaborone.
+
+# RULE	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Namibia	1994	max	-	Sep	Sun>=1	2:00	1:00	S
+Rule	Namibia	1995	max	-	Apr	Sun>=1	2:00	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Windhoek	1:08:24 -	LMT	1892 Feb 8
+			1:30	-	SWAT	1903 Mar	# SW Africa Time
+			2:00	-	SAST	1942 Sep 20 2:00
+			2:00	1:00	SAST	1943 Mar 21 2:00
+			2:00	-	SAST	1990 Mar 21 # independence
+			2:00	-	CAT	1994 Apr  3
+			1:00	Namibia	WA%sT
+
+# Niger
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Niamey	 0:08:28 -	LMT	1912
+			-1:00	-	WAT	1934 Feb 26
+			 0:00	-	GMT	1960
+			 1:00	-	WAT
+
+# Nigeria
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Lagos	0:13:36 -	LMT	1919 Sep
+			1:00	-	WAT
+
+# Reunion
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Indian/Reunion	3:41:52 -	LMT	1911 Jun	# Saint-Denis
+			4:00	-	RET	# Reunion Time
+#
+# Scattered Islands (Iles Eparses) administered from Reunion are as follows.
+# The following information about them is taken from
+# Iles Eparses (www.outre-mer.gouv.fr/domtom/ile.htm, 1997-07-22, in French;
+# no longer available as of 1999-08-17).
+# We have no info about their time zone histories.
+#
+# Bassas da India - uninhabited
+# Europa Island - inhabited from 1905 to 1910 by two families
+# Glorioso Is - inhabited until at least 1958
+# Juan de Nova - uninhabited
+# Tromelin - inhabited until at least 1958
+
+# Rwanda
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Kigali	2:00:16 -	LMT	1935 Jun
+			2:00	-	CAT
+
+# St Helena
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Atlantic/St_Helena	-0:22:48 -	LMT	1890		# Jamestown
+			-0:22:48 -	JMT	1951	# Jamestown Mean Time
+			 0:00	-	GMT
+# The other parts of the St Helena territory are similar:
+#	Tristan da Cunha: on GMT, say Whitman and the CIA
+#	Ascension: on GMT, says usno1995 and the CIA
+#	Gough (scientific station since 1955; sealers wintered previously):
+#		on GMT, says the CIA
+#	Inaccessible, Nightingale: no information, but probably GMT
+
+# Sao Tome and Principe
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Sao_Tome	 0:26:56 -	LMT	1884
+			-0:36:32 -	LMT	1912	# Lisbon Mean Time
+			 0:00	-	GMT
+
+# Senegal
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Dakar	-1:09:44 -	LMT	1912
+			-1:00	-	WAT	1941 Jun
+			 0:00	-	GMT
+
+# Seychelles
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Indian/Mahe	3:41:48 -	LMT	1906 Jun	# Victoria
+			4:00	-	SCT	# Seychelles Time
+# From Paul Eggert (2001-05-30):
+# Aldabra, Farquhar, and Desroches, originally dependencies of the
+# Seychelles, were transferred to the British Indian Ocean Territory
+# in 1965 and returned to Seychelles control in 1976.  We don't know
+# whether this affected their time zone, so omit this for now.
+# Possibly the islands were uninhabited.
+
+# Sierra Leone
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+# Whitman gives Mar 31 - Aug 31 for 1931 on; go with Shanks & Pottenger.
+Rule	SL	1935	1942	-	Jun	 1	0:00	0:40	SLST
+Rule	SL	1935	1942	-	Oct	 1	0:00	0	WAT
+Rule	SL	1957	1962	-	Jun	 1	0:00	1:00	SLST
+Rule	SL	1957	1962	-	Sep	 1	0:00	0	GMT
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Freetown	-0:53:00 -	LMT	1882
+			-0:53:00 -	FMT	1913 Jun # Freetown Mean Time
+			-1:00	SL	%s	1957
+			 0:00	SL	%s
+
+# Somalia
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Africa/Mogadishu	3:01:28 -	LMT	1893 Nov
+			3:00	-	EAT	1931
+			2:30	-	BEAT	1957
+			3:00	-	EAT
+
+# South Africa
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	SA	1942	1943	-	Sep	Sun>=15	2:00	1:00	-
+Rule	SA	1943	1944	-	Mar	Sun>=15	2:00	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Africa/Johannesburg 1:52:00 -	LMT	1892 Feb 8
+			1:30	-	SAST	1903 Mar
+			2:00	SA	SAST
+# Marion and Prince Edward Is
+# scientific station since 1947
+# no information
+
+# Sudan
+#
+# From 
+# Sudan News Agency (2000-01-13)
+# , also reported by Michael De Beukelaer-Dossche via Steffen Thorsen:
+# Clocks will be moved ahead for 60 minutes all over the Sudan as of noon
+# Saturday....  This was announced Thursday by Caretaker State Minister for
+# Manpower Abdul-Rahman Nur-Eddin.
+#
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Sudan	1970	only	-	May	 1	0:00	1:00	S
+Rule	Sudan	1970	1985	-	Oct	15	0:00	0	-
+Rule	Sudan	1971	only	-	Apr	30	0:00	1:00	S
+Rule	Sudan	1972	1985	-	Apr	lastSun	0:00	1:00	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Khartoum	2:10:08 -	LMT	1931
+			2:00	Sudan	CA%sT	2000 Jan 15 12:00
+			3:00	-	EAT
+
+# South Sudan
+Zone	Africa/Juba	2:06:24 -	LMT	1931
+			2:00	Sudan	CA%sT	2000 Jan 15 12:00
+			3:00	-	EAT
+
+# Swaziland
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Mbabane	2:04:24 -	LMT	1903 Mar
+			2:00	-	SAST
+
+# Tanzania
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Africa/Dar_es_Salaam 2:37:08 -	LMT	1931
+			3:00	-	EAT	1948
+			2:45	-	BEAUT	1961
+			3:00	-	EAT
+
+# Togo
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Lome	0:04:52 -	LMT	1893
+			0:00	-	GMT
+
+# Tunisia
+
+# From Gwillim Law (2005-04-30):
+# My correspondent, Risto Nykanen, has alerted me to another adoption of DST,
+# this time in Tunisia.  According to Yahoo France News
+# , in a story attributed to AP
+# and dated 2005-04-26, "Tunisia has decided to advance its official time by
+# one hour, starting on Sunday, May 1.  Henceforth, Tunisian time will be
+# UTC+2 instead of UTC+1.  The change will take place at 23:00 UTC next
+# Saturday."  (My translation)
+#
+# From Oscar van Vlijmen (2005-05-02):
+# LaPresse, the first national daily newspaper ...
+# 
+# ... DST for 2005: on: Sun May 1 0h standard time, off: Fri Sept. 30,
+# 1h standard time.
+#
+# From Atef Loukil (2006-03-28):
+# The daylight saving time will be the same each year:
+# Beginning      : the last Sunday of March at 02:00
+# Ending         : the last Sunday of October at 03:00 ...
+# http://www.tap.info.tn/en/index.php?option=com_content&task=view&id=1188&Itemid=50
+
+# From Steffen Thorsen (2009-03-16):
+# According to several news sources, Tunisia will not observe DST this year.
+# (Arabic)
+# 
+# http://www.elbashayer.com/?page=viewn&nid=42546
+# 
+# 
+# http://www.babnet.net/kiwidetail-15295.asp
+# 
+#
+# We have also confirmed this with the US embassy in Tunisia.
+# We have a wrap-up about this on the following page:
+# 
+# http://www.timeanddate.com/news/time/tunisia-cancels-dst-2009.html
+# 
+
+# From Alexander Krivenyshev (2009-03-17):
+# Here is a link to Tunis Afrique Presse News Agency
+#
+# Standard time to be kept the whole year long (tap.info.tn):
+#
+# (in English)
+# 
+# http://www.tap.info.tn/en/index.php?option=com_content&task=view&id=26813&Itemid=157
+# 
+#
+# (in Arabic)
+# 
+# http://www.tap.info.tn/ar/index.php?option=com_content&task=view&id=61240&Itemid=1
+# 
+
+# From Arthur David Olson (2009--3-18):
+# The Tunis Afrique Presse News Agency notice contains this: "This measure is due to the fact
+# that the fasting month of ramadan coincides with the period concerned by summer time.
+# Therefore, the standard time will be kept unchanged the whole year long."
+# So foregoing DST seems to be an exception (albeit one that may be repeated in the  future).
+
+# From Alexander Krivenyshev (2010-03-27):
+# According to some news reports Tunis confirmed not to use DST in 2010
+#
+# (translation):
+# "The Tunisian government has decided to abandon DST, which was scheduled on
+# Sunday...
+# Tunisian authorities had suspended the DST for the first time last year also
+# coincided with the month of Ramadan..."
+#
+# (in Arabic)
+# 
+# http://www.moheet.com/show_news.aspx?nid=358861&pg=1
+# 
+# http://www.almadenahnews.com/newss/news.php?c=118&id=38036
+# or
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_tunis02.html
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Tunisia	1939	only	-	Apr	15	23:00s	1:00	S
+Rule	Tunisia	1939	only	-	Nov	18	23:00s	0	-
+Rule	Tunisia	1940	only	-	Feb	25	23:00s	1:00	S
+Rule	Tunisia	1941	only	-	Oct	 6	 0:00	0	-
+Rule	Tunisia	1942	only	-	Mar	 9	 0:00	1:00	S
+Rule	Tunisia	1942	only	-	Nov	 2	 3:00	0	-
+Rule	Tunisia	1943	only	-	Mar	29	 2:00	1:00	S
+Rule	Tunisia	1943	only	-	Apr	17	 2:00	0	-
+Rule	Tunisia	1943	only	-	Apr	25	 2:00	1:00	S
+Rule	Tunisia	1943	only	-	Oct	 4	 2:00	0	-
+Rule	Tunisia	1944	1945	-	Apr	Mon>=1	 2:00	1:00	S
+Rule	Tunisia	1944	only	-	Oct	 8	 0:00	0	-
+Rule	Tunisia	1945	only	-	Sep	16	 0:00	0	-
+Rule	Tunisia	1977	only	-	Apr	30	 0:00s	1:00	S
+Rule	Tunisia	1977	only	-	Sep	24	 0:00s	0	-
+Rule	Tunisia	1978	only	-	May	 1	 0:00s	1:00	S
+Rule	Tunisia	1978	only	-	Oct	 1	 0:00s	0	-
+Rule	Tunisia	1988	only	-	Jun	 1	 0:00s	1:00	S
+Rule	Tunisia	1988	1990	-	Sep	lastSun	 0:00s	0	-
+Rule	Tunisia	1989	only	-	Mar	26	 0:00s	1:00	S
+Rule	Tunisia	1990	only	-	May	 1	 0:00s	1:00	S
+Rule	Tunisia	2005	only	-	May	 1	 0:00s	1:00	S
+Rule	Tunisia	2005	only	-	Sep	30	 1:00s	0	-
+Rule	Tunisia	2006	2008	-	Mar	lastSun	 2:00s	1:00	S
+Rule	Tunisia	2006	2008	-	Oct	lastSun	 2:00s	0	-
+
+# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
+# more precise 0:09:21.
+# Shanks & Pottenger say the 1911 switch was on Mar 9; go with Howse's Mar 11.
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Tunis	0:40:44 -	LMT	1881 May 12
+			0:09:21	-	PMT	1911 Mar 11    # Paris Mean Time
+			1:00	Tunisia	CE%sT
+
+# Uganda
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Kampala	2:09:40 -	LMT	1928 Jul
+			3:00	-	EAT	1930
+			2:30	-	BEAT	1948
+			2:45	-	BEAUT	1957
+			3:00	-	EAT
+
+# Zambia
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Lusaka	1:53:08 -	LMT	1903 Mar
+			2:00	-	CAT
+
+# Zimbabwe
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Africa/Harare	2:04:12 -	LMT	1903 Mar
+			2:00	-	CAT
diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/antarctica b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/antarctica
new file mode 100644
index 0000000..e96b30d
--- /dev/null
+++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/antarctica
@@ -0,0 +1,413 @@
+# 
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
+
+# From Paul Eggert (1999-11-15):
+# To keep things manageable, we list only locations occupied year-round; see
+# 
+# COMNAP - Stations and Bases
+# 
+# and
+# 
+# Summary of the Peri-Antarctic Islands (1998-07-23)
+# 
+# for information.
+# Unless otherwise specified, we have no time zone information.
+#
+# Except for the French entries,
+# I made up all time zone abbreviations mentioned here; corrections welcome!
+# FORMAT is `zzz' and GMTOFF is 0 for locations while uninhabited.
+
+# These rules are stolen from the `southamerica' file.
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	ArgAQ	1964	1966	-	Mar	 1	0:00	0	-
+Rule	ArgAQ	1964	1966	-	Oct	15	0:00	1:00	S
+Rule	ArgAQ	1967	only	-	Apr	 2	0:00	0	-
+Rule	ArgAQ	1967	1968	-	Oct	Sun>=1	0:00	1:00	S
+Rule	ArgAQ	1968	1969	-	Apr	Sun>=1	0:00	0	-
+Rule	ArgAQ	1974	only	-	Jan	23	0:00	1:00	S
+Rule	ArgAQ	1974	only	-	May	 1	0:00	0	-
+Rule	ChileAQ	1972	1986	-	Mar	Sun>=9	3:00u	0	-
+Rule	ChileAQ	1974	1987	-	Oct	Sun>=9	4:00u	1:00	S
+Rule	ChileAQ	1987	only	-	Apr	12	3:00u	0	-
+Rule	ChileAQ	1988	1989	-	Mar	Sun>=9	3:00u	0	-
+Rule	ChileAQ	1988	only	-	Oct	Sun>=1	4:00u	1:00	S
+Rule	ChileAQ	1989	only	-	Oct	Sun>=9	4:00u	1:00	S
+Rule	ChileAQ	1990	only	-	Mar	18	3:00u	0	-
+Rule	ChileAQ	1990	only	-	Sep	16	4:00u	1:00	S
+Rule	ChileAQ	1991	1996	-	Mar	Sun>=9	3:00u	0	-
+Rule	ChileAQ	1991	1997	-	Oct	Sun>=9	4:00u	1:00	S
+Rule	ChileAQ	1997	only	-	Mar	30	3:00u	0	-
+Rule	ChileAQ	1998	only	-	Mar	Sun>=9	3:00u	0	-
+Rule	ChileAQ	1998	only	-	Sep	27	4:00u	1:00	S
+Rule	ChileAQ	1999	only	-	Apr	 4	3:00u	0	-
+Rule	ChileAQ	1999	2010	-	Oct	Sun>=9	4:00u	1:00	S
+Rule	ChileAQ	2000	2007	-	Mar	Sun>=9	3:00u	0	-
+# N.B.: the end of March 29 in Chile is March 30 in Universal time,
+# which is used below in specifying the transition.
+Rule	ChileAQ	2008	only	-	Mar	30	3:00u	0	-
+Rule	ChileAQ	2009	only	-	Mar	Sun>=9	3:00u	0	-
+Rule	ChileAQ	2010	only	-	Apr	Sun>=1	3:00u	0	-
+Rule	ChileAQ	2011	only	-	May	Sun>=2	3:00u	0	-
+Rule	ChileAQ	2011	only	-	Aug	Sun>=16	4:00u	1:00	S
+Rule	ChileAQ	2012	only	-	Apr	Sun>=23	3:00u	0	-
+Rule	ChileAQ	2012	only	-	Sep	Sun>=2	4:00u	1:00	S
+Rule	ChileAQ	2013	max	-	Mar	Sun>=9	3:00u	0	-
+Rule	ChileAQ	2013	max	-	Oct	Sun>=9	4:00u	1:00	S
+
+# These rules are stolen from the `australasia' file.
+Rule	AusAQ	1917	only	-	Jan	 1	0:01	1:00	-
+Rule	AusAQ	1917	only	-	Mar	25	2:00	0	-
+Rule	AusAQ	1942	only	-	Jan	 1	2:00	1:00	-
+Rule	AusAQ	1942	only	-	Mar	29	2:00	0	-
+Rule	AusAQ	1942	only	-	Sep	27	2:00	1:00	-
+Rule	AusAQ	1943	1944	-	Mar	lastSun	2:00	0	-
+Rule	AusAQ	1943	only	-	Oct	 3	2:00	1:00	-
+Rule	ATAQ	1967	only	-	Oct	Sun>=1	2:00s	1:00	-
+Rule	ATAQ	1968	only	-	Mar	lastSun	2:00s	0	-
+Rule	ATAQ	1968	1985	-	Oct	lastSun	2:00s	1:00	-
+Rule	ATAQ	1969	1971	-	Mar	Sun>=8	2:00s	0	-
+Rule	ATAQ	1972	only	-	Feb	lastSun	2:00s	0	-
+Rule	ATAQ	1973	1981	-	Mar	Sun>=1	2:00s	0	-
+Rule	ATAQ	1982	1983	-	Mar	lastSun	2:00s	0	-
+Rule	ATAQ	1984	1986	-	Mar	Sun>=1	2:00s	0	-
+Rule	ATAQ	1986	only	-	Oct	Sun>=15	2:00s	1:00	-
+Rule	ATAQ	1987	1990	-	Mar	Sun>=15	2:00s	0	-
+Rule	ATAQ	1987	only	-	Oct	Sun>=22	2:00s	1:00	-
+Rule	ATAQ	1988	1990	-	Oct	lastSun	2:00s	1:00	-
+Rule	ATAQ	1991	1999	-	Oct	Sun>=1	2:00s	1:00	-
+Rule	ATAQ	1991	2005	-	Mar	lastSun	2:00s	0	-
+Rule	ATAQ	2000	only	-	Aug	lastSun	2:00s	1:00	-
+Rule	ATAQ	2001	max	-	Oct	Sun>=1	2:00s	1:00	-
+Rule	ATAQ	2006	only	-	Apr	Sun>=1	2:00s	0	-
+Rule	ATAQ	2007	only	-	Mar	lastSun	2:00s	0	-
+Rule	ATAQ	2008	max	-	Apr	Sun>=1	2:00s	0	-
+
+# Argentina - year-round bases
+# Belgrano II, Confin Coast, -770227-0343737, since 1972-02-05
+# Esperanza, San Martin Land, -6323-05659, since 1952-12-17
+# Jubany, Potter Peninsula, King George Island, -6414-0602320, since 1982-01
+# Marambio, Seymour I, -6414-05637, since 1969-10-29
+# Orcadas, Laurie I, -6016-04444, since 1904-02-22
+# San Martin, Debenham I, -6807-06708, since 1951-03-21
+#	(except 1960-03 / 1976-03-21)
+
+# Australia - territories
+# Heard Island, McDonald Islands (uninhabited)
+#	previously sealers and scientific personnel wintered
+#	
+#	Margaret Turner reports
+#	 (1999-09-30) that they're UTC+5, with no DST;
+#	presumably this is when they have visitors.
+#
+# year-round bases
+# Casey, Bailey Peninsula, -6617+11032, since 1969
+# Davis, Vestfold Hills, -6835+07759, since 1957-01-13
+#	(except 1964-11 - 1969-02)
+# Mawson, Holme Bay, -6736+06253, since 1954-02-13
+
+# From Steffen Thorsen (2009-03-11):
+# Three Australian stations in Antarctica have changed their time zone:
+# Casey moved from UTC+8 to UTC+11
+# Davis moved from UTC+7 to UTC+5
+# Mawson moved from UTC+6 to UTC+5
+# The changes occurred on 2009-10-18 at 02:00 (local times).
+#
+# Government source: (Australian Antarctic Division)
+# 
+# http://www.aad.gov.au/default.asp?casid=37079
+# 
+#
+# We have more background information here:
+# 
+# http://www.timeanddate.com/news/time/antarctica-new-times.html
+# 
+
+# From Steffen Thorsen (2010-03-10):
+# We got these changes from the Australian Antarctic Division:
+# - Macquarie Island will stay on UTC+11 for winter and therefore not
+# switch back from daylight savings time when other parts of Australia do
+# on 4 April.
+#
+# - Casey station reverted to its normal time of UTC+8 on 5 March 2010.
+# The change to UTC+11 is being considered as a regular summer thing but
+# has not been decided yet.
+#
+# - Davis station will revert to its normal time of UTC+7 at 10 March 2010
+# 20:00 UTC.
+#
+# - Mawson station stays on UTC+5.
+#
+# In addition to the Rule changes for Casey/Davis, it means that Macquarie
+# will no longer be like Hobart and will have to have its own Zone created.
+#
+# Background:
+# 
+# http://www.timeanddate.com/news/time/antartica-time-changes-2010.html
+# 
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Antarctica/Casey	0	-	zzz	1969
+			8:00	-	WST	2009 Oct 18 2:00
+						# Western (Aus) Standard Time
+			11:00	-	CAST	2010 Mar 5 2:00
+						# Casey Time
+			8:00	-	WST	2011 Oct 28 2:00
+			11:00	-	CAST	2012 Feb 21 17:00u
+			8:00	-	WST
+Zone Antarctica/Davis	0	-	zzz	1957 Jan 13
+			7:00	-	DAVT	1964 Nov # Davis Time
+			0	-	zzz	1969 Feb
+			7:00	-	DAVT	2009 Oct 18 2:00
+			5:00	-	DAVT	2010 Mar 10 20:00u
+			7:00	-	DAVT	2011 Oct 28 2:00
+			5:00	-	DAVT	2012 Feb 21 20:00u
+			7:00	-	DAVT
+Zone Antarctica/Mawson	0	-	zzz	1954 Feb 13
+			6:00	-	MAWT	2009 Oct 18 2:00
+						# Mawson Time
+			5:00	-	MAWT
+Zone Antarctica/Macquarie 0	-	zzz	1911
+			10:00	-	EST	1916 Oct 1 2:00
+			10:00	1:00	EST	1917 Feb
+			10:00	AusAQ	EST	1967
+			10:00	ATAQ	EST	2010 Apr 4 3:00
+			11:00	-	MIST	# Macquarie Island Time
+# References:
+# 
+# Casey Weather (1998-02-26)
+# 
+# 
+# Davis Station, Antarctica (1998-02-26)
+# 
+# 
+# Mawson Station, Antarctica (1998-02-25)
+# 
+
+# Brazil - year-round base
+# Comandante Ferraz, King George Island, -6205+05824, since 1983/4
+
+# Chile - year-round bases and towns
+# Escudero, South Shetland Is, -621157-0585735, since 1994
+# Presidente Eduadro Frei, King George Island, -6214-05848, since 1969-03-07
+# General Bernardo O'Higgins, Antarctic Peninsula, -6319-05704, since 1948-02
+# Capitan Arturo Prat, -6230-05941
+# Villa Las Estrellas (a town), around the Frei base, since 1984-04-09
+# These locations have always used Santiago time; use TZ='America/Santiago'.
+
+# China - year-round bases
+# Great Wall, King George Island, -6213-05858, since 1985-02-20
+# Zhongshan, Larsemann Hills, Prydz Bay, -6922+07623, since 1989-02-26
+
+# France - year-round bases
+#
+# From Antoine Leca (1997-01-20):
+# Time data are from Nicole Pailleau at the IFRTP
+# (French Institute for Polar Research and Technology).
+# She confirms that French Southern Territories and Terre Adelie bases
+# don't observe daylight saving time, even if Terre Adelie supplies came
+# from Tasmania.
+#
+# French Southern Territories with year-round inhabitants
+#
+# Martin-de-Vivies Base, Amsterdam Island, -374105+0773155, since 1950
+# Alfred-Faure Base, Crozet Islands, -462551+0515152, since 1964
+# Port-aux-Francais, Kerguelen Islands, -492110+0701303, since 1951;
+#	whaling & sealing station operated 1908/1914, 1920/1929, and 1951/1956
+#
+# St Paul Island - near Amsterdam, uninhabited
+#	fishing stations operated variously 1819/1931
+#
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Indian/Kerguelen	0	-	zzz	1950	# Port-aux-Francais
+			5:00	-	TFT	# ISO code TF Time
+#
+# year-round base in the main continent
+# Dumont-d'Urville, Ile des Petrels, -6640+14001, since 1956-11
+#
+# Another base at Port-Martin, 50km east, began operation in 1947.
+# It was destroyed by fire on 1952-01-14.
+#
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Antarctica/DumontDUrville 0 -	zzz	1947
+			10:00	-	PMT	1952 Jan 14 # Port-Martin Time
+			0	-	zzz	1956 Nov
+			10:00	-	DDUT	# Dumont-d'Urville Time
+# Reference:
+# 
+# Dumont d'Urville Station (2005-12-05)
+# 
+
+# Germany - year-round base
+# Georg von Neumayer, -7039-00815
+
+# India - year-round base
+# Dakshin Gangotri, -7005+01200
+
+# Japan - year-round bases
+# Dome Fuji, -7719+03942
+# Syowa, -690022+0393524
+#
+# From Hideyuki Suzuki (1999-02-06):
+# In all Japanese stations, +0300 is used as the standard time.
+#
+# Syowa station, which is the first antarctic station of Japan,
+# was established on 1957-01-29.  Since Syowa station is still the main
+# station of Japan, it's appropriate for the principal location.
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Antarctica/Syowa	0	-	zzz	1957 Jan 29
+			3:00	-	SYOT	# Syowa Time
+# See:
+# 
+# NIPR Antarctic Research Activities (1999-08-17)
+# 
+
+# S Korea - year-round base
+# King Sejong, King George Island, -6213-05847, since 1988
+
+# New Zealand - claims
+# Balleny Islands (never inhabited)
+# Scott Island (never inhabited)
+#
+# year-round base
+# Scott, Ross Island, since 1957-01, is like Antarctica/McMurdo.
+#
+# These rules for New Zealand are stolen from the `australasia' file.
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	NZAQ	1974	only	-	Nov	 3	2:00s	1:00	D
+Rule	NZAQ	1975	1988	-	Oct	lastSun	2:00s	1:00	D
+Rule	NZAQ	1989	only	-	Oct	 8	2:00s	1:00	D
+Rule	NZAQ	1990	2006	-	Oct	Sun>=1	2:00s	1:00	D
+Rule	NZAQ	1975	only	-	Feb	23	2:00s	0	S
+Rule	NZAQ	1976	1989	-	Mar	Sun>=1	2:00s	0	S
+Rule	NZAQ	1990	2007	-	Mar	Sun>=15	2:00s	0	S
+Rule	NZAQ	2007	max	-	Sep	lastSun	2:00s	1:00	D
+Rule	NZAQ	2008	max	-	Apr	Sun>=1	2:00s	0	S
+
+# Norway - territories
+# Bouvet (never inhabited)
+#
+# claims
+# Peter I Island (never inhabited)
+
+# Poland - year-round base
+# Arctowski, King George Island, -620945-0582745, since 1977
+
+# Russia - year-round bases
+# Bellingshausen, King George Island, -621159-0585337, since 1968-02-22
+# Mirny, Davis coast, -6633+09301, since 1956-02
+# Molodezhnaya, Alasheyev Bay, -6740+04551,
+#	year-round from 1962-02 to 1999-07-01
+# Novolazarevskaya, Queen Maud Land, -7046+01150,
+#	year-round from 1960/61 to 1992
+
+# Vostok, since 1957-12-16, temporarily closed 1994-02/1994-11
+# 
+# From Craig Mundell (1994-12-15):
+# Vostok, which is one of the Russian stations, is set on the same
+# time as Moscow, Russia.
+#
+# From Lee Hotz (2001-03-08):
+# I queried the folks at Columbia who spent the summer at Vostok and this is
+# what they had to say about time there:
+# ``in the US Camp (East Camp) we have been on New Zealand (McMurdo)
+# time, which is 12 hours ahead of GMT. The Russian Station Vostok was
+# 6 hours behind that (although only 2 miles away, i.e. 6 hours ahead
+# of GMT). This is a time zone I think two hours east of Moscow. The
+# natural time zone is in between the two: 8 hours ahead of GMT.''
+#
+# From Paul Eggert (2001-05-04):
+# This seems to be hopelessly confusing, so I asked Lee Hotz about it
+# in person.  He said that some Antartic locations set their local
+# time so that noon is the warmest part of the day, and that this
+# changes during the year and does not necessarily correspond to mean
+# solar noon.  So the Vostok time might have been whatever the clocks
+# happened to be during their visit.  So we still don't really know what time
+# it is at Vostok.  But we'll guess UTC+6.
+#
+Zone Antarctica/Vostok	0	-	zzz	1957 Dec 16
+			6:00	-	VOST	# Vostok time
+
+# S Africa - year-round bases
+# Marion Island, -4653+03752
+# Sanae, -7141-00250
+
+# UK
+#
+# British Antarctic Territories (BAT) claims
+# South Orkney Islands
+#	scientific station from 1903
+#	whaling station at Signy I 1920/1926
+# South Shetland Islands
+#
+# year-round bases
+# Bird Island, South Georgia, -5400-03803, since 1983
+# Deception Island, -6259-06034, whaling station 1912/1931,
+#	scientific station 1943/1967,
+#	previously sealers and a scientific expedition wintered by accident,
+#	and a garrison was deployed briefly
+# Halley, Coates Land, -7535-02604, since 1956-01-06
+#	Halley is on a moving ice shelf and is periodically relocated
+#	so that it is never more than 10km from its nominal location.
+# Rothera, Adelaide Island, -6734-6808, since 1976-12-01
+#
+# From Paul Eggert (2002-10-22)
+#  says Rothera is -03 all year.
+#
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Antarctica/Rothera	0	-	zzz	1976 Dec  1
+			-3:00	-	ROTT	# Rothera time
+
+# Uruguay - year round base
+# Artigas, King George Island, -621104-0585107
+
+# USA - year-round bases
+#
+# Palmer, Anvers Island, since 1965 (moved 2 miles in 1968)
+#
+# From Ethan Dicks (1996-10-06):
+# It keeps the same time as Punta Arenas, Chile, because, just like us
+# and the South Pole, that's the other end of their supply line....
+# I verified with someone who was there that since 1980,
+# Palmer has followed Chile.  Prior to that, before the Falklands War,
+# Palmer used to be supplied from Argentina.
+#
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Antarctica/Palmer	0	-	zzz	1965
+			-4:00	ArgAQ	AR%sT	1969 Oct 5
+			-3:00	ArgAQ	AR%sT	1982 May
+			-4:00	ChileAQ	CL%sT
+#
+#
+# McMurdo, Ross Island, since 1955-12
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Antarctica/McMurdo	0	-	zzz	1956
+			12:00	NZAQ	NZ%sT
+#
+# Amundsen-Scott, South Pole, continuously occupied since 1956-11-20
+#
+# From Paul Eggert (1996-09-03):
+# Normally it wouldn't have a separate entry, since it's like the
+# larger Antarctica/McMurdo since 1970, but it's too famous to omit.
+#
+# From Chris Carrier (1996-06-27):
+# Siple, the first commander of the South Pole station,
+# stated that he would have liked to have kept GMT at the station,
+# but that he found it more convenient to keep GMT+12
+# as supplies for the station were coming from McMurdo Sound,
+# which was on GMT+12 because New Zealand was on GMT+12 all year
+# at that time (1957).  (Source: Siple's book 90 degrees SOUTH.)
+#
+# From Susan Smith
+# http://www.cybertours.com/whs/pole10.html
+# (1995-11-13 16:24:56 +1300, no longer available):
+# We use the same time as McMurdo does.
+# And they use the same time as Christchurch, NZ does....
+# One last quirk about South Pole time.
+# All the electric clocks are usually wrong.
+# Something about the generators running at 60.1hertz or something
+# makes all of the clocks run fast.  So every couple of days,
+# we have to go around and set them back 5 minutes or so.
+# Maybe if we let them run fast all of the time, we'd get to leave here sooner!!
+#
+Link	Antarctica/McMurdo	Antarctica/South_Pole
diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/asia b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/asia
new file mode 100644
index 0000000..bf71864
--- /dev/null
+++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/asia
@@ -0,0 +1,2717 @@
+# 
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
+
+# This data is by no means authoritative; if you think you know better,
+# go ahead and edit the file (and please send any changes to
+# tz@iana.org for general use in the future).
+
+# From Paul Eggert (2006-03-22):
+#
+# A good source for time zone historical data outside the U.S. is
+# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+# San Diego: ACS Publications, Inc. (2003).
+#
+# Gwillim Law writes that a good source
+# for recent time zone data is the International Air Transport
+# Association's Standard Schedules Information Manual (IATA SSIM),
+# published semiannually.  Law sent in several helpful summaries
+# of the IATA's data after 1990.
+#
+# Except where otherwise noted, Shanks & Pottenger is the source for
+# entries through 1990, and IATA SSIM is the source for entries afterwards.
+#
+# Another source occasionally used is Edward W. Whitman, World Time Differences,
+# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
+# I found in the UCLA library.
+#
+# A reliable and entertaining source about time zones is
+# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+#
+# I invented the abbreviations marked `*' in the following table;
+# the rest are from earlier versions of this file, or from other sources.
+# Corrections are welcome!
+#	     std  dst
+#	     LMT	Local Mean Time
+#	2:00 EET  EEST	Eastern European Time
+#	2:00 IST  IDT	Israel
+#	3:00 AST  ADT	Arabia*
+#	3:30 IRST IRDT	Iran
+#	4:00 GST	Gulf*
+#	5:30 IST	India
+#	7:00 ICT	Indochina*
+#	7:00 WIT	west Indonesia
+#	8:00 CIT	central Indonesia
+#	8:00 CST	China
+#	9:00 CJT	Central Japanese Time (1896/1937)*
+#	9:00 EIT	east Indonesia
+#	9:00 JST  JDT	Japan
+#	9:00 KST  KDT	Korea
+#	9:30 CST	(Australian) Central Standard Time
+#
+# See the `europe' file for Russia and Turkey in Asia.
+
+# From Guy Harris:
+# Incorporates data for Singapore from Robert Elz' asia 1.1, as well as
+# additional information from Tom Yap, Sun Microsystems Intercontinental
+# Technical Support (including a page from the Official Airline Guide -
+# Worldwide Edition).  The names for time zones are guesses.
+
+###############################################################################
+
+# These rules are stolen from the `europe' file.
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	EUAsia	1981	max	-	Mar	lastSun	 1:00u	1:00	S
+Rule	EUAsia	1979	1995	-	Sep	lastSun	 1:00u	0	-
+Rule	EUAsia	1996	max	-	Oct	lastSun	 1:00u	0	-
+Rule E-EurAsia	1981	max	-	Mar	lastSun	 0:00	1:00	S
+Rule E-EurAsia	1979	1995	-	Sep	lastSun	 0:00	0	-
+Rule E-EurAsia	1996	max	-	Oct	lastSun	 0:00	0	-
+Rule RussiaAsia	1981	1984	-	Apr	1	 0:00	1:00	S
+Rule RussiaAsia	1981	1983	-	Oct	1	 0:00	0	-
+Rule RussiaAsia	1984	1991	-	Sep	lastSun	 2:00s	0	-
+Rule RussiaAsia	1985	1991	-	Mar	lastSun	 2:00s	1:00	S
+Rule RussiaAsia	1992	only	-	Mar	lastSat	23:00	1:00	S
+Rule RussiaAsia	1992	only	-	Sep	lastSat	23:00	0	-
+Rule RussiaAsia	1993	max	-	Mar	lastSun	 2:00s	1:00	S
+Rule RussiaAsia	1993	1995	-	Sep	lastSun	 2:00s	0	-
+Rule RussiaAsia	1996	max	-	Oct	lastSun	 2:00s	0	-
+
+# Afghanistan
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Kabul	4:36:48 -	LMT	1890
+			4:00	-	AFT	1945
+			4:30	-	AFT
+
+# Armenia
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger have Yerevan switching to 3:00 (with Russian DST)
+# in spring 1991, then to 4:00 with no DST in fall 1995, then
+# readopting Russian DST in 1997.  Go with Shanks & Pottenger, even
+# when they disagree with others.  Edgar Der-Danieliantz
+# reported (1996-05-04) that Yerevan probably wouldn't use DST
+# in 1996, though it did use DST in 1995.  IATA SSIM (1991/1998) reports that
+# Armenia switched from 3:00 to 4:00 in 1998 and observed DST after 1991,
+# but started switching at 3:00s in 1998.
+
+# From Arthur David Olson (2011-06-15):
+# While Russia abandoned DST in 2011, Armenia may choose to
+# follow Russia's "old" rules.
+
+# From Alexander Krivenyshev (2012-02-10):
+# According to News Armenia, on Feb 9, 2012,
+# http://newsarmenia.ru/society/20120209/42609695.html
+#
+# The Armenia National Assembly adopted final reading of Amendments to the
+# Law "On procedure of calculation time on the territory of the Republic of
+# Armenia" according to which Armenia [is] abolishing Daylight Saving Time.
+# or
+# (brief)
+# http://www.worldtimezone.com/dst_news/dst_news_armenia03.html
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Yerevan	2:58:00 -	LMT	1924 May  2
+			3:00	-	YERT	1957 Mar    # Yerevan Time
+			4:00 RussiaAsia YER%sT	1991 Mar 31 2:00s
+			3:00	1:00	YERST	1991 Sep 23 # independence
+			3:00 RussiaAsia	AM%sT	1995 Sep 24 2:00s
+			4:00	-	AMT	1997
+			4:00 RussiaAsia	AM%sT	2012 Mar 25 2:00s
+			4:00	-	AMT
+
+# Azerbaijan
+# From Rustam Aliyev of the Azerbaijan Internet Forum (2005-10-23):
+# According to the resolution of Cabinet of Ministers, 1997
+# Resolution available at: http://aif.az/docs/daylight_res.pdf
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Azer	1997	max	-	Mar	lastSun	 4:00	1:00	S
+Rule	Azer	1997	max	-	Oct	lastSun	 5:00	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Baku	3:19:24 -	LMT	1924 May  2
+			3:00	-	BAKT	1957 Mar    # Baku Time
+			4:00 RussiaAsia BAK%sT	1991 Mar 31 2:00s
+			3:00	1:00	BAKST	1991 Aug 30 # independence
+			3:00 RussiaAsia	AZ%sT	1992 Sep lastSat 23:00
+			4:00	-	AZT	1996 # Azerbaijan time
+			4:00	EUAsia	AZ%sT	1997
+			4:00	Azer	AZ%sT
+
+# Bahrain
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Bahrain	3:22:20 -	LMT	1920		# Al Manamah
+			4:00	-	GST	1972 Jun
+			3:00	-	AST
+
+# Bangladesh
+# From Alexander Krivenyshev (2009-05-13):
+# According to newspaper Asian Tribune (May 6, 2009) Bangladesh may introduce
+# Daylight Saving Time from June 16 to Sept 30
+#
+# Bangladesh to introduce daylight saving time likely from June 16
+# 
+# http://www.asiantribune.com/?q=node/17288
+# 
+# or
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_bangladesh02.html
+# 
+#
+# "... Bangladesh government has decided to switch daylight saving time from
+# June
+# 16 till September 30 in a bid to ensure maximum use of daylight to cope with
+# crippling power crisis. "
+#
+# The switch will remain in effect from June 16 to Sept 30 (2009) but if
+# implemented the next year, it will come in force from April 1, 2010
+
+# From Steffen Thorsen (2009-06-02):
+# They have finally decided now, but changed the start date to midnight between
+# the 19th and 20th, and they have not set the end date yet.
+#
+# Some sources:
+# 
+# http://in.reuters.com/article/southAsiaNews/idINIndia-40017620090601
+# 
+# 
+# http://bdnews24.com/details.php?id=85889&cid=2
+# 
+#
+# Our wrap-up:
+# 
+# http://www.timeanddate.com/news/time/bangladesh-daylight-saving-2009.html
+# 
+
+# From A. N. M. Kamrus Saadat (2009-06-15):
+# Finally we've got the official mail regarding DST start time where DST start
+# time is mentioned as Jun 19 2009, 23:00 from BTRC (Bangladesh
+# Telecommunication Regulatory Commission).
+#
+# No DST end date has been announced yet.
+
+# From Alexander Krivenyshev (2009-09-25):
+# Bangladesh won't go back to Standard Time from October 1, 2009,
+# instead it will continue DST measure till the cabinet makes a fresh decision.
+#
+# Following report by same newspaper-"The Daily Star Friday":
+# "DST change awaits cabinet decision-Clock won't go back by 1-hr from Oct 1"
+# 
+# http://www.thedailystar.net/newDesign/news-details.php?nid=107021
+# 
+# or
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_bangladesh04.html
+# 
+
+# From Steffen Thorsen (2009-10-13):
+# IANS (Indo-Asian News Service) now reports:
+# Bangladesh has decided that the clock advanced by an hour to make
+# maximum use of daylight hours as an energy saving measure would
+# "continue for an indefinite period."
+#
+# One of many places where it is published:
+# 
+# http://www.thaindian.com/newsportal/business/bangladesh-to-continue-indefinitely-with-advanced-time_100259987.html
+# 
+
+# From Alexander Krivenyshev (2009-12-24):
+# According to Bangladesh newspaper "The Daily Star,"
+# Bangladesh will change its clock back to Standard Time on Dec 31, 2009.
+#
+# Clock goes back 1-hr on Dec 31 night.
+# 
+# http://www.thedailystar.net/newDesign/news-details.php?nid=119228
+# 
+# and
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_bangladesh05.html
+# 
+#
+# "...The government yesterday decided to put the clock back by one hour
+# on December 31 midnight and the new time will continue until March 31,
+# 2010 midnight. The decision came at a cabinet meeting at the Prime
+# Minister's Office last night..."
+
+# From Alexander Krivenyshev (2010-03-22):
+# According to Bangladesh newspaper "The Daily Star,"
+# Cabinet cancels Daylight Saving Time
+# 
+# http://www.thedailystar.net/newDesign/latest_news.php?nid=22817
+# 
+# or
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_bangladesh06.html
+# 
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Dhaka	2009	only	-	Jun	19	23:00	1:00	S
+Rule	Dhaka	2009	only	-	Dec	31	23:59	0	-
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Dhaka	6:01:40 -	LMT	1890
+			5:53:20	-	HMT	1941 Oct    # Howrah Mean Time?
+			6:30	-	BURT	1942 May 15 # Burma Time
+			5:30	-	IST	1942 Sep
+			6:30	-	BURT	1951 Sep 30
+			6:00	-	DACT	1971 Mar 26 # Dacca Time
+			6:00	-	BDT	2009
+			6:00	Dhaka	BD%sT
+
+# Bhutan
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Thimphu	5:58:36 -	LMT	1947 Aug 15 # or Thimbu
+			5:30	-	IST	1987 Oct
+			6:00	-	BTT	# Bhutan Time
+
+# British Indian Ocean Territory
+# Whitman and the 1995 CIA time zone map say 5:00, but the
+# 1997 and later maps say 6:00.  Assume the switch occurred in 1996.
+# We have no information as to when standard time was introduced;
+# assume it occurred in 1907, the same year as Mauritius (which
+# then contained the Chagos Archipelago).
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Indian/Chagos	4:49:40	-	LMT	1907
+			5:00	-	IOT	1996 # BIOT Time
+			6:00	-	IOT
+
+# Brunei
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Brunei	7:39:40 -	LMT	1926 Mar   # Bandar Seri Begawan
+			7:30	-	BNT	1933
+			8:00	-	BNT
+
+# Burma / Myanmar
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Rangoon	6:24:40 -	LMT	1880		# or Yangon
+			6:24:36	-	RMT	1920	   # Rangoon Mean Time?
+			6:30	-	BURT	1942 May   # Burma Time
+			9:00	-	JST	1945 May 3
+			6:30	-	MMT		   # Myanmar Time
+
+# Cambodia
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Phnom_Penh	6:59:40 -	LMT	1906 Jun  9
+			7:06:20	-	SMT	1911 Mar 11 0:01 # Saigon MT?
+			7:00	-	ICT	1912 May
+			8:00	-	ICT	1931 May
+			7:00	-	ICT
+
+# China
+
+# From Guy Harris:
+# People's Republic of China.  Yes, they really have only one time zone.
+
+# From Bob Devine (1988-01-28):
+# No they don't.  See TIME mag, 1986-02-17 p.52.  Even though
+# China is across 4 physical time zones, before Feb 1, 1986 only the
+# Peking (Bejing) time zone was recognized.  Since that date, China
+# has two of 'em -- Peking's and Urumqi (named after the capital of
+# the Xinjiang Uyghur Autonomous Region).  I don't know about DST for it.
+#
+# . . .I just deleted the DST table and this editor makes it too
+# painful to suck in another copy..  So, here is what I have for
+# DST start/end dates for Peking's time zone (info from AP):
+#
+#     1986 May 4 - Sept 14
+#     1987 mid-April - ??
+
+# From U. S. Naval Observatory (1989-01-19):
+# CHINA               8 H  AHEAD OF UTC  ALL OF CHINA, INCL TAIWAN
+# CHINA               9 H  AHEAD OF UTC  APR 17 - SEP 10
+
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger write that China (except for Hong Kong and Macau)
+# has had a single time zone since 1980 May 1, observing summer DST
+# from 1986 through 1991; this contradicts Devine's
+# note about Time magazine, though apparently _something_ happened in 1986.
+# Go with Shanks & Pottenger for now.  I made up names for the other
+# pre-1980 time zones.
+
+# From Shanks & Pottenger:
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Shang	1940	only	-	Jun	 3	0:00	1:00	D
+Rule	Shang	1940	1941	-	Oct	 1	0:00	0	S
+Rule	Shang	1941	only	-	Mar	16	0:00	1:00	D
+Rule	PRC	1986	only	-	May	 4	0:00	1:00	D
+Rule	PRC	1986	1991	-	Sep	Sun>=11	0:00	0	S
+Rule	PRC	1987	1991	-	Apr	Sun>=10	0:00	1:00	D
+
+# From Anthony Fok (2001-12-20):
+# BTW, I did some research on-line and found some info regarding these five
+# historic timezones from some Taiwan websites.  And yes, there are official
+# Chinese names for these locales (before 1949).
+#
+# From Jesper Norgaard Welen (2006-07-14):
+# I have investigated the timezones around 1970 on the
+# http://www.astro.com/atlas site [with provinces and county
+# boundaries summarized below]....  A few other exceptions were two
+# counties on the Sichuan side of the Xizang-Sichuan border,
+# counties Dege and Baiyu which lies on the Sichuan side and are
+# therefore supposed to be GMT+7, Xizang region being GMT+6, but Dege
+# county is GMT+8 according to astro.com while Baiyu county is GMT+6
+# (could be true), for the moment I am assuming that those two
+# counties are mistakes in the astro.com data.
+
+# From Paul Eggert (2008-02-11):
+# I just now checked Google News for western news sources that talk
+# about China's single time zone, and couldn't find anything before 1986
+# talking about China being in one time zone.  (That article was: Jim
+# Mann, "A clumsy embrace for another western custom: China on daylight
+# time--sort of", Los Angeles Times, 1986-05-05.  By the way, this
+# article confirms the tz database's data claiming that China began
+# observing daylight saving time in 1986.
+#
+# From Thomas S. Mullaney (2008-02-11):
+# I think you're combining two subjects that need to treated
+# separately: daylight savings (which, you're correct, wasn't
+# implemented until the 1980s) and the unified time zone centered near
+# Beijing (which was implemented in 1949). Briefly, there was also a
+# "Lhasa Time" in Tibet and "Urumqi Time" in Xinjiang. The first was
+# ceased, and the second eventually recognized (again, in the 1980s).
+#
+# From Paul Eggert (2008-06-30):
+# There seems to be a good chance China switched to a single time zone in 1949
+# rather than in 1980 as Shanks & Pottenger have it, but we don't have a
+# reliable documentary source saying so yet, so for now we still go with
+# Shanks & Pottenger.
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+# Changbai Time ("Long-white Time", Long-white = Heilongjiang area)
+# Heilongjiang (except Mohe county), Jilin
+Zone	Asia/Harbin	8:26:44	-	LMT	1928 # or Haerbin
+			8:30	-	CHAT	1932 Mar # Changbai Time
+			8:00	-	CST	1940
+			9:00	-	CHAT	1966 May
+			8:30	-	CHAT	1980 May
+			8:00	PRC	C%sT
+# Zhongyuan Time ("Central plain Time")
+# most of China
+Zone	Asia/Shanghai	8:05:52	-	LMT	1928
+			8:00	Shang	C%sT	1949
+			8:00	PRC	C%sT
+# Long-shu Time (probably due to Long and Shu being two names of that area)
+# Guangxi, Guizhou, Hainan, Ningxia, Sichuan, Shaanxi, and Yunnan;
+# most of Gansu; west Inner Mongolia; west Qinghai; and the Guangdong
+# counties Deqing, Enping, Kaiping, Luoding, Taishan, Xinxing,
+# Yangchun, Yangjiang, Yu'nan, and Yunfu.
+Zone	Asia/Chongqing	7:06:20	-	LMT	1928 # or Chungking
+			7:00	-	LONT	1980 May # Long-shu Time
+			8:00	PRC	C%sT
+# Xin-zang Time ("Xinjiang-Tibet Time")
+# The Gansu counties Aksay, Anxi, Dunhuang, Subei; west Qinghai;
+# the Guangdong counties  Xuwen, Haikang, Suixi, Lianjiang,
+# Zhanjiang, Wuchuan, Huazhou, Gaozhou, Maoming, Dianbai, and Xinyi;
+# east Tibet, including Lhasa, Chamdo, Shigaise, Jimsar, Shawan and Hutubi;
+# east Xinjiang, including Urumqi, Turpan, Karamay, Korla, Minfeng, Jinghe,
+# Wusu, Qiemo, Xinyan, Wulanwusu, Jinghe, Yumin, Tacheng, Tuoli, Emin,
+# Shihezi, Changji, Yanqi, Heshuo, Tuokexun, Tulufan, Shanshan, Hami,
+# Fukang, Kuitun, Kumukuli, Miquan, Qitai, and Turfan.
+Zone	Asia/Urumqi	5:50:20	-	LMT	1928 # or Urumchi
+			6:00	-	URUT	1980 May # Urumqi Time
+			8:00	PRC	C%sT
+# Kunlun Time
+# West Tibet, including Pulan, Aheqi, Shufu, Shule;
+# West Xinjiang, including Aksu, Atushi, Yining, Hetian, Cele, Luopu, Nileke,
+# Zhaosu, Tekesi, Gongliu, Chabuchaer, Huocheng, Bole, Pishan, Suiding,
+# and Yarkand.
+
+# From Luther Ma (2009-10-17):
+# Almost all (>99.9%) ethnic Chinese (properly ethnic Han) living in
+# Xinjiang use Chinese Standard Time. Some are aware of Xinjiang time,
+# but have no need of it. All planes, trains, and schools function on
+# what is called "Beijing time." When Han make an appointment in Chinese
+# they implicitly use Beijing time.
+#
+# On the other hand, ethnic Uyghurs, who make up about half the
+# population of Xinjiang, typically use "Xinjiang time" which is two
+# hours behind Beijing time, or UTC +0600. The government of the Xinjiang
+# Uyghur Autonomous Region, (XAUR, or just Xinjiang for short) as well as
+# local governments such as the Urumqi city government use both times in
+# publications, referring to what is popularly called Xinjiang time as
+# "Urumqi time." When Uyghurs make an appointment in the Uyghur language
+# they almost invariably use Xinjiang time.
+#
+# (Their ethnic Han compatriots would typically have no clue of its
+# widespread use, however, because so extremely few of them are fluent in
+# Uyghur, comparable to the number of Anglo-Americans fluent in Navajo.)
+#
+# (...As with the rest of China there was a brief interval ending in 1990
+# or 1991 when summer time was in use.  The confusion was severe, with
+# the province not having dual times but four times in use at the same
+# time. Some areas remained on standard Xinjiang time or Beijing time and
+# others moving their clocks ahead.)
+#
+# ...an example of an official website using of Urumqi time.
+#
+# The first few lines of the Google translation of
+# 
+# http://www.fjysgl.gov.cn/show.aspx?id=2379&cid=39
+# 
+# (retrieved 2009-10-13)
+# > Urumqi fire seven people are missing the alleged losses of at least
+# > 500 million yuan
+# >
+# > (Reporter Dong Liu) the day before 20:20 or so (Urumqi Time 18:20),
+# > Urumqi City Department of International Plaza Luther Qiantang River
+# > burst fire. As of yesterday, 18:30, Urumqi City Fire officers and men
+# > have worked continuously for 22 hours...
+
+# From Luther Ma (2009-11-19):
+# With the risk of being redundant to previous answers these are the most common
+# English "transliterations" (w/o using non-English symbols):
+#
+# 1. Wulumuqi...
+# 2. Kashi...
+# 3. Urumqi...
+# 4. Kashgar...
+# ...
+# 5. It seems that Uyghurs in Urumqi has been using Xinjiang since at least the
+# 1960's. I know of one Han, now over 50, who grew up in the surrounding
+# countryside and used Xinjiang time as a child.
+#
+# 6. Likewise for Kashgar and the rest of south Xinjiang I don't know of any
+# start date for Xinjiang time.
+#
+# Without having access to local historical records, nor the ability to legally
+# publish them, I would go with October 1, 1949, when Xinjiang became the Uyghur
+# Autonomous Region under the PRC. (Before that Uyghurs, of course, would also
+# not be using Beijing time, but some local time.)
+
+Zone	Asia/Kashgar	5:03:56	-	LMT	1928 # or Kashi or Kaxgar
+			5:30	-	KAST	1940	 # Kashgar Time
+			5:00	-	KAST	1980 May
+			8:00	PRC	C%sT
+
+
+# From Lee Yiu Chung (2009-10-24):
+# I found there are some mistakes for the...DST rule for Hong
+# Kong. [According] to the DST record from Hong Kong Observatory (actually,
+# it is not [an] observatory, but the official meteorological agency of HK,
+# and also serves as the official timing agency), there are some missing
+# and incorrect rules. Although the exact switch over time is missing, I
+# think 3:30 is correct. The official DST record for Hong Kong can be
+# obtained from
+# 
+# http://www.hko.gov.hk/gts/time/Summertime.htm
+# .
+
+# From Arthur David Olson (2009-10-28):
+# Here are the dates given at
+# 
+# http://www.hko.gov.hk/gts/time/Summertime.htm
+# 
+# as of 2009-10-28:
+# Year        Period
+# 1941        1 Apr to 30 Sep
+# 1942        Whole year
+# 1943        Whole year
+# 1944        Whole year
+# 1945        Whole year
+# 1946        20 Apr to 1 Dec
+# 1947        13 Apr to 30 Dec
+# 1948        2 May to 31 Oct
+# 1949        3 Apr to 30 Oct
+# 1950        2 Apr to 29 Oct
+# 1951        1 Apr to 28 Oct
+# 1952        6 Apr to 25 Oct
+# 1953        5 Apr to 1 Nov
+# 1954        21 Mar to 31 Oct
+# 1955        20 Mar to 6 Nov
+# 1956        18 Mar to 4 Nov
+# 1957        24 Mar to 3 Nov
+# 1958        23 Mar to 2 Nov
+# 1959        22 Mar to 1 Nov
+# 1960        20 Mar to 6 Nov
+# 1961        19 Mar to 5 Nov
+# 1962        18 Mar to 4 Nov
+# 1963        24 Mar to 3 Nov
+# 1964        22 Mar to 1 Nov
+# 1965        18 Apr to 17 Oct
+# 1966        17 Apr to 16 Oct
+# 1967        16 Apr to 22 Oct
+# 1968        21 Apr to 20 Oct
+# 1969        20 Apr to 19 Oct
+# 1970        19 Apr to 18 Oct
+# 1971        18 Apr to 17 Oct
+# 1972        16 Apr to 22 Oct
+# 1973        22 Apr to 21 Oct
+# 1973/74     30 Dec 73 to 20 Oct 74
+# 1975        20 Apr to 19 Oct
+# 1976        18 Apr to 17 Oct
+# 1977        Nil
+# 1978        Nil
+# 1979        13 May to 21 Oct
+# 1980 to Now Nil
+# The page does not give start or end times of day.
+# The page does not give a start date for 1942.
+# The page does not givw an end date for 1945.
+# The Japanese occupation of Hong Kong began on 1941-12-25.
+# The Japanese surrender of Hong Kong was signed 1945-09-15.
+# For lack of anything better, use start of those days as the transition times.
+
+# Hong Kong (Xianggang)
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	HK	1941	only	-	Apr	1	3:30	1:00	S
+Rule	HK	1941	only	-	Sep	30	3:30	0	-
+Rule	HK	1946	only	-	Apr	20	3:30	1:00	S
+Rule	HK	1946	only	-	Dec	1	3:30	0	-
+Rule	HK	1947	only	-	Apr	13	3:30	1:00	S
+Rule	HK	1947	only	-	Dec	30	3:30	0	-
+Rule	HK	1948	only	-	May	2	3:30	1:00	S
+Rule	HK	1948	1951	-	Oct	lastSun	3:30	0	-
+Rule	HK	1952	only	-	Oct	25	3:30	0	-
+Rule	HK	1949	1953	-	Apr	Sun>=1	3:30	1:00	S
+Rule	HK	1953	only	-	Nov	1	3:30	0	-
+Rule	HK	1954	1964	-	Mar	Sun>=18	3:30	1:00	S
+Rule	HK	1954	only	-	Oct	31	3:30	0	-
+Rule	HK	1955	1964	-	Nov	Sun>=1	3:30	0	-
+Rule	HK	1965	1976	-	Apr	Sun>=16	3:30	1:00	S
+Rule	HK	1965	1976	-	Oct	Sun>=16	3:30	0	-
+Rule	HK	1973	only	-	Dec	30	3:30	1:00	S
+Rule	HK	1979	only	-	May	Sun>=8	3:30	1:00	S
+Rule	HK	1979	only	-	Oct	Sun>=16	3:30	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Hong_Kong	7:36:36 -	LMT	1904 Oct 30
+			8:00	HK	HK%sT	1941 Dec 25
+			9:00	-	JST	1945 Sep 15
+			8:00	HK	HK%sT
+
+###############################################################################
+
+# Taiwan
+
+# Shanks & Pottenger write that Taiwan observed DST during 1945, when it
+# was still controlled by Japan.  This is hard to believe, but we don't
+# have any other information.
+
+# From smallufo (2010-04-03):
+# According to Taiwan's CWB,
+# 
+# http://www.cwb.gov.tw/V6/astronomy/cdata/summert.htm
+# 
+# Taipei has DST in 1979 between July 1st and Sep 30.
+
+# From Arthur David Olson (2010-04-07):
+# Here's Google's translation of the table at the bottom of the "summert.htm" page:
+# Decade 	                                                    Name                      Start and end date
+# Republic of China 34 years to 40 years (AD 1945-1951 years) Summer Time               May 1 to September 30
+# 41 years of the Republic of China (AD 1952)                 Daylight Saving Time      March 1 to October 31
+# Republic of China 42 years to 43 years (AD 1953-1954 years) Daylight Saving Time      April 1 to October 31
+# In the 44 years to 45 years (AD 1955-1956 years)            Daylight Saving Time      April 1 to September 30
+# Republic of China 46 years to 48 years (AD 1957-1959)       Summer Time               April 1 to September 30
+# Republic of China 49 years to 50 years (AD 1960-1961)       Summer Time               June 1 to September 30
+# Republic of China 51 years to 62 years (AD 1962-1973 years) Stop Summer Time
+# Republic of China 63 years to 64 years (1974-1975 AD)       Daylight Saving Time      April 1 to September 30
+# Republic of China 65 years to 67 years (1976-1978 AD)       Stop Daylight Saving Time
+# Republic of China 68 years (AD 1979)                        Daylight Saving Time      July 1 to September 30
+# Republic of China since 69 years (AD 1980)                  Stop Daylight Saving Time
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Taiwan	1945	1951	-	May	1	0:00	1:00	D
+Rule	Taiwan	1945	1951	-	Oct	1	0:00	0	S
+Rule	Taiwan	1952	only	-	Mar	1	0:00	1:00	D
+Rule	Taiwan	1952	1954	-	Nov	1	0:00	0	S
+Rule	Taiwan	1953	1959	-	Apr	1	0:00	1:00	D
+Rule	Taiwan	1955	1961	-	Oct	1	0:00	0	S
+Rule	Taiwan	1960	1961	-	Jun	1	0:00	1:00	D
+Rule	Taiwan	1974	1975	-	Apr	1	0:00	1:00	D
+Rule	Taiwan	1974	1975	-	Oct	1	0:00	0	S
+Rule	Taiwan	1979	only	-	Jun	30	0:00	1:00	D
+Rule	Taiwan	1979	only	-	Sep	30	0:00	0	S
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Taipei	8:06:00 -	LMT	1896 # or Taibei or T'ai-pei
+			8:00	Taiwan	C%sT
+
+# Macau (Macao, Aomen)
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Macau	1961	1962	-	Mar	Sun>=16	3:30	1:00	S
+Rule	Macau	1961	1964	-	Nov	Sun>=1	3:30	0	-
+Rule	Macau	1963	only	-	Mar	Sun>=16	0:00	1:00	S
+Rule	Macau	1964	only	-	Mar	Sun>=16	3:30	1:00	S
+Rule	Macau	1965	only	-	Mar	Sun>=16	0:00	1:00	S
+Rule	Macau	1965	only	-	Oct	31	0:00	0	-
+Rule	Macau	1966	1971	-	Apr	Sun>=16	3:30	1:00	S
+Rule	Macau	1966	1971	-	Oct	Sun>=16	3:30	0	-
+Rule	Macau	1972	1974	-	Apr	Sun>=15	0:00	1:00	S
+Rule	Macau	1972	1973	-	Oct	Sun>=15	0:00	0	-
+Rule	Macau	1974	1977	-	Oct	Sun>=15	3:30	0	-
+Rule	Macau	1975	1977	-	Apr	Sun>=15	3:30	1:00	S
+Rule	Macau	1978	1980	-	Apr	Sun>=15	0:00	1:00	S
+Rule	Macau	1978	1980	-	Oct	Sun>=15	0:00	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Macau	7:34:20 -	LMT	1912
+			8:00	Macau	MO%sT	1999 Dec 20 # return to China
+			8:00	PRC	C%sT
+
+
+###############################################################################
+
+# Cyprus
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Cyprus	1975	only	-	Apr	13	0:00	1:00	S
+Rule	Cyprus	1975	only	-	Oct	12	0:00	0	-
+Rule	Cyprus	1976	only	-	May	15	0:00	1:00	S
+Rule	Cyprus	1976	only	-	Oct	11	0:00	0	-
+Rule	Cyprus	1977	1980	-	Apr	Sun>=1	0:00	1:00	S
+Rule	Cyprus	1977	only	-	Sep	25	0:00	0	-
+Rule	Cyprus	1978	only	-	Oct	2	0:00	0	-
+Rule	Cyprus	1979	1997	-	Sep	lastSun	0:00	0	-
+Rule	Cyprus	1981	1998	-	Mar	lastSun	0:00	1:00	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Nicosia	2:13:28 -	LMT	1921 Nov 14
+			2:00	Cyprus	EE%sT	1998 Sep
+			2:00	EUAsia	EE%sT
+# IATA SSIM (1998-09) has Cyprus using EU rules for the first time.
+
+# Classically, Cyprus belongs to Asia; e.g. see Herodotus, Histories, I.72.
+# However, for various reasons many users expect to find it under Europe.
+Link	Asia/Nicosia	Europe/Nicosia
+
+# Georgia
+# From Paul Eggert (1994-11-19):
+# Today's _Economist_ (p 60) reports that Georgia moved its clocks forward
+# an hour recently, due to a law proposed by Zurab Murvanidze,
+# an MP who went on a hunger strike for 11 days to force discussion about it!
+# We have no details, but we'll guess they didn't move the clocks back in fall.
+#
+# From Mathew Englander, quoting AP (1996-10-23 13:05-04):
+# Instead of putting back clocks at the end of October, Georgia
+# will stay on daylight savings time this winter to save energy,
+# President Eduard Shevardnadze decreed Wednesday.
+#
+# From the BBC via Joseph S. Myers (2004-06-27):
+#
+# Georgia moved closer to Western Europe on Sunday...  The former Soviet
+# republic has changed its time zone back to that of Moscow.  As a result it
+# is now just four hours ahead of Greenwich Mean Time, rather than five hours
+# ahead.  The switch was decreed by the pro-Western president of Georgia,
+# Mikhail Saakashvili, who said the change was partly prompted by the process
+# of integration into Europe.
+
+# From Teimuraz Abashidze (2005-11-07):
+# Government of Georgia ... decided to NOT CHANGE daylight savings time on
+# [Oct.] 30, as it was done before during last more than 10 years.
+# Currently, we are in fact GMT +4:00, as before 30 October it was GMT
+# +3:00.... The problem is, there is NO FORMAL LAW or governmental document
+# about it.  As far as I can find, I was told, that there is no document,
+# because we just DIDN'T ISSUE document about switching to winter time....
+# I don't know what can be done, especially knowing that some years ago our
+# DST rules where changed THREE TIMES during one month.
+
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Tbilisi	2:59:16 -	LMT	1880
+			2:59:16	-	TBMT	1924 May  2 # Tbilisi Mean Time
+			3:00	-	TBIT	1957 Mar    # Tbilisi Time
+			4:00 RussiaAsia TBI%sT	1991 Mar 31 2:00s
+			3:00	1:00	TBIST	1991 Apr  9 # independence
+			3:00 RussiaAsia GE%sT	1992 # Georgia Time
+			3:00 E-EurAsia	GE%sT	1994 Sep lastSun
+			4:00 E-EurAsia	GE%sT	1996 Oct lastSun
+			4:00	1:00	GEST	1997 Mar lastSun
+			4:00 E-EurAsia	GE%sT	2004 Jun 27
+			3:00 RussiaAsia	GE%sT	2005 Mar lastSun 2:00
+			4:00	-	GET
+
+# East Timor
+
+# See Indonesia for the 1945 transition.
+
+# From Joao Carrascalao, brother of the former governor of East Timor, in
+# 
+# East Timor may be late for its millennium
+#  (1999-12-26/31):
+# Portugal tried to change the time forward in 1974 because the sun
+# rises too early but the suggestion raised a lot of problems with the
+# Timorese and I still don't think it would work today because it
+# conflicts with their way of life.
+
+# From Paul Eggert (2000-12-04):
+# We don't have any record of the above attempt.
+# Most likely our records are incomplete, but we have no better data.
+
+# 
+# From Manoel de Almeida e Silva, Deputy Spokesman for the UN Secretary-General
+# (2000-08-16):
+# The Cabinet of the East Timor Transition Administration decided
+# today to advance East Timor's time by one hour.  The time change,
+# which will be permanent, with no seasonal adjustment, will happen at
+# midnight on Saturday, September 16.
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Dili	8:22:20 -	LMT	1912
+			8:00	-	TLT	1942 Feb 21 23:00 # E Timor Time
+			9:00	-	JST	1945 Sep 23
+			9:00	-	TLT	1976 May  3
+			8:00	-	CIT	2000 Sep 17 00:00
+			9:00	-	TLT
+
+# India
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Kolkata	5:53:28 -	LMT	1880	# Kolkata
+			5:53:20	-	HMT	1941 Oct    # Howrah Mean Time?
+			6:30	-	BURT	1942 May 15 # Burma Time
+			5:30	-	IST	1942 Sep
+			5:30	1:00	IST	1945 Oct 15
+			5:30	-	IST
+# The following are like Asia/Kolkata:
+#	Andaman Is
+#	Lakshadweep (Laccadive, Minicoy and Amindivi Is)
+#	Nicobar Is
+
+# Indonesia
+#
+# From Gwillim Law (2001-05-28), overriding Shanks & Pottenger:
+# 
+# says that Indonesia's time zones changed on 1988-01-01.  Looking at some
+# time zone maps, I think that must refer to Western Borneo (Kalimantan Barat
+# and Kalimantan Tengah) switching from UTC+8 to UTC+7.
+#
+# From Paul Eggert (2007-03-10):
+# Here is another correction to Shanks & Pottenger.
+# JohnTWB writes that Japanese forces did not surrender control in
+# Indonesia until 1945-09-01 00:00 at the earliest (in Jakarta) and
+# other formal surrender ceremonies were September 9, 11, and 13, plus
+# September 12 for the regional surrender to Mountbatten in Singapore.
+# These would be the earliest possible times for a change.
+# Regimes horaires pour le monde entier, by Henri Le Corre, (Editions
+# Traditionnelles, 1987, Paris) says that Java and Madura switched
+# from JST to UTC+07:30 on 1945-09-23, and gives 1944-09-01 for Jayapura
+# (Hollandia).  For now, assume all Indonesian locations other than Jayapura
+# switched on 1945-09-23.
+#
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Asia/Jakarta	7:07:12 -	LMT	1867 Aug 10
+# Shanks & Pottenger say the next transition was at 1924 Jan 1 0:13,
+# but this must be a typo.
+			7:07:12	-	JMT	1923 Dec 31 23:47:12 # Jakarta
+			7:20	-	JAVT	1932 Nov	 # Java Time
+			7:30	-	WIT	1942 Mar 23
+			9:00	-	JST	1945 Sep 23
+			7:30	-	WIT	1948 May
+			8:00	-	WIT	1950 May
+			7:30	-	WIT	1964
+			7:00	-	WIT
+Zone Asia/Pontianak	7:17:20	-	LMT	1908 May
+			7:17:20	-	PMT	1932 Nov    # Pontianak MT
+			7:30	-	WIT	1942 Jan 29
+			9:00	-	JST	1945 Sep 23
+			7:30	-	WIT	1948 May
+			8:00	-	WIT	1950 May
+			7:30	-	WIT	1964
+			8:00	-	CIT	1988 Jan  1
+			7:00	-	WIT
+Zone Asia/Makassar	7:57:36 -	LMT	1920
+			7:57:36	-	MMT	1932 Nov    # Macassar MT
+			8:00	-	CIT	1942 Feb  9
+			9:00	-	JST	1945 Sep 23
+			8:00	-	CIT
+Zone Asia/Jayapura	9:22:48 -	LMT	1932 Nov
+			9:00	-	EIT	1944 Sep  1
+			9:30	-	CST	1964
+			9:00	-	EIT
+
+# Iran
+
+# From Roozbeh Pournader (2003-03-15):
+# This is an English translation of what I just found (originally in Persian).
+# The Gregorian dates in brackets are mine:
+#
+#	Official Newspaper No. 13548-1370/6/25 [1991-09-16]
+#	No. 16760/T233 H				1370/6/10 [1991-09-01]
+#
+#	The Rule About Change of the Official Time of the Country
+#
+#	The Board of Ministers, in the meeting dated 1370/5/23 [1991-08-14],
+#	based on the suggestion number 2221/D dated 1370/4/22 [1991-07-13]
+#	of the Country's Organization for Official and Employment Affairs,
+#	and referring to the law for equating the working hours of workers
+#	and officers in the whole country dated 1359/4/23 [1980-07-14], and
+#	for synchronizing the official times of the country, agreed that:
+#
+#	The official time of the country will should move forward one hour
+#	at the 24[:00] hours of the first day of Farvardin and should return
+#	to its previous state at the 24[:00] hours of the 30th day of
+#	Shahrivar.
+#
+#	First Deputy to the President - Hassan Habibi
+#
+# From personal experience, that agrees with what has been followed
+# for at least the last 5 years.  Before that, for a few years, the
+# date used was the first Thursday night of Farvardin and the last
+# Thursday night of Shahrivar, but I can't give exact dates....
+# I have also changed the abbreviations to what is considered correct
+# here in Iran, IRST for regular time and IRDT for daylight saving time.
+#
+# From Roozbeh Pournader (2005-04-05):
+# The text of the Iranian law, in effect since 1925, clearly mentions
+# that the true solar year is the measure, and there is no arithmetic
+# leap year calculation involved.  There has never been any serious
+# plan to change that law....
+#
+# From Paul Eggert (2006-03-22):
+# Go with Shanks & Pottenger before Sept. 1991, and with Pournader thereafter.
+# I used Ed Reingold's cal-persia in GNU Emacs 21.2 to check Persian dates,
+# stopping after 2037 when 32-bit time_t's overflow.
+# That cal-persia used Birashk's approximation, which disagrees with the solar
+# calendar predictions for the year 2025, so I corrected those dates by hand.
+#
+# From Oscar van Vlijmen (2005-03-30), writing about future
+# discrepancies between cal-persia and the Iranian calendar:
+# For 2091 solar-longitude-after yields 2091-03-20 08:40:07.7 UT for
+# the vernal equinox and that gets so close to 12:00 some local
+# Iranian time that the definition of the correct location needs to be
+# known exactly, amongst other factors.  2157 is even closer:
+# 2157-03-20 08:37:15.5 UT.  But the Gregorian year 2025 should give
+# no interpretation problem whatsoever.  By the way, another instant
+# in the near future where there will be a discrepancy between
+# arithmetical and astronomical Iranian calendars will be in 2058:
+# vernal equinox on 2058-03-20 09:03:05.9 UT.  The Java version of
+# Reingold's/Dershowitz' calculator gives correctly the Gregorian date
+# 2058-03-21 for 1 Farvardin 1437 (astronomical).
+#
+# From Steffen Thorsen (2006-03-22):
+# Several of my users have reported that Iran will not observe DST anymore:
+# http://www.irna.ir/en/news/view/line-17/0603193812164948.htm
+#
+# From Reuters (2007-09-16), with a heads-up from Jesper Norgaard Welen:
+# ... the Guardian Council ... approved a law on Sunday to re-introduce
+# daylight saving time ...
+# http://uk.reuters.com/article/oilRpt/idUKBLA65048420070916
+#
+# From Roozbeh Pournader (2007-11-05):
+# This is quoted from Official Gazette of the Islamic Republic of
+# Iran, Volume 63, Number 18242, dated Tuesday 1386/6/24
+# [2007-10-16]. I am doing the best translation I can:...
+# The official time of the country will be moved forward for one hour
+# on the 24 hours of the first day of the month of Farvardin and will
+# be changed back to its previous state on the 24 hours of the
+# thirtieth day of Shahrivar.
+#
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Iran	1978	1980	-	Mar	21	0:00	1:00	D
+Rule	Iran	1978	only	-	Oct	21	0:00	0	S
+Rule	Iran	1979	only	-	Sep	19	0:00	0	S
+Rule	Iran	1980	only	-	Sep	23	0:00	0	S
+Rule	Iran	1991	only	-	May	 3	0:00	1:00	D
+Rule	Iran	1992	1995	-	Mar	22	0:00	1:00	D
+Rule	Iran	1991	1995	-	Sep	22	0:00	0	S
+Rule	Iran	1996	only	-	Mar	21	0:00	1:00	D
+Rule	Iran	1996	only	-	Sep	21	0:00	0	S
+Rule	Iran	1997	1999	-	Mar	22	0:00	1:00	D
+Rule	Iran	1997	1999	-	Sep	22	0:00	0	S
+Rule	Iran	2000	only	-	Mar	21	0:00	1:00	D
+Rule	Iran	2000	only	-	Sep	21	0:00	0	S
+Rule	Iran	2001	2003	-	Mar	22	0:00	1:00	D
+Rule	Iran	2001	2003	-	Sep	22	0:00	0	S
+Rule	Iran	2004	only	-	Mar	21	0:00	1:00	D
+Rule	Iran	2004	only	-	Sep	21	0:00	0	S
+Rule	Iran	2005	only	-	Mar	22	0:00	1:00	D
+Rule	Iran	2005	only	-	Sep	22	0:00	0	S
+Rule	Iran	2008	only	-	Mar	21	0:00	1:00	D
+Rule	Iran	2008	only	-	Sep	21	0:00	0	S
+Rule	Iran	2009	2011	-	Mar	22	0:00	1:00	D
+Rule	Iran	2009	2011	-	Sep	22	0:00	0	S
+Rule	Iran	2012	only	-	Mar	21	0:00	1:00	D
+Rule	Iran	2012	only	-	Sep	21	0:00	0	S
+Rule	Iran	2013	2015	-	Mar	22	0:00	1:00	D
+Rule	Iran	2013	2015	-	Sep	22	0:00	0	S
+Rule	Iran	2016	only	-	Mar	21	0:00	1:00	D
+Rule	Iran	2016	only	-	Sep	21	0:00	0	S
+Rule	Iran	2017	2019	-	Mar	22	0:00	1:00	D
+Rule	Iran	2017	2019	-	Sep	22	0:00	0	S
+Rule	Iran	2020	only	-	Mar	21	0:00	1:00	D
+Rule	Iran	2020	only	-	Sep	21	0:00	0	S
+Rule	Iran	2021	2023	-	Mar	22	0:00	1:00	D
+Rule	Iran	2021	2023	-	Sep	22	0:00	0	S
+Rule	Iran	2024	only	-	Mar	21	0:00	1:00	D
+Rule	Iran	2024	only	-	Sep	21	0:00	0	S
+Rule	Iran	2025	2027	-	Mar	22	0:00	1:00	D
+Rule	Iran	2025	2027	-	Sep	22	0:00	0	S
+Rule	Iran	2028	2029	-	Mar	21	0:00	1:00	D
+Rule	Iran	2028	2029	-	Sep	21	0:00	0	S
+Rule	Iran	2030	2031	-	Mar	22	0:00	1:00	D
+Rule	Iran	2030	2031	-	Sep	22	0:00	0	S
+Rule	Iran	2032	2033	-	Mar	21	0:00	1:00	D
+Rule	Iran	2032	2033	-	Sep	21	0:00	0	S
+Rule	Iran	2034	2035	-	Mar	22	0:00	1:00	D
+Rule	Iran	2034	2035	-	Sep	22	0:00	0	S
+Rule	Iran	2036	2037	-	Mar	21	0:00	1:00	D
+Rule	Iran	2036	2037	-	Sep	21	0:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Tehran	3:25:44	-	LMT	1916
+			3:25:44	-	TMT	1946	# Tehran Mean Time
+			3:30	-	IRST	1977 Nov
+			4:00	Iran	IR%sT	1979
+			3:30	Iran	IR%sT
+
+
+# Iraq
+#
+# From Jonathan Lennox (2000-06-12):
+# An article in this week's Economist ("Inside the Saddam-free zone", p. 50 in
+# the U.S. edition) on the Iraqi Kurds contains a paragraph:
+# "The three northern provinces ... switched their clocks this spring and
+# are an hour ahead of Baghdad."
+#
+# But Rives McDow (2000-06-18) quotes a contact in Iraqi-Kurdistan as follows:
+# In the past, some Kurdish nationalists, as a protest to the Iraqi
+# Government, did not adhere to daylight saving time.  They referred
+# to daylight saving as Saddam time.  But, as of today, the time zone
+# in Iraqi-Kurdistan is on standard time with Baghdad, Iraq.
+#
+# So we'll ignore the Economist's claim.
+
+# From Steffen Thorsen (2008-03-10):
+# The cabinet in Iraq abolished DST last week, according to the following
+# news sources (in Arabic):
+# 
+# http://www.aljeeran.net/wesima_articles/news-20080305-98602.html
+# 
+# 
+# http://www.aswataliraq.info/look/article.tpl?id=2047&IdLanguage=17&IdPublication=4&NrArticle=71743&NrIssue=1&NrSection=10
+# 
+#
+# We have published a short article in English about the change:
+# 
+# http://www.timeanddate.com/news/time/iraq-dumps-daylight-saving.html
+# 
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Iraq	1982	only	-	May	1	0:00	1:00	D
+Rule	Iraq	1982	1984	-	Oct	1	0:00	0	S
+Rule	Iraq	1983	only	-	Mar	31	0:00	1:00	D
+Rule	Iraq	1984	1985	-	Apr	1	0:00	1:00	D
+Rule	Iraq	1985	1990	-	Sep	lastSun	1:00s	0	S
+Rule	Iraq	1986	1990	-	Mar	lastSun	1:00s	1:00	D
+# IATA SSIM (1991/1996) says Apr 1 12:01am UTC; guess the `:01' is a typo.
+# Shanks & Pottenger say Iraq did not observe DST 1992/1997; ignore this.
+#
+Rule	Iraq	1991	2007	-	Apr	 1	3:00s	1:00	D
+Rule	Iraq	1991	2007	-	Oct	 1	3:00s	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Baghdad	2:57:40	-	LMT	1890
+			2:57:36	-	BMT	1918	    # Baghdad Mean Time?
+			3:00	-	AST	1982 May
+			3:00	Iraq	A%sT
+
+
+###############################################################################
+
+# Israel
+
+# From Ephraim Silverberg (2001-01-11):
+#
+# I coined "IST/IDT" circa 1988.  Until then there were three
+# different abbreviations in use:
+#
+# JST  Jerusalem Standard Time [Danny Braniss, Hebrew University]
+# IZT  Israel Zonal (sic) Time [Prof. Haim Papo, Technion]
+# EEST Eastern Europe Standard Time [used by almost everyone else]
+#
+# Since timezones should be called by country and not capital cities,
+# I ruled out JST.  As Israel is in Asia Minor and not Eastern Europe,
+# EEST was equally unacceptable.  Since "zonal" was not compatible with
+# any other timezone abbreviation, I felt that 'IST' was the way to go
+# and, indeed, it has received almost universal acceptance in timezone
+# settings in Israeli computers.
+#
+# In any case, I am happy to share timezone abbreviations with India,
+# high on my favorite-country list (and not only because my wife's
+# family is from India).
+
+# From Shanks & Pottenger:
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Zion	1940	only	-	Jun	 1	0:00	1:00	D
+Rule	Zion	1942	1944	-	Nov	 1	0:00	0	S
+Rule	Zion	1943	only	-	Apr	 1	2:00	1:00	D
+Rule	Zion	1944	only	-	Apr	 1	0:00	1:00	D
+Rule	Zion	1945	only	-	Apr	16	0:00	1:00	D
+Rule	Zion	1945	only	-	Nov	 1	2:00	0	S
+Rule	Zion	1946	only	-	Apr	16	2:00	1:00	D
+Rule	Zion	1946	only	-	Nov	 1	0:00	0	S
+Rule	Zion	1948	only	-	May	23	0:00	2:00	DD
+Rule	Zion	1948	only	-	Sep	 1	0:00	1:00	D
+Rule	Zion	1948	1949	-	Nov	 1	2:00	0	S
+Rule	Zion	1949	only	-	May	 1	0:00	1:00	D
+Rule	Zion	1950	only	-	Apr	16	0:00	1:00	D
+Rule	Zion	1950	only	-	Sep	15	3:00	0	S
+Rule	Zion	1951	only	-	Apr	 1	0:00	1:00	D
+Rule	Zion	1951	only	-	Nov	11	3:00	0	S
+Rule	Zion	1952	only	-	Apr	20	2:00	1:00	D
+Rule	Zion	1952	only	-	Oct	19	3:00	0	S
+Rule	Zion	1953	only	-	Apr	12	2:00	1:00	D
+Rule	Zion	1953	only	-	Sep	13	3:00	0	S
+Rule	Zion	1954	only	-	Jun	13	0:00	1:00	D
+Rule	Zion	1954	only	-	Sep	12	0:00	0	S
+Rule	Zion	1955	only	-	Jun	11	2:00	1:00	D
+Rule	Zion	1955	only	-	Sep	11	0:00	0	S
+Rule	Zion	1956	only	-	Jun	 3	0:00	1:00	D
+Rule	Zion	1956	only	-	Sep	30	3:00	0	S
+Rule	Zion	1957	only	-	Apr	29	2:00	1:00	D
+Rule	Zion	1957	only	-	Sep	22	0:00	0	S
+Rule	Zion	1974	only	-	Jul	 7	0:00	1:00	D
+Rule	Zion	1974	only	-	Oct	13	0:00	0	S
+Rule	Zion	1975	only	-	Apr	20	0:00	1:00	D
+Rule	Zion	1975	only	-	Aug	31	0:00	0	S
+Rule	Zion	1985	only	-	Apr	14	0:00	1:00	D
+Rule	Zion	1985	only	-	Sep	15	0:00	0	S
+Rule	Zion	1986	only	-	May	18	0:00	1:00	D
+Rule	Zion	1986	only	-	Sep	 7	0:00	0	S
+Rule	Zion	1987	only	-	Apr	15	0:00	1:00	D
+Rule	Zion	1987	only	-	Sep	13	0:00	0	S
+Rule	Zion	1988	only	-	Apr	 9	0:00	1:00	D
+Rule	Zion	1988	only	-	Sep	 3	0:00	0	S
+
+# From Ephraim Silverberg
+# (1997-03-04, 1998-03-16, 1998-12-28, 2000-01-17, 2000-07-25, 2004-12-22,
+# and 2005-02-17):
+
+# According to the Office of the Secretary General of the Ministry of
+# Interior, there is NO set rule for Daylight-Savings/Standard time changes.
+# One thing is entrenched in law, however: that there must be at least 150
+# days of daylight savings time annually.  From 1993-1998, the change to
+# daylight savings time was on a Friday morning from midnight IST to
+# 1 a.m IDT; up until 1998, the change back to standard time was on a
+# Saturday night from midnight daylight savings time to 11 p.m. standard
+# time.  1996 is an exception to this rule where the change back to standard
+# time took place on Sunday night instead of Saturday night to avoid
+# conflicts with the Jewish New Year.  In 1999, the change to
+# daylight savings time was still on a Friday morning but from
+# 2 a.m. IST to 3 a.m. IDT; furthermore, the change back to standard time
+# was also on a Friday morning from 2 a.m. IDT to 1 a.m. IST for
+# 1999 only.  In the year 2000, the change to daylight savings time was
+# similar to 1999, but although the change back will be on a Friday, it
+# will take place from 1 a.m. IDT to midnight IST.  Starting in 2001, all
+# changes to/from will take place at 1 a.m. old time, but now there is no
+# rule as to what day of the week it will take place in as the start date
+# (except in 2003) is the night after the Passover Seder (i.e. the eve
+# of the 16th of Nisan in the lunar Hebrew calendar) and the end date
+# (except in 2002) is three nights before Yom Kippur [Day of Atonement]
+# (the eve of the 7th of Tishrei in the lunar Hebrew calendar).
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Zion	1989	only	-	Apr	30	0:00	1:00	D
+Rule	Zion	1989	only	-	Sep	 3	0:00	0	S
+Rule	Zion	1990	only	-	Mar	25	0:00	1:00	D
+Rule	Zion	1990	only	-	Aug	26	0:00	0	S
+Rule	Zion	1991	only	-	Mar	24	0:00	1:00	D
+Rule	Zion	1991	only	-	Sep	 1	0:00	0	S
+Rule	Zion	1992	only	-	Mar	29	0:00	1:00	D
+Rule	Zion	1992	only	-	Sep	 6	0:00	0	S
+Rule	Zion	1993	only	-	Apr	 2	0:00	1:00	D
+Rule	Zion	1993	only	-	Sep	 5	0:00	0	S
+
+# The dates for 1994-1995 were obtained from Office of the Spokeswoman for the
+# Ministry of Interior, Jerusalem, Israel.  The spokeswoman can be reached by
+# calling the office directly at 972-2-6701447 or 972-2-6701448.
+
+# Rule	NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
+Rule	Zion	1994	only	-	Apr	 1	0:00	1:00	D
+Rule	Zion	1994	only	-	Aug	28	0:00	0	S
+Rule	Zion	1995	only	-	Mar	31	0:00	1:00	D
+Rule	Zion	1995	only	-	Sep	 3	0:00	0	S
+
+# The dates for 1996 were determined by the Minister of Interior of the
+# time, Haim Ramon.  The official announcement regarding 1996-1998
+# (with the dates for 1997-1998 no longer being relevant) can be viewed at:
+#
+#   ftp://ftp.cs.huji.ac.il/pub/tz/announcements/1996-1998.ramon.ps.gz
+#
+# The dates for 1997-1998 were altered by his successor, Rabbi Eli Suissa.
+#
+# The official announcements for the years 1997-1999 can be viewed at:
+#
+#   ftp://ftp.cs.huji.ac.il/pub/tz/announcements/YYYY.ps.gz
+#
+#       where YYYY is the relevant year.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Zion	1996	only	-	Mar	15	0:00	1:00	D
+Rule	Zion	1996	only	-	Sep	16	0:00	0	S
+Rule	Zion	1997	only	-	Mar	21	0:00	1:00	D
+Rule	Zion	1997	only	-	Sep	14	0:00	0	S
+Rule	Zion	1998	only	-	Mar	20	0:00	1:00	D
+Rule	Zion	1998	only	-	Sep	 6	0:00	0	S
+Rule	Zion	1999	only	-	Apr	 2	2:00	1:00	D
+Rule	Zion	1999	only	-	Sep	 3	2:00	0	S
+
+# The Knesset Interior Committee has changed the dates for 2000 for
+# the third time in just over a year and have set new dates for the
+# years 2001-2004 as well.
+#
+# The official announcement for the start date of 2000 can be viewed at:
+#
+#	ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2000-start.ps.gz
+#
+# The official announcement for the end date of 2000 and the dates
+# for the years 2001-2004 can be viewed at:
+#
+#	ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2000-2004.ps.gz
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Zion	2000	only	-	Apr	14	2:00	1:00	D
+Rule	Zion	2000	only	-	Oct	 6	1:00	0	S
+Rule	Zion	2001	only	-	Apr	 9	1:00	1:00	D
+Rule	Zion	2001	only	-	Sep	24	1:00	0	S
+Rule	Zion	2002	only	-	Mar	29	1:00	1:00	D
+Rule	Zion	2002	only	-	Oct	 7	1:00	0	S
+Rule	Zion	2003	only	-	Mar	28	1:00	1:00	D
+Rule	Zion	2003	only	-	Oct	 3	1:00	0	S
+Rule	Zion	2004	only	-	Apr	 7	1:00	1:00	D
+Rule	Zion	2004	only	-	Sep	22	1:00	0	S
+
+# The proposed law agreed upon by the Knesset Interior Committee on
+# 2005-02-14 is that, for 2005 and beyond, DST starts at 02:00 the
+# last Friday before April 2nd (i.e. the last Friday in March or April
+# 1st itself if it falls on a Friday) and ends at 02:00 on the Saturday
+# night _before_ the fast of Yom Kippur.
+#
+# Those who can read Hebrew can view the announcement at:
+#
+#	ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2005+beyond.ps
+
+# From Paul Eggert (2012-10-26):
+# I used Ephraim Silverberg's dst-israel.el program
+#  (2005-02-20)
+# along with Ed Reingold's cal-hebrew in GNU Emacs 21.4,
+# to generate the transitions from 2005 through 2012.
+# (I replaced "lastFri" with "Fri>=26" by hand.)
+# The spring transitions all correspond to the following Rule:
+#
+# Rule	Zion	2005	2012	-	Mar	Fri>=26	2:00	1:00	D
+#
+# but older zic implementations (e.g., Solaris 8) do not support
+# "Fri>=26" to mean April 1 in years like 2005, so for now we list the
+# springtime transitions explicitly.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Zion	2005	only	-	Apr	 1	2:00	1:00	D
+Rule	Zion	2005	only	-	Oct	 9	2:00	0	S
+Rule	Zion	2006	2010	-	Mar	Fri>=26	2:00	1:00	D
+Rule	Zion	2006	only	-	Oct	 1	2:00	0	S
+Rule	Zion	2007	only	-	Sep	16	2:00	0	S
+Rule	Zion	2008	only	-	Oct	 5	2:00	0	S
+Rule	Zion	2009	only	-	Sep	27	2:00	0	S
+Rule	Zion	2010	only	-	Sep	12	2:00	0	S
+Rule	Zion	2011	only	-	Apr	 1	2:00	1:00	D
+Rule	Zion	2011	only	-	Oct	 2	2:00	0	S
+Rule	Zion	2012	only	-	Mar	Fri>=26	2:00	1:00	D
+Rule	Zion	2012	only	-	Sep	23	2:00	0	S
+
+# From Ephraim Silverberg (2012-10-18):
+# Yesterday, the Interior Ministry Committee, after more than a year
+# past, approved sending the proposed June 2011 changes to the Time
+# Decree Law back to the Knesset for second and third (final) votes
+# before the upcoming elections on Jan. 22, 2013.  Hence, although the
+# changes are not yet law, they are expected to be so before February 2013.
+#
+# As of 2013, DST starts at 02:00 on the Friday before the last Sunday in March.
+# DST ends at 02:00 on the first Sunday after October 1, unless it occurs on the
+# second day of the Jewish Rosh Hashana holiday, in which case DST ends a day
+# later (i.e. at 02:00 the first Monday after October 2).
+# [Rosh Hashana holidays are factored in until 2100.]
+
+# From Ephraim Silverberg (2012-11-05):
+# The Knesset passed today (in second and final readings) the amendment to the
+# Time Decree Law making the changes ... law.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Zion	2013	max	-	Mar	Fri>=23	2:00	1:00	D
+Rule	Zion	2013	2026	-	Oct	Sun>=2	2:00	0	S
+Rule	Zion	2027	only	-	Oct	Mon>=3	2:00	0	S
+Rule	Zion	2028	max	-	Oct	Sun>=2	2:00	0	S
+# The following rules are commented out for now, as they break older
+# versions of zic that support only signed 32-bit timestamps, i.e.,
+# through 2038-01-19 03:14:07 UTC.
+#Rule	Zion	2028	2053	-	Oct	Sun>=2	2:00	0	S
+#Rule	Zion	2054	only	-	Oct	Mon>=3	2:00	0	S
+#Rule	Zion	2055	2080	-	Oct	Sun>=2	2:00	0	S
+#Rule	Zion	2081	only	-	Oct	Mon>=3	2:00	0	S
+#Rule	Zion	2082	max	-	Oct	Sun>=2	2:00	0	S
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Jerusalem	2:20:56 -	LMT	1880
+			2:20:40	-	JMT	1918	# Jerusalem Mean Time?
+			2:00	Zion	I%sT
+
+
+
+###############################################################################
+
+# Japan
+
+# `9:00' and `JST' is from Guy Harris.
+
+# From Paul Eggert (1995-03-06):
+# Today's _Asahi Evening News_ (page 4) reports that Japan had
+# daylight saving between 1948 and 1951, but ``the system was discontinued
+# because the public believed it would lead to longer working hours.''
+
+# From Mayumi Negishi in the 2005-08-10 Japan Times
+# :
+# Occupation authorities imposed daylight-saving time on Japan on
+# [1948-05-01]....  But lack of prior debate and the execution of
+# daylight-saving time just three days after the bill was passed generated
+# deep hatred of the concept....  The Diet unceremoniously passed a bill to
+# dump the unpopular system in October 1951, less than a month after the San
+# Francisco Peace Treaty was signed.  (A government poll in 1951 showed 53%
+# of the Japanese wanted to scrap daylight-saving time, as opposed to 30% who
+# wanted to keep it.)
+
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger write that DST in Japan during those years was as follows:
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Japan	1948	only	-	May	Sun>=1	2:00	1:00	D
+Rule	Japan	1948	1951	-	Sep	Sat>=8	2:00	0	S
+Rule	Japan	1949	only	-	Apr	Sun>=1	2:00	1:00	D
+Rule	Japan	1950	1951	-	May	Sun>=1	2:00	1:00	D
+# but the only locations using it (for birth certificates, presumably, since
+# their audience is astrologers) were US military bases.  For now, assume
+# that for most purposes daylight-saving time was observed; otherwise, what
+# would have been the point of the 1951 poll?
+
+# From Hideyuki Suzuki (1998-11-09):
+# 'Tokyo' usually stands for the former location of Tokyo Astronomical
+# Observatory: E 139 44' 40".90 (9h 18m 58s.727), N 35 39' 16".0.
+# This data is from 'Rika Nenpyou (Chronological Scientific Tables) 1996'
+# edited by National Astronomical Observatory of Japan....
+# JST (Japan Standard Time) has been used since 1888-01-01 00:00 (JST).
+# The law is enacted on 1886-07-07.
+
+# From Hideyuki Suzuki (1998-11-16):
+# The ordinance No. 51 (1886) established "standard time" in Japan,
+# which stands for the time on E 135 degree.
+# In the ordinance No. 167 (1895), "standard time" was renamed to "central
+# standard time".  And the same ordinance also established "western standard
+# time", which stands for the time on E 120 degree....  But "western standard
+# time" was abolished in the ordinance No. 529 (1937).  In the ordinance No.
+# 167, there is no mention regarding for what place western standard time is
+# standard....
+#
+# I wrote "ordinance" above, but I don't know how to translate.
+# In Japanese it's "chokurei", which means ordinance from emperor.
+
+# Shanks & Pottenger claim JST in use since 1896, and that a few
+# places (e.g. Ishigaki) use +0800; go with Suzuki.  Guess that all
+# ordinances took effect on Jan 1.
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Tokyo	9:18:59	-	LMT	1887 Dec 31 15:00u
+			9:00	-	JST	1896
+			9:00	-	CJT	1938
+			9:00	Japan	J%sT
+# Since 1938, all Japanese possessions have been like Asia/Tokyo.
+
+# Jordan
+#
+# From 
+# Jordan Week (1999-07-01)  via Steffen Thorsen (1999-09-09):
+# Clocks in Jordan were forwarded one hour on Wednesday at midnight,
+# in accordance with the government's decision to implement summer time
+# all year round.
+#
+# From 
+# Jordan Week (1999-09-30)  via Steffen Thorsen (1999-11-09):
+# Winter time starts today Thursday, 30 September. Clocks will be turned back
+# by one hour.  This is the latest government decision and it's final!
+# The decision was taken because of the increase in working hours in
+# government's departments from six to seven hours.
+#
+# From Paul Eggert (2005-11-22):
+# Starting 2003 transitions are from Steffen Thorsen's web site timeanddate.com.
+#
+# From Steffen Thorsen (2005-11-23):
+# For Jordan I have received multiple independent user reports every year
+# about DST end dates, as the end-rule is different every year.
+#
+# From Steffen Thorsen (2006-10-01), after a heads-up from Hilal Malawi:
+# http://www.petranews.gov.jo/nepras/2006/Sep/05/4000.htm
+# "Jordan will switch to winter time on Friday, October 27".
+#
+
+# From Phil Pizzey (2009-04-02):
+# ...I think I may have spotted an error in the timezone data for
+# Jordan.
+# The current (2009d) asia file shows Jordan going to daylight
+# saving
+# time on the last Thursday in March.
+#
+# Rule  Jordan      2000  max	-  Mar   lastThu     0:00s 1:00  S
+#
+# However timeanddate.com, which I usually find reliable, shows Jordan
+# going to daylight saving time on the last Friday in March since 2002.
+# Please see
+# 
+# http://www.timeanddate.com/worldclock/timezone.html?n=11
+# 
+
+# From Steffen Thorsen (2009-04-02):
+# This single one might be good enough, (2009-03-24, Arabic):
+# 
+# http://petra.gov.jo/Artical.aspx?Lng=2&Section=8&Artical=95279
+# 
+#
+# Google's translation:
+#
+# > The Council of Ministers decided in 2002 to adopt the principle of timely
+# > submission of the summer at 60 minutes as of midnight on the last Thursday
+# > of the month of March of each year.
+#
+# So - this means the midnight between Thursday and Friday since 2002.
+
+# From Arthur David Olson (2009-04-06):
+# We still have Jordan switching to DST on Thursdays in 2000 and 2001.
+
+# From Steffen Thorsen (2012-10-25):
+# Yesterday the government in Jordan announced that they will not
+# switch back to standard time this winter, so the will stay on DST
+# until about the same time next year (at least).
+# http://www.petra.gov.jo/Public_News/Nws_NewsDetails.aspx?NewsID=88950
+#
+# From Paul Eggert (2012-10-25):
+# For now, assume this is just a one-year measure.  If it becomes
+# permanent, we should move Jordan from EET to AST effective tomorrow.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Jordan	1973	only	-	Jun	6	0:00	1:00	S
+Rule	Jordan	1973	1975	-	Oct	1	0:00	0	-
+Rule	Jordan	1974	1977	-	May	1	0:00	1:00	S
+Rule	Jordan	1976	only	-	Nov	1	0:00	0	-
+Rule	Jordan	1977	only	-	Oct	1	0:00	0	-
+Rule	Jordan	1978	only	-	Apr	30	0:00	1:00	S
+Rule	Jordan	1978	only	-	Sep	30	0:00	0	-
+Rule	Jordan	1985	only	-	Apr	1	0:00	1:00	S
+Rule	Jordan	1985	only	-	Oct	1	0:00	0	-
+Rule	Jordan	1986	1988	-	Apr	Fri>=1	0:00	1:00	S
+Rule	Jordan	1986	1990	-	Oct	Fri>=1	0:00	0	-
+Rule	Jordan	1989	only	-	May	8	0:00	1:00	S
+Rule	Jordan	1990	only	-	Apr	27	0:00	1:00	S
+Rule	Jordan	1991	only	-	Apr	17	0:00	1:00	S
+Rule	Jordan	1991	only	-	Sep	27	0:00	0	-
+Rule	Jordan	1992	only	-	Apr	10	0:00	1:00	S
+Rule	Jordan	1992	1993	-	Oct	Fri>=1	0:00	0	-
+Rule	Jordan	1993	1998	-	Apr	Fri>=1	0:00	1:00	S
+Rule	Jordan	1994	only	-	Sep	Fri>=15	0:00	0	-
+Rule	Jordan	1995	1998	-	Sep	Fri>=15	0:00s	0	-
+Rule	Jordan	1999	only	-	Jul	 1	0:00s	1:00	S
+Rule	Jordan	1999	2002	-	Sep	lastFri	0:00s	0	-
+Rule	Jordan	2000	2001	-	Mar	lastThu	0:00s	1:00	S
+Rule	Jordan	2002	max	-	Mar	lastThu	24:00	1:00	S
+Rule	Jordan	2003	only	-	Oct	24	0:00s	0	-
+Rule	Jordan	2004	only	-	Oct	15	0:00s	0	-
+Rule	Jordan	2005	only	-	Sep	lastFri	0:00s	0	-
+Rule	Jordan	2006	2011	-	Oct	lastFri	0:00s	0	-
+Rule	Jordan	2013	max	-	Oct	lastFri	0:00s	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Amman	2:23:44 -	LMT	1931
+			2:00	Jordan	EE%sT
+
+
+# Kazakhstan
+
+# From Paul Eggert (1996-11-22):
+# Andrew Evtichov (1996-04-13) writes that Kazakhstan
+# stayed in sync with Moscow after 1990, and that Aqtobe (formerly Aktyubinsk)
+# and Aqtau (formerly Shevchenko) are the largest cities in their zones.
+# Guess that Aqtau and Aqtobe diverged in 1995, since that's the first time
+# IATA SSIM mentions a third time zone in Kazakhstan.
+
+# From Paul Eggert (2006-03-22):
+# German Iofis, ELSI, Almaty (2001-10-09) reports that Kazakhstan uses
+# RussiaAsia rules, instead of switching at 00:00 as the IATA has it.
+# Go with Shanks & Pottenger, who have them always using RussiaAsia rules.
+# Also go with the following claims of Shanks & Pottenger:
+#
+# - Kazakhstan did not observe DST in 1991.
+# - Qyzylorda switched from +5:00 to +6:00 on 1992-01-19 02:00.
+# - Oral switched from +5:00 to +4:00 in spring 1989.
+
+# 
+# From Kazakhstan Embassy's News Bulletin #11 (2005-03-21):
+# 
+# The Government of Kazakhstan passed a resolution March 15 abolishing
+# daylight saving time citing lack of economic benefits and health
+# complications coupled with a decrease in productivity.
+#
+# From Branislav Kojic (in Astana) via Gwillim Law (2005-06-28):
+# ... what happened was that the former Kazakhstan Eastern time zone
+# was "blended" with the Central zone.  Therefore, Kazakhstan now has
+# two time zones, and difference between them is one hour.  The zone
+# closer to UTC is the former Western zone (probably still called the
+# same), encompassing four provinces in the west: Aqtobe, Atyrau,
+# Mangghystau, and West Kazakhstan.  The other zone encompasses
+# everything else....  I guess that would make Kazakhstan time zones
+# de jure UTC+5 and UTC+6 respectively.
+
+#
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+#
+# Almaty (formerly Alma-Ata), representing most locations in Kazakhstan
+Zone	Asia/Almaty	5:07:48 -	LMT	1924 May  2 # or Alma-Ata
+			5:00	-	ALMT	1930 Jun 21 # Alma-Ata Time
+			6:00 RussiaAsia ALM%sT	1991
+			6:00	-	ALMT	1992
+			6:00 RussiaAsia	ALM%sT	2005 Mar 15
+			6:00	-	ALMT
+# Qyzylorda (aka Kyzylorda, Kizilorda, Kzyl-Orda, etc.)
+Zone	Asia/Qyzylorda	4:21:52 -	LMT	1924 May  2
+			4:00	-	KIZT	1930 Jun 21 # Kizilorda Time
+			5:00	-	KIZT	1981 Apr  1
+			5:00	1:00	KIZST	1981 Oct  1
+			6:00	-	KIZT	1982 Apr  1
+			5:00 RussiaAsia	KIZ%sT	1991
+			5:00	-	KIZT	1991 Dec 16 # independence
+			5:00	-	QYZT	1992 Jan 19 2:00
+			6:00 RussiaAsia	QYZ%sT	2005 Mar 15
+			6:00	-	QYZT
+# Aqtobe (aka Aktobe, formerly Akt'ubinsk)
+Zone	Asia/Aqtobe	3:48:40	-	LMT	1924 May  2
+			4:00	-	AKTT	1930 Jun 21 # Aktyubinsk Time
+			5:00	-	AKTT	1981 Apr  1
+			5:00	1:00	AKTST	1981 Oct  1
+			6:00	-	AKTT	1982 Apr  1
+			5:00 RussiaAsia	AKT%sT	1991
+			5:00	-	AKTT	1991 Dec 16 # independence
+			5:00 RussiaAsia	AQT%sT	2005 Mar 15 # Aqtobe Time
+			5:00	-	AQTT
+# Mangghystau
+# Aqtau was not founded until 1963, but it represents an inhabited region,
+# so include time stamps before 1963.
+Zone	Asia/Aqtau	3:21:04	-	LMT	1924 May  2
+			4:00	-	FORT	1930 Jun 21 # Fort Shevchenko T
+			5:00	-	FORT	1963
+			5:00	-	SHET	1981 Oct  1 # Shevchenko Time
+			6:00	-	SHET	1982 Apr  1
+			5:00 RussiaAsia	SHE%sT	1991
+			5:00	-	SHET	1991 Dec 16 # independence
+			5:00 RussiaAsia	AQT%sT	1995 Mar lastSun 2:00 # Aqtau Time
+			4:00 RussiaAsia	AQT%sT	2005 Mar 15
+			5:00	-	AQTT
+# West Kazakhstan
+Zone	Asia/Oral	3:25:24	-	LMT	1924 May  2 # or Ural'sk
+			4:00	-	URAT	1930 Jun 21 # Ural'sk time
+			5:00	-	URAT	1981 Apr  1
+			5:00	1:00	URAST	1981 Oct  1
+			6:00	-	URAT	1982 Apr  1
+			5:00 RussiaAsia	URA%sT	1989 Mar 26 2:00
+			4:00 RussiaAsia	URA%sT	1991
+			4:00	-	URAT	1991 Dec 16 # independence
+			4:00 RussiaAsia	ORA%sT	2005 Mar 15 # Oral Time
+			5:00	-	ORAT
+
+# Kyrgyzstan (Kirgizstan)
+# Transitions through 1991 are from Shanks & Pottenger.
+
+# From Paul Eggert (2005-08-15):
+# According to an article dated today in the Kyrgyzstan Development Gateway
+# 
+# Kyrgyzstan is canceling the daylight saving time system.  I take the article
+# to mean that they will leave their clocks at 6 hours ahead of UTC.
+# From Malik Abdugaliev (2005-09-21):
+# Our government cancels daylight saving time 6th of August 2005.
+# From 2005-08-12 our GMT-offset is +6, w/o any daylight saving.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Kyrgyz	1992	1996	-	Apr	Sun>=7	0:00s	1:00	S
+Rule	Kyrgyz	1992	1996	-	Sep	lastSun	0:00	0	-
+Rule	Kyrgyz	1997	2005	-	Mar	lastSun	2:30	1:00	S
+Rule	Kyrgyz	1997	2004	-	Oct	lastSun	2:30	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Bishkek	4:58:24 -	LMT	1924 May  2
+			5:00	-	FRUT	1930 Jun 21 # Frunze Time
+			6:00 RussiaAsia FRU%sT	1991 Mar 31 2:00s
+			5:00	1:00	FRUST	1991 Aug 31 2:00 # independence
+			5:00	Kyrgyz	KG%sT	2005 Aug 12    # Kyrgyzstan Time
+			6:00	-	KGT
+
+###############################################################################
+
+# Korea (North and South)
+
+# From Annie I. Bang (2006-07-10) in
+# :
+# The Ministry of Commerce, Industry and Energy has already
+# commissioned a research project [to reintroduce DST] and has said
+# the system may begin as early as 2008....  Korea ran a daylight
+# saving program from 1949-61 but stopped it during the 1950-53 Korean War.
+
+# From Shanks & Pottenger:
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	ROK	1960	only	-	May	15	0:00	1:00	D
+Rule	ROK	1960	only	-	Sep	13	0:00	0	S
+Rule	ROK	1987	1988	-	May	Sun>=8	0:00	1:00	D
+Rule	ROK	1987	1988	-	Oct	Sun>=8	0:00	0	S
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Seoul	8:27:52	-	LMT	1890
+			8:30	-	KST	1904 Dec
+			9:00	-	KST	1928
+			8:30	-	KST	1932
+			9:00	-	KST	1954 Mar 21
+			8:00	ROK	K%sT	1961 Aug 10
+			8:30	-	KST	1968 Oct
+			9:00	ROK	K%sT
+Zone	Asia/Pyongyang	8:23:00 -	LMT	1890
+			8:30	-	KST	1904 Dec
+			9:00	-	KST	1928
+			8:30	-	KST	1932
+			9:00	-	KST	1954 Mar 21
+			8:00	-	KST	1961 Aug 10
+			9:00	-	KST
+
+###############################################################################
+
+# Kuwait
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+# From the Arab Times (2007-03-14):
+# The Civil Service Commission (CSC) has approved a proposal forwarded
+# by MP Ahmad Baqer on implementing the daylight saving time (DST) in
+# Kuwait starting from April until the end of Sept this year, reports Al-Anba.
+# .
+# From Paul Eggert (2007-03-29):
+# We don't know the details, or whether the approval means it'll happen,
+# so for now we assume no DST.
+Zone	Asia/Kuwait	3:11:56 -	LMT	1950
+			3:00	-	AST
+
+# Laos
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Vientiane	6:50:24 -	LMT	1906 Jun  9 # or Viangchan
+			7:06:20	-	SMT	1911 Mar 11 0:01 # Saigon MT?
+			7:00	-	ICT	1912 May
+			8:00	-	ICT	1931 May
+			7:00	-	ICT
+
+# Lebanon
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Lebanon	1920	only	-	Mar	28	0:00	1:00	S
+Rule	Lebanon	1920	only	-	Oct	25	0:00	0	-
+Rule	Lebanon	1921	only	-	Apr	3	0:00	1:00	S
+Rule	Lebanon	1921	only	-	Oct	3	0:00	0	-
+Rule	Lebanon	1922	only	-	Mar	26	0:00	1:00	S
+Rule	Lebanon	1922	only	-	Oct	8	0:00	0	-
+Rule	Lebanon	1923	only	-	Apr	22	0:00	1:00	S
+Rule	Lebanon	1923	only	-	Sep	16	0:00	0	-
+Rule	Lebanon	1957	1961	-	May	1	0:00	1:00	S
+Rule	Lebanon	1957	1961	-	Oct	1	0:00	0	-
+Rule	Lebanon	1972	only	-	Jun	22	0:00	1:00	S
+Rule	Lebanon	1972	1977	-	Oct	1	0:00	0	-
+Rule	Lebanon	1973	1977	-	May	1	0:00	1:00	S
+Rule	Lebanon	1978	only	-	Apr	30	0:00	1:00	S
+Rule	Lebanon	1978	only	-	Sep	30	0:00	0	-
+Rule	Lebanon	1984	1987	-	May	1	0:00	1:00	S
+Rule	Lebanon	1984	1991	-	Oct	16	0:00	0	-
+Rule	Lebanon	1988	only	-	Jun	1	0:00	1:00	S
+Rule	Lebanon	1989	only	-	May	10	0:00	1:00	S
+Rule	Lebanon	1990	1992	-	May	1	0:00	1:00	S
+Rule	Lebanon	1992	only	-	Oct	4	0:00	0	-
+Rule	Lebanon	1993	max	-	Mar	lastSun	0:00	1:00	S
+Rule	Lebanon	1993	1998	-	Sep	lastSun	0:00	0	-
+Rule	Lebanon	1999	max	-	Oct	lastSun	0:00	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Beirut	2:22:00 -	LMT	1880
+			2:00	Lebanon	EE%sT
+
+# Malaysia
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	NBorneo	1935	1941	-	Sep	14	0:00	0:20	TS # one-Third Summer
+Rule	NBorneo	1935	1941	-	Dec	14	0:00	0	-
+#
+# peninsular Malaysia
+# The data here are taken from Mok Ly Yng (2003-10-30)
+# .
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Asia/Kuala_Lumpur	6:46:46 -	LMT	1901 Jan  1
+			6:55:25	-	SMT	1905 Jun  1 # Singapore M.T.
+			7:00	-	MALT	1933 Jan  1 # Malaya Time
+			7:00	0:20	MALST	1936 Jan  1
+			7:20	-	MALT	1941 Sep  1
+			7:30	-	MALT	1942 Feb 16
+			9:00	-	JST	1945 Sep 12
+			7:30	-	MALT	1982 Jan  1
+			8:00	-	MYT	# Malaysia Time
+# Sabah & Sarawak
+# From Paul Eggert (2006-03-22):
+# The data here are mostly from Shanks & Pottenger, but the 1942, 1945 and 1982
+# transition dates are from Mok Ly Yng.
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Asia/Kuching	7:21:20	-	LMT	1926 Mar
+			7:30	-	BORT	1933	# Borneo Time
+			8:00	NBorneo	BOR%sT	1942 Feb 16
+			9:00	-	JST	1945 Sep 12
+			8:00	-	BORT	1982 Jan  1
+			8:00	-	MYT
+
+# Maldives
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Indian/Maldives	4:54:00 -	LMT	1880	# Male
+			4:54:00	-	MMT	1960	# Male Mean Time
+			5:00	-	MVT		# Maldives Time
+
+# Mongolia
+
+# Shanks & Pottenger say that Mongolia has three time zones, but
+# usno1995 and the CIA map Standard Time Zones of the World (2005-03)
+# both say that it has just one.
+
+# From Oscar van Vlijmen (1999-12-11):
+# 
+# General Information Mongolia
+#  (1999-09)
+# "Time: Mongolia has two time zones. Three westernmost provinces of
+# Bayan-Ulgii, Uvs, and Hovd are one hour earlier than the capital city, and
+# the rest of the country follows the Ulaanbaatar time, which is UTC/GMT plus
+# eight hours."
+
+# From Rives McDow (1999-12-13):
+# Mongolia discontinued the use of daylight savings time in 1999; 1998
+# being the last year it was implemented.  The dates of implementation I am
+# unsure of, but most probably it was similar to Russia, except for the time
+# of implementation may have been different....
+# Some maps in the past have indicated that there was an additional time
+# zone in the eastern part of Mongolia, including the provinces of Dornod,
+# Suhbaatar, and possibly Khentij.
+
+# From Paul Eggert (1999-12-15):
+# Naming and spelling is tricky in Mongolia.
+# We'll use Hovd (also spelled Chovd and Khovd) to represent the west zone;
+# the capital of the Hovd province is sometimes called Hovd, sometimes Dund-Us,
+# and sometimes Jirgalanta (with variant spellings), but the name Hovd
+# is good enough for our purposes.
+
+# From Rives McDow (2001-05-13):
+# In addition to Mongolia starting daylight savings as reported earlier
+# (adopted DST on 2001-04-27 02:00 local time, ending 2001-09-28),
+# there are three time zones.
+#
+# Provinces [at 7:00]: Bayan-ulgii, Uvs, Khovd, Zavkhan, Govi-Altai
+# Provinces [at 8:00]: Khovsgol, Bulgan, Arkhangai, Khentii, Tov,
+#	Bayankhongor, Ovorkhangai, Dundgovi, Dornogovi, Omnogovi
+# Provinces [at 9:00]: Dornod, Sukhbaatar
+#
+# [The province of Selenge is omitted from the above lists.]
+
+# From Ganbold Ts., Ulaanbaatar (2004-04-17):
+# Daylight saving occurs at 02:00 local time last Saturday of March.
+# It will change back to normal at 02:00 local time last Saturday of
+# September.... As I remember this rule was changed in 2001.
+#
+# From Paul Eggert (2004-04-17):
+# For now, assume Rives McDow's informant got confused about Friday vs
+# Saturday, and that his 2001 dates should have 1 added to them.
+
+# From Paul Eggert (2005-07-26):
+# We have wildly conflicting information about Mongolia's time zones.
+# Bill Bonnet (2005-05-19) reports that the US Embassy in Ulaanbaatar says
+# there is only one time zone and that DST is observed, citing Microsoft
+# Windows XP as the source.  Risto Nykanen (2005-05-16) reports that
+# travelmongolia.org says there are two time zones (UTC+7, UTC+8) with no DST.
+# Oscar van Vlijmen (2005-05-20) reports that the Mongolian Embassy in
+# Washington, DC says there are two time zones, with DST observed.
+# He also found
+# 
+# which also says that there is DST, and which has a comment by "Toddius"
+# (2005-03-31 06:05 +0700) saying "Mongolia actually has 3.5 time zones.
+# The West (OLGII) is +7 GMT, most of the country is ULAT is +8 GMT
+# and some Eastern provinces are +9 GMT but Sukhbaatar Aimag is SUHK +8.5 GMT.
+# The SUKH timezone is new this year, it is one of the few things the
+# parliament passed during the tumultuous winter session."
+# For now, let's ignore this information, until we have more confirmation.
+
+# From Ganbold Ts. (2007-02-26):
+# Parliament of Mongolia has just changed the daylight-saving rule in February.
+# They decided not to adopt daylight-saving time....
+# http://www.mongolnews.mn/index.php?module=unuudur&sec=view&id=15742
+
+# From Deborah Goldsmith (2008-03-30):
+# We received a bug report claiming that the tz database UTC offset for
+# Asia/Choibalsan (GMT+09:00) is incorrect, and that it should be GMT
+# +08:00 instead. Different sources appear to disagree with the tz
+# database on this, e.g.:
+#
+# 
+# http://www.timeanddate.com/worldclock/city.html?n=1026
+# 
+# 
+# http://www.worldtimeserver.com/current_time_in_MN.aspx
+# 
+#
+# both say GMT+08:00.
+
+# From Steffen Thorsen (2008-03-31):
+# eznis airways, which operates several domestic flights, has a flight
+# schedule here:
+# 
+# http://www.eznis.com/Container.jsp?id=112
+# 
+# (click the English flag for English)
+#
+# There it appears that flights between Choibalsan and Ulaanbatar arrive
+# about 1:35 - 1:50 hours later in local clock time, no matter the
+# direction, while Ulaanbaatar-Khvod takes 2 hours in the Eastern
+# direction and 3:35 back, which indicates that Ulaanbatar and Khvod are
+# in different time zones (like we know about), while Choibalsan and
+# Ulaanbatar are in the same time zone (correction needed).
+
+# From Arthur David Olson (2008-05-19):
+# Assume that Choibalsan is indeed offset by 8:00.
+# XXX--in the absence of better information, assume that transition
+# was at the start of 2008-03-31 (the day of Steffen Thorsen's report);
+# this is almost surely wrong.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Mongol	1983	1984	-	Apr	1	0:00	1:00	S
+Rule	Mongol	1983	only	-	Oct	1	0:00	0	-
+# Shanks & Pottenger and IATA SSIM say 1990s switches occurred at 00:00,
+# but McDow says the 2001 switches occurred at 02:00.  Also, IATA SSIM
+# (1996-09) says 1996-10-25.  Go with Shanks & Pottenger through 1998.
+#
+# Shanks & Pottenger say that the Sept. 1984 through Sept. 1990 switches
+# in Choibalsan (more precisely, in Dornod and Sukhbaatar) took place
+# at 02:00 standard time, not at 00:00 local time as in the rest of
+# the country.  That would be odd, and possibly is a result of their
+# correction of 02:00 (in the previous edition) not being done correctly
+# in the latest edition; so ignore it for now.
+
+Rule	Mongol	1985	1998	-	Mar	lastSun	0:00	1:00	S
+Rule	Mongol	1984	1998	-	Sep	lastSun	0:00	0	-
+# IATA SSIM (1999-09) says Mongolia no longer observes DST.
+Rule	Mongol	2001	only	-	Apr	lastSat	2:00	1:00	S
+Rule	Mongol	2001	2006	-	Sep	lastSat	2:00	0	-
+Rule	Mongol	2002	2006	-	Mar	lastSat	2:00	1:00	S
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+# Hovd, a.k.a. Chovd, Dund-Us, Dzhargalant, Khovd, Jirgalanta
+Zone	Asia/Hovd	6:06:36 -	LMT	1905 Aug
+			6:00	-	HOVT	1978	# Hovd Time
+			7:00	Mongol	HOV%sT
+# Ulaanbaatar, a.k.a. Ulan Bataar, Ulan Bator, Urga
+Zone	Asia/Ulaanbaatar 7:07:32 -	LMT	1905 Aug
+			7:00	-	ULAT	1978	# Ulaanbaatar Time
+			8:00	Mongol	ULA%sT
+# Choibalsan, a.k.a. Bajan Tuemen, Bajan Tumen, Chojbalsan,
+# Choybalsan, Sanbejse, Tchoibalsan
+Zone	Asia/Choibalsan	7:38:00 -	LMT	1905 Aug
+			7:00	-	ULAT	1978
+			8:00	-	ULAT	1983 Apr
+			9:00	Mongol	CHO%sT	2008 Mar 31 # Choibalsan Time
+			8:00	Mongol	CHO%sT
+
+# Nepal
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Kathmandu	5:41:16 -	LMT	1920
+			5:30	-	IST	1986
+			5:45	-	NPT	# Nepal Time
+
+# Oman
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Muscat	3:54:20 -	LMT	1920
+			4:00	-	GST
+
+# Pakistan
+
+# From Rives McDow (2002-03-13):
+# I have been advised that Pakistan has decided to adopt dst on a
+# TRIAL basis for one year, starting 00:01 local time on April 7, 2002
+# and ending at 00:01 local time October 6, 2002.  This is what I was
+# told, but I believe that the actual time of change may be 00:00; the
+# 00:01 was to make it clear which day it was on.
+
+# From Paul Eggert (2002-03-15):
+# Jesper Norgaard found this URL:
+# http://www.pak.gov.pk/public/news/app/app06_dec.htm
+# (dated 2001-12-06) which says that the Cabinet adopted a scheme "to
+# advance the clocks by one hour on the night between the first
+# Saturday and Sunday of April and revert to the original position on
+# 15th October each year".  This agrees with McDow's 04-07 at 00:00,
+# but disagrees about the October transition, and makes it sound like
+# it's not on a trial basis.  Also, the "between the first Saturday
+# and Sunday of April" phrase, if taken literally, means that the
+# transition takes place at 00:00 on the first Sunday on or after 04-02.
+
+# From Paul Eggert (2003-02-09):
+# DAWN  reported on 2002-10-05
+# that 2002 DST ended that day at midnight.  Go with McDow for now.
+
+# From Steffen Thorsen (2003-03-14):
+# According to http://www.dawn.com/2003/03/07/top15.htm
+# there will be no DST in Pakistan this year:
+#
+# ISLAMABAD, March 6: Information and Media Development Minister Sheikh
+# Rashid Ahmed on Thursday said the cabinet had reversed a previous
+# decision to advance clocks by one hour in summer and put them back by
+# one hour in winter with the aim of saving light hours and energy.
+#
+# The minister told a news conference that the experiment had rather
+# shown 8 per cent higher consumption of electricity.
+
+# From Alex Krivenyshev (2008-05-15):
+#
+# Here is an article that Pakistan plan to introduce Daylight Saving Time
+# on June 1, 2008 for 3 months.
+#
+# "... The federal cabinet on Wednesday announced a new conservation plan to help
+# reduce load shedding by approving the closure of commercial centres at 9pm and
+# moving clocks forward by one hour for the next three months.
+# ...."
+#
+# 
+# http://www.worldtimezone.net/dst_news/dst_news_pakistan01.html
+# 
+# OR
+# 
+# http://www.dailytimes.com.pk/default.asp?page=2008%5C05%5C15%5Cstory_15-5-2008_pg1_4
+# 
+
+# From Arthur David Olson (2008-05-19):
+# XXX--midnight transitions is a guess; 2008 only is a guess.
+
+# From Alexander Krivenyshev (2008-08-28):
+# Pakistan government has decided to keep the watches one-hour advanced
+# for another 2 months--plan to return to Standard Time on October 31
+# instead of August 31.
+#
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_pakistan02.html
+# 
+# OR
+# 
+# http://dailymailnews.com/200808/28/news/dmbrn03.html
+# 
+
+# From Alexander Krivenyshev (2009-04-08):
+# Based on previous media reports that "... proposed plan to
+# advance clocks by one hour from May 1 will cause disturbance
+# to the working schedules rather than bringing discipline in
+# official working."
+# 
+# http://www.thenews.com.pk/daily_detail.asp?id=171280
+# 
+#
+# recent news that instead of May 2009 - Pakistan plan to
+# introduce DST from April 15, 2009
+#
+# FYI: Associated Press Of Pakistan
+# April 08, 2009
+# Cabinet okays proposal to advance clocks by one hour from April 15
+# 
+# http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=73043&Itemid=1
+# 
+#
+# or
+#
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_pakistan05.html
+# 
+#
+# ....
+# The Federal Cabinet on Wednesday approved the proposal to
+# advance clocks in the country by one hour from April 15 to
+# conserve energy"
+
+# From Steffen Thorsen (2009-09-17):
+# "The News International," Pakistan reports that: "The Federal
+# Government has decided to restore the previous time by moving the
+# clocks backward by one hour from October 1. A formal announcement to
+# this effect will be made after the Prime Minister grants approval in
+# this regard."
+# 
+# http://www.thenews.com.pk/updates.asp?id=87168
+# 
+
+# From Alexander Krivenyshev (2009-09-28):
+# According to Associated Press Of Pakistan, it is confirmed that
+# Pakistan clocks across the country would be turned back by an hour from October
+# 1, 2009.
+#
+# "Clocks to go back one hour from 1 Oct"
+# 
+# http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=86715&Itemid=2
+# 
+# or
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_pakistan07.htm
+# 
+
+# From Steffen Thorsen (2009-09-29):
+# Alexander Krivenyshev wrote:
+# > According to Associated Press Of Pakistan, it is confirmed that
+# > Pakistan clocks across the country would be turned back by an hour from October
+# > 1, 2009.
+#
+# Now they seem to have changed their mind, November 1 is the new date:
+# 
+# http://www.thenews.com.pk/top_story_detail.asp?Id=24742
+# 
+# "The country's clocks will be reversed by one hour on November 1.
+# Officials of Federal Ministry for Interior told this to Geo News on
+# Monday."
+#
+# And more importantly, it seems that these dates will be kept every year:
+# "It has now been decided that clocks will be wound forward by one hour
+# on April 15 and reversed by an hour on November 1 every year without
+# obtaining prior approval, the officials added."
+#
+# We have confirmed this year's end date with both with the Ministry of
+# Water and Power and the Pakistan Electric Power Company:
+# 
+# http://www.timeanddate.com/news/time/pakistan-ends-dst09.html
+# 
+
+# From Christoph Goehre (2009-10-01):
+# [T]he German Consulate General in Karachi reported me today that Pakistan
+# will go back to standard time on 1st of November.
+
+# From Steffen Thorsen (2010-03-26):
+# Steffen Thorsen wrote:
+# > On Thursday (2010-03-25) it was announced that DST would start in
+# > Pakistan on 2010-04-01.
+# >
+# > Then today, the president said that they might have to revert the
+# > decision if it is not supported by the parliament. So at the time
+# > being, it seems unclear if DST will be actually observed or not - but
+# > April 1 could be a more likely date than April 15.
+# Now, it seems that the decision to not observe DST in final:
+#
+# "Govt Withdraws Plan To Advance Clocks"
+# 
+# http://www.apakistannews.com/govt-withdraws-plan-to-advance-clocks-172041
+# 
+#
+# "People laud PM's announcement to end DST"
+# 
+# http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=99374&Itemid=2
+# 
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule Pakistan	2002	only	-	Apr	Sun>=2	0:01	1:00	S
+Rule Pakistan	2002	only	-	Oct	Sun>=2	0:01	0	-
+Rule Pakistan	2008	only	-	Jun	1	0:00	1:00	S
+Rule Pakistan	2008	only	-	Nov	1	0:00	0	-
+Rule Pakistan	2009	only	-	Apr	15	0:00	1:00	S
+Rule Pakistan	2009	only	-	Nov	1	0:00	0	-
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Karachi	4:28:12 -	LMT	1907
+			5:30	-	IST	1942 Sep
+			5:30	1:00	IST	1945 Oct 15
+			5:30	-	IST	1951 Sep 30
+			5:00	-	KART	1971 Mar 26 # Karachi Time
+			5:00 Pakistan	PK%sT	# Pakistan Time
+
+# Palestine
+
+# From Amos Shapir (1998-02-15):
+#
+# From 1917 until 1948-05-15, all of Palestine, including the parts now
+# known as the Gaza Strip and the West Bank, was under British rule.
+# Therefore the rules given for Israel for that period, apply there too...
+#
+# The Gaza Strip was under Egyptian rule between 1948-05-15 until 1967-06-05
+# (except a short occupation by Israel from 1956-11 till 1957-03, but no
+# time zone was affected then).  It was never formally annexed to Egypt,
+# though.
+#
+# The rest of Palestine was under Jordanian rule at that time, formally
+# annexed in 1950 as the West Bank (and the word "Trans" was dropped from
+# the country's previous name of "the Hashemite Kingdom of the
+# Trans-Jordan").  So the rules for Jordan for that time apply.  Major
+# towns in that area are Nablus (Shchem), El-Halil (Hebron), Ramallah, and
+# East Jerusalem.
+#
+# Both areas were occupied by Israel in June 1967, but not annexed (except
+# for East Jerusalem).  They were on Israel time since then; there might
+# have been a Military Governor's order about time zones, but I'm not aware
+# of any (such orders may have been issued semi-annually whenever summer
+# time was in effect, but maybe the legal aspect of time was just neglected).
+#
+# The Palestinian Authority was established in 1993, and got hold of most
+# towns in the West Bank and Gaza by 1995.  I know that in order to
+# demonstrate...independence, they have been switching to
+# summer time and back on a different schedule than Israel's, but I don't
+# know when this was started, or what algorithm is used (most likely the
+# Jordanian one).
+#
+# To summarize, the table should probably look something like that:
+#
+# Area \ when | 1918-1947 | 1948-1967 | 1967-1995 | 1996-
+# ------------+-----------+-----------+-----------+-----------
+# Israel      | Zion      | Zion      | Zion      | Zion
+# West bank   | Zion      | Jordan    | Zion      | Jordan
+# Gaza        | Zion      | Egypt     | Zion      | Jordan
+#
+# I guess more info may be available from the PA's web page (if/when they
+# have one).
+
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger write that Gaza did not observe DST until 1957, but go
+# with Shapir and assume that it observed DST from 1940 through 1947,
+# and that it used Jordanian rules starting in 1996.
+# We don't yet need a separate entry for the West Bank, since
+# the only differences between it and Gaza that we know about
+# occurred before our cutoff date of 1970.
+# However, as we get more information, we may need to add entries
+# for parts of the West Bank as they transitioned from Israel's rules
+# to Palestine's rules.
+
+# From IINS News Service - Israel - 1998-03-23 10:38:07 Israel time,
+# forwarded by Ephraim Silverberg:
+#
+# Despite the fact that Israel changed over to daylight savings time
+# last week, the PLO Authority (PA) has decided not to turn its clocks
+# one-hour forward at this time.  As a sign of independence from Israeli rule,
+# the PA has decided to implement DST in April.
+
+# From Paul Eggert (1999-09-20):
+# Daoud Kuttab writes in
+# 
+# Holiday havoc
+#  (Jerusalem Post, 1999-04-22) that
+# the Palestinian National Authority changed to DST on 1999-04-15.
+# I vaguely recall that they switch back in October (sorry, forgot the source).
+# For now, let's assume that the spring switch was at 24:00,
+# and that they switch at 0:00 on the 3rd Fridays of April and October.
+
+# From Paul Eggert (2005-11-22):
+# Starting 2004 transitions are from Steffen Thorsen's web site timeanddate.com.
+
+# From Steffen Thorsen (2005-11-23):
+# A user from Gaza reported that Gaza made the change early because of
+# the Ramadan.  Next year Ramadan will be even earlier, so I think
+# there is a good chance next year's end date will be around two weeks
+# earlier--the same goes for Jordan.
+
+# From Steffen Thorsen (2006-08-17):
+# I was informed by a user in Bethlehem that in Bethlehem it started the
+# same day as Israel, and after checking with other users in the area, I
+# was informed that they started DST one day after Israel.  I was not
+# able to find any authoritative sources at the time, nor details if
+# Gaza changed as well, but presumed Gaza to follow the same rules as
+# the West Bank.
+
+# From Steffen Thorsen (2006-09-26):
+# according to the Palestine News Network (2006-09-19):
+# http://english.pnn.ps/index.php?option=com_content&task=view&id=596&Itemid=5
+# > The Council of Ministers announced that this year its winter schedule
+# > will begin early, as of midnight Thursday.  It is also time to turn
+# > back the clocks for winter.  Friday will begin an hour late this week.
+# I guess it is likely that next year's date will be moved as well,
+# because of the Ramadan.
+
+# From Jesper Norgaard Welen (2007-09-18):
+# According to Steffen Thorsen's web site the Gaza Strip and the rest of the
+# Palestinian territories left DST early on 13.th. of September at 2:00.
+
+# From Paul Eggert (2007-09-20):
+# My understanding is that Gaza and the West Bank disagree even over when
+# the weekend is (Thursday+Friday versus Friday+Saturday), so I'd be a bit
+# surprised if they agreed about DST.  But for now, assume they agree.
+# For lack of better information, predict that future changes will be
+# the 2nd Thursday of September at 02:00.
+
+# From Alexander Krivenyshev (2008-08-28):
+# Here is an article, that Mideast running on different clocks at Ramadan.
+#
+# Gaza Strip (as Egypt) ended DST at midnight Thursday (Aug 28, 2008), while
+# the West Bank will end Daylight Saving Time at midnight Sunday (Aug 31, 2008).
+#
+# 
+# http://www.guardian.co.uk/world/feedarticle/7759001
+# 
+# 
+# http://www.abcnews.go.com/International/wireStory?id=5676087
+# 
+# or
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_gazastrip01.html
+# 
+
+# From Alexander Krivenyshev (2009-03-26):
+# According to the Palestine News Network (arabic.pnn.ps), Palestinian
+# government decided to start Daylight Time on Thursday night March
+# 26 and continue until the night of 27 September 2009.
+#
+# (in Arabic)
+# 
+# http://arabic.pnn.ps/index.php?option=com_content&task=view&id=50850
+# 
+#
+# or
+# (English translation)
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_westbank01.html
+# 
+
+# From Steffen Thorsen (2009-08-31):
+# Palestine's Council of Ministers announced that they will revert back to
+# winter time on Friday, 2009-09-04.
+#
+# One news source:
+# 
+# http://www.safa.ps/ara/?action=showdetail&seid=4158
+# 
+# (Palestinian press agency, Arabic),
+# Google translate: "Decided that the Palestinian government in Ramallah
+# headed by Salam Fayyad, the start of work in time for the winter of
+# 2009, starting on Friday approved the fourth delay Sept. clock sixty
+# minutes per hour as of Friday morning."
+#
+# We are not sure if Gaza will do the same, last year they had a different
+# end date, we will keep this page updated:
+# 
+# http://www.timeanddate.com/news/time/westbank-gaza-dst-2009.html
+# 
+
+# From Alexander Krivenyshev (2009-09-02):
+# Seems that Gaza Strip will go back to Winter Time same date as West Bank.
+#
+# According to Palestinian Ministry Of Interior, West Bank and Gaza Strip plan
+# to change time back to Standard time on September 4, 2009.
+#
+# "Winter time unite the West Bank and Gaza"
+# (from Palestinian National Authority):
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_gazastrip02.html
+# 
+
+# From Alexander Krivenyshev (2010-03-19):
+# According to Voice of Palestine DST will last for 191 days, from March
+# 26, 2010 till "the last Sunday before the tenth day of Tishri
+# (October), each year" (October 03, 2010?)
+#
+# 
+# http://palvoice.org/forums/showthread.php?t=245697
+# 
+# (in Arabic)
+# or
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_westbank03.html
+# 
+
+# From Steffen Thorsen (2010-03-24):
+# ...Ma'an News Agency reports that Hamas cabinet has decided it will
+# start one day later, at 12:01am. Not sure if they really mean 12:01am or
+# noon though:
+#
+# 
+# http://www.maannews.net/eng/ViewDetails.aspx?ID=271178
+# 
+# (Ma'an News Agency)
+# "At 12:01am Friday, clocks in Israel and the West Bank will change to
+# 1:01am, while Gaza clocks will change at 12:01am Saturday morning."
+
+# From Steffen Thorsen (2010-08-11):
+# According to several sources, including
+# 
+# http://www.maannews.net/eng/ViewDetails.aspx?ID=306795
+# 
+# the clocks were set back one hour at 2010-08-11 00:00:00 local time in
+# Gaza and the West Bank.
+# Some more background info:
+# 
+# http://www.timeanddate.com/news/time/westbank-gaza-end-dst-2010.html
+# 
+
+# From Steffen Thorsen (2011-08-26):
+# Gaza and the West Bank did go back to standard time in the beginning of
+# August, and will now enter daylight saving time again on 2011-08-30
+# 00:00 (so two periods of DST in 2011). The pause was because of
+# Ramadan.
+#
+# 
+# http://www.maannews.net/eng/ViewDetails.aspx?ID=416217
+# 
+# Additional info:
+# 
+# http://www.timeanddate.com/news/time/palestine-dst-2011.html
+# 
+
+# From Alexander Krivenyshev (2011-08-27):
+# According to the article in The Jerusalem Post:
+# "...Earlier this month, the Palestinian government in the West Bank decided to
+# move to standard time for 30 days, during Ramadan. The Palestinians in the
+# Gaza Strip accepted the change and also moved their clocks one hour back.
+# The Hamas government said on Saturday that it won't observe summertime after
+# the Muslim feast of Id al-Fitr, which begins on Tuesday..."
+# ...
+# 
+# http://www.jpost.com/MiddleEast/Article.aspx?id=235650
+# 
+# or
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_gazastrip05.html
+# 
+# The rules for Egypt are stolen from the `africa' file.
+
+# From Steffen Thorsen (2011-09-30):
+# West Bank did end Daylight Saving Time this morning/midnight (2011-09-30
+# 00:00).
+# So West Bank and Gaza now have the same time again.
+#
+# Many sources, including:
+# 
+# http://www.maannews.net/eng/ViewDetails.aspx?ID=424808
+# 
+
+# From Steffen Thorsen (2012-03-26):
+# Palestinian news sources tell that both Gaza and West Bank will start DST
+# on Friday (Thursday midnight, 2012-03-29 24:00).
+# Some of many sources in Arabic:
+# 
+# http://www.samanews.com/index.php?act=Show&id=122638
+# 
+#
+# 
+# http://safa.ps/details/news/74352/%D8%A8%D8%AF%D8%A1-%D8%A7%D9%84%D8%AA%D9%88%D9%82%D9%8A%D8%AA-%D8%A7%D9%84%D8%B5%D9%8A%D9%81%D9%8A-%D8%A8%D8%A7%D9%84%D8%B6%D9%81%D8%A9-%D9%88%D8%BA%D8%B2%D8%A9-%D9%84%D9%8A%D9%84%D8%A9-%D8%A7%D9%84%D8%AC%D9%85%D8%B9%D8%A9.html
+# 
+#
+# Our brief summary:
+# 
+# http://www.timeanddate.com/news/time/gaza-west-bank-dst-2012.html
+# 
+
+# From Arthur David Olson (2012-03-27):
+# The timeanddate article for 2012 says that "the end date has not yet been
+# announced" and that "Last year, both...paused daylight saving time during...
+# Ramadan. It is not yet known [for] 2012."
+# For now, assume both switch back on the last Friday in September. XXX
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule EgyptAsia	1957	only	-	May	10	0:00	1:00	S
+Rule EgyptAsia	1957	1958	-	Oct	 1	0:00	0	-
+Rule EgyptAsia	1958	only	-	May	 1	0:00	1:00	S
+Rule EgyptAsia	1959	1967	-	May	 1	1:00	1:00	S
+Rule EgyptAsia	1959	1965	-	Sep	30	3:00	0	-
+Rule EgyptAsia	1966	only	-	Oct	 1	3:00	0	-
+
+Rule Palestine	1999	2005	-	Apr	Fri>=15	0:00	1:00	S
+Rule Palestine	1999	2003	-	Oct	Fri>=15	0:00	0	-
+Rule Palestine	2004	only	-	Oct	 1	1:00	0	-
+Rule Palestine	2005	only	-	Oct	 4	2:00	0	-
+Rule Palestine	2006	2008	-	Apr	 1	0:00	1:00	S
+Rule Palestine	2006	only	-	Sep	22	0:00	0	-
+Rule Palestine	2007	only	-	Sep	Thu>=8	2:00	0	-
+Rule Palestine	2008	only	-	Aug	lastFri	0:00	0	-
+Rule Palestine	2009	only	-	Mar	lastFri	0:00	1:00	S
+Rule Palestine	2009	only	-	Sep	Fri>=1	2:00	0	-
+Rule Palestine	2010	only	-	Mar	lastSat	0:01	1:00	S
+Rule Palestine	2010	only	-	Aug	11	0:00	0	-
+
+# From Arthur David Olson (2011-09-20):
+# 2011 transitions per http://www.timeanddate.com as of 2011-09-20.
+# From Paul Eggert (2012-10-12):
+# 2012 transitions per http://www.timeanddate.com as of 2012-10-12.
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Gaza	2:17:52	-	LMT	1900 Oct
+			2:00	Zion	EET	1948 May 15
+			2:00 EgyptAsia	EE%sT	1967 Jun  5
+			2:00	Zion	I%sT	1996
+			2:00	Jordan	EE%sT	1999
+			2:00 Palestine	EE%sT	2011 Apr  2 12:01
+			2:00	1:00	EEST	2011 Aug  1
+			2:00	-	EET	2012 Mar 30
+			2:00	1:00	EEST	2012 Sep 21 1:00
+			2:00	-	EET
+
+Zone	Asia/Hebron	2:20:23	-	LMT	1900 Oct
+			2:00	Zion	EET	1948 May 15
+			2:00 EgyptAsia	EE%sT	1967 Jun  5
+			2:00	Zion	I%sT	1996
+			2:00	Jordan	EE%sT	1999
+			2:00 Palestine	EE%sT	2008 Aug
+			2:00 	1:00	EEST	2008 Sep
+			2:00 Palestine	EE%sT	2011 Apr  1 12:01
+			2:00	1:00	EEST	2011 Aug  1
+			2:00	-	EET	2011 Aug 30
+			2:00	1:00	EEST	2011 Sep 30 3:00
+			2:00	-	EET	2012 Mar 30
+			2:00	1:00	EEST	2012 Sep 21 1:00
+			2:00	-	EET
+
+# Paracel Is
+# no information
+
+# Philippines
+# On 1844-08-16, Narciso Claveria, governor-general of the
+# Philippines, issued a proclamation announcing that 1844-12-30 was to
+# be immediately followed by 1845-01-01.  Robert H. van Gent has a
+# transcript of the decree in .
+# The rest of the data are from Shanks & Pottenger.
+
+# From Paul Eggert (2006-04-25):
+# Tomorrow's Manila Standard reports that the Philippines Department of
+# Trade and Industry is considering adopting DST this June when the
+# rainy season begins.  See
+# .
+# For now, we'll ignore this, since it's not definite and we lack details.
+#
+# From Jesper Norgaard Welen (2006-04-26):
+# ... claims that Philippines had DST last time in 1990:
+# http://story.philippinetimes.com/p.x/ct/9/id/145be20cc6b121c0/cid/3e5bbccc730d258c/
+# [a story dated 2006-04-25 by Cris Larano of Dow Jones Newswires,
+# but no details]
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Phil	1936	only	-	Nov	1	0:00	1:00	S
+Rule	Phil	1937	only	-	Feb	1	0:00	0	-
+Rule	Phil	1954	only	-	Apr	12	0:00	1:00	S
+Rule	Phil	1954	only	-	Jul	1	0:00	0	-
+Rule	Phil	1978	only	-	Mar	22	0:00	1:00	S
+Rule	Phil	1978	only	-	Sep	21	0:00	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Manila	-15:56:00 -	LMT	1844 Dec 31
+			8:04:00 -	LMT	1899 May 11
+			8:00	Phil	PH%sT	1942 May
+			9:00	-	JST	1944 Nov
+			8:00	Phil	PH%sT
+
+# Qatar
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Qatar	3:26:08 -	LMT	1920	# Al Dawhah / Doha
+			4:00	-	GST	1972 Jun
+			3:00	-	AST
+
+# Saudi Arabia
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Riyadh	3:06:52 -	LMT	1950
+			3:00	-	AST
+
+# Singapore
+# The data here are taken from Mok Ly Yng (2003-10-30)
+# .
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Singapore	6:55:25 -	LMT	1901 Jan  1
+			6:55:25	-	SMT	1905 Jun  1 # Singapore M.T.
+			7:00	-	MALT	1933 Jan  1 # Malaya Time
+			7:00	0:20	MALST	1936 Jan  1
+			7:20	-	MALT	1941 Sep  1
+			7:30	-	MALT	1942 Feb 16
+			9:00	-	JST	1945 Sep 12
+			7:30	-	MALT	1965 Aug  9 # independence
+			7:30	-	SGT	1982 Jan  1 # Singapore Time
+			8:00	-	SGT
+
+# Spratly Is
+# no information
+
+# Sri Lanka
+# From Paul Eggert (1996-09-03):
+# "Sri Lanka advances clock by an hour to avoid blackout"
+# (www.virtual-pc.com/lankaweb/news/items/240596-2.html, 1996-05-24,
+# no longer available as of 1999-08-17)
+# reported ``the country's standard time will be put forward by one hour at
+# midnight Friday (1830 GMT) `in the light of the present power crisis'.''
+#
+# From Dharmasiri Senanayake, Sri Lanka Media Minister (1996-10-24), as quoted
+# by Shamindra in
+# 
+# Daily News - Hot News Section (1996-10-26)
+# :
+# With effect from 12.30 a.m. on 26th October 1996
+# Sri Lanka will be six (06) hours ahead of GMT.
+
+# From Jesper Norgaard Welen (2006-04-14), quoting Sri Lanka News Online
+#  (2006-04-13):
+# 0030 hrs on April 15, 2006 (midnight of April 14, 2006 +30 minutes)
+# at present, become 2400 hours of April 14, 2006 (midnight of April 14, 2006).
+
+# From Peter Apps and Ranga Sirila of Reuters (2006-04-12) in:
+# 
+# [The Tamil Tigers] never accepted the original 1996 time change and simply
+# kept their clocks set five and a half hours ahead of Greenwich Mean
+# Time (GMT), in line with neighbor India.
+# From Paul Eggert (2006-04-18):
+# People who live in regions under Tamil control can use [TZ='Asia/Kolkata'],
+# as that zone has agreed with the Tamil areas since our cutoff date of 1970.
+
+# From K Sethu (2006-04-25):
+# I think the abbreviation LKT originated from the world of computers at
+# the time of or subsequent to the time zone changes by SL Government
+# twice in 1996 and probably SL Government or its standardization
+# agencies never declared an abbreviation as a national standard.
+#
+# I recollect before the recent change the government annoucemments
+# mentioning it as simply changing Sri Lanka Standard Time or Sri Lanka
+# Time and no mention was made about the abbreviation.
+#
+# If we look at Sri Lanka Department of Government's "Official News
+# Website of Sri Lanka" ... http://www.news.lk/ we can see that they
+# use SLT as abbreviation in time stamp at the beginning of each news
+# item....
+#
+# Within Sri Lanka I think LKT is well known among computer users and
+# adminsitrators.  In my opinion SLT may not be a good choice because the
+# nation's largest telcom / internet operator Sri Lanka Telcom is well
+# known by that abbreviation - simply as SLT (there IP domains are
+# slt.lk and sltnet.lk).
+#
+# But if indeed our government has adopted SLT as standard abbreviation
+# (that we have not known so far) then  it is better that it be used for
+# all computers.
+
+# From Paul Eggert (2006-04-25):
+# One possibility is that we wait for a bit for the dust to settle down
+# and then see what people actually say in practice.
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Colombo	5:19:24 -	LMT	1880
+			5:19:32	-	MMT	1906	# Moratuwa Mean Time
+			5:30	-	IST	1942 Jan  5
+			5:30	0:30	IHST	1942 Sep
+			5:30	1:00	IST	1945 Oct 16 2:00
+			5:30	-	IST	1996 May 25 0:00
+			6:30	-	LKT	1996 Oct 26 0:30
+			6:00	-	LKT	2006 Apr 15 0:30
+			5:30	-	IST
+
+# Syria
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Syria	1920	1923	-	Apr	Sun>=15	2:00	1:00	S
+Rule	Syria	1920	1923	-	Oct	Sun>=1	2:00	0	-
+Rule	Syria	1962	only	-	Apr	29	2:00	1:00	S
+Rule	Syria	1962	only	-	Oct	1	2:00	0	-
+Rule	Syria	1963	1965	-	May	1	2:00	1:00	S
+Rule	Syria	1963	only	-	Sep	30	2:00	0	-
+Rule	Syria	1964	only	-	Oct	1	2:00	0	-
+Rule	Syria	1965	only	-	Sep	30	2:00	0	-
+Rule	Syria	1966	only	-	Apr	24	2:00	1:00	S
+Rule	Syria	1966	1976	-	Oct	1	2:00	0	-
+Rule	Syria	1967	1978	-	May	1	2:00	1:00	S
+Rule	Syria	1977	1978	-	Sep	1	2:00	0	-
+Rule	Syria	1983	1984	-	Apr	9	2:00	1:00	S
+Rule	Syria	1983	1984	-	Oct	1	2:00	0	-
+Rule	Syria	1986	only	-	Feb	16	2:00	1:00	S
+Rule	Syria	1986	only	-	Oct	9	2:00	0	-
+Rule	Syria	1987	only	-	Mar	1	2:00	1:00	S
+Rule	Syria	1987	1988	-	Oct	31	2:00	0	-
+Rule	Syria	1988	only	-	Mar	15	2:00	1:00	S
+Rule	Syria	1989	only	-	Mar	31	2:00	1:00	S
+Rule	Syria	1989	only	-	Oct	1	2:00	0	-
+Rule	Syria	1990	only	-	Apr	1	2:00	1:00	S
+Rule	Syria	1990	only	-	Sep	30	2:00	0	-
+Rule	Syria	1991	only	-	Apr	 1	0:00	1:00	S
+Rule	Syria	1991	1992	-	Oct	 1	0:00	0	-
+Rule	Syria	1992	only	-	Apr	 8	0:00	1:00	S
+Rule	Syria	1993	only	-	Mar	26	0:00	1:00	S
+Rule	Syria	1993	only	-	Sep	25	0:00	0	-
+# IATA SSIM (1998-02) says 1998-04-02;
+# (1998-09) says 1999-03-29 and 1999-09-29; (1999-02) says 1999-04-02,
+# 2000-04-02, and 2001-04-02; (1999-09) says 2000-03-31 and 2001-03-31;
+# (2006) says 2006-03-31 and 2006-09-22;
+# for now ignore all these claims and go with Shanks & Pottenger,
+# except for the 2006-09-22 claim (which seems right for Ramadan).
+Rule	Syria	1994	1996	-	Apr	 1	0:00	1:00	S
+Rule	Syria	1994	2005	-	Oct	 1	0:00	0	-
+Rule	Syria	1997	1998	-	Mar	lastMon	0:00	1:00	S
+Rule	Syria	1999	2006	-	Apr	 1	0:00	1:00	S
+# From Stephen Colebourne (2006-09-18):
+# According to IATA data, Syria will change DST on 21st September [21:00 UTC]
+# this year [only]....  This is probably related to Ramadan, like Egypt.
+Rule	Syria	2006	only	-	Sep	22	0:00	0	-
+# From Paul Eggert (2007-03-29):
+# Today the AP reported "Syria will switch to summertime at midnight Thursday."
+# http://www.iht.com/articles/ap/2007/03/29/africa/ME-GEN-Syria-Time-Change.php
+Rule	Syria	2007	only	-	Mar	lastFri	0:00	1:00	S
+# From Jesper Norgard (2007-10-27):
+# The sister center ICARDA of my work CIMMYT is confirming that Syria DST will
+# not take place 1.st November at 0:00 o'clock but 1.st November at 24:00 or
+# rather Midnight between Thursday and Friday. This does make more sence than
+# having it between Wednesday and Thursday (two workdays in Syria) since the
+# weekend in Syria is not Saturday and Sunday, but Friday and Saturday. So now
+# it is implemented at midnight of the last workday before weekend...
+#
+# From Steffen Thorsen (2007-10-27):
+# Jesper Norgaard Welen wrote:
+#
+# > "Winter local time in Syria will be observed at midnight of Thursday 1
+# > November 2007, and the clock will be put back 1 hour."
+#
+# I found confirmation on this in this gov.sy-article (Arabic):
+# http://wehda.alwehda.gov.sy/_print_veiw.asp?FileName=12521710520070926111247
+#
+# which using Google's translate tools says:
+# Council of Ministers also approved the commencement of work on
+# identifying the winter time as of Friday, 2/11/2007 where the 60th
+# minute delay at midnight Thursday 1/11/2007.
+Rule	Syria	2007	only	-	Nov	 Fri>=1	0:00	0	-
+
+# From Stephen Colebourne (2008-03-17):
+# For everyone's info, I saw an IATA time zone change for [Syria] for
+# this month (March 2008) in the last day or so...This is the data IATA
+# are now using:
+# Country     Time Standard   --- DST Start ---   --- DST End ---  DST
+# Name        Zone Variation   Time    Date        Time    Date
+# Variation
+# Syrian Arab
+# Republic    SY    +0200      2200  03APR08       2100  30SEP08   +0300
+#                              2200  02APR09       2100  30SEP09   +0300
+#                              2200  01APR10       2100  30SEP10   +0300
+
+# From Arthur David Olson (2008-03-17):
+# Here's a link to English-language coverage by the Syrian Arab News
+# Agency (SANA)...
+# 
+# http://www.sana.sy/eng/21/2008/03/11/165173.htm
+# ...which reads (in part) "The Cabinet approved the suggestion of the
+# Ministry of Electricity to begin daylight savings time on Friday April
+# 4th, advancing clocks one hour ahead on midnight of Thursday April 3rd."
+# Since Syria is two hours east of UTC, the 2200 and 2100 transition times
+# shown above match up with midnight in Syria.
+
+# From Arthur David Olson (2008-03-18):
+# My buest guess at a Syrian rule is "the Friday nearest April 1";
+# coding that involves either using a "Mar Fri>=29" construct that old time zone
+# compilers can't handle  or having multiple Rules (a la Israel).
+# For now, use "Apr Fri>=1", and go with IATA on a uniform Sep 30 end.
+
+# From Steffen Thorsen (2008-10-07):
+# Syria has now officially decided to end DST on 2008-11-01 this year,
+# according to the following article in the Syrian Arab News Agency (SANA).
+#
+# The article is in Arabic, and seems to tell that they will go back to
+# winter time on 2008-11-01 at 00:00 local daylight time (delaying/setting
+# clocks back 60 minutes).
+#
+# 
+# http://sana.sy/ara/2/2008/10/07/195459.htm
+# 
+
+# From Steffen Thorsen (2009-03-19):
+# Syria will start DST on 2009-03-27 00:00 this year according to many sources,
+# two examples:
+#
+# 
+# http://www.sana.sy/eng/21/2009/03/17/217563.htm
+# 
+# (English, Syrian Arab News # Agency)
+# 
+# http://thawra.alwehda.gov.sy/_View_news2.asp?FileName=94459258720090318012209
+# 
+# (Arabic, gov-site)
+#
+# We have not found any sources saying anything about when DST ends this year.
+#
+# Our summary
+# 
+# http://www.timeanddate.com/news/time/syria-dst-starts-march-27-2009.html
+# 
+
+# From Steffen Thorsen (2009-10-27):
+# The Syrian Arab News Network on 2009-09-29 reported that Syria will
+# revert back to winter (standard) time on midnight between Thursday
+# 2009-10-29 and Friday 2009-10-30:
+# 
+# http://www.sana.sy/ara/2/2009/09/29/247012.htm (Arabic)
+# 
+
+# From Arthur David Olson (2009-10-28):
+# We'll see if future DST switching times turn out to be end of the last
+# Thursday of the month or the start of the last Friday of the month or
+# something else. For now, use the start of the last Friday.
+
+# From Steffen Thorsen (2010-03-17):
+# The "Syrian News Station" reported on 2010-03-16 that the Council of
+# Ministers has decided that Syria will start DST on midnight Thursday
+# 2010-04-01: (midnight between Thursday and Friday):
+# 
+# http://sns.sy/sns/?path=news/read/11421 (Arabic)
+# 
+
+# From Steffen Thorsen (2012-03-26):
+# Today, Syria's government announced that they will start DST early on Friday
+# (00:00). This is a bit earlier than the past two years.
+#
+# From Syrian Arab News Agency, in Arabic:
+# 
+# http://www.sana.sy/ara/2/2012/03/26/408215.htm
+# 
+#
+# Our brief summary:
+# 
+# http://www.timeanddate.com/news/time/syria-dst-2012.html
+# 
+
+# From Arthur David Olson (2012-03-27):
+# Assume last Friday in March going forward XXX.
+
+Rule	Syria	2008	only	-	Apr	Fri>=1	0:00	1:00	S
+Rule	Syria	2008	only	-	Nov	1	0:00	0	-
+Rule	Syria	2009	only	-	Mar	lastFri	0:00	1:00	S
+Rule	Syria	2010	2011	-	Apr	Fri>=1	0:00	1:00	S
+Rule	Syria	2012	max	-	Mar	lastFri	0:00	1:00	S
+Rule	Syria	2009	max	-	Oct	lastFri	0:00	0	-
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Damascus	2:25:12 -	LMT	1920	# Dimashq
+			2:00	Syria	EE%sT
+
+# Tajikistan
+# From Shanks & Pottenger.
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Dushanbe	4:35:12 -	LMT	1924 May  2
+			5:00	-	DUST	1930 Jun 21 # Dushanbe Time
+			6:00 RussiaAsia DUS%sT	1991 Mar 31 2:00s
+			5:00	1:00	DUSST	1991 Sep  9 2:00s
+			5:00	-	TJT		    # Tajikistan Time
+
+# Thailand
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Bangkok	6:42:04	-	LMT	1880
+			6:42:04	-	BMT	1920 Apr # Bangkok Mean Time
+			7:00	-	ICT
+
+# Turkmenistan
+# From Shanks & Pottenger.
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Ashgabat	3:53:32 -	LMT	1924 May  2 # or Ashkhabad
+			4:00	-	ASHT	1930 Jun 21 # Ashkhabad Time
+			5:00 RussiaAsia	ASH%sT	1991 Mar 31 2:00
+			4:00 RussiaAsia	ASH%sT	1991 Oct 27 # independence
+			4:00 RussiaAsia	TM%sT	1992 Jan 19 2:00
+			5:00	-	TMT
+
+# United Arab Emirates
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Dubai	3:41:12 -	LMT	1920
+			4:00	-	GST
+
+# Uzbekistan
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Samarkand	4:27:12 -	LMT	1924 May  2
+			4:00	-	SAMT	1930 Jun 21 # Samarkand Time
+			5:00	-	SAMT	1981 Apr  1
+			5:00	1:00	SAMST	1981 Oct  1
+			6:00	-	TAST	1982 Apr  1 # Tashkent Time
+			5:00 RussiaAsia	SAM%sT	1991 Sep  1 # independence
+			5:00 RussiaAsia	UZ%sT	1992
+			5:00	-	UZT
+Zone	Asia/Tashkent	4:37:12 -	LMT	1924 May  2
+			5:00	-	TAST	1930 Jun 21 # Tashkent Time
+			6:00 RussiaAsia	TAS%sT	1991 Mar 31 2:00
+			5:00 RussiaAsia	TAS%sT	1991 Sep  1 # independence
+			5:00 RussiaAsia	UZ%sT	1992
+			5:00	-	UZT
+
+# Vietnam
+
+# From Arthur David Olson (2008-03-18):
+# The English-language name of Vietnam's most populous city is "Ho Chi Min City";
+# we use Ho_Chi_Minh below to avoid a name of more than 14 characters.
+
+# From Shanks & Pottenger:
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Ho_Chi_Minh	7:06:40 -	LMT	1906 Jun  9
+			7:06:20	-	SMT	1911 Mar 11 0:01 # Saigon MT?
+			7:00	-	ICT	1912 May
+			8:00	-	ICT	1931 May
+			7:00	-	ICT
+
+# Yemen
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Asia/Aden	3:00:48	-	LMT	1950
+			3:00	-	AST
diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/australasia b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/australasia
new file mode 100644
index 0000000..93a3a41
--- /dev/null
+++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/australasia
@@ -0,0 +1,1719 @@
+# 
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
+
+# This file also includes Pacific islands.
+
+# Notes are at the end of this file
+
+###############################################################################
+
+# Australia
+
+# Please see the notes below for the controversy about "EST" versus "AEST" etc.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Aus	1917	only	-	Jan	 1	0:01	1:00	-
+Rule	Aus	1917	only	-	Mar	25	2:00	0	-
+Rule	Aus	1942	only	-	Jan	 1	2:00	1:00	-
+Rule	Aus	1942	only	-	Mar	29	2:00	0	-
+Rule	Aus	1942	only	-	Sep	27	2:00	1:00	-
+Rule	Aus	1943	1944	-	Mar	lastSun	2:00	0	-
+Rule	Aus	1943	only	-	Oct	 3	2:00	1:00	-
+# Go with Whitman and the Australian National Standards Commission, which
+# says W Australia didn't use DST in 1943/1944.  Ignore Whitman's claim that
+# 1944/1945 was just like 1943/1944.
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+# Northern Territory
+Zone Australia/Darwin	 8:43:20 -	LMT	1895 Feb
+			 9:00	-	CST	1899 May
+			 9:30	Aus	CST
+# Western Australia
+#
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	AW	1974	only	-	Oct	lastSun	2:00s	1:00	-
+Rule	AW	1975	only	-	Mar	Sun>=1	2:00s	0	-
+Rule	AW	1983	only	-	Oct	lastSun	2:00s	1:00	-
+Rule	AW	1984	only	-	Mar	Sun>=1	2:00s	0	-
+Rule	AW	1991	only	-	Nov	17	2:00s	1:00	-
+Rule	AW	1992	only	-	Mar	Sun>=1	2:00s	0	-
+Rule	AW	2006	only	-	Dec	 3	2:00s	1:00	-
+Rule	AW	2007	2009	-	Mar	lastSun	2:00s	0	-
+Rule	AW	2007	2008	-	Oct	lastSun	2:00s	1:00	-
+Zone Australia/Perth	 7:43:24 -	LMT	1895 Dec
+			 8:00	Aus	WST	1943 Jul
+			 8:00	AW	WST
+Zone Australia/Eucla	 8:35:28 -	LMT	1895 Dec
+			 8:45	Aus	CWST	1943 Jul
+			 8:45	AW	CWST
+
+# Queensland
+#
+# From Alex Livingston (1996-11-01):
+# I have heard or read more than once that some resort islands off the coast
+# of Queensland chose to keep observing daylight-saving time even after
+# Queensland ceased to.
+#
+# From Paul Eggert (1996-11-22):
+# IATA SSIM (1993-02/1994-09) say that the Holiday Islands (Hayman, Lindeman,
+# Hamilton) observed DST for two years after the rest of Queensland stopped.
+# Hamilton is the largest, but there is also a Hamilton in Victoria,
+# so use Lindeman.
+#
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	AQ	1971	only	-	Oct	lastSun	2:00s	1:00	-
+Rule	AQ	1972	only	-	Feb	lastSun	2:00s	0	-
+Rule	AQ	1989	1991	-	Oct	lastSun	2:00s	1:00	-
+Rule	AQ	1990	1992	-	Mar	Sun>=1	2:00s	0	-
+Rule	Holiday	1992	1993	-	Oct	lastSun	2:00s	1:00	-
+Rule	Holiday	1993	1994	-	Mar	Sun>=1	2:00s	0	-
+Zone Australia/Brisbane	10:12:08 -	LMT	1895
+			10:00	Aus	EST	1971
+			10:00	AQ	EST
+Zone Australia/Lindeman  9:55:56 -	LMT	1895
+			10:00	Aus	EST	1971
+			10:00	AQ	EST	1992 Jul
+			10:00	Holiday	EST
+
+# South Australia
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	AS	1971	1985	-	Oct	lastSun	2:00s	1:00	-
+Rule	AS	1986	only	-	Oct	19	2:00s	1:00	-
+Rule	AS	1987	2007	-	Oct	lastSun	2:00s	1:00	-
+Rule	AS	1972	only	-	Feb	27	2:00s	0	-
+Rule	AS	1973	1985	-	Mar	Sun>=1	2:00s	0	-
+Rule	AS	1986	1990	-	Mar	Sun>=15	2:00s	0	-
+Rule	AS	1991	only	-	Mar	3	2:00s	0	-
+Rule	AS	1992	only	-	Mar	22	2:00s	0	-
+Rule	AS	1993	only	-	Mar	7	2:00s	0	-
+Rule	AS	1994	only	-	Mar	20	2:00s	0	-
+Rule	AS	1995	2005	-	Mar	lastSun	2:00s	0	-
+Rule	AS	2006	only	-	Apr	2	2:00s	0	-
+Rule	AS	2007	only	-	Mar	lastSun	2:00s	0	-
+Rule	AS	2008	max	-	Apr	Sun>=1	2:00s	0	-
+Rule	AS	2008	max	-	Oct	Sun>=1	2:00s	1:00	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Australia/Adelaide	9:14:20 -	LMT	1895 Feb
+			9:00	-	CST	1899 May
+			9:30	Aus	CST	1971
+			9:30	AS	CST
+
+# Tasmania
+#
+# From Paul Eggert (2005-08-16):
+# 
+# says King Island didn't observe DST from WWII until late 1971.
+#
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	AT	1967	only	-	Oct	Sun>=1	2:00s	1:00	-
+Rule	AT	1968	only	-	Mar	lastSun	2:00s	0	-
+Rule	AT	1968	1985	-	Oct	lastSun	2:00s	1:00	-
+Rule	AT	1969	1971	-	Mar	Sun>=8	2:00s	0	-
+Rule	AT	1972	only	-	Feb	lastSun	2:00s	0	-
+Rule	AT	1973	1981	-	Mar	Sun>=1	2:00s	0	-
+Rule	AT	1982	1983	-	Mar	lastSun	2:00s	0	-
+Rule	AT	1984	1986	-	Mar	Sun>=1	2:00s	0	-
+Rule	AT	1986	only	-	Oct	Sun>=15	2:00s	1:00	-
+Rule	AT	1987	1990	-	Mar	Sun>=15	2:00s	0	-
+Rule	AT	1987	only	-	Oct	Sun>=22	2:00s	1:00	-
+Rule	AT	1988	1990	-	Oct	lastSun	2:00s	1:00	-
+Rule	AT	1991	1999	-	Oct	Sun>=1	2:00s	1:00	-
+Rule	AT	1991	2005	-	Mar	lastSun	2:00s	0	-
+Rule	AT	2000	only	-	Aug	lastSun	2:00s	1:00	-
+Rule	AT	2001	max	-	Oct	Sun>=1	2:00s	1:00	-
+Rule	AT	2006	only	-	Apr	Sun>=1	2:00s	0	-
+Rule	AT	2007	only	-	Mar	lastSun	2:00s	0	-
+Rule	AT	2008	max	-	Apr	Sun>=1	2:00s	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Australia/Hobart	9:49:16	-	LMT	1895 Sep
+			10:00	-	EST	1916 Oct 1 2:00
+			10:00	1:00	EST	1917 Feb
+			10:00	Aus	EST	1967
+			10:00	AT	EST
+Zone Australia/Currie	9:35:28	-	LMT	1895 Sep
+			10:00	-	EST	1916 Oct 1 2:00
+			10:00	1:00	EST	1917 Feb
+			10:00	Aus	EST	1971 Jul
+			10:00	AT	EST
+
+# Victoria
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	AV	1971	1985	-	Oct	lastSun	2:00s	1:00	-
+Rule	AV	1972	only	-	Feb	lastSun	2:00s	0	-
+Rule	AV	1973	1985	-	Mar	Sun>=1	2:00s	0	-
+Rule	AV	1986	1990	-	Mar	Sun>=15	2:00s	0	-
+Rule	AV	1986	1987	-	Oct	Sun>=15	2:00s	1:00	-
+Rule	AV	1988	1999	-	Oct	lastSun	2:00s	1:00	-
+Rule	AV	1991	1994	-	Mar	Sun>=1	2:00s	0	-
+Rule	AV	1995	2005	-	Mar	lastSun	2:00s	0	-
+Rule	AV	2000	only	-	Aug	lastSun	2:00s	1:00	-
+Rule	AV	2001	2007	-	Oct	lastSun	2:00s	1:00	-
+Rule	AV	2006	only	-	Apr	Sun>=1	2:00s	0	-
+Rule	AV	2007	only	-	Mar	lastSun	2:00s	0	-
+Rule	AV	2008	max	-	Apr	Sun>=1	2:00s	0	-
+Rule	AV	2008	max	-	Oct	Sun>=1	2:00s	1:00	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Australia/Melbourne 9:39:52 -	LMT	1895 Feb
+			10:00	Aus	EST	1971
+			10:00	AV	EST
+
+# New South Wales
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	AN	1971	1985	-	Oct	lastSun	2:00s	1:00	-
+Rule	AN	1972	only	-	Feb	27	2:00s	0	-
+Rule	AN	1973	1981	-	Mar	Sun>=1	2:00s	0	-
+Rule	AN	1982	only	-	Apr	Sun>=1	2:00s	0	-
+Rule	AN	1983	1985	-	Mar	Sun>=1	2:00s	0	-
+Rule	AN	1986	1989	-	Mar	Sun>=15	2:00s	0	-
+Rule	AN	1986	only	-	Oct	19	2:00s	1:00	-
+Rule	AN	1987	1999	-	Oct	lastSun	2:00s	1:00	-
+Rule	AN	1990	1995	-	Mar	Sun>=1	2:00s	0	-
+Rule	AN	1996	2005	-	Mar	lastSun	2:00s	0	-
+Rule	AN	2000	only	-	Aug	lastSun	2:00s	1:00	-
+Rule	AN	2001	2007	-	Oct	lastSun	2:00s	1:00	-
+Rule	AN	2006	only	-	Apr	Sun>=1	2:00s	0	-
+Rule	AN	2007	only	-	Mar	lastSun	2:00s	0	-
+Rule	AN	2008	max	-	Apr	Sun>=1	2:00s	0	-
+Rule	AN	2008	max	-	Oct	Sun>=1	2:00s	1:00	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Australia/Sydney	10:04:52 -	LMT	1895 Feb
+			10:00	Aus	EST	1971
+			10:00	AN	EST
+Zone Australia/Broken_Hill 9:25:48 -	LMT	1895 Feb
+			10:00	-	EST	1896 Aug 23
+			9:00	-	CST	1899 May
+			9:30	Aus	CST	1971
+			9:30	AN	CST	2000
+			9:30	AS	CST
+
+# Lord Howe Island
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	LH	1981	1984	-	Oct	lastSun	2:00	1:00	-
+Rule	LH	1982	1985	-	Mar	Sun>=1	2:00	0	-
+Rule	LH	1985	only	-	Oct	lastSun	2:00	0:30	-
+Rule	LH	1986	1989	-	Mar	Sun>=15	2:00	0	-
+Rule	LH	1986	only	-	Oct	19	2:00	0:30	-
+Rule	LH	1987	1999	-	Oct	lastSun	2:00	0:30	-
+Rule	LH	1990	1995	-	Mar	Sun>=1	2:00	0	-
+Rule	LH	1996	2005	-	Mar	lastSun	2:00	0	-
+Rule	LH	2000	only	-	Aug	lastSun	2:00	0:30	-
+Rule	LH	2001	2007	-	Oct	lastSun	2:00	0:30	-
+Rule	LH	2006	only	-	Apr	Sun>=1	2:00	0	-
+Rule	LH	2007	only	-	Mar	lastSun	2:00	0	-
+Rule	LH	2008	max	-	Apr	Sun>=1	2:00	0	-
+Rule	LH	2008	max	-	Oct	Sun>=1	2:00	0:30	-
+Zone Australia/Lord_Howe 10:36:20 -	LMT	1895 Feb
+			10:00	-	EST	1981 Mar
+			10:30	LH	LHST
+
+# Australian miscellany
+#
+# Ashmore Is, Cartier
+# no indigenous inhabitants; only seasonal caretakers
+# no times are set
+#
+# Coral Sea Is
+# no indigenous inhabitants; only meteorologists
+# no times are set
+#
+# Macquarie
+# permanent occupation (scientific station) since 1948;
+# sealing and penguin oil station operated 1888/1917
+# like Australia/Hobart
+
+# Christmas
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Indian/Christmas	7:02:52 -	LMT	1895 Feb
+			7:00	-	CXT	# Christmas Island Time
+
+# Cook Is
+# From Shanks & Pottenger:
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Cook	1978	only	-	Nov	12	0:00	0:30	HS
+Rule	Cook	1979	1991	-	Mar	Sun>=1	0:00	0	-
+Rule	Cook	1979	1990	-	Oct	lastSun	0:00	0:30	HS
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Pacific/Rarotonga	-10:39:04 -	LMT	1901		# Avarua
+			-10:30	-	CKT	1978 Nov 12	# Cook Is Time
+			-10:00	Cook	CK%sT
+
+# Cocos
+# These islands were ruled by the Ross family from about 1830 to 1978.
+# We don't know when standard time was introduced; for now, we guess 1900.
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Indian/Cocos	6:27:40	-	LMT	1900
+			6:30	-	CCT	# Cocos Islands Time
+
+# Fiji
+# From Alexander Krivenyshev (2009-11-10):
+# According to Fiji Broadcasting Corporation,  Fiji plans to re-introduce DST
+# from November 29th 2009  to April 25th 2010.
+#
+# "Daylight savings to commence this month"
+# 
+# http://www.radiofiji.com.fj/fullstory.php?id=23719
+# 
+# or
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_fiji01.html
+# 
+
+# From Steffen Thorsen (2009-11-10):
+# The Fiji Government has posted some more details about the approved
+# amendments:
+# 
+# http://www.fiji.gov.fj/publish/page_16198.shtml
+# 
+
+# From Steffen Thorsen (2010-03-03):
+# The Cabinet in Fiji has decided to end DST about a month early, on
+# 2010-03-28 at 03:00.
+# The plan is to observe DST again, from 2010-10-24 to sometime in March
+# 2011 (last Sunday a good guess?).
+#
+# Official source:
+# 
+# http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=1096:3310-cabinet-approves-change-in-daylight-savings-dates&catid=49:cabinet-releases&Itemid=166
+# 
+#
+# A bit more background info here:
+# 
+# http://www.timeanddate.com/news/time/fiji-dst-ends-march-2010.html
+# 
+
+# From Alexander Krivenyshev (2010-10-24):
+# According to Radio Fiji and Fiji Times online, Fiji will end DST 3
+# weeks earlier than expected - on March 6, 2011, not March 27, 2011...
+# Here is confirmation from Government of the Republic of the Fiji Islands,
+# Ministry of Information (fiji.gov.fj) web site:
+# 
+# http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=2608:daylight-savings&catid=71:press-releases&Itemid=155
+# 
+# or
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_fiji04.html
+# 
+
+# From Steffen Thorsen (2011-10-03):
+# Now the dates have been confirmed, and at least our start date
+# assumption was correct (end date was one week wrong).
+#
+# 
+# www.fiji.gov.fj/index.php?option=com_content&view=article&id=4966:daylight-saving-starts-in-fiji&catid=71:press-releases&Itemid=155
+# 
+# which says
+# Members of the public are reminded to change their time to one hour in
+# advance at 2am to 3am on October 23, 2011 and one hour back at 3am to
+# 2am on February 26 next year.
+
+# From Ken Rylander (2011-10-24)
+# Another change to the Fiji DST end date. In the TZ database the end date for
+# Fiji DST 2012, is currently Feb 26. This has been changed to Jan 22.
+#
+# 
+# http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=5017:amendments-to-daylight-savings&catid=71:press-releases&Itemid=155
+# 
+# states:
+#
+# The end of daylight saving scheduled initially for the 26th of February 2012
+# has been brought forward to the 22nd of January 2012.
+# The commencement of daylight saving will remain unchanged and start
+# on the  23rd of October, 2011.
+
+# From the Fiji Government Online Portal (2012-08-21) via Steffen Thorsen:
+# The Minister for Labour, Industrial Relations and Employment Mr Jone Usamate
+# today confirmed that Fiji will start daylight savings at 2 am on Sunday 21st
+# October 2012 and end at 3 am on Sunday 20th January 2013.
+# http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=6702&catid=71&Itemid=155
+#
+# From Paul Eggert (2012-08-31):
+# For now, guess a pattern of the penultimate Sundays in October and January.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Fiji	1998	1999	-	Nov	Sun>=1	2:00	1:00	S
+Rule	Fiji	1999	2000	-	Feb	lastSun	3:00	0	-
+Rule	Fiji	2009	only	-	Nov	29	2:00	1:00	S
+Rule	Fiji	2010	only	-	Mar	lastSun	3:00	0	-
+Rule	Fiji	2010	max	-	Oct	Sun>=18	2:00	1:00	S
+Rule	Fiji	2011	only	-	Mar	Sun>=1	3:00	0	-
+Rule	Fiji	2012	max	-	Jan	Sun>=18	3:00	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Pacific/Fiji	11:53:40 -	LMT	1915 Oct 26	# Suva
+			12:00	Fiji	FJ%sT	# Fiji Time
+
+# French Polynesia
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Pacific/Gambier	 -8:59:48 -	LMT	1912 Oct	# Rikitea
+			 -9:00	-	GAMT	# Gambier Time
+Zone	Pacific/Marquesas -9:18:00 -	LMT	1912 Oct
+			 -9:30	-	MART	# Marquesas Time
+Zone	Pacific/Tahiti	 -9:58:16 -	LMT	1912 Oct	# Papeete
+			-10:00	-	TAHT	# Tahiti Time
+# Clipperton (near North America) is administered from French Polynesia;
+# it is uninhabited.
+
+# Guam
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Pacific/Guam	-14:21:00 -	LMT	1844 Dec 31
+			 9:39:00 -	LMT	1901		# Agana
+			10:00	-	GST	2000 Dec 23	# Guam
+			10:00	-	ChST	# Chamorro Standard Time
+
+# Kiribati
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Pacific/Tarawa	 11:32:04 -	LMT	1901		# Bairiki
+			 12:00	-	GILT		 # Gilbert Is Time
+Zone Pacific/Enderbury	-11:24:20 -	LMT	1901
+			-12:00	-	PHOT	1979 Oct # Phoenix Is Time
+			-11:00	-	PHOT	1995
+			 13:00	-	PHOT
+Zone Pacific/Kiritimati	-10:29:20 -	LMT	1901
+			-10:40	-	LINT	1979 Oct # Line Is Time
+			-10:00	-	LINT	1995
+			 14:00	-	LINT
+
+# N Mariana Is
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Pacific/Saipan	-14:17:00 -	LMT	1844 Dec 31
+			 9:43:00 -	LMT	1901
+			 9:00	-	MPT	1969 Oct # N Mariana Is Time
+			10:00	-	MPT	2000 Dec 23
+			10:00	-	ChST	# Chamorro Standard Time
+
+# Marshall Is
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Pacific/Majuro	11:24:48 -	LMT	1901
+			11:00	-	MHT	1969 Oct # Marshall Islands Time
+			12:00	-	MHT
+Zone Pacific/Kwajalein	11:09:20 -	LMT	1901
+			11:00	-	MHT	1969 Oct
+			-12:00	-	KWAT	1993 Aug 20	# Kwajalein Time
+			12:00	-	MHT
+
+# Micronesia
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Pacific/Chuuk	10:07:08 -	LMT	1901
+			10:00	-	CHUT			# Chuuk Time
+Zone Pacific/Pohnpei	10:32:52 -	LMT	1901		# Kolonia
+			11:00	-	PONT			# Pohnpei Time
+Zone Pacific/Kosrae	10:51:56 -	LMT	1901
+			11:00	-	KOST	1969 Oct	# Kosrae Time
+			12:00	-	KOST	1999
+			11:00	-	KOST
+
+# Nauru
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Pacific/Nauru	11:07:40 -	LMT	1921 Jan 15	# Uaobe
+			11:30	-	NRT	1942 Mar 15	# Nauru Time
+			9:00	-	JST	1944 Aug 15
+			11:30	-	NRT	1979 May
+			12:00	-	NRT
+
+# New Caledonia
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	NC	1977	1978	-	Dec	Sun>=1	0:00	1:00	S
+Rule	NC	1978	1979	-	Feb	27	0:00	0	-
+Rule	NC	1996	only	-	Dec	 1	2:00s	1:00	S
+# Shanks & Pottenger say the following was at 2:00; go with IATA.
+Rule	NC	1997	only	-	Mar	 2	2:00s	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Pacific/Noumea	11:05:48 -	LMT	1912 Jan 13
+			11:00	NC	NC%sT
+
+
+###############################################################################
+
+# New Zealand
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	NZ	1927	only	-	Nov	 6	2:00	1:00	S
+Rule	NZ	1928	only	-	Mar	 4	2:00	0	M
+Rule	NZ	1928	1933	-	Oct	Sun>=8	2:00	0:30	S
+Rule	NZ	1929	1933	-	Mar	Sun>=15	2:00	0	M
+Rule	NZ	1934	1940	-	Apr	lastSun	2:00	0	M
+Rule	NZ	1934	1940	-	Sep	lastSun	2:00	0:30	S
+Rule	NZ	1946	only	-	Jan	 1	0:00	0	S
+# Since 1957 Chatham has been 45 minutes ahead of NZ, but there's no
+# convenient notation for this so we must duplicate the Rule lines.
+Rule	NZ	1974	only	-	Nov	Sun>=1	2:00s	1:00	D
+Rule	Chatham	1974	only	-	Nov	Sun>=1	2:45s	1:00	D
+Rule	NZ	1975	only	-	Feb	lastSun	2:00s	0	S
+Rule	Chatham	1975	only	-	Feb	lastSun	2:45s	0	S
+Rule	NZ	1975	1988	-	Oct	lastSun	2:00s	1:00	D
+Rule	Chatham	1975	1988	-	Oct	lastSun	2:45s	1:00	D
+Rule	NZ	1976	1989	-	Mar	Sun>=1	2:00s	0	S
+Rule	Chatham	1976	1989	-	Mar	Sun>=1	2:45s	0	S
+Rule	NZ	1989	only	-	Oct	Sun>=8	2:00s	1:00	D
+Rule	Chatham	1989	only	-	Oct	Sun>=8	2:45s	1:00	D
+Rule	NZ	1990	2006	-	Oct	Sun>=1	2:00s	1:00	D
+Rule	Chatham	1990	2006	-	Oct	Sun>=1	2:45s	1:00	D
+Rule	NZ	1990	2007	-	Mar	Sun>=15	2:00s	0	S
+Rule	Chatham	1990	2007	-	Mar	Sun>=15	2:45s	0	S
+Rule	NZ	2007	max	-	Sep	lastSun	2:00s	1:00	D
+Rule	Chatham	2007	max	-	Sep	lastSun	2:45s	1:00	D
+Rule	NZ	2008	max	-	Apr	Sun>=1	2:00s	0	S
+Rule	Chatham	2008	max	-	Apr	Sun>=1	2:45s	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Pacific/Auckland	11:39:04 -	LMT	1868 Nov  2
+			11:30	NZ	NZ%sT	1946 Jan  1
+			12:00	NZ	NZ%sT
+Zone Pacific/Chatham	12:13:48 -	LMT	1957 Jan  1
+			12:45	Chatham	CHA%sT
+
+
+# Auckland Is
+# uninhabited; Maori and Moriori, colonial settlers, pastoralists, sealers,
+# and scientific personnel have wintered
+
+# Campbell I
+# minor whaling stations operated 1909/1914
+# scientific station operated 1941/1995;
+# previously whalers, sealers, pastoralists, and scientific personnel wintered
+# was probably like Pacific/Auckland
+
+###############################################################################
+
+
+# Niue
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Pacific/Niue	-11:19:40 -	LMT	1901		# Alofi
+			-11:20	-	NUT	1951	# Niue Time
+			-11:30	-	NUT	1978 Oct 1
+			-11:00	-	NUT
+
+# Norfolk
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Pacific/Norfolk	11:11:52 -	LMT	1901		# Kingston
+			11:12	-	NMT	1951	# Norfolk Mean Time
+			11:30	-	NFT		# Norfolk Time
+
+# Palau (Belau)
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Pacific/Palau	8:57:56 -	LMT	1901		# Koror
+			9:00	-	PWT	# Palau Time
+
+# Papua New Guinea
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Pacific/Port_Moresby 9:48:40 -	LMT	1880
+			9:48:32	-	PMMT	1895	# Port Moresby Mean Time
+			10:00	-	PGT		# Papua New Guinea Time
+
+# Pitcairn
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Pacific/Pitcairn	-8:40:20 -	LMT	1901		# Adamstown
+			-8:30	-	PNT	1998 Apr 27 00:00
+			-8:00	-	PST	# Pitcairn Standard Time
+
+# American Samoa
+Zone Pacific/Pago_Pago	 12:37:12 -	LMT	1879 Jul  5
+			-11:22:48 -	LMT	1911
+			-11:30	-	SAMT	1950		# Samoa Time
+			-11:00	-	NST	1967 Apr	# N=Nome
+			-11:00	-	BST	1983 Nov 30	# B=Bering
+			-11:00	-	SST			# S=Samoa
+
+# Samoa
+
+# From Steffen Thorsen (2009-10-16):
+# We have been in contact with the government of Samoa again, and received
+# the following info:
+#
+# "Cabinet has now approved Daylight Saving to be effected next year
+# commencing from the last Sunday of September 2010 and conclude first
+# Sunday of April 2011."
+#
+# Background info:
+# 
+# http://www.timeanddate.com/news/time/samoa-dst-plan-2009.html
+# 
+#
+# Samoa's Daylight Saving Time Act 2009 is available here, but does not
+# contain any dates:
+# 
+# http://www.parliament.gov.ws/documents/acts/Daylight%20Saving%20Act%20%202009%20%28English%29%20-%20Final%207-7-091.pdf
+# 
+
+# From Laupue Raymond Hughes (2010-10-07):
+# Please see
+# 
+# http://www.mcil.gov.ws
+# ,
+# the Ministry of Commerce, Industry and Labour (sideframe) "Last Sunday
+# September 2010 (26/09/10) - adjust clocks forward from 12:00 midnight
+# to 01:00am and First Sunday April 2011 (03/04/11) - adjust clocks
+# backwards from 1:00am to 12:00am"
+
+# From Laupue Raymond Hughes (2011-03-07):
+# I believe this will be posted shortly on the website
+# 
+# www.mcil.gov.ws
+# 
+#
+# PUBLIC NOTICE ON DAYLIGHT SAVING TIME
+#
+# Pursuant to the Daylight Saving Act 2009 and Cabinets decision,
+# businesses and the general public are hereby advised that daylight
+# saving time is on the first Saturday of April 2011 (02/04/11).
+#
+# The public is therefore advised that when the standard time strikes
+# the hour of four oclock (4.00am or 0400 Hours) on the 2nd April 2011,
+# then all instruments used to measure standard time are to be
+# adjusted/changed to three oclock (3:00am or 0300Hrs).
+#
+# Margaret Fruean ACTING CHIEF EXECUTIVE OFFICER MINISTRY OF COMMERCE,
+# INDUSTRY AND LABOUR 28th February 2011
+
+# From David Zuelke (2011-05-09):
+# Subject: Samoa to move timezone from east to west of international date line
+#
+# 
+# http://www.morningstar.co.uk/uk/markets/newsfeeditem.aspx?id=138501958347963
+# 
+
+# From Mark Sim-Smith (2011-08-17):
+# I have been in contact with Leilani Tuala Warren from the Samoa Law
+# Reform Commission, and she has sent me a copy of the Bill that she
+# confirmed has been passed...Most of the sections are about maps rather
+# than the time zone change, but I'll paste the relevant bits below. But
+# the essence is that at midnight 29 Dec (UTC-11 I suppose), Samoa
+# changes from UTC-11 to UTC+13:
+#
+# International Date Line Bill 2011
+#
+# AN ACT to provide for the change to standard time in Samoa and to make
+# consequential amendments to the position of the International Date
+# Line, and for related purposes.
+#
+# BE IT ENACTED by the Legislative Assembly of Samoa in Parliament
+# assembled as follows:
+#
+# 1. Short title and commencement-(1) This Act may be cited as the
+# International Date Line Act 2011. (2) Except for section 5(3) this Act
+# commences at 12 o'clock midnight, on Thursday 29th December 2011. (3)
+# Section 5(3) commences on the date of assent by the Head of State.
+#
+# [snip]
+#
+# 3. Interpretation - [snip] "Samoa standard time" in this Act and any
+# other statute of Samoa which refers to 'Samoa standard time' means the
+# time 13 hours in advance of Co-ordinated Universal Time.
+#
+# 4. Samoa standard time - (1) Upon the commencement of this Act, Samoa
+# standard time shall be set at 13 hours in advance of Co-ordinated
+# Universal Time for the whole of Samoa. (2) All references to Samoa's
+# time zone and to Samoa standard time in Samoa in all legislation and
+# instruments after the commencement of this Act shall be references to
+# Samoa standard time as provided for in this Act. (3) Nothing in this
+# Act affects the provisions of the Daylight Saving Act 2009, except that
+# it defines Samoa standard time....
+
+# From Laupue Raymond Hughes (2011-09-02):
+# 
+# http://www.mcil.gov.ws/mcil_publications.html
+# 
+#
+# here is the official website publication for Samoa DST and dateline change
+#
+# DST
+# Year	End	Time	Start	Time
+# 2011	- - -	- - -	24 September	3:00am to 4:00am
+# 2012	01 April	4:00am to 3:00am	- - -	- - -
+#
+# Dateline Change skip Friday 30th Dec 2011
+# Thursday 29th December 2011	23:59:59 Hours
+# Saturday 31st December 2011	00:00:00 Hours
+#
+# Clarification by Tim Parenti (2012-01-03):
+# Although Samoa has used Daylight Saving Time in the 2010-2011 and 2011-2012
+# seasons, there is not yet any indication that this trend will continue on
+# a regular basis. For now, we have explicitly listed the transitions below.
+#
+# From Nicky (2012-09-10):
+# Daylight Saving Time commences on Sunday 30th September 2012 and
+# ends on Sunday 7th of April 2013.
+#
+# Please find link below for more information.
+# http://www.mcil.gov.ws/mcil_publications.html
+#
+# That publication also includes dates for Summer of 2013/4 as well
+# which give the impression of a pattern in selecting dates for the
+# future, so for now, we will guess this will continue.
+
+# Western Samoa
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	WS	2012	max	-	Sep	lastSun	3:00	1	D
+Rule	WS	2012	max	-	Apr	Sun>=1	4:00	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Pacific/Apia	 12:33:04 -	LMT	1879 Jul  5
+			-11:26:56 -	LMT	1911
+			-11:30	-	SAMT	1950		# Samoa Time
+			-11:00	-	WST	2010 Sep 26
+			-11:00	1:00	WSDT	2011 Apr 2 4:00
+			-11:00	-	WST	2011 Sep 24 3:00
+			-11:00	1:00	WSDT	2011 Dec 30
+			 13:00	1:00	WSDT	2012 Apr Sun>=1 4:00
+			 13:00	WS	WS%sT
+
+# Solomon Is
+# excludes Bougainville, for which see Papua New Guinea
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Pacific/Guadalcanal 10:39:48 -	LMT	1912 Oct	# Honiara
+			11:00	-	SBT	# Solomon Is Time
+
+# Tokelau Is
+#
+# From Gwillim Law (2011-12-29)
+# A correspondent informed me that Tokelau, like Samoa, will be skipping
+# December 31 this year ...
+#
+# From Steffen Thorsen (2012-07-25)
+# ... we double checked by calling hotels and offices based in Tokelau asking
+# about the time there, and they all told a time that agrees with UTC+13....
+# Shanks says UTC-10 from 1901 [but] ... there is a good chance the change
+# actually was to UTC-11 back then.
+#
+# From Paul Eggert (2012-07-25)
+# A Google Books snippet of Appendix to the Journals of the House of
+# Representatives of New Zealand, Session 1948,
+# , page 65, says Tokelau
+# was "11 hours slow on G.M.T."  Go with Thorsen and assume Shanks & Pottenger
+# are off by an hour starting in 1901.
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Pacific/Fakaofo	-11:24:56 -	LMT	1901
+			-11:00	-	TKT 2011 Dec 30	# Tokelau Time
+			13:00	-	TKT
+
+# Tonga
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Tonga	1999	only	-	Oct	 7	2:00s	1:00	S
+Rule	Tonga	2000	only	-	Mar	19	2:00s	0	-
+Rule	Tonga	2000	2001	-	Nov	Sun>=1	2:00	1:00	S
+Rule	Tonga	2001	2002	-	Jan	lastSun	2:00	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Pacific/Tongatapu	12:19:20 -	LMT	1901
+			12:20	-	TOT	1941 # Tonga Time
+			13:00	-	TOT	1999
+			13:00	Tonga	TO%sT
+
+# Tuvalu
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Pacific/Funafuti	11:56:52 -	LMT	1901
+			12:00	-	TVT	# Tuvalu Time
+
+
+# US minor outlying islands
+
+# Howland, Baker
+# Howland was mined for guano by American companies 1857-1878 and British
+# 1886-1891; Baker was similar but exact dates are not known.
+# Inhabited by civilians 1935-1942; U.S. military bases 1943-1944;
+# uninhabited thereafter.
+# Howland observed Hawaii Standard Time (UTC-10:30) in 1937;
+# see page 206 of Elgen M. Long and Marie K. Long,
+# Amelia Earhart: the Mystery Solved, Simon & Schuster (2000).
+# So most likely Howland and Baker observed Hawaii Time from 1935
+# until they were abandoned after the war.
+
+# Jarvis
+# Mined for guano by American companies 1857-1879 and British 1883?-1891?.
+# Inhabited by civilians 1935-1942; IGY scientific base 1957-1958;
+# uninhabited thereafter.
+# no information; was probably like Pacific/Kiritimati
+
+# Johnston
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Pacific/Johnston	-10:00	-	HST
+
+# Kingman
+# uninhabited
+
+# Midway
+#
+# From Mark Brader (2005-01-23):
+# [Fallacies and Fantasies of Air Transport History, by R.E.G. Davies,
+# published 1994 by Paladwr Press, McLean, VA, USA; ISBN 0-9626483-5-3]
+# reproduced a Pan American Airways timeables from 1936, for their weekly
+# "Orient Express" flights between San Francisco and Manila, and connecting
+# flights to Chicago and the US East Coast.  As it uses some time zone
+# designations that I've never seen before:....
+# Fri. 6:30A Lv. HONOLOLU (Pearl Harbor), H.I.   H.L.T. Ar. 5:30P Sun.
+#  "   3:00P Ar. MIDWAY ISLAND . . . . . . . . . M.L.T. Lv. 6:00A  "
+#
+Zone Pacific/Midway	-11:49:28 -	LMT	1901
+			-11:00	-	NST	1956 Jun  3
+			-11:00	1:00	NDT	1956 Sep  2
+			-11:00	-	NST	1967 Apr	# N=Nome
+			-11:00	-	BST	1983 Nov 30	# B=Bering
+			-11:00	-	SST			# S=Samoa
+
+# Palmyra
+# uninhabited since World War II; was probably like Pacific/Kiritimati
+
+# Wake
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Pacific/Wake	11:06:28 -	LMT	1901
+			12:00	-	WAKT	# Wake Time
+
+
+# Vanuatu
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Vanuatu	1983	only	-	Sep	25	0:00	1:00	S
+Rule	Vanuatu	1984	1991	-	Mar	Sun>=23	0:00	0	-
+Rule	Vanuatu	1984	only	-	Oct	23	0:00	1:00	S
+Rule	Vanuatu	1985	1991	-	Sep	Sun>=23	0:00	1:00	S
+Rule	Vanuatu	1992	1993	-	Jan	Sun>=23	0:00	0	-
+Rule	Vanuatu	1992	only	-	Oct	Sun>=23	0:00	1:00	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Pacific/Efate	11:13:16 -	LMT	1912 Jan 13		# Vila
+			11:00	Vanuatu	VU%sT	# Vanuatu Time
+
+# Wallis and Futuna
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Pacific/Wallis	12:15:20 -	LMT	1901
+			12:00	-	WFT	# Wallis & Futuna Time
+
+###############################################################################
+
+# NOTES
+
+# This data is by no means authoritative; if you think you know better,
+# go ahead and edit the file (and please send any changes to
+# tz@iana.org for general use in the future).
+
+# From Paul Eggert (2006-03-22):
+# A good source for time zone historical data outside the U.S. is
+# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+# San Diego: ACS Publications, Inc. (2003).
+#
+# Gwillim Law writes that a good source
+# for recent time zone data is the International Air Transport
+# Association's Standard Schedules Information Manual (IATA SSIM),
+# published semiannually.  Law sent in several helpful summaries
+# of the IATA's data after 1990.
+#
+# Except where otherwise noted, Shanks & Pottenger is the source for
+# entries through 1990, and IATA SSIM is the source for entries afterwards.
+#
+# Another source occasionally used is Edward W. Whitman, World Time Differences,
+# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
+# I found in the UCLA library.
+#
+# A reliable and entertaining source about time zones is
+# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+#
+# I invented the abbreviations marked `*' in the following table;
+# the rest are from earlier versions of this file, or from other sources.
+# Corrections are welcome!
+#		std dst
+#		LMT	Local Mean Time
+#	  8:00	WST WST	Western Australia
+#	  8:45	CWST CWST Central Western Australia*
+#	  9:00	JST	Japan
+#	  9:30	CST CST	Central Australia
+#	 10:00	EST EST	Eastern Australia
+#	 10:00	ChST	Chamorro
+#	 10:30	LHST LHST Lord Howe*
+#	 11:30	NZMT NZST New Zealand through 1945
+#	 12:00	NZST NZDT New Zealand 1946-present
+#	 12:45	CHAST CHADT Chatham*
+#	-11:00	SST	Samoa
+#	-10:00	HST	Hawaii
+#	- 8:00	PST	Pitcairn*
+#
+# See the `northamerica' file for Hawaii.
+# See the `southamerica' file for Easter I and the Galapagos Is.
+
+###############################################################################
+
+# Australia
+
+# From Paul Eggert (2005-12-08):
+# 
+# Implementation Dates of Daylight Saving Time within Australia
+#  summarizes daylight saving issues in Australia.
+
+# From Arthur David Olson (2005-12-12):
+# 
+# Lawlink NSW:Daylight Saving in New South Wales
+#  covers New South Wales in particular.
+
+# From John Mackin (1991-03-06):
+# We in Australia have _never_ referred to DST as `daylight' time.
+# It is called `summer' time.  Now by a happy coincidence, `summer'
+# and `standard' happen to start with the same letter; hence, the
+# abbreviation does _not_ change...
+# The legislation does not actually define abbreviations, at least
+# in this State, but the abbreviation is just commonly taken to be the
+# initials of the phrase, and the legislation here uniformly uses
+# the phrase `summer time' and does not use the phrase `daylight
+# time'.
+# Announcers on the Commonwealth radio network, the ABC (for Australian
+# Broadcasting Commission), use the phrases `Eastern Standard Time'
+# or `Eastern Summer Time'.  (Note, though, that as I say in the
+# current australasia file, there is really no such thing.)  Announcers
+# on its overseas service, Radio Australia, use the same phrases
+# prefixed by the word `Australian' when referring to local times;
+# time announcements on that service, naturally enough, are made in UTC.
+
+# From Arthur David Olson (1992-03-08):
+# Given the above, what's chosen for year-round use is:
+#	CST	for any place operating at a GMTOFF of 9:30
+#	WST	for any place operating at a GMTOFF of 8:00
+#	EST	for any place operating at a GMTOFF of 10:00
+
+# From Chuck Soper (2006-06-01):
+# I recently found this Australian government web page on time zones:
+# 
+# And this government web page lists time zone names and abbreviations:
+# 
+
+# From Paul Eggert (2001-04-05), summarizing a long discussion about "EST"
+# versus "AEST" etc.:
+#
+# I see the following points of dispute:
+#
+# * How important are unique time zone abbreviations?
+#
+#   Here I tend to agree with the point (most recently made by Chris
+#   Newman) that unique abbreviations should not be essential for proper
+#   operation of software.  We have other instances of ambiguity
+#   (e.g. "IST" denoting both "Israel Standard Time" and "Indian
+#   Standard Time"), and they are not likely to go away any time soon.
+#   In the old days, some software mistakenly relied on unique
+#   abbreviations, but this is becoming less true with time, and I don't
+#   think it's that important to cater to such software these days.
+#
+#   On the other hand, there is another motivation for unambiguous
+#   abbreviations: it cuts down on human confusion.  This is
+#   particularly true for Australia, where "EST" can mean one thing for
+#   time T and a different thing for time T plus 1 second.
+#
+# * Does the relevant legislation indicate which abbreviations should be used?
+#
+#   Here I tend to think that things are a mess, just as they are in
+#   many other countries.  We Americans are currently disagreeing about
+#   which abbreviation to use for the newly legislated Chamorro Standard
+#   Time, for example.
+#
+#   Personally, I would prefer to use common practice; I would like to
+#   refer to legislation only for examples of common practice, or as a
+#   tiebreaker.
+#
+# * Do Australians more often use "Eastern Daylight Time" or "Eastern
+#   Summer Time"?  Do they typically prefix the time zone names with
+#   the word "Australian"?
+#
+#   My own impression is that both "Daylight Time" and "Summer Time" are
+#   common and are widely understood, but that "Summer Time" is more
+#   popular; and that the leading "A" is also common but is omitted more
+#   often than not.  I just used AltaVista advanced search and got the
+#   following count of page hits:
+#
+#     1,103 "Eastern Summer Time" AND domain:au
+#       971 "Australian Eastern Summer Time" AND domain:au
+#       613 "Eastern Daylight Time" AND domain:au
+#       127 "Australian Eastern Daylight Time" AND domain:au
+#
+#   Here "Summer" seems quite a bit more popular than "Daylight",
+#   particularly when we know the time zone is Australian and not US,
+#   say.  The "Australian" prefix seems to be popular for Eastern Summer
+#   Time, but unpopular for Eastern Daylight Time.
+#
+#   For abbreviations, tools like AltaVista are less useful because of
+#   ambiguity.  Many hits are not really time zones, unfortunately, and
+#   many hits denote US time zones and not Australian ones.  But here
+#   are the hit counts anyway:
+#
+#     161,304 "EST" and domain:au
+#      25,156 "EDT" and domain:au
+#      18,263 "AEST" and domain:au
+#      10,416 "AEDT" and domain:au
+#
+#      14,538 "CST" and domain:au
+#       5,728 "CDT" and domain:au
+#         176 "ACST" and domain:au
+#          29 "ACDT" and domain:au
+#
+#       7,539 "WST" and domain:au
+#          68 "AWST" and domain:au
+#
+#   This data suggest that Australians tend to omit the "A" prefix in
+#   practice.  The situation for "ST" versus "DT" is less clear, given
+#   the ambiguities involved.
+#
+# * How do Australians feel about the abbreviations in the tz database?
+#
+#   If you just count Australians on this list, I count 2 in favor and 3
+#   against.  One of the "against" votes (David Keegel) counseled delay,
+#   saying that both AEST/AEDT and EST/EST are widely used and
+#   understood in Australia.
+
+# From Paul Eggert (1995-12-19):
+# Shanks & Pottenger report 2:00 for all autumn changes in Australia and NZ.
+# Mark Prior writes that his newspaper
+# reports that NSW's fall 1995 change will occur at 2:00,
+# but Robert Elz says it's been 3:00 in Victoria since 1970
+# and perhaps the newspaper's `2:00' is referring to standard time.
+# For now we'll continue to assume 2:00s for changes since 1960.
+
+# From Eric Ulevik (1998-01-05):
+#
+# Here are some URLs to Australian time legislation. These URLs are stable,
+# and should probably be included in the data file. There are probably more
+# relevant entries in this database.
+#
+# NSW (including LHI and Broken Hill):
+# 
+# Standard Time Act 1987 (updated 1995-04-04)
+# 
+# ACT
+# 
+# Standard Time and Summer Time Act 1972
+# 
+# SA
+# 
+# Standard Time Act, 1898
+# 
+
+# From David Grosz (2005-06-13):
+# It was announced last week that Daylight Saving would be extended by
+# one week next year to allow for the 2006 Commonwealth Games.
+# Daylight Saving is now to end for next year only on the first Sunday
+# in April instead of the last Sunday in March.
+#
+# From Gwillim Law (2005-06-14):
+# I did some Googling and found that all of those states (and territory) plan
+# to extend DST together in 2006.
+# ACT: http://www.cmd.act.gov.au/mediareleases/fileread.cfm?file=86.txt
+# New South Wales: http://www.thecouriermail.news.com.au/common/story_page/0,5936,15538869%255E1702,00.html
+# South Australia: http://www.news.com.au/story/0,10117,15555031-1246,00.html
+# Tasmania: http://www.media.tas.gov.au/release.php?id=14772
+# Victoria: I wasn't able to find anything separate, but the other articles
+# allude to it.
+# But not Queensland
+# http://www.news.com.au/story/0,10117,15564030-1248,00.html.
+
+# Northern Territory
+
+# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
+# # The NORTHERN TERRITORY..  [ Courtesy N.T. Dept of the Chief Minister ]
+# #					[ Nov 1990 ]
+# #	N.T. have never utilised any DST due to sub-tropical/tropical location.
+# ...
+# Zone        Australia/North         9:30    -       CST
+
+# From Bradley White (1991-03-04):
+# A recent excerpt from an Australian newspaper...
+# the Northern Territory do[es] not have daylight saving.
+
+# Western Australia
+
+# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
+# #  The state of WESTERN AUSTRALIA..  [ Courtesy W.A. dept Premier+Cabinet ]
+# #						[ Nov 1990 ]
+# #	W.A. suffers from a great deal of public and political opposition to
+# #	DST in principle. A bill is brought before parliament in most years, but
+# #	usually defeated either in the upper house, or in party caucus
+# #	before reaching parliament.
+# ...
+# Zone	Australia/West		8:00	AW	%sST
+# ...
+# Rule	AW	1974	only	-	Oct	lastSun	2:00	1:00	D
+# Rule	AW	1975	only	-	Mar	Sun>=1	3:00	0	W
+# Rule	AW	1983	only	-	Oct	lastSun	2:00	1:00	D
+# Rule	AW	1984	only	-	Mar	Sun>=1	3:00	0	W
+
+# From Bradley White (1991-03-04):
+# A recent excerpt from an Australian newspaper...
+# Western Australia...do[es] not have daylight saving.
+
+# From John D. Newman via Bradley White (1991-11-02):
+# Western Australia is still on "winter time". Some DH in Sydney
+# rang me at home a few days ago at 6.00am. (He had just arrived at
+# work at 9.00am.)
+# W.A. is switching to Summer Time on Nov 17th just to confuse
+# everybody again.
+
+# From Arthur David Olson (1992-03-08):
+# The 1992 ending date used in the rules is a best guess;
+# it matches what was used in the past.
+
+# 
+# The Australian Bureau of Meteorology FAQ
+#  (1999-09-27) writes that Giles Meteorological Station uses
+# South Australian time even though it's located in Western Australia.
+
+# Queensland
+# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
+# #   The state of QUEENSLAND.. [ Courtesy Qld. Dept Premier Econ&Trade Devel ]
+# #						[ Dec 1990 ]
+# ...
+# Zone	Australia/Queensland	10:00	AQ	%sST
+# ...
+# Rule	AQ	1971	only	-	Oct	lastSun	2:00	1:00	D
+# Rule	AQ	1972	only	-	Feb	lastSun	3:00	0	E
+# Rule	AQ	1989	max	-	Oct	lastSun	2:00	1:00	D
+# Rule	AQ	1990	max	-	Mar	Sun>=1	3:00	0	E
+
+# From Bradley White (1989-12-24):
+# "Australia/Queensland" now observes daylight time (i.e. from
+# October 1989).
+
+# From Bradley White (1991-03-04):
+# A recent excerpt from an Australian newspaper...
+# ...Queensland...[has] agreed to end daylight saving
+# at 3am tomorrow (March 3)...
+
+# From John Mackin (1991-03-06):
+# I can certainly confirm for my part that Daylight Saving in NSW did in fact
+# end on Sunday, 3 March.  I don't know at what hour, though.  (It surprised
+# me.)
+
+# From Bradley White (1992-03-08):
+# ...there was recently a referendum in Queensland which resulted
+# in the experimental daylight saving system being abandoned. So, ...
+# ...
+# Rule	QLD	1989	1991	-	Oct	lastSun	2:00	1:00	D
+# Rule	QLD	1990	1992	-	Mar	Sun>=1	3:00	0	S
+# ...
+
+# From Arthur David Olson (1992-03-08):
+# The chosen rules the union of the 1971/1972 change and the 1989-1992 changes.
+
+# From Christopher Hunt (2006-11-21), after an advance warning
+# from Jesper Norgaard Welen (2006-11-01):
+# WA are trialing DST for three years.
+# 
+
+# From Rives McDow (2002-04-09):
+# The most interesting region I have found consists of three towns on the
+# southern coast....  South Australia observes daylight saving time; Western
+# Australia does not.  The two states are one and a half hours apart.  The
+# residents decided to forget about this nonsense of changing the clock so
+# much and set the local time 20 hours and 45 minutes from the
+# international date line, or right in the middle of the time of South
+# Australia and Western Australia....
+#
+# From Paul Eggert (2002-04-09):
+# This is confirmed by the section entitled
+# "What's the deal with time zones???" in
+# .
+#
+# From Alex Livingston (2006-12-07):
+# ... it was just on four years ago that I drove along the Eyre Highway,
+# which passes through eastern Western Australia close to the southern
+# coast of the continent.
+#
+# I paid particular attention to the time kept there. There can be no
+# dispute that UTC+08:45 was considered "the time" from the border
+# village just inside the border with South Australia to as far west
+# as just east of Caiguna. There can also be no dispute that Eucla is
+# the largest population centre in this zone....
+#
+# Now that Western Australia is observing daylight saving, the
+# question arose whether this part of the state would follow suit. I
+# just called the border village and confirmed that indeed they have,
+# meaning that they are now observing UTC+09:45.
+#
+# (2006-12-09):
+# I personally doubt that either experimentation with daylight saving
+# in WA or its introduction in SA had anything to do with the genesis
+# of this time zone.  My hunch is that it's been around since well
+# before 1975.  I remember seeing it noted on road maps decades ago.
+
+# From Paul Eggert (2006-12-15):
+# For lack of better info, assume the tradition dates back to the
+# introduction of standard time in 1895.
+
+
+# southeast Australia
+#
+# From Paul Eggert (2007-07-23):
+# Starting autumn 2008 Victoria, NSW, South Australia, Tasmania and the ACT
+# end DST the first Sunday in April and start DST the first Sunday in October.
+# http://www.theage.com.au/news/national/daylight-savings-to-span-six-months/2007/06/27/1182623966703.html
+
+
+# South Australia
+
+# From Bradley White (1991-03-04):
+# A recent excerpt from an Australian newspaper...
+# ...South Australia...[has] agreed to end daylight saving
+# at 3am tomorrow (March 3)...
+
+# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
+# #   The state of SOUTH AUSTRALIA....[ Courtesy of S.A. Dept of Labour ]
+# #						[ Nov 1990 ]
+# ...
+# Zone	Australia/South		9:30	AS	%sST
+# ...
+# Rule	 AS	1971	max	-	Oct	lastSun	2:00	1:00	D
+# Rule	 AS	1972	1985	-	Mar	Sun>=1	3:00	0	C
+# Rule	 AS	1986	1990	-	Mar	Sun>=15	3:00	0	C
+# Rule	 AS	1991	max	-	Mar	Sun>=1	3:00	0	C
+
+# From Bradley White (1992-03-11):
+# Recent correspondence with a friend in Adelaide
+# contained the following exchange:  "Due to the Adelaide Festival,
+# South Australia delays setting back our clocks for a few weeks."
+
+# From Robert Elz (1992-03-13):
+# I heard that apparently (or at least, it appears that)
+# South Aus will have an extra 3 weeks daylight saving every even
+# numbered year (from 1990).  That's when the Adelaide Festival
+# is on...
+
+# From Robert Elz (1992-03-16, 00:57:07 +1000):
+# DST didn't end in Adelaide today (yesterday)....
+# But whether it's "4th Sunday" or "2nd last Sunday" I have no idea whatever...
+# (it's just as likely to be "the Sunday we pick for this year"...).
+
+# From Bradley White (1994-04-11):
+# If Sun, 15 March, 1992 was at +1030 as kre asserts, but yet Sun, 20 March,
+# 1994 was at +0930 as John Connolly's customer seems to assert, then I can
+# only conclude that the actual rule is more complicated....
+
+# From John Warburton (1994-10-07):
+# The new Daylight Savings dates for South Australia ...
+# was gazetted in the Government Hansard on Sep 26 1994....
+# start on last Sunday in October and end in last sunday in March.
+
+# From Paul Eggert (2007-07-23):
+# See "southeast Australia" above for 2008 and later.
+
+# Tasmania
+
+# The rules for 1967 through 1991 were reported by George Shepherd
+# via Simon Woodhead via Robert Elz (1991-03-06):
+# #  The state of TASMANIA.. [Courtesy Tasmanian Dept of Premier + Cabinet ]
+# #					[ Nov 1990 ]
+
+# From Bill Hart via Guy Harris (1991-10-10):
+# Oh yes, the new daylight savings rules are uniquely tasmanian, we have
+# 6 weeks a year now when we are out of sync with the rest of Australia
+# (but nothing new about that).
+
+# From Alex Livingston (1999-10-04):
+# I heard on the ABC (Australian Broadcasting Corporation) radio news on the
+# (long) weekend that Tasmania, which usually goes its own way in this regard,
+# has decided to join with most of NSW, the ACT, and most of Victoria
+# (Australia) and start daylight saving on the last Sunday in August in 2000
+# instead of the first Sunday in October.
+
+# Sim Alam (2000-07-03) reported a legal citation for the 2000/2001 rules:
+# http://www.thelaw.tas.gov.au/fragview/42++1968+GS3A@EN+2000070300
+
+# From Paul Eggert (2007-07-23):
+# See "southeast Australia" above for 2008 and later.
+
+# Victoria
+
+# The rules for 1971 through 1991 were reported by George Shepherd
+# via Simon Woodhead via Robert Elz (1991-03-06):
+# #   The state of VICTORIA.. [ Courtesy of Vic. Dept of Premier + Cabinet ]
+# #						[ Nov 1990 ]
+
+# From Scott Harrington (2001-08-29):
+# On KQED's "City Arts and Lectures" program last night I heard an
+# interesting story about daylight savings time.  Dr. John Heilbron was
+# discussing his book "The Sun in the Church: Cathedrals as Solar
+# Observatories"[1], and in particular the Shrine of Remembrance[2] located
+# in Melbourne, Australia.
+#
+# Apparently the shrine's main purpose is a beam of sunlight which
+# illuminates a special spot on the floor at the 11th hour of the 11th day
+# of the 11th month (Remembrance Day) every year in memory of Australia's
+# fallen WWI soldiers.  And if you go there on Nov. 11, at 11am local time,
+# you will indeed see the sunbeam illuminate the special spot at the
+# expected time.
+#
+# However, that is only because of some special mirror contraption that had
+# to be employed, since due to daylight savings time, the true solar time of
+# the remembrance moment occurs one hour later (or earlier?).  Perhaps
+# someone with more information on this jury-rig can tell us more.
+#
+# [1] http://www.hup.harvard.edu/catalog/HEISUN.html
+# [2] http://www.shrine.org.au
+
+# From Paul Eggert (2007-07-23):
+# See "southeast Australia" above for 2008 and later.
+
+# New South Wales
+
+# From Arthur David Olson:
+# New South Wales and subjurisdictions have their own ideas of a fun time.
+# Based on law library research by John Mackin,
+# who notes:
+#	In Australia, time is not legislated federally, but rather by the
+#	individual states.  Thus, while such terms as ``Eastern Standard Time''
+#	[I mean, of course, Australian EST, not any other kind] are in common
+#	use, _they have NO REAL MEANING_, as they are not defined in the
+#	legislation.  This is very important to understand.
+#	I have researched New South Wales time only...
+
+# From Eric Ulevik (1999-05-26):
+# DST will start in NSW on the last Sunday of August, rather than the usual
+# October in 2000.  [See: Matthew Moore,
+# 
+# Two months more daylight saving
+# 
+# Sydney Morning Herald (1999-05-26).]
+
+# From Paul Eggert (1999-09-27):
+# See the following official NSW source:
+# 
+# Daylight Saving in New South Wales.
+# 
+#
+# Narrabri Shire (NSW) council has announced it will ignore the extension of
+# daylight saving next year.  See:
+# 
+# Narrabri Council to ignore daylight saving
+#  (1999-07-22).  For now, we'll wait to see if this really happens.
+#
+# Victoria will following NSW.  See:
+# 
+# Vic to extend daylight saving
+#  (1999-07-28).
+#
+# However, South Australia rejected the DST request.  See:
+# 
+# South Australia rejects Olympics daylight savings request
+#  (1999-07-19).
+#
+# Queensland also will not observe DST for the Olympics.  See:
+# 
+# Qld says no to daylight savings for Olympics
+#  (1999-06-01), which quotes Queensland Premier Peter Beattie as saying
+# ``Look you've got to remember in my family when this came up last time
+# I voted for it, my wife voted against it and she said to me it's all very
+# well for you, you don't have to worry about getting the children out of
+# bed, getting them to school, getting them to sleep at night.
+# I've been through all this argument domestically...my wife rules.''
+#
+# Broken Hill will stick with South Australian time in 2000.  See:
+# 
+# Broken Hill to be behind the times
+#  (1999-07-21).
+
+# IATA SSIM (1998-09) says that the spring 2000 change for Australian
+# Capital Territory, New South Wales except Lord Howe Island and Broken
+# Hill, and Victoria will be August 27, presumably due to the Sydney Olympics.
+
+# From Eric Ulevik, referring to Sydney's Sun Herald (2000-08-13), page 29:
+# The Queensland Premier Peter Beattie is encouraging northern NSW
+# towns to use Queensland time.
+
+# From Paul Eggert (2007-07-23):
+# See "southeast Australia" above for 2008 and later.
+
+# Yancowinna
+
+# From John Mackin (1989-01-04):
+# `Broken Hill' means the County of Yancowinna.
+
+# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
+# # YANCOWINNA..  [ Confirmation courtesy of Broken Hill Postmaster ]
+# #					[ Dec 1990 ]
+# ...
+# # Yancowinna uses Central Standard Time, despite [its] location on the
+# # New South Wales side of the S.A. border. Most business and social dealings
+# # are with CST zones, therefore CST is legislated by local government
+# # although the switch to Summer Time occurs in line with N.S.W. There have
+# # been years when this did not apply, but the historical data is not
+# # presently available.
+# Zone	Australia/Yancowinna	9:30	 AY	%sST
+# ...
+# Rule	 AY	1971	1985	-	Oct	lastSun	2:00	1:00	D
+# Rule	 AY	1972	only	-	Feb	lastSun	3:00	0	C
+# [followed by other Rules]
+
+# Lord Howe Island
+
+# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
+# LHI...		[ Courtesy of Pauline Van Winsen ]
+#					[ Dec 1990 ]
+# Lord Howe Island is located off the New South Wales coast, and is half an
+# hour ahead of NSW time.
+
+# From James Lonergan, Secretary, Lord Howe Island Board (2000-01-27):
+# Lord Howe Island summer time in 2000/2001 will commence on the same
+# date as the rest of NSW (i.e. 2000-08-27).  For your information the
+# Lord Howe Island Board (controlling authority for the Island) is
+# seeking the community's views on various options for summer time
+# arrangements on the Island, e.g. advance clocks by 1 full hour
+# instead of only 30 minutes.  [Dependent] on the wishes of residents
+# the Board may approach the NSW government to change the existing
+# arrangements.  The starting date for summer time on the Island will
+# however always coincide with the rest of NSW.
+
+# From James Lonergan, Secretary, Lord Howe Island Board (2000-10-25):
+# Lord Howe Island advances clocks by 30 minutes during DST in NSW and retards
+# clocks by 30 minutes when DST finishes. Since DST was most recently
+# introduced in NSW, the "changeover" time on the Island has been 02:00 as
+# shown on clocks on LHI. I guess this means that for 30 minutes at the start
+# of DST, LHI is actually 1 hour ahead of the rest of NSW.
+
+# From Paul Eggert (2006-03-22):
+# For Lord Howe dates we use Shanks & Pottenger through 1989, and
+# Lonergan thereafter.  For times we use Lonergan.
+
+# From Paul Eggert (2007-07-23):
+# See "southeast Australia" above for 2008 and later.
+
+# From Steffen Thorsen (2009-04-28):
+# According to the official press release, South Australia's extended daylight
+# saving period will continue with the same rules as used during the 2008-2009
+# summer (southern hemisphere).
+#
+# From
+# 
+# http://www.safework.sa.gov.au/uploaded_files/DaylightDatesSet.pdf
+# 
+# The extended daylight saving period that South Australia has been trialling
+# for over the last year is now set to be ongoing.
+# Daylight saving will continue to start on the first Sunday in October each
+# year and finish on the first Sunday in April the following year.
+# Industrial Relations Minister, Paul Caica, says this provides South Australia
+# with a consistent half hour time difference with NSW, Victoria, Tasmania and
+# the ACT for all 52 weeks of the year...
+#
+# We have a wrap-up here:
+# 
+# http://www.timeanddate.com/news/time/south-australia-extends-dst.html
+# 
+###############################################################################
+
+# New Zealand
+
+# From Mark Davies (1990-10-03):
+# the 1989/90 year was a trial of an extended "daylight saving" period.
+# This trial was deemed successful and the extended period adopted for
+# subsequent years (with the addition of a further week at the start).
+# source -- phone call to Ministry of Internal Affairs Head Office.
+
+# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
+# # The Country of New Zealand   (Australia's east island -) Gee they hate that!
+# #				   or is Australia the west island of N.Z.
+# #	[ courtesy of Geoff Tribble.. Auckland N.Z. ]
+# #				[ Nov 1990 ]
+# ...
+# Rule	NZ      1974    1988	-	Oct	lastSun	2:00	1:00	D
+# Rule	NZ	1989	max	-	Oct	Sun>=1	2:00	1:00	D
+# Rule	NZ      1975    1989	-	Mar	Sun>=1	3:00	0	S
+# Rule	NZ	1990	max	-	Mar	lastSun	3:00	0	S
+# ...
+# Zone	NZ			12:00	NZ		NZ%sT	# New Zealand
+# Zone	NZ-CHAT			12:45	-		NZ-CHAT # Chatham Island
+
+# From Arthur David Olson (1992-03-08):
+# The chosen rules use the Davies October 8 values for the start of DST in 1989
+# rather than the October 1 value.
+
+# From Paul Eggert (1995-12-19);
+# Shank & Pottenger report 2:00 for all autumn changes in Australia and NZ.
+# Robert Uzgalis writes that the New Zealand Daylight
+# Savings Time Order in Council dated 1990-06-18 specifies 2:00 standard
+# time on both the first Sunday in October and the third Sunday in March.
+# As with Australia, we'll assume the tradition is 2:00s, not 2:00.
+#
+# From Paul Eggert (2006-03-22):
+# The Department of Internal Affairs (DIA) maintains a brief history,
+# as does Carol Squires; see tz-link.htm for the full references.
+# Use these sources in preference to Shanks & Pottenger.
+#
+# For Chatham, IATA SSIM (1991/1999) gives the NZ rules but with
+# transitions at 2:45 local standard time; this confirms that Chatham
+# is always exactly 45 minutes ahead of Auckland.
+
+# From Colin Sharples (2007-04-30):
+# DST will now start on the last Sunday in September, and end on the
+# first Sunday in April.  The changes take effect this year, meaning
+# that DST will begin on 2007-09-30 2008-04-06.
+# http://www.dia.govt.nz/diawebsite.nsf/wpg_URL/Services-Daylight-Saving-Daylight-saving-to-be-extended
+
+###############################################################################
+
+
+# Fiji
+
+# Howse writes (p 153) that in 1879 the British governor of Fiji
+# enacted an ordinance standardizing the islands on Antipodean Time
+# instead of the American system (which was one day behind).
+
+# From Rives McDow (1998-10-08):
+# Fiji will introduce DST effective 0200 local time, 1998-11-01
+# until 0300 local time 1999-02-28.  Each year the DST period will
+# be from the first Sunday in November until the last Sunday in February.
+
+# From Paul Eggert (2000-01-08):
+# IATA SSIM (1999-09) says DST ends 0100 local time.  Go with McDow.
+
+# From the BBC World Service (1998-10-31 11:32 UTC):
+# The Fijiian government says the main reasons for the time change is to
+# improve productivity and reduce road accidents.  But correspondents say it
+# also hopes the move will boost Fiji's ability to compete with other pacific
+# islands in the effort to attract tourists to witness the dawning of the new
+# millenium.
+
+# http://www.fiji.gov.fj/press/2000_09/2000_09_13-05.shtml (2000-09-13)
+# reports that Fiji has discontinued DST.
+
+# Johnston
+
+# Johnston data is from usno1995.
+
+
+# Kiribati
+
+# From Paul Eggert (1996-01-22):
+# Today's _Wall Street Journal_ (page 1) reports that Kiribati
+# ``declared it the same day [throughout] the country as of Jan. 1, 1995''
+# as part of the competition to be first into the 21st century.
+
+
+# Kwajalein
+
+# In comp.risks 14.87 (26 August 1993), Peter Neumann writes:
+# I wonder what happened in Kwajalein, where there was NO Friday,
+# 1993-08-20.  Thursday night at midnight Kwajalein switched sides with
+# respect to the International Date Line, to rejoin its fellow islands,
+# going from 11:59 p.m. Thursday to 12:00 m. Saturday in a blink.
+
+
+# N Mariana Is, Guam
+
+# Howse writes (p 153) ``The Spaniards, on the other hand, reached the
+# Philippines and the Ladrones from America,'' and implies that the Ladrones
+# (now called the Marianas) kept American date for quite some time.
+# For now, we assume the Ladrones switched at the same time as the Philippines;
+# see Asia/Manila.
+
+# US Public Law 106-564 (2000-12-23) made UTC+10 the official standard time,
+# under the name "Chamorro Standard Time".  There is no official abbreviation,
+# but Congressman Robert A. Underwood, author of the bill that became law,
+# wrote in a press release (2000-12-27) that he will seek the use of "ChST".
+
+
+# Micronesia
+
+# Alan Eugene Davis writes (1996-03-16),
+# ``I am certain, having lived there for the past decade, that "Truk"
+# (now properly known as Chuuk) ... is in the time zone GMT+10.''
+#
+# Shanks & Pottenger write that Truk switched from UTC+10 to UTC+11
+# on 1978-10-01; ignore this for now.
+
+# From Paul Eggert (1999-10-29):
+# The Federated States of Micronesia Visitors Board writes in
+# 
+# The Federated States of Micronesia - Visitor Information
+#  (1999-01-26)
+# that Truk and Yap are UTC+10, and Ponape and Kosrae are UTC+11.
+# We don't know when Kosrae switched from UTC+12; assume January 1 for now.
+
+
+# Midway
+
+# From Charles T O'Connor, KMTH DJ (1956),
+# quoted in the KTMH section of the Radio Heritage Collection
+#  (2002-12-31):
+# For the past two months we've been on what is known as Daylight
+# Saving Time.  This time has put us on air at 5am in the morning,
+# your time down there in New Zealand.  Starting September 2, 1956
+# we'll again go back to Standard Time.  This'll mean that we'll go to
+# air at 6am your time.
+#
+# From Paul Eggert (2003-03-23):
+# We don't know the date of that quote, but we'll guess they
+# started DST on June 3.  Possibly DST was observed other years
+# in Midway, but we have no record of it.
+
+
+# Pitcairn
+
+# From Rives McDow (1999-11-08):
+# A Proclamation was signed by the Governor of Pitcairn on the 27th March 1998
+# with regard to Pitcairn Standard Time.  The Proclamation is as follows.
+#
+#	The local time for general purposes in the Islands shall be
+#	Co-ordinated Universal time minus 8 hours and shall be known
+#	as Pitcairn Standard Time.
+#
+# ... I have also seen Pitcairn listed as UTC minus 9 hours in several
+# references, and can only assume that this was an error in interpretation
+# somehow in light of this proclamation.
+
+# From Rives McDow (1999-11-09):
+# The Proclamation regarding Pitcairn time came into effect on 27 April 1998
+# ... at midnight.
+
+# From Howie Phelps (1999-11-10), who talked to a Pitcairner via shortwave:
+# Betty Christian told me yesterday that their local time is the same as
+# Pacific Standard Time. They used to be 1/2 hour different from us here in
+# Sacramento but it was changed a couple of years ago.
+
+
+# Samoa
+
+# Howse writes (p 153, citing p 10 of the 1883-11-18 New York Herald)
+# that in 1879 the King of Samoa decided to change
+# ``the date in his kingdom from the Antipodean to the American system,
+# ordaining -- by a masterpiece of diplomatic flattery -- that
+# the Fourth of July should be celebrated twice in that year.''
+
+
+# Tonga
+
+# From Paul Eggert (1996-01-22):
+# Today's _Wall Street Journal_ (p 1) reports that ``Tonga has been plotting
+# to sneak ahead of [New Zealanders] by introducing daylight-saving time.''
+# Since Kiribati has moved the Date Line it's not clear what Tonga will do.
+
+# Don Mundell writes in the 1997-02-20 Tonga Chronicle
+# 
+# How Tonga became `The Land where Time Begins'
+# :
+
+# Until 1941 Tonga maintained a standard time 50 minutes ahead of NZST
+# 12 hours and 20 minutes ahead of GMT.  When New Zealand adjusted its
+# standard time in 1940s, Tonga had the choice of subtracting from its
+# local time to come on the same standard time as New Zealand or of
+# advancing its time to maintain the differential of 13 degrees
+# (approximately 50 minutes ahead of New Zealand time).
+#
+# Because His Majesty King Taufa'ahau Tupou IV, then Crown Prince
+# Tungi, preferred to ensure Tonga's title as the land where time
+# begins, the Legislative Assembly approved the latter change.
+#
+# But some of the older, more conservative members from the outer
+# islands objected. "If at midnight on Dec. 31, we move ahead 40
+# minutes, as your Royal Highness wishes, what becomes of the 40
+# minutes we have lost?"
+#
+# The Crown Prince, presented an unanswerable argument: "Remember that
+# on the World Day of Prayer, you would be the first people on Earth
+# to say your prayers in the morning."
+
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger say the transition was on 1968-10-01; go with Mundell.
+
+# From Eric Ulevik (1999-05-03):
+# Tonga's director of tourism, who is also secretary of the National Millenium
+# Committee, has a plan to get Tonga back in front.
+# He has proposed a one-off move to tropical daylight saving for Tonga from
+# October to March, which has won approval in principle from the Tongan
+# Government.
+
+# From Steffen Thorsen (1999-09-09):
+# * Tonga will introduce DST in November
+#
+# I was given this link by John Letts:
+# 
+# http://news.bbc.co.uk/hi/english/world/asia-pacific/newsid_424000/424764.stm
+# 
+#
+# I have not been able to find exact dates for the transition in November
+# yet. By reading this article it seems like Fiji will be 14 hours ahead
+# of UTC as well, but as far as I know Fiji will only be 13 hours ahead
+# (12 + 1 hour DST).
+
+# From Arthur David Olson (1999-09-20):
+# According to 
+# http://www.tongaonline.com/news/sept1799.html
+# :
+# "Daylight Savings Time will take effect on Oct. 2 through April 15, 2000
+# and annually thereafter from the first Saturday in October through the
+# third Saturday of April.  Under the system approved by Privy Council on
+# Sept. 10, clocks must be turned ahead one hour on the opening day and
+# set back an hour on the closing date."
+# Alas, no indication of the time of day.
+
+# From Rives McDow (1999-10-06):
+# Tonga started its Daylight Saving on Saturday morning October 2nd at 0200am.
+# Daylight Saving ends on April 16 at 0300am which is Sunday morning.
+
+# From Steffen Thorsen (2000-10-31):
+# Back in March I found a notice on the website http://www.tongaonline.com
+# that Tonga changed back to standard time one month early, on March 19
+# instead of the original reported date April 16. Unfortunately, the article
+# is no longer available on the site, and I did not make a copy of the
+# text, and I have forgotten to report it here.
+# (Original URL was: http://www.tongaonline.com/news/march162000.htm )
+
+# From Rives McDow (2000-12-01):
+# Tonga is observing DST as of 2000-11-04 and will stop on 2001-01-27.
+
+# From Sione Moala-Mafi (2001-09-20) via Rives McDow:
+# At 2:00am on the first Sunday of November, the standard time in the Kingdom
+# shall be moved forward by one hour to 3:00am.  At 2:00am on the last Sunday
+# of January the standard time in the Kingdom shall be moved backward by one
+# hour to 1:00am.
+
+# From Pulu 'Anau (2002-11-05):
+# The law was for 3 years, supposedly to get renewed.  It wasn't.
+
+
+# Wake
+
+# From Vernice Anderson, Personal Secretary to Philip Jessup,
+# US Ambassador At Large (oral history interview, 1971-02-02):
+#
+# Saturday, the 14th [of October, 1950] -- ...  The time was all the
+# more confusing at that point, because we had crossed the
+# International Date Line, thus getting two Sundays.  Furthermore, we
+# discovered that Wake Island had two hours of daylight saving time
+# making calculation of time in Washington difficult if not almost
+# impossible.
+#
+# http://www.trumanlibrary.org/wake/meeting.htm
+
+# From Paul Eggert (2003-03-23):
+# We have no other report of DST in Wake Island, so omit this info for now.
+
+###############################################################################
+
+# The International Date Line
+
+# From Gwillim Law (2000-01-03):
+#
+# The International Date Line is not defined by any international standard,
+# convention, or treaty.  Mapmakers are free to draw it as they please.
+# Reputable mapmakers will simply ensure that every point of land appears on
+# the correct side of the IDL, according to the date legally observed there.
+#
+# When Kiribati adopted a uniform date in 1995, thereby moving the Phoenix and
+# Line Islands to the west side of the IDL (or, if you prefer, moving the IDL
+# to the east side of the Phoenix and Line Islands), I suppose that most
+# mapmakers redrew the IDL following the boundary of Kiribati.  Even that line
+# has a rather arbitrary nature.  The straight-line boundaries between Pacific
+# island nations that are shown on many maps are based on an international
+# convention, but are not legally binding national borders.... The date is
+# governed by the IDL; therefore, even on the high seas, there may be some
+# places as late as fourteen hours later than UTC.  And, since the IDL is not
+# an international standard, there are some places on the high seas where the
+# correct date is ambiguous.
+
+# From Wikipedia  (2005-08-31):
+# Before 1920, all ships kept local apparent time on the high seas by setting
+# their clocks at night or at the morning sight so that, given the ship's
+# speed and direction, it would be 12 o'clock when the Sun crossed the ship's
+# meridian (12 o'clock = local apparent noon).  During 1917, at the
+# Anglo-French Conference on Time-keeping at Sea, it was recommended that all
+# ships, both military and civilian, should adopt hourly standard time zones
+# on the high seas.  Whenever a ship was within the territorial waters of any
+# nation it would use that nation's standard time.  The captain was permitted
+# to change his ship's clocks at a time of his choice following his ship's
+# entry into another zone time--he often chose midnight.  These zones were
+# adopted by all major fleets between 1920 and 1925 but not by many
+# independent merchant ships until World War II.
+
+# From Paul Eggert, using references suggested by Oscar van Vlijmen
+# (2005-03-20):
+#
+# The American Practical Navigator (2002)
+# 
+# talks only about the 180-degree meridian with respect to ships in
+# international waters; it ignores the international date line.
diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/backward b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/backward
new file mode 100644
index 0000000..90477e9
--- /dev/null
+++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/backward
@@ -0,0 +1,117 @@
+# 
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
+
+# This file provides links between current names for time zones
+# and their old names.  Many names changed in late 1993.
+
+Link	Africa/Asmara		Africa/Asmera
+Link	Africa/Bamako		Africa/Timbuktu
+Link	America/Argentina/Catamarca	America/Argentina/ComodRivadavia
+Link	America/Adak		America/Atka
+Link	America/Argentina/Buenos_Aires	America/Buenos_Aires
+Link	America/Argentina/Catamarca	America/Catamarca
+Link	America/Atikokan	America/Coral_Harbour
+Link	America/Argentina/Cordoba	America/Cordoba
+Link	America/Tijuana		America/Ensenada
+Link	America/Indiana/Indianapolis	America/Fort_Wayne
+Link	America/Indiana/Indianapolis	America/Indianapolis
+Link	America/Argentina/Jujuy	America/Jujuy
+Link	America/Indiana/Knox	America/Knox_IN
+Link	America/Kentucky/Louisville	America/Louisville
+Link	America/Argentina/Mendoza	America/Mendoza
+Link	America/Rio_Branco	America/Porto_Acre
+Link	America/Argentina/Cordoba	America/Rosario
+Link	America/St_Thomas	America/Virgin
+Link	Asia/Ashgabat		Asia/Ashkhabad
+Link	Asia/Chongqing		Asia/Chungking
+Link	Asia/Dhaka		Asia/Dacca
+Link	Asia/Kathmandu		Asia/Katmandu
+Link	Asia/Kolkata		Asia/Calcutta
+Link	Asia/Macau		Asia/Macao
+Link	Asia/Jerusalem		Asia/Tel_Aviv
+Link	Asia/Ho_Chi_Minh	Asia/Saigon
+Link	Asia/Thimphu		Asia/Thimbu
+Link	Asia/Makassar		Asia/Ujung_Pandang
+Link	Asia/Ulaanbaatar	Asia/Ulan_Bator
+Link	Atlantic/Faroe		Atlantic/Faeroe
+Link	Europe/Oslo		Atlantic/Jan_Mayen
+Link	Australia/Sydney	Australia/ACT
+Link	Australia/Sydney	Australia/Canberra
+Link	Australia/Lord_Howe	Australia/LHI
+Link	Australia/Sydney	Australia/NSW
+Link	Australia/Darwin	Australia/North
+Link	Australia/Brisbane	Australia/Queensland
+Link	Australia/Adelaide	Australia/South
+Link	Australia/Hobart	Australia/Tasmania
+Link	Australia/Melbourne	Australia/Victoria
+Link	Australia/Perth		Australia/West
+Link	Australia/Broken_Hill	Australia/Yancowinna
+Link	America/Rio_Branco	Brazil/Acre
+Link	America/Noronha		Brazil/DeNoronha
+Link	America/Sao_Paulo	Brazil/East
+Link	America/Manaus		Brazil/West
+Link	America/Halifax		Canada/Atlantic
+Link	America/Winnipeg	Canada/Central
+Link	America/Regina		Canada/East-Saskatchewan
+Link	America/Toronto		Canada/Eastern
+Link	America/Edmonton	Canada/Mountain
+Link	America/St_Johns	Canada/Newfoundland
+Link	America/Vancouver	Canada/Pacific
+Link	America/Regina		Canada/Saskatchewan
+Link	America/Whitehorse	Canada/Yukon
+Link	America/Santiago	Chile/Continental
+Link	Pacific/Easter		Chile/EasterIsland
+Link	America/Havana		Cuba
+Link	Africa/Cairo		Egypt
+Link	Europe/Dublin		Eire
+Link	Europe/London		Europe/Belfast
+Link	Europe/Chisinau		Europe/Tiraspol
+Link	Europe/London		GB
+Link	Europe/London		GB-Eire
+Link	Etc/GMT			GMT+0
+Link	Etc/GMT			GMT-0
+Link	Etc/GMT			GMT0
+Link	Etc/GMT			Greenwich
+Link	Asia/Hong_Kong		Hongkong
+Link	Atlantic/Reykjavik	Iceland
+Link	Asia/Tehran		Iran
+Link	Asia/Jerusalem		Israel
+Link	America/Jamaica		Jamaica
+Link	Asia/Tokyo		Japan
+Link	Pacific/Kwajalein	Kwajalein
+Link	Africa/Tripoli		Libya
+Link	America/Tijuana		Mexico/BajaNorte
+Link	America/Mazatlan	Mexico/BajaSur
+Link	America/Mexico_City	Mexico/General
+Link	Pacific/Auckland	NZ
+Link	Pacific/Chatham		NZ-CHAT
+Link	America/Denver		Navajo
+Link	Asia/Shanghai		PRC
+Link	Pacific/Pago_Pago	Pacific/Samoa
+Link	Pacific/Chuuk		Pacific/Yap
+Link	Pacific/Chuuk		Pacific/Truk
+Link	Pacific/Pohnpei		Pacific/Ponape
+Link	Europe/Warsaw		Poland
+Link	Europe/Lisbon		Portugal
+Link	Asia/Taipei		ROC
+Link	Asia/Seoul		ROK
+Link	Asia/Singapore		Singapore
+Link	Europe/Istanbul		Turkey
+Link	Etc/UCT			UCT
+Link	America/Anchorage	US/Alaska
+Link	America/Adak		US/Aleutian
+Link	America/Phoenix		US/Arizona
+Link	America/Chicago		US/Central
+Link	America/Indiana/Indianapolis	US/East-Indiana
+Link	America/New_York	US/Eastern
+Link	Pacific/Honolulu	US/Hawaii
+Link	America/Indiana/Knox	US/Indiana-Starke
+Link	America/Detroit		US/Michigan
+Link	America/Denver		US/Mountain
+Link	America/Los_Angeles	US/Pacific
+Link	Pacific/Pago_Pago	US/Samoa
+Link	Etc/UTC			UTC
+Link	Etc/UTC			Universal
+Link	Europe/Moscow		W-SU
+Link	Etc/UTC			Zulu
diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/etcetera b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/etcetera
new file mode 100644
index 0000000..f6a3b73
--- /dev/null
+++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/etcetera
@@ -0,0 +1,81 @@
+# 
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
+
+# These entries are mostly present for historical reasons, so that
+# people in areas not otherwise covered by the tz files could "zic -l"
+# to a time zone that was right for their area.  These days, the
+# tz files cover almost all the inhabited world, and the only practical
+# need now for the entries that are not on UTC are for ships at sea
+# that cannot use POSIX TZ settings.
+
+Zone	Etc/GMT		0	-	GMT
+Zone	Etc/UTC		0	-	UTC
+Zone	Etc/UCT		0	-	UCT
+
+# The following link uses older naming conventions,
+# but it belongs here, not in the file `backward',
+# as functions like gmtime load the "GMT" file to handle leap seconds properly.
+# We want this to work even on installations that omit the other older names.
+Link	Etc/GMT				GMT
+
+Link	Etc/UTC				Etc/Universal
+Link	Etc/UTC				Etc/Zulu
+
+Link	Etc/GMT				Etc/Greenwich
+Link	Etc/GMT				Etc/GMT-0
+Link	Etc/GMT				Etc/GMT+0
+Link	Etc/GMT				Etc/GMT0
+
+# We use POSIX-style signs in the Zone names and the output abbreviations,
+# even though this is the opposite of what many people expect.
+# POSIX has positive signs west of Greenwich, but many people expect
+# positive signs east of Greenwich.  For example, TZ='Etc/GMT+4' uses
+# the abbreviation "GMT+4" and corresponds to 4 hours behind UTC
+# (i.e. west of Greenwich) even though many people would expect it to
+# mean 4 hours ahead of UTC (i.e. east of Greenwich).
+#
+# In the draft 5 of POSIX 1003.1-200x, the angle bracket notation allows for
+# TZ='+4'; if you want time zone abbreviations conforming to
+# ISO 8601 you can use TZ='<-0400>+4'.  Thus the commonly-expected
+# offset is kept within the angle bracket (and is used for display)
+# while the POSIX sign is kept outside the angle bracket (and is used
+# for calculation).
+#
+# Do not use a TZ setting like TZ='GMT+4', which is four hours behind
+# GMT but uses the completely misleading abbreviation "GMT".
+
+# Earlier incarnations of this package were not POSIX-compliant,
+# and had lines such as
+#		Zone	GMT-12		-12	-	GMT-1200
+# We did not want things to change quietly if someone accustomed to the old
+# way does a
+#		zic -l GMT-12
+# so we moved the names into the Etc subdirectory.
+
+Zone	Etc/GMT-14	14	-	GMT-14	# 14 hours ahead of GMT
+Zone	Etc/GMT-13	13	-	GMT-13
+Zone	Etc/GMT-12	12	-	GMT-12
+Zone	Etc/GMT-11	11	-	GMT-11
+Zone	Etc/GMT-10	10	-	GMT-10
+Zone	Etc/GMT-9	9	-	GMT-9
+Zone	Etc/GMT-8	8	-	GMT-8
+Zone	Etc/GMT-7	7	-	GMT-7
+Zone	Etc/GMT-6	6	-	GMT-6
+Zone	Etc/GMT-5	5	-	GMT-5
+Zone	Etc/GMT-4	4	-	GMT-4
+Zone	Etc/GMT-3	3	-	GMT-3
+Zone	Etc/GMT-2	2	-	GMT-2
+Zone	Etc/GMT-1	1	-	GMT-1
+Zone	Etc/GMT+1	-1	-	GMT+1
+Zone	Etc/GMT+2	-2	-	GMT+2
+Zone	Etc/GMT+3	-3	-	GMT+3
+Zone	Etc/GMT+4	-4	-	GMT+4
+Zone	Etc/GMT+5	-5	-	GMT+5
+Zone	Etc/GMT+6	-6	-	GMT+6
+Zone	Etc/GMT+7	-7	-	GMT+7
+Zone	Etc/GMT+8	-8	-	GMT+8
+Zone	Etc/GMT+9	-9	-	GMT+9
+Zone	Etc/GMT+10	-10	-	GMT+10
+Zone	Etc/GMT+11	-11	-	GMT+11
+Zone	Etc/GMT+12	-12	-	GMT+12
diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/europe b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/europe
new file mode 100644
index 0000000..9a5b001
--- /dev/null
+++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/europe
@@ -0,0 +1,2856 @@
+# 
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
+
+# This data is by no means authoritative; if you think you know better,
+# go ahead and edit the file (and please send any changes to
+# tz@iana.org for general use in the future).
+
+# From Paul Eggert (2006-03-22):
+# A good source for time zone historical data outside the U.S. is
+# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+# San Diego: ACS Publications, Inc. (2003).
+#
+# Gwillim Law writes that a good source
+# for recent time zone data is the International Air Transport
+# Association's Standard Schedules Information Manual (IATA SSIM),
+# published semiannually.  Law sent in several helpful summaries
+# of the IATA's data after 1990.
+#
+# Except where otherwise noted, Shanks & Pottenger is the source for
+# entries through 1991, and IATA SSIM is the source for entries afterwards.
+#
+# Other sources occasionally used include:
+#
+#	Edward W. Whitman, World Time Differences,
+#	Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated),
+#	which I found in the UCLA library.
+#
+#	
+#	William Willett, The Waste of Daylight, 19th edition
+#	 (1914-03)
+#
+#	Brazil's Departamento Servico da Hora (DSH),
+#	
+#	History of Summer Time
+#	 (1998-09-21, in Portuguese)
+
+#
+# I invented the abbreviations marked `*' in the following table;
+# the rest are from earlier versions of this file, or from other sources.
+# Corrections are welcome!
+#                   std dst  2dst
+#                   LMT           Local Mean Time
+#       -4:00       AST ADT       Atlantic
+#       -3:00       WGT WGST      Western Greenland*
+#       -1:00       EGT EGST      Eastern Greenland*
+#        0:00       GMT BST  BDST Greenwich, British Summer
+#        0:00       GMT IST       Greenwich, Irish Summer
+#        0:00       WET WEST WEMT Western Europe
+#        0:19:32.13 AMT NST       Amsterdam, Netherlands Summer (1835-1937)*
+#        0:20       NET NEST      Netherlands (1937-1940)*
+#        1:00       CET CEST CEMT Central Europe
+#        1:00:14    SET           Swedish (1879-1899)*
+#        2:00       EET EEST      Eastern Europe
+#        3:00       MSK MSD       Moscow
+#
+# A reliable and entertaining source about time zones, especially in Britain,
+# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+
+# From Peter Ilieve (1994-12-04),
+# The original six [EU members]: Belgium, France, (West) Germany, Italy,
+# Luxembourg, the Netherlands.
+# Plus, from 1 Jan 73: Denmark, Ireland, United Kingdom.
+# Plus, from 1 Jan 81: Greece.
+# Plus, from 1 Jan 86: Spain, Portugal.
+# Plus, from 1 Jan 95: Austria, Finland, Sweden. (Norway negotiated terms for
+# entry but in a referendum on 28 Nov 94 the people voted No by 52.2% to 47.8%
+# on a turnout of 88.6%. This was almost the same result as Norway's previous
+# referendum in 1972, they are the only country to have said No twice.
+# Referendums in the other three countries voted Yes.)
+# ...
+# Estonia ... uses EU dates but not at 01:00 GMT, they use midnight GMT.
+# I don't think they know yet what they will do from 1996 onwards.
+# ...
+# There shouldn't be any [current members who are not using EU rules].
+# A Directive has the force of law, member states are obliged to enact
+# national law to implement it. The only contentious issue was the
+# different end date for the UK and Ireland, and this was always allowed
+# in the Directive.
+
+
+###############################################################################
+
+# Britain (United Kingdom) and Ireland (Eire)
+
+# From Peter Ilieve (1994-07-06):
+#
+# On 17 Jan 1994 the Independent, a UK quality newspaper, had a piece about
+# historical vistas along the Thames in west London. There was a photo
+# and a sketch map showing some of the sightlines involved. One paragraph
+# of the text said:
+#
+# `An old stone obelisk marking a forgotten terrestrial meridian stands
+# beside the river at Kew. In the 18th century, before time and longitude
+# was standardised by the Royal Observatory in Greenwich, scholars observed
+# this stone and the movement of stars from Kew Observatory nearby. They
+# made their calculations and set the time for the Horse Guards and Parliament,
+# but now the stone is obscured by scrubwood and can only be seen by walking
+# along the towpath within a few yards of it.'
+#
+# I have a one inch to one mile map of London and my estimate of the stone's
+# position is 51 deg. 28' 30" N, 0 deg. 18' 45" W. The longitude should
+# be within about +-2". The Ordnance Survey grid reference is TQ172761.
+#
+# [This yields GMTOFF = -0:01:15 for London LMT in the 18th century.]
+
+# From Paul Eggert (1993-11-18):
+#
+# Howse writes that Britain was the first country to use standard time.
+# The railways cared most about the inconsistencies of local mean time,
+# and it was they who forced a uniform time on the country.
+# The original idea was credited to Dr. William Hyde Wollaston (1766-1828)
+# and was popularized by Abraham Follett Osler (1808-1903).
+# The first railway to adopt London time was the Great Western Railway
+# in November 1840; other railways followed suit, and by 1847 most
+# (though not all) railways used London time.  On 1847-09-22 the
+# Railway Clearing House, an industry standards body, recommended that GMT be
+# adopted at all stations as soon as the General Post Office permitted it.
+# The transition occurred on 12-01 for the L&NW, the Caledonian,
+# and presumably other railways; the January 1848 Bradshaw's lists many
+# railways as using GMT.  By 1855 the vast majority of public
+# clocks in Britain were set to GMT (though some, like the great clock
+# on Tom Tower at Christ Church, Oxford, were fitted with two minute hands,
+# one for local time and one for GMT).  The last major holdout was the legal
+# system, which stubbornly stuck to local time for many years, leading
+# to oddities like polls opening at 08:13 and closing at 16:13.
+# The legal system finally switched to GMT when the Statutes (Definition
+# of Time) Act took effect; it received the Royal Assent on 1880-08-02.
+#
+# In the tables below, we condense this complicated story into a single
+# transition date for London, namely 1847-12-01.  We don't know as much
+# about Dublin, so we use 1880-08-02, the legal transition time.
+
+# From Paul Eggert (2003-09-27):
+# Summer Time was first seriously proposed by William Willett (1857-1915),
+# a London builder and member of the Royal Astronomical Society
+# who circulated a pamphlet ``The Waste of Daylight'' (1907)
+# that proposed advancing clocks 20 minutes on each of four Sundays in April,
+# and retarding them by the same amount on four Sundays in September.
+# A bill was drafted in 1909 and introduced in Parliament several times,
+# but it met with ridicule and opposition, especially from farming interests.
+# Later editions of the pamphlet proposed one-hour summer time, and
+# it was eventually adopted as a wartime measure in 1916.
+# See: Summer Time Arrives Early, The Times (2000-05-18).
+# A monument to Willett was unveiled on 1927-05-21, in an open space in
+# a 45-acre wood near Chislehurst, Kent that was purchased by popular
+# subscription and open to the public.  On the south face of the monolith,
+# designed by G. W. Miller, is the...William Willett Memorial Sundial,
+# which is permanently set to Summer Time.
+
+# From Winston Churchill (1934-04-28):
+# It is one of the paradoxes of history that we should owe the boon of
+# summer time, which gives every year to the people of this country
+# between 160 and 170 hours more daylight leisure, to a war which
+# plunged Europe into darkness for four years, and shook the
+# foundations of civilization throughout the world.
+#	-- 
+#	"A Silent Toast to William Willett", Pictorial Weekly
+#	
+
+# From Paul Eggert (1996-09-03):
+# The OED Supplement says that the English originally said ``Daylight Saving''
+# when they were debating the adoption of DST in 1908; but by 1916 this
+# term appears only in quotes taken from DST's opponents, whereas the
+# proponents (who eventually won the argument) are quoted as using ``Summer''.
+
+# From Arthur David Olson (1989-01-19):
+#
+# A source at the British Information Office in New York avers that it's
+# known as "British" Summer Time in all parts of the United Kingdom.
+
+# Date: 4 Jan 89 08:57:25 GMT (Wed)
+# From: Jonathan Leffler
+# [British Summer Time] is fixed annually by Act of Parliament.
+# If you can predict what Parliament will do, you should be in
+# politics making a fortune, not computing.
+
+# From Chris Carrier (1996-06-14):
+# I remember reading in various wartime issues of the London Times the
+# acronym BDST for British Double Summer Time.  Look for the published
+# time of sunrise and sunset in The Times, when BDST was in effect, and
+# if you find a zone reference it will say, "All times B.D.S.T."
+
+# From Joseph S. Myers (1999-09-02):
+# ... some military cables (WO 219/4100 - this is a copy from the
+# main SHAEF archives held in the US National Archives, SHAEF/5252/8/516)
+# agree that the usage is BDST (this appears in a message dated 17 Feb 1945).
+
+# From Joseph S. Myers (2000-10-03):
+# On 18th April 1941, Sir Stephen Tallents of the BBC wrote to Sir
+# Alexander Maxwell of the Home Office asking whether there was any
+# official designation; the reply of the 21st was that there wasn't
+# but he couldn't think of anything better than the "Double British
+# Summer Time" that the BBC had been using informally.
+# http://student.cusu.cam.ac.uk/~jsm28/british-time/bbc-19410418.png
+# http://student.cusu.cam.ac.uk/~jsm28/british-time/ho-19410421.png
+
+# From Sir Alexander Maxwell in the above-mentioned letter (1941-04-21):
+# [N]o official designation has as far as I know been adopted for the time
+# which is to be introduced in May....
+# I cannot think of anything better than "Double British Summer Time"
+# which could not be said to run counter to any official description.
+
+# From Paul Eggert (2000-10-02):
+# Howse writes (p 157) `DBST' too, but `BDST' seems to have been common
+# and follows the more usual convention of putting the location name first,
+# so we use `BDST'.
+
+# Peter Ilieve (1998-04-19) described at length
+# the history of summer time legislation in the United Kingdom.
+# Since 1998 Joseph S. Myers has been updating
+# and extending this list, which can be found in
+# http://student.cusu.cam.ac.uk/~jsm28/british-time/
+# 
+# History of legal time in Britain
+# 
+# Rob Crowther (2012-01-04) reports that that URL no longer
+# exists, and the article can now be found at:
+# 
+# http://www.polyomino.org.uk/british-time/
+# 
+
+# From Joseph S. Myers (1998-01-06):
+#
+# The legal time in the UK outside of summer time is definitely GMT, not UTC;
+# see Lord Tanlaw's speech
+# 
+# (Lords Hansard 11 June 1997 columns 964 to 976)
+# .
+
+# From Paul Eggert (2006-03-22):
+#
+# For lack of other data, follow Shanks & Pottenger for Eire in 1940-1948.
+#
+# Given Ilieve and Myers's data, the following claims by Shanks & Pottenger
+# are incorrect:
+#     * Wales did not switch from GMT to daylight saving time until
+#	1921 Apr 3, when they began to conform with the rest of Great Britain.
+# Actually, Wales was identical after 1880.
+#     * Eire had two transitions on 1916 Oct 1.
+# It actually just had one transition.
+#     * Northern Ireland used single daylight saving time throughout WW II.
+# Actually, it conformed to Britain.
+#     * GB-Eire changed standard time to 1 hour ahead of GMT on 1968-02-18.
+# Actually, that date saw the usual switch to summer time.
+# Standard time was not changed until 1968-10-27 (the clocks didn't change).
+#
+# Here is another incorrect claim by Shanks & Pottenger:
+#     * Jersey, Guernsey, and the Isle of Man did not switch from GMT
+#	to daylight saving time until 1921 Apr 3, when they began to
+#	conform with Great Britain.
+# S.R.&O. 1916, No. 382 and HO 45/10811/312364 (quoted above) say otherwise.
+#
+# The following claim by Shanks & Pottenger is possible though doubtful;
+# we'll ignore it for now.
+#     * Dublin's 1971-10-31 switch was at 02:00, even though London's was 03:00.
+#
+#
+# Whitman says Dublin Mean Time was -0:25:21, which is more precise than
+# Shanks & Pottenger.
+# Perhaps this was Dunsink Observatory Time, as Dunsink Observatory
+# (8 km NW of Dublin's center) seemingly was to Dublin as Greenwich was
+# to London.  For example:
+#
+#   "Timeball on the ballast office is down.  Dunsink time."
+#   -- James Joyce, Ulysses
+
+# From Joseph S. Myers (2005-01-26):
+# Irish laws are available online at www.irishstatutebook.ie.  These include
+# various relating to legal time, for example:
+#
+# ZZA13Y1923.html ZZA12Y1924.html ZZA8Y1925.html ZZSIV20PG1267.html
+#
+# ZZSI71Y1947.html ZZSI128Y1948.html ZZSI23Y1949.html ZZSI41Y1950.html
+# ZZSI27Y1951.html ZZSI73Y1952.html
+#
+# ZZSI11Y1961.html ZZSI232Y1961.html ZZSI182Y1962.html
+# ZZSI167Y1963.html ZZSI257Y1964.html ZZSI198Y1967.html
+# ZZA23Y1968.html ZZA17Y1971.html
+#
+# ZZSI67Y1981.html ZZSI212Y1982.html ZZSI45Y1986.html
+# ZZSI264Y1988.html ZZSI52Y1990.html ZZSI371Y1992.html
+# ZZSI395Y1994.html ZZSI484Y1997.html ZZSI506Y2001.html
+#
+# [These are all relative to the root, e.g., the first is
+# .]
+#
+# (These are those I found, but there could be more.  In any case these
+# should allow various updates to the comments in the europe file to cover
+# the laws applicable in Ireland.)
+#
+# (Note that the time in the Republic of Ireland since 1968 has been defined
+# in terms of standard time being GMT+1 with a period of winter time when it
+# is GMT, rather than standard time being GMT with a period of summer time
+# being GMT+1.)
+
+# From Paul Eggert (1999-03-28):
+# Clive Feather (, 1997-03-31)
+# reports that Folkestone (Cheriton) Shuttle Terminal uses Concession Time
+# (CT), equivalent to French civil time.
+# Julian Hill (, 1998-09-30) reports that
+# trains between Dollands Moor (the freight facility next door)
+# and Frethun run in CT.
+# My admittedly uninformed guess is that the terminal has two authorities,
+# the French concession operators and the British civil authorities,
+# and that the time depends on who you're talking to.
+# If, say, the British police were called to the station for some reason,
+# I would expect the official police report to use GMT/BST and not CET/CEST.
+# This is a borderline case, but for now let's stick to GMT/BST.
+
+# From an anonymous contributor (1996-06-02):
+# The law governing time in Ireland is under Statutory Instrument SI 395/94,
+# which gives force to European Union 7th Council Directive # 94/21/EC.
+# Under this directive, the Minister for Justice in Ireland makes appropriate
+# regulations. I spoke this morning with the Secretary of the Department of
+# Justice (tel +353 1 678 9711) who confirmed to me that the correct name is
+# "Irish Summer Time", abbreviated to "IST".
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+# Summer Time Act, 1916
+Rule	GB-Eire	1916	only	-	May	21	2:00s	1:00	BST
+Rule	GB-Eire	1916	only	-	Oct	 1	2:00s	0	GMT
+# S.R.&O. 1917, No. 358
+Rule	GB-Eire	1917	only	-	Apr	 8	2:00s	1:00	BST
+Rule	GB-Eire	1917	only	-	Sep	17	2:00s	0	GMT
+# S.R.&O. 1918, No. 274
+Rule	GB-Eire	1918	only	-	Mar	24	2:00s	1:00	BST
+Rule	GB-Eire	1918	only	-	Sep	30	2:00s	0	GMT
+# S.R.&O. 1919, No. 297
+Rule	GB-Eire	1919	only	-	Mar	30	2:00s	1:00	BST
+Rule	GB-Eire	1919	only	-	Sep	29	2:00s	0	GMT
+# S.R.&O. 1920, No. 458
+Rule	GB-Eire	1920	only	-	Mar	28	2:00s	1:00	BST
+# S.R.&O. 1920, No. 1844
+Rule	GB-Eire	1920	only	-	Oct	25	2:00s	0	GMT
+# S.R.&O. 1921, No. 363
+Rule	GB-Eire	1921	only	-	Apr	 3	2:00s	1:00	BST
+Rule	GB-Eire	1921	only	-	Oct	 3	2:00s	0	GMT
+# S.R.&O. 1922, No. 264
+Rule	GB-Eire	1922	only	-	Mar	26	2:00s	1:00	BST
+Rule	GB-Eire	1922	only	-	Oct	 8	2:00s	0	GMT
+# The Summer Time Act, 1922
+Rule	GB-Eire	1923	only	-	Apr	Sun>=16	2:00s	1:00	BST
+Rule	GB-Eire	1923	1924	-	Sep	Sun>=16	2:00s	0	GMT
+Rule	GB-Eire	1924	only	-	Apr	Sun>=9	2:00s	1:00	BST
+Rule	GB-Eire	1925	1926	-	Apr	Sun>=16	2:00s	1:00	BST
+# The Summer Time Act, 1925
+Rule	GB-Eire	1925	1938	-	Oct	Sun>=2	2:00s	0	GMT
+Rule	GB-Eire	1927	only	-	Apr	Sun>=9	2:00s	1:00	BST
+Rule	GB-Eire	1928	1929	-	Apr	Sun>=16	2:00s	1:00	BST
+Rule	GB-Eire	1930	only	-	Apr	Sun>=9	2:00s	1:00	BST
+Rule	GB-Eire	1931	1932	-	Apr	Sun>=16	2:00s	1:00	BST
+Rule	GB-Eire	1933	only	-	Apr	Sun>=9	2:00s	1:00	BST
+Rule	GB-Eire	1934	only	-	Apr	Sun>=16	2:00s	1:00	BST
+Rule	GB-Eire	1935	only	-	Apr	Sun>=9	2:00s	1:00	BST
+Rule	GB-Eire	1936	1937	-	Apr	Sun>=16	2:00s	1:00	BST
+Rule	GB-Eire	1938	only	-	Apr	Sun>=9	2:00s	1:00	BST
+Rule	GB-Eire	1939	only	-	Apr	Sun>=16	2:00s	1:00	BST
+# S.R.&O. 1939, No. 1379
+Rule	GB-Eire	1939	only	-	Nov	Sun>=16	2:00s	0	GMT
+# S.R.&O. 1940, No. 172 and No. 1883
+Rule	GB-Eire	1940	only	-	Feb	Sun>=23	2:00s	1:00	BST
+# S.R.&O. 1941, No. 476
+Rule	GB-Eire	1941	only	-	May	Sun>=2	1:00s	2:00	BDST
+Rule	GB-Eire	1941	1943	-	Aug	Sun>=9	1:00s	1:00	BST
+# S.R.&O. 1942, No. 506
+Rule	GB-Eire	1942	1944	-	Apr	Sun>=2	1:00s	2:00	BDST
+# S.R.&O. 1944, No. 932
+Rule	GB-Eire	1944	only	-	Sep	Sun>=16	1:00s	1:00	BST
+# S.R.&O. 1945, No. 312
+Rule	GB-Eire	1945	only	-	Apr	Mon>=2	1:00s	2:00	BDST
+Rule	GB-Eire	1945	only	-	Jul	Sun>=9	1:00s	1:00	BST
+# S.R.&O. 1945, No. 1208
+Rule	GB-Eire	1945	1946	-	Oct	Sun>=2	2:00s	0	GMT
+Rule	GB-Eire	1946	only	-	Apr	Sun>=9	2:00s	1:00	BST
+# The Summer Time Act, 1947
+Rule	GB-Eire	1947	only	-	Mar	16	2:00s	1:00	BST
+Rule	GB-Eire	1947	only	-	Apr	13	1:00s	2:00	BDST
+Rule	GB-Eire	1947	only	-	Aug	10	1:00s	1:00	BST
+Rule	GB-Eire	1947	only	-	Nov	 2	2:00s	0	GMT
+# Summer Time Order, 1948 (S.I. 1948/495)
+Rule	GB-Eire	1948	only	-	Mar	14	2:00s	1:00	BST
+Rule	GB-Eire	1948	only	-	Oct	31	2:00s	0	GMT
+# Summer Time Order, 1949 (S.I. 1949/373)
+Rule	GB-Eire	1949	only	-	Apr	 3	2:00s	1:00	BST
+Rule	GB-Eire	1949	only	-	Oct	30	2:00s	0	GMT
+# Summer Time Order, 1950 (S.I. 1950/518)
+# Summer Time Order, 1951 (S.I. 1951/430)
+# Summer Time Order, 1952 (S.I. 1952/451)
+Rule	GB-Eire	1950	1952	-	Apr	Sun>=14	2:00s	1:00	BST
+Rule	GB-Eire	1950	1952	-	Oct	Sun>=21	2:00s	0	GMT
+# revert to the rules of the Summer Time Act, 1925
+Rule	GB-Eire	1953	only	-	Apr	Sun>=16	2:00s	1:00	BST
+Rule	GB-Eire	1953	1960	-	Oct	Sun>=2	2:00s	0	GMT
+Rule	GB-Eire	1954	only	-	Apr	Sun>=9	2:00s	1:00	BST
+Rule	GB-Eire	1955	1956	-	Apr	Sun>=16	2:00s	1:00	BST
+Rule	GB-Eire	1957	only	-	Apr	Sun>=9	2:00s	1:00	BST
+Rule	GB-Eire	1958	1959	-	Apr	Sun>=16	2:00s	1:00	BST
+Rule	GB-Eire	1960	only	-	Apr	Sun>=9	2:00s	1:00	BST
+# Summer Time Order, 1961 (S.I. 1961/71)
+# Summer Time (1962) Order, 1961 (S.I. 1961/2465)
+# Summer Time Order, 1963 (S.I. 1963/81)
+Rule	GB-Eire	1961	1963	-	Mar	lastSun	2:00s	1:00	BST
+Rule	GB-Eire	1961	1968	-	Oct	Sun>=23	2:00s	0	GMT
+# Summer Time (1964) Order, 1963 (S.I. 1963/2101)
+# Summer Time Order, 1964 (S.I. 1964/1201)
+# Summer Time Order, 1967 (S.I. 1967/1148)
+Rule	GB-Eire	1964	1967	-	Mar	Sun>=19	2:00s	1:00	BST
+# Summer Time Order, 1968 (S.I. 1968/117)
+Rule	GB-Eire	1968	only	-	Feb	18	2:00s	1:00	BST
+# The British Standard Time Act, 1968
+#	(no summer time)
+# The Summer Time Act, 1972
+Rule	GB-Eire	1972	1980	-	Mar	Sun>=16	2:00s	1:00	BST
+Rule	GB-Eire	1972	1980	-	Oct	Sun>=23	2:00s	0	GMT
+# Summer Time Order, 1980 (S.I. 1980/1089)
+# Summer Time Order, 1982 (S.I. 1982/1673)
+# Summer Time Order, 1986 (S.I. 1986/223)
+# Summer Time Order, 1988 (S.I. 1988/931)
+Rule	GB-Eire	1981	1995	-	Mar	lastSun	1:00u	1:00	BST
+Rule	GB-Eire 1981	1989	-	Oct	Sun>=23	1:00u	0	GMT
+# Summer Time Order, 1989 (S.I. 1989/985)
+# Summer Time Order, 1992 (S.I. 1992/1729)
+# Summer Time Order 1994 (S.I. 1994/2798)
+Rule	GB-Eire 1990	1995	-	Oct	Sun>=22	1:00u	0	GMT
+# Summer Time Order 1997 (S.I. 1997/2982)
+# See EU for rules starting in 1996.
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/London	-0:01:15 -	LMT	1847 Dec  1 0:00s
+			 0:00	GB-Eire	%s	1968 Oct 27
+			 1:00	-	BST	1971 Oct 31 2:00u
+			 0:00	GB-Eire	%s	1996
+			 0:00	EU	GMT/BST
+Link	Europe/London	Europe/Jersey
+Link	Europe/London	Europe/Guernsey
+Link	Europe/London	Europe/Isle_of_Man
+Zone	Europe/Dublin	-0:25:00 -	LMT	1880 Aug  2
+			-0:25:21 -	DMT	1916 May 21 2:00
+			-0:25:21 1:00	IST	1916 Oct  1 2:00s
+			 0:00	GB-Eire	%s	1921 Dec  6 # independence
+			 0:00	GB-Eire	GMT/IST	1940 Feb 25 2:00
+			 0:00	1:00	IST	1946 Oct  6 2:00
+			 0:00	-	GMT	1947 Mar 16 2:00
+			 0:00	1:00	IST	1947 Nov  2 2:00
+			 0:00	-	GMT	1948 Apr 18 2:00
+			 0:00	GB-Eire	GMT/IST	1968 Oct 27
+			 1:00	-	IST	1971 Oct 31 2:00u
+			 0:00	GB-Eire	GMT/IST	1996
+			 0:00	EU	GMT/IST
+
+###############################################################################
+
+# Europe
+
+# EU rules are for the European Union, previously known as the EC, EEC,
+# Common Market, etc.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	EU	1977	1980	-	Apr	Sun>=1	 1:00u	1:00	S
+Rule	EU	1977	only	-	Sep	lastSun	 1:00u	0	-
+Rule	EU	1978	only	-	Oct	 1	 1:00u	0	-
+Rule	EU	1979	1995	-	Sep	lastSun	 1:00u	0	-
+Rule	EU	1981	max	-	Mar	lastSun	 1:00u	1:00	S
+Rule	EU	1996	max	-	Oct	lastSun	 1:00u	0	-
+# The most recent directive covers the years starting in 2002.  See:
+# 
+# Directive 2000/84/EC of the European Parliament and of the Council
+# of 19 January 2001 on summer-time arrangements.
+# 
+
+# W-Eur differs from EU only in that W-Eur uses standard time.
+Rule	W-Eur	1977	1980	-	Apr	Sun>=1	 1:00s	1:00	S
+Rule	W-Eur	1977	only	-	Sep	lastSun	 1:00s	0	-
+Rule	W-Eur	1978	only	-	Oct	 1	 1:00s	0	-
+Rule	W-Eur	1979	1995	-	Sep	lastSun	 1:00s	0	-
+Rule	W-Eur	1981	max	-	Mar	lastSun	 1:00s	1:00	S
+Rule	W-Eur	1996	max	-	Oct	lastSun	 1:00s	0	-
+
+# Older C-Eur rules are for convenience in the tables.
+# From 1977 on, C-Eur differs from EU only in that C-Eur uses standard time.
+Rule	C-Eur	1916	only	-	Apr	30	23:00	1:00	S
+Rule	C-Eur	1916	only	-	Oct	 1	 1:00	0	-
+Rule	C-Eur	1917	1918	-	Apr	Mon>=15	 2:00s	1:00	S
+Rule	C-Eur	1917	1918	-	Sep	Mon>=15	 2:00s	0	-
+Rule	C-Eur	1940	only	-	Apr	 1	 2:00s	1:00	S
+Rule	C-Eur	1942	only	-	Nov	 2	 2:00s	0	-
+Rule	C-Eur	1943	only	-	Mar	29	 2:00s	1:00	S
+Rule	C-Eur	1943	only	-	Oct	 4	 2:00s	0	-
+Rule	C-Eur	1944	1945	-	Apr	Mon>=1	 2:00s	1:00	S
+# Whitman gives 1944 Oct 7; go with Shanks & Pottenger.
+Rule	C-Eur	1944	only	-	Oct	 2	 2:00s	0	-
+# From Jesper Norgaard Welen (2008-07-13):
+#
+# I found what is probably a typo of 2:00 which should perhaps be 2:00s
+# in the C-Eur rule from tz database version 2008d (this part was
+# corrected in version 2008d). The circumstancial evidence is simply the
+# tz database itself, as seen below:
+#
+# Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15  0:01
+#    0:00 France WE%sT 1945 Sep 16  3:00
+#
+# Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15
+#    0:00 France WE%sT 1945 Sep 16 3:00
+#
+# Zone Europe/Belgrade 1:22:00 - LMT 1884
+#    1:00 1:00 CEST 1945 Sep 16  2:00s
+#
+# Rule France 1945 only - Sep 16  3:00 0 -
+# Rule Belgium 1945 only - Sep 16  2:00s 0 -
+# Rule Neth 1945 only - Sep 16 2:00s 0 -
+#
+# The rule line to be changed is:
+#
+# Rule C-Eur 1945 only - Sep 16  2:00 0 -
+#
+# It seems that Paris, Monaco, Rule France, Rule Belgium all agree on
+# 2:00 standard time, e.g. 3:00 local time.  However there are no
+# countries that use C-Eur rules in September 1945, so the only items
+# affected are apparently these ficticious zones that translates acronyms
+# CET and MET:
+#
+# Zone CET  1:00 C-Eur CE%sT
+# Zone MET  1:00 C-Eur ME%sT
+#
+# It this is right then the corrected version would look like:
+#
+# Rule C-Eur 1945 only - Sep 16  2:00s 0 -
+#
+# A small step for mankind though 8-)
+Rule	C-Eur	1945	only	-	Sep	16	 2:00s	0	-
+Rule	C-Eur	1977	1980	-	Apr	Sun>=1	 2:00s	1:00	S
+Rule	C-Eur	1977	only	-	Sep	lastSun	 2:00s	0	-
+Rule	C-Eur	1978	only	-	Oct	 1	 2:00s	0	-
+Rule	C-Eur	1979	1995	-	Sep	lastSun	 2:00s	0	-
+Rule	C-Eur	1981	max	-	Mar	lastSun	 2:00s	1:00	S
+Rule	C-Eur	1996	max	-	Oct	lastSun	 2:00s	0	-
+
+# E-Eur differs from EU only in that E-Eur switches at midnight local time.
+Rule	E-Eur	1977	1980	-	Apr	Sun>=1	 0:00	1:00	S
+Rule	E-Eur	1977	only	-	Sep	lastSun	 0:00	0	-
+Rule	E-Eur	1978	only	-	Oct	 1	 0:00	0	-
+Rule	E-Eur	1979	1995	-	Sep	lastSun	 0:00	0	-
+Rule	E-Eur	1981	max	-	Mar	lastSun	 0:00	1:00	S
+Rule	E-Eur	1996	max	-	Oct	lastSun	 0:00	0	-
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Russia	1917	only	-	Jul	 1	23:00	1:00	MST	# Moscow Summer Time
+Rule	Russia	1917	only	-	Dec	28	 0:00	0	MMT	# Moscow Mean Time
+Rule	Russia	1918	only	-	May	31	22:00	2:00	MDST	# Moscow Double Summer Time
+Rule	Russia	1918	only	-	Sep	16	 1:00	1:00	MST
+Rule	Russia	1919	only	-	May	31	23:00	2:00	MDST
+Rule	Russia	1919	only	-	Jul	 1	 2:00	1:00	S
+Rule	Russia	1919	only	-	Aug	16	 0:00	0	-
+Rule	Russia	1921	only	-	Feb	14	23:00	1:00	S
+Rule	Russia	1921	only	-	Mar	20	23:00	2:00	M # Midsummer
+Rule	Russia	1921	only	-	Sep	 1	 0:00	1:00	S
+Rule	Russia	1921	only	-	Oct	 1	 0:00	0	-
+# Act No.925 of the Council of Ministers of the USSR (1980-10-24):
+Rule	Russia	1981	1984	-	Apr	 1	 0:00	1:00	S
+Rule	Russia	1981	1983	-	Oct	 1	 0:00	0	-
+# Act No.967 of the Council of Ministers of the USSR (1984-09-13), repeated in
+# Act No.227 of the Council of Ministers of the USSR (1989-03-14):
+Rule	Russia	1984	1991	-	Sep	lastSun	 2:00s	0	-
+Rule	Russia	1985	1991	-	Mar	lastSun	 2:00s	1:00	S
+#
+Rule	Russia	1992	only	-	Mar	lastSat	 23:00	1:00	S
+Rule	Russia	1992	only	-	Sep	lastSat	 23:00	0	-
+Rule	Russia	1993	2010	-	Mar	lastSun	 2:00s	1:00	S
+Rule	Russia	1993	1995	-	Sep	lastSun	 2:00s	0	-
+Rule	Russia	1996	2010	-	Oct	lastSun	 2:00s	0	-
+
+# From Alexander Krivenyshev (2011-06-14):
+# According to Kremlin press service, Russian President Dmitry Medvedev
+# signed a federal law "On calculation of time" on June 9, 2011.
+# According to the law Russia is abolishing daylight saving time.
+#
+# Medvedev signed a law "On the Calculation of Time" (in russian):
+# 
+# http://bmockbe.ru/events/?ID=7583
+# 
+#
+# Medvedev signed a law on the calculation of the time (in russian):
+# 
+# http://www.regnum.ru/news/polit/1413906.html
+# 
+
+# From Arthur David Olson (2011-06-15):
+# Take "abolishing daylight saving time" to mean that time is now considered
+# to be standard.
+
+# These are for backward compatibility with older versions.
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	WET		0:00	EU	WE%sT
+Zone	CET		1:00	C-Eur	CE%sT
+Zone	MET		1:00	C-Eur	ME%sT
+Zone	EET		2:00	EU	EE%sT
+
+# Previous editions of this database used abbreviations like MET DST
+# for Central European Summer Time, but this didn't agree with common usage.
+
+# From Markus Kuhn (1996-07-12):
+# The official German names ... are
+#
+#	Mitteleuropaeische Zeit (MEZ)         = UTC+01:00
+#	Mitteleuropaeische Sommerzeit (MESZ)  = UTC+02:00
+#
+# as defined in the German Time Act (Gesetz ueber die Zeitbestimmung (ZeitG),
+# 1978-07-25, Bundesgesetzblatt, Jahrgang 1978, Teil I, S. 1110-1111)....
+# I wrote ... to the German Federal Physical-Technical Institution
+#
+#	Physikalisch-Technische Bundesanstalt (PTB)
+#	Laboratorium 4.41 "Zeiteinheit"
+#	Postfach 3345
+#	D-38023 Braunschweig
+#	phone: +49 531 592-0
+#
+# ... I received today an answer letter from Dr. Peter Hetzel, head of the PTB
+# department for time and frequency transmission.  He explained that the
+# PTB translates MEZ and MESZ into English as
+#
+#	Central European Time (CET)         = UTC+01:00
+#	Central European Summer Time (CEST) = UTC+02:00
+
+
+# Albania
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Albania	1940	only	-	Jun	16	0:00	1:00	S
+Rule	Albania	1942	only	-	Nov	 2	3:00	0	-
+Rule	Albania	1943	only	-	Mar	29	2:00	1:00	S
+Rule	Albania	1943	only	-	Apr	10	3:00	0	-
+Rule	Albania	1974	only	-	May	 4	0:00	1:00	S
+Rule	Albania	1974	only	-	Oct	 2	0:00	0	-
+Rule	Albania	1975	only	-	May	 1	0:00	1:00	S
+Rule	Albania	1975	only	-	Oct	 2	0:00	0	-
+Rule	Albania	1976	only	-	May	 2	0:00	1:00	S
+Rule	Albania	1976	only	-	Oct	 3	0:00	0	-
+Rule	Albania	1977	only	-	May	 8	0:00	1:00	S
+Rule	Albania	1977	only	-	Oct	 2	0:00	0	-
+Rule	Albania	1978	only	-	May	 6	0:00	1:00	S
+Rule	Albania	1978	only	-	Oct	 1	0:00	0	-
+Rule	Albania	1979	only	-	May	 5	0:00	1:00	S
+Rule	Albania	1979	only	-	Sep	30	0:00	0	-
+Rule	Albania	1980	only	-	May	 3	0:00	1:00	S
+Rule	Albania	1980	only	-	Oct	 4	0:00	0	-
+Rule	Albania	1981	only	-	Apr	26	0:00	1:00	S
+Rule	Albania	1981	only	-	Sep	27	0:00	0	-
+Rule	Albania	1982	only	-	May	 2	0:00	1:00	S
+Rule	Albania	1982	only	-	Oct	 3	0:00	0	-
+Rule	Albania	1983	only	-	Apr	18	0:00	1:00	S
+Rule	Albania	1983	only	-	Oct	 1	0:00	0	-
+Rule	Albania	1984	only	-	Apr	 1	0:00	1:00	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Tirane	1:19:20 -	LMT	1914
+			1:00	-	CET	1940 Jun 16
+			1:00	Albania	CE%sT	1984 Jul
+			1:00	EU	CE%sT
+
+# Andorra
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Andorra	0:06:04 -	LMT	1901
+			0:00	-	WET	1946 Sep 30
+			1:00	-	CET	1985 Mar 31 2:00
+			1:00	EU	CE%sT
+
+# Austria
+
+# From Paul Eggert (2006-03-22): Shanks & Pottenger give 1918-06-16 and
+# 1945-11-18, but the Austrian Federal Office of Metrology and
+# Surveying (BEV) gives 1918-09-16 and for Vienna gives the "alleged"
+# date of 1945-04-12 with no time.  For the 1980-04-06 transition
+# Shanks & Pottenger give 02:00, the BEV 00:00.  Go with the BEV,
+# and guess 02:00 for 1945-04-12.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Austria	1920	only	-	Apr	 5	2:00s	1:00	S
+Rule	Austria	1920	only	-	Sep	13	2:00s	0	-
+Rule	Austria	1946	only	-	Apr	14	2:00s	1:00	S
+Rule	Austria	1946	1948	-	Oct	Sun>=1	2:00s	0	-
+Rule	Austria	1947	only	-	Apr	 6	2:00s	1:00	S
+Rule	Austria	1948	only	-	Apr	18	2:00s	1:00	S
+Rule	Austria	1980	only	-	Apr	 6	0:00	1:00	S
+Rule	Austria	1980	only	-	Sep	28	0:00	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Vienna	1:05:20 -	LMT	1893 Apr
+			1:00	C-Eur	CE%sT	1920
+			1:00	Austria	CE%sT	1940 Apr  1 2:00s
+			1:00	C-Eur	CE%sT	1945 Apr  2 2:00s
+			1:00	1:00	CEST	1945 Apr 12 2:00s
+			1:00	-	CET	1946
+			1:00	Austria	CE%sT	1981
+			1:00	EU	CE%sT
+
+# Belarus
+# From Yauhen Kharuzhy (2011-09-16):
+# By latest Belarus government act Europe/Minsk timezone was changed to
+# GMT+3 without DST (was GMT+2 with DST).
+#
+# Sources (Russian language):
+# 1.
+# 
+# http://www.belta.by/ru/all_news/society/V-Belarusi-otmenjaetsja-perexod-na-sezonnoe-vremja_i_572952.html
+# 
+# 2.
+# 
+# http://naviny.by/rubrics/society/2011/09/16/ic_articles_116_175144/
+# 
+# 3.
+# 
+# http://news.tut.by/society/250578.html
+# 
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Minsk	1:50:16 -	LMT	1880
+			1:50	-	MMT	1924 May 2 # Minsk Mean Time
+			2:00	-	EET	1930 Jun 21
+			3:00	-	MSK	1941 Jun 28
+			1:00	C-Eur	CE%sT	1944 Jul  3
+			3:00	Russia	MSK/MSD	1990
+			3:00	-	MSK	1991 Mar 31 2:00s
+			2:00	1:00	EEST	1991 Sep 29 2:00s
+			2:00	-	EET	1992 Mar 29 0:00s
+			2:00	1:00	EEST	1992 Sep 27 0:00s
+			2:00	Russia	EE%sT	2011 Mar 27 2:00s
+			3:00	-	FET # Further-eastern European Time
+
+# Belgium
+#
+# From Paul Eggert (1997-07-02):
+# Entries from 1918 through 1991 are taken from:
+#	Annuaire de L'Observatoire Royal de Belgique,
+#	Avenue Circulaire, 3, B-1180 BRUXELLES, CLVIIe annee, 1991
+#	(Imprimerie HAYEZ, s.p.r.l., Rue Fin, 4, 1080 BRUXELLES, MCMXC),
+#	pp 8-9.
+# LMT before 1892 was 0:17:30, according to the official journal of Belgium:
+#	Moniteur Belge, Samedi 30 Avril 1892, N.121.
+# Thanks to Pascal Delmoitie for these references.
+# The 1918 rules are listed for completeness; they apply to unoccupied Belgium.
+# Assume Brussels switched to WET in 1918 when the armistice took effect.
+#
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Belgium	1918	only	-	Mar	 9	 0:00s	1:00	S
+Rule	Belgium	1918	1919	-	Oct	Sat>=1	23:00s	0	-
+Rule	Belgium	1919	only	-	Mar	 1	23:00s	1:00	S
+Rule	Belgium	1920	only	-	Feb	14	23:00s	1:00	S
+Rule	Belgium	1920	only	-	Oct	23	23:00s	0	-
+Rule	Belgium	1921	only	-	Mar	14	23:00s	1:00	S
+Rule	Belgium	1921	only	-	Oct	25	23:00s	0	-
+Rule	Belgium	1922	only	-	Mar	25	23:00s	1:00	S
+Rule	Belgium	1922	1927	-	Oct	Sat>=1	23:00s	0	-
+Rule	Belgium	1923	only	-	Apr	21	23:00s	1:00	S
+Rule	Belgium	1924	only	-	Mar	29	23:00s	1:00	S
+Rule	Belgium	1925	only	-	Apr	 4	23:00s	1:00	S
+# DSH writes that a royal decree of 1926-02-22 specified the Sun following 3rd
+# Sat in Apr (except if it's Easter, in which case it's one Sunday earlier),
+# to Sun following 1st Sat in Oct, and that a royal decree of 1928-09-15
+# changed the transition times to 02:00 GMT.
+Rule	Belgium	1926	only	-	Apr	17	23:00s	1:00	S
+Rule	Belgium	1927	only	-	Apr	 9	23:00s	1:00	S
+Rule	Belgium	1928	only	-	Apr	14	23:00s	1:00	S
+Rule	Belgium	1928	1938	-	Oct	Sun>=2	 2:00s	0	-
+Rule	Belgium	1929	only	-	Apr	21	 2:00s	1:00	S
+Rule	Belgium	1930	only	-	Apr	13	 2:00s	1:00	S
+Rule	Belgium	1931	only	-	Apr	19	 2:00s	1:00	S
+Rule	Belgium	1932	only	-	Apr	 3	 2:00s	1:00	S
+Rule	Belgium	1933	only	-	Mar	26	 2:00s	1:00	S
+Rule	Belgium	1934	only	-	Apr	 8	 2:00s	1:00	S
+Rule	Belgium	1935	only	-	Mar	31	 2:00s	1:00	S
+Rule	Belgium	1936	only	-	Apr	19	 2:00s	1:00	S
+Rule	Belgium	1937	only	-	Apr	 4	 2:00s	1:00	S
+Rule	Belgium	1938	only	-	Mar	27	 2:00s	1:00	S
+Rule	Belgium	1939	only	-	Apr	16	 2:00s	1:00	S
+Rule	Belgium	1939	only	-	Nov	19	 2:00s	0	-
+Rule	Belgium	1940	only	-	Feb	25	 2:00s	1:00	S
+Rule	Belgium	1944	only	-	Sep	17	 2:00s	0	-
+Rule	Belgium	1945	only	-	Apr	 2	 2:00s	1:00	S
+Rule	Belgium	1945	only	-	Sep	16	 2:00s	0	-
+Rule	Belgium	1946	only	-	May	19	 2:00s	1:00	S
+Rule	Belgium	1946	only	-	Oct	 7	 2:00s	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Brussels	0:17:30 -	LMT	1880
+			0:17:30	-	BMT	1892 May  1 12:00 # Brussels MT
+			0:00	-	WET	1914 Nov  8
+			1:00	-	CET	1916 May  1  0:00
+			1:00	C-Eur	CE%sT	1918 Nov 11 11:00u
+			0:00	Belgium	WE%sT	1940 May 20  2:00s
+			1:00	C-Eur	CE%sT	1944 Sep  3
+			1:00	Belgium	CE%sT	1977
+			1:00	EU	CE%sT
+
+# Bosnia and Herzegovina
+# see Serbia
+
+# Bulgaria
+#
+# From Plamen Simenov via Steffen Thorsen (1999-09-09):
+# A document of Government of Bulgaria (No.94/1997) says:
+# EET --> EETDST is in 03:00 Local time in last Sunday of March ...
+# EETDST --> EET is in 04:00 Local time in last Sunday of October
+#
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Bulg	1979	only	-	Mar	31	23:00	1:00	S
+Rule	Bulg	1979	only	-	Oct	 1	 1:00	0	-
+Rule	Bulg	1980	1982	-	Apr	Sat>=1	23:00	1:00	S
+Rule	Bulg	1980	only	-	Sep	29	 1:00	0	-
+Rule	Bulg	1981	only	-	Sep	27	 2:00	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Sofia	1:33:16 -	LMT	1880
+			1:56:56	-	IMT	1894 Nov 30 # Istanbul MT?
+			2:00	-	EET	1942 Nov  2  3:00
+			1:00	C-Eur	CE%sT	1945
+			1:00	-	CET	1945 Apr 2 3:00
+			2:00	-	EET	1979 Mar 31 23:00
+			2:00	Bulg	EE%sT	1982 Sep 26  2:00
+			2:00	C-Eur	EE%sT	1991
+			2:00	E-Eur	EE%sT	1997
+			2:00	EU	EE%sT
+
+# Croatia
+# see Serbia
+
+# Cyprus
+# Please see the `asia' file for Asia/Nicosia.
+
+# Czech Republic
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Czech	1945	only	-	Apr	 8	2:00s	1:00	S
+Rule	Czech	1945	only	-	Nov	18	2:00s	0	-
+Rule	Czech	1946	only	-	May	 6	2:00s	1:00	S
+Rule	Czech	1946	1949	-	Oct	Sun>=1	2:00s	0	-
+Rule	Czech	1947	only	-	Apr	20	2:00s	1:00	S
+Rule	Czech	1948	only	-	Apr	18	2:00s	1:00	S
+Rule	Czech	1949	only	-	Apr	 9	2:00s	1:00	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Prague	0:57:44 -	LMT	1850
+			0:57:44	-	PMT	1891 Oct     # Prague Mean Time
+			1:00	C-Eur	CE%sT	1944 Sep 17 2:00s
+			1:00	Czech	CE%sT	1979
+			1:00	EU	CE%sT
+
+# Denmark, Faroe Islands, and Greenland
+
+# From Jesper Norgaard Welen (2005-04-26):
+# http://www.hum.aau.dk/~poe/tid/tine/DanskTid.htm says that the law
+# [introducing standard time] was in effect from 1894-01-01....
+# The page http://www.retsinfo.dk/_GETDOCI_/ACCN/A18930008330-REGL
+# confirms this, and states that the law was put forth 1893-03-29.
+#
+# The EU treaty with effect from 1973:
+# http://www.retsinfo.dk/_GETDOCI_/ACCN/A19722110030-REGL
+#
+# This provoked a new law from 1974 to make possible summer time changes
+# in subsequenet decrees with the law
+# http://www.retsinfo.dk/_GETDOCI_/ACCN/A19740022330-REGL
+#
+# It seems however that no decree was set forward until 1980.  I have
+# not found any decree, but in another related law, the effecting DST
+# changes are stated explicitly to be from 1980-04-06 at 02:00 to
+# 1980-09-28 at 02:00.  If this is true, this differs slightly from
+# the EU rule in that DST runs to 02:00, not 03:00.  We don't know
+# when Denmark began using the EU rule correctly, but we have only
+# confirmation of the 1980-time, so I presume it was correct in 1981:
+# The law is about the management of the extra hour, concerning
+# working hours reported and effect on obligatory-rest rules (which
+# was suspended on that night):
+# http://www.retsinfo.dk/_GETDOCI_/ACCN/C19801120554-REGL
+
+# From Jesper Norgaard Welen (2005-06-11):
+# The Herning Folkeblad (1980-09-26) reported that the night between
+# Saturday and Sunday the clock is set back from three to two.
+
+# From Paul Eggert (2005-06-11):
+# Hence the "02:00" of the 1980 law refers to standard time, not
+# wall-clock time, and so the EU rules were in effect in 1980.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Denmark	1916	only	-	May	14	23:00	1:00	S
+Rule	Denmark	1916	only	-	Sep	30	23:00	0	-
+Rule	Denmark	1940	only	-	May	15	 0:00	1:00	S
+Rule	Denmark	1945	only	-	Apr	 2	 2:00s	1:00	S
+Rule	Denmark	1945	only	-	Aug	15	 2:00s	0	-
+Rule	Denmark	1946	only	-	May	 1	 2:00s	1:00	S
+Rule	Denmark	1946	only	-	Sep	 1	 2:00s	0	-
+Rule	Denmark	1947	only	-	May	 4	 2:00s	1:00	S
+Rule	Denmark	1947	only	-	Aug	10	 2:00s	0	-
+Rule	Denmark	1948	only	-	May	 9	 2:00s	1:00	S
+Rule	Denmark	1948	only	-	Aug	 8	 2:00s	0	-
+#
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Europe/Copenhagen	 0:50:20 -	LMT	1890
+			 0:50:20 -	CMT	1894 Jan  1 # Copenhagen MT
+			 1:00	Denmark	CE%sT	1942 Nov  2 2:00s
+			 1:00	C-Eur	CE%sT	1945 Apr  2 2:00
+			 1:00	Denmark	CE%sT	1980
+			 1:00	EU	CE%sT
+Zone Atlantic/Faroe	-0:27:04 -	LMT	1908 Jan 11	# Torshavn
+			 0:00	-	WET	1981
+			 0:00	EU	WE%sT
+#
+# From Paul Eggert (2004-10-31):
+# During World War II, Germany maintained secret manned weather stations in
+# East Greenland and Franz Josef Land, but we don't know their time zones.
+# My source for this is Wilhelm Dege's book mentioned under Svalbard.
+#
+# From Paul Eggert (2006-03-22):
+# Greenland joined the EU as part of Denmark, obtained home rule on 1979-05-01,
+# and left the EU on 1985-02-01.  It therefore should have been using EU
+# rules at least through 1984.  Shanks & Pottenger say Scoresbysund and Godthab
+# used C-Eur rules after 1980, but IATA SSIM (1991/1996) says they use EU
+# rules since at least 1991.  Assume EU rules since 1980.
+
+# From Gwillin Law (2001-06-06), citing
+#  (2001-03-15),
+# and with translations corrected by Steffen Thorsen:
+#
+# Greenland has four local times, and the relation to UTC
+# is according to the following time line:
+#
+# The military zone near Thule	UTC-4
+# Standard Greenland time	UTC-3
+# Scoresbysund			UTC-1
+# Danmarkshavn			UTC
+#
+# In the military area near Thule and in Danmarkshavn DST will not be
+# introduced.
+
+# From Rives McDow (2001-11-01):
+#
+# I correspond regularly with the Dansk Polarcenter, and wrote them at
+# the time to clarify the situation in Thule.  Unfortunately, I have
+# not heard back from them regarding my recent letter.  [But I have
+# info from earlier correspondence.]
+#
+# According to the center, a very small local time zone around Thule
+# Air Base keeps the time according to UTC-4, implementing daylight
+# savings using North America rules, changing the time at 02:00 local time....
+#
+# The east coast of Greenland north of the community of Scoresbysund
+# uses UTC in the same way as in Iceland, year round, with no dst.
+# There are just a few stations on this coast, including the
+# Danmarkshavn ICAO weather station mentioned in your September 29th
+# email.  The other stations are two sledge patrol stations in
+# Mestersvig and Daneborg, the air force base at Station Nord, and the
+# DPC research station at Zackenberg.
+#
+# Scoresbysund and two small villages nearby keep time UTC-1 and use
+# the same daylight savings time period as in West Greenland (Godthab).
+#
+# The rest of Greenland, including Godthab (this area, although it
+# includes central Greenland, is known as west Greenland), keeps time
+# UTC-3, with daylight savings methods according to European rules.
+#
+# It is common procedure to use UTC 0 in the wilderness of East and
+# North Greenland, because it is mainly Icelandic aircraft operators
+# maintaining traffic in these areas.  However, the official status of
+# this area is that it sticks with Godthab time.  This area might be
+# considered a dual time zone in some respects because of this.
+
+# From Rives McDow (2001-11-19):
+# I heard back from someone stationed at Thule; the time change took place
+# there at 2:00 AM.
+
+# From Paul Eggert (2006-03-22):
+# From 1997 on the CIA map shows Danmarkshavn on GMT;
+# the 1995 map as like Godthab.
+# For lack of better info, assume they were like Godthab before 1996.
+# startkart.no says Thule does not observe DST, but this is clearly an error,
+# so go with Shanks & Pottenger for Thule transitions until this year.
+# For 2007 on assume Thule will stay in sync with US DST rules.
+#
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Thule	1991	1992	-	Mar	lastSun	2:00	1:00	D
+Rule	Thule	1991	1992	-	Sep	lastSun	2:00	0	S
+Rule	Thule	1993	2006	-	Apr	Sun>=1	2:00	1:00	D
+Rule	Thule	1993	2006	-	Oct	lastSun	2:00	0	S
+Rule	Thule	2007	max	-	Mar	Sun>=8	2:00	1:00	D
+Rule	Thule	2007	max	-	Nov	Sun>=1	2:00	0	S
+#
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Danmarkshavn -1:14:40 -	LMT	1916 Jul 28
+			-3:00	-	WGT	1980 Apr  6 2:00
+			-3:00	EU	WG%sT	1996
+			0:00	-	GMT
+Zone America/Scoresbysund -1:27:52 -	LMT	1916 Jul 28 # Ittoqqortoormiit
+			-2:00	-	CGT	1980 Apr  6 2:00
+			-2:00	C-Eur	CG%sT	1981 Mar 29
+			-1:00	EU	EG%sT
+Zone America/Godthab	-3:26:56 -	LMT	1916 Jul 28 # Nuuk
+			-3:00	-	WGT	1980 Apr  6 2:00
+			-3:00	EU	WG%sT
+Zone America/Thule	-4:35:08 -	LMT	1916 Jul 28 # Pituffik air base
+			-4:00	Thule	A%sT
+
+# Estonia
+# From Peter Ilieve (1994-10-15):
+# A relative in Tallinn confirms the accuracy of the data for 1989 onwards
+# [through 1994] and gives the legal authority for it,
+# a regulation of the Government of Estonia, No. 111 of 1989....
+#
+# From Peter Ilieve (1996-10-28):
+# [IATA SSIM (1992/1996) claims that the Baltic republics switch at 01:00s,
+# but a relative confirms that Estonia still switches at 02:00s, writing:]
+# ``I do not [know] exactly but there are some little different
+# (confusing) rules for International Air and Railway Transport Schedules
+# conversion in Sunday connected with end of summer time in Estonia....
+# A discussion is running about the summer time efficiency and effect on
+# human physiology.  It seems that Estonia maybe will not change to
+# summer time next spring.''
+
+# From Peter Ilieve (1998-11-04), heavily edited:
+# 
+# The 1998-09-22 Estonian time law
+# 
+# refers to the Eighth Directive and cites the association agreement between
+# the EU and Estonia, ratified by the Estonian law (RT II 1995, 22--27, 120).
+#
+# I also asked [my relative] whether they use any standard abbreviation
+# for their standard and summer times. He says no, they use "suveaeg"
+# (summer time) and "talveaeg" (winter time).
+
+# From The Baltic Times (1999-09-09)
+# via Steffen Thorsen:
+# This year will mark the last time Estonia shifts to summer time,
+# a council of the ruling coalition announced Sept. 6....
+# But what this could mean for Estonia's chances of joining the European
+# Union are still unclear.  In 1994, the EU declared summer time compulsory
+# for all member states until 2001.  Brussels has yet to decide what to do
+# after that.
+
+# From Mart Oruaas (2000-01-29):
+# Regulation no. 301 (1999-10-12) obsoletes previous regulation
+# no. 206 (1998-09-22) and thus sticks Estonia to +02:00 GMT for all
+# the year round.  The regulation is effective 1999-11-01.
+
+# From Toomas Soome (2002-02-21):
+# The Estonian government has changed once again timezone politics.
+# Now we are using again EU rules.
+#
+# From Urmet Jaanes (2002-03-28):
+# The legislative reference is Government decree No. 84 on 2002-02-21.
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Tallinn	1:39:00	-	LMT	1880
+			1:39:00	-	TMT	1918 Feb # Tallinn Mean Time
+			1:00	C-Eur	CE%sT	1919 Jul
+			1:39:00	-	TMT	1921 May
+			2:00	-	EET	1940 Aug  6
+			3:00	-	MSK	1941 Sep 15
+			1:00	C-Eur	CE%sT	1944 Sep 22
+			3:00	Russia	MSK/MSD	1989 Mar 26 2:00s
+			2:00	1:00	EEST	1989 Sep 24 2:00s
+			2:00	C-Eur	EE%sT	1998 Sep 22
+			2:00	EU	EE%sT	1999 Nov  1
+			2:00	-	EET	2002 Feb 21
+			2:00	EU	EE%sT
+
+# Finland
+
+# From Hannu Strang (1994-09-25 06:03:37 UTC):
+# Well, here in Helsinki we're just changing from summer time to regular one,
+# and it's supposed to change at 4am...
+
+# From Janne Snabb (2010-0715):
+#
+# I noticed that the Finland data is not accurate for years 1981 and 1982.
+# During these two first trial years the DST adjustment was made one hour
+# earlier than in forthcoming years. Starting 1983 the adjustment was made
+# according to the central European standards.
+#
+# This is documented in Heikki Oja: Aikakirja 2007, published by The Almanac
+# Office of University of Helsinki, ISBN 952-10-3221-9, available online (in
+# Finnish) at
+#
+# 
+# http://almanakka.helsinki.fi/aikakirja/Aikakirja2007kokonaan.pdf
+# 
+#
+# Page 105 (56 in PDF version) has a handy table of all past daylight savings
+# transitions. It is easy enough to interpret without Finnish skills.
+#
+# This is also confirmed by Finnish Broadcasting Company's archive at:
+#
+# 
+# http://www.yle.fi/elavaarkisto/?s=s&g=1&ag=5&t=&a=3401
+# 
+#
+# The news clip from 1981 says that "the time between 2 and 3 o'clock does not
+# exist tonight."
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Finland	1942	only	-	Apr	3	0:00	1:00	S
+Rule	Finland	1942	only	-	Oct	3	0:00	0	-
+Rule	Finland	1981	1982	-	Mar	lastSun	2:00	1:00	S
+Rule	Finland	1981	1982	-	Sep	lastSun	3:00	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Helsinki	1:39:52 -	LMT	1878 May 31
+			1:39:52	-	HMT	1921 May    # Helsinki Mean Time
+			2:00	Finland	EE%sT	1983
+			2:00	EU	EE%sT
+
+# Aaland Is
+Link	Europe/Helsinki	Europe/Mariehamn
+
+
+# France
+
+# From Ciro Discepolo (2000-12-20):
+#
+# Henri Le Corre, Regimes Horaires pour le monde entier, Editions
+# Traditionnelles - Paris 2 books, 1993
+#
+# Gabriel, Traite de l'heure dans le monde, Guy Tredaniel editeur,
+# Paris, 1991
+#
+# Francoise Gauquelin, Problemes de l'heure resolus en astrologie,
+# Guy tredaniel, Paris 1987
+
+
+#
+# Shank & Pottenger seem to use `24:00' ambiguously; resolve it with Whitman.
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	France	1916	only	-	Jun	14	23:00s	1:00	S
+Rule	France	1916	1919	-	Oct	Sun>=1	23:00s	0	-
+Rule	France	1917	only	-	Mar	24	23:00s	1:00	S
+Rule	France	1918	only	-	Mar	 9	23:00s	1:00	S
+Rule	France	1919	only	-	Mar	 1	23:00s	1:00	S
+Rule	France	1920	only	-	Feb	14	23:00s	1:00	S
+Rule	France	1920	only	-	Oct	23	23:00s	0	-
+Rule	France	1921	only	-	Mar	14	23:00s	1:00	S
+Rule	France	1921	only	-	Oct	25	23:00s	0	-
+Rule	France	1922	only	-	Mar	25	23:00s	1:00	S
+# DSH writes that a law of 1923-05-24 specified 3rd Sat in Apr at 23:00 to 1st
+# Sat in Oct at 24:00; and that in 1930, because of Easter, the transitions
+# were Apr 12 and Oct 5.  Go with Shanks & Pottenger.
+Rule	France	1922	1938	-	Oct	Sat>=1	23:00s	0	-
+Rule	France	1923	only	-	May	26	23:00s	1:00	S
+Rule	France	1924	only	-	Mar	29	23:00s	1:00	S
+Rule	France	1925	only	-	Apr	 4	23:00s	1:00	S
+Rule	France	1926	only	-	Apr	17	23:00s	1:00	S
+Rule	France	1927	only	-	Apr	 9	23:00s	1:00	S
+Rule	France	1928	only	-	Apr	14	23:00s	1:00	S
+Rule	France	1929	only	-	Apr	20	23:00s	1:00	S
+Rule	France	1930	only	-	Apr	12	23:00s	1:00	S
+Rule	France	1931	only	-	Apr	18	23:00s	1:00	S
+Rule	France	1932	only	-	Apr	 2	23:00s	1:00	S
+Rule	France	1933	only	-	Mar	25	23:00s	1:00	S
+Rule	France	1934	only	-	Apr	 7	23:00s	1:00	S
+Rule	France	1935	only	-	Mar	30	23:00s	1:00	S
+Rule	France	1936	only	-	Apr	18	23:00s	1:00	S
+Rule	France	1937	only	-	Apr	 3	23:00s	1:00	S
+Rule	France	1938	only	-	Mar	26	23:00s	1:00	S
+Rule	France	1939	only	-	Apr	15	23:00s	1:00	S
+Rule	France	1939	only	-	Nov	18	23:00s	0	-
+Rule	France	1940	only	-	Feb	25	 2:00	1:00	S
+# The French rules for 1941-1944 were not used in Paris, but Shanks & Pottenger
+# write that they were used in Monaco and in many French locations.
+# Le Corre writes that the upper limit of the free zone was Arneguy, Orthez,
+# Mont-de-Marsan, Bazas, Langon, Lamotte-Montravel, Marouil, La
+# Rochefoucault, Champagne-Mouton, La Roche-Posay, La Haye-Descartes,
+# Loches, Montrichard, Vierzon, Bourges, Moulins, Digoin,
+# Paray-le-Monial, Montceau-les-Mines, Chalons-sur-Saone, Arbois,
+# Dole, Morez, St-Claude, and Collonges (Haute-Savoie).
+Rule	France	1941	only	-	May	 5	 0:00	2:00	M # Midsummer
+# Shanks & Pottenger say this transition occurred at Oct 6 1:00,
+# but go with Denis Excoffier (1997-12-12),
+# who quotes the Ephemerides Astronomiques for 1998 from Bureau des Longitudes
+# as saying 5/10/41 22hUT.
+Rule	France	1941	only	-	Oct	 6	 0:00	1:00	S
+Rule	France	1942	only	-	Mar	 9	 0:00	2:00	M
+Rule	France	1942	only	-	Nov	 2	 3:00	1:00	S
+Rule	France	1943	only	-	Mar	29	 2:00	2:00	M
+Rule	France	1943	only	-	Oct	 4	 3:00	1:00	S
+Rule	France	1944	only	-	Apr	 3	 2:00	2:00	M
+Rule	France	1944	only	-	Oct	 8	 1:00	1:00	S
+Rule	France	1945	only	-	Apr	 2	 2:00	2:00	M
+Rule	France	1945	only	-	Sep	16	 3:00	0	-
+# Shanks & Pottenger give Mar 28 2:00 and Sep 26 3:00;
+# go with Excoffier's 28/3/76 0hUT and 25/9/76 23hUT.
+Rule	France	1976	only	-	Mar	28	 1:00	1:00	S
+Rule	France	1976	only	-	Sep	26	 1:00	0	-
+# Shanks & Pottenger give 0:09:20 for Paris Mean Time, and Whitman 0:09:05,
+# but Howse quotes the actual French legislation as saying 0:09:21.
+# Go with Howse.  Howse writes that the time in France was officially based
+# on PMT-0:09:21 until 1978-08-09, when the time base finally switched to UTC.
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Paris	0:09:21 -	LMT	1891 Mar 15  0:01
+			0:09:21	-	PMT	1911 Mar 11  0:01  # Paris MT
+# Shanks & Pottenger give 1940 Jun 14 0:00; go with Excoffier and Le Corre.
+			0:00	France	WE%sT	1940 Jun 14 23:00
+# Le Corre says Paris stuck with occupied-France time after the liberation;
+# go with Shanks & Pottenger.
+			1:00	C-Eur	CE%sT	1944 Aug 25
+			0:00	France	WE%sT	1945 Sep 16  3:00
+			1:00	France	CE%sT	1977
+			1:00	EU	CE%sT
+
+# Germany
+
+# From Markus Kuhn (1998-09-29):
+# The German time zone web site by the Physikalisch-Technische
+# Bundesanstalt contains DST information back to 1916.
+# [See tz-link.htm for the URL.]
+
+# From Joerg Schilling (2002-10-23):
+# In 1945, Berlin was switched to Moscow Summer time (GMT+4) by
+# 
+# General [Nikolai] Bersarin.
+
+# From Paul Eggert (2003-03-08):
+# 
+# http://www.parlament-berlin.de/pds-fraktion.nsf/727459127c8b66ee8525662300459099/defc77cb784f180ac1256c2b0030274b/$FILE/bersarint.pdf
+# 
+# says that Bersarin issued an order to use Moscow time on May 20.
+# However, Moscow did not observe daylight saving in 1945, so
+# this was equivalent to CEMT (GMT+3), not GMT+4.
+
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Germany	1946	only	-	Apr	14	2:00s	1:00	S
+Rule	Germany	1946	only	-	Oct	 7	2:00s	0	-
+Rule	Germany	1947	1949	-	Oct	Sun>=1	2:00s	0	-
+# http://www.ptb.de/de/org/4/44/441/salt.htm says the following transition
+# occurred at 3:00 MEZ, not the 2:00 MEZ given in Shanks & Pottenger.
+# Go with the PTB.
+Rule	Germany	1947	only	-	Apr	 6	3:00s	1:00	S
+Rule	Germany	1947	only	-	May	11	2:00s	2:00	M
+Rule	Germany	1947	only	-	Jun	29	3:00	1:00	S
+Rule	Germany	1948	only	-	Apr	18	2:00s	1:00	S
+Rule	Germany	1949	only	-	Apr	10	2:00s	1:00	S
+
+Rule SovietZone	1945	only	-	May	24	2:00	2:00	M # Midsummer
+Rule SovietZone	1945	only	-	Sep	24	3:00	1:00	S
+Rule SovietZone	1945	only	-	Nov	18	2:00s	0	-
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Berlin	0:53:28 -	LMT	1893 Apr
+			1:00	C-Eur	CE%sT	1945 May 24 2:00
+			1:00 SovietZone	CE%sT	1946
+			1:00	Germany	CE%sT	1980
+			1:00	EU	CE%sT
+
+# Georgia
+# Please see the "asia" file for Asia/Tbilisi.
+# Herodotus (Histories, IV.45) says Georgia north of the Phasis (now Rioni)
+# is in Europe.  Our reference location Tbilisi is in the Asian part.
+
+# Gibraltar
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Europe/Gibraltar	-0:21:24 -	LMT	1880 Aug  2 0:00s
+			0:00	GB-Eire	%s	1957 Apr 14 2:00
+			1:00	-	CET	1982
+			1:00	EU	CE%sT
+
+# Greece
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+# Whitman gives 1932 Jul 5 - Nov 1; go with Shanks & Pottenger.
+Rule	Greece	1932	only	-	Jul	 7	0:00	1:00	S
+Rule	Greece	1932	only	-	Sep	 1	0:00	0	-
+# Whitman gives 1941 Apr 25 - ?; go with Shanks & Pottenger.
+Rule	Greece	1941	only	-	Apr	 7	0:00	1:00	S
+# Whitman gives 1942 Feb 2 - ?; go with Shanks & Pottenger.
+Rule	Greece	1942	only	-	Nov	 2	3:00	0	-
+Rule	Greece	1943	only	-	Mar	30	0:00	1:00	S
+Rule	Greece	1943	only	-	Oct	 4	0:00	0	-
+# Whitman gives 1944 Oct 3 - Oct 31; go with Shanks & Pottenger.
+Rule	Greece	1952	only	-	Jul	 1	0:00	1:00	S
+Rule	Greece	1952	only	-	Nov	 2	0:00	0	-
+Rule	Greece	1975	only	-	Apr	12	0:00s	1:00	S
+Rule	Greece	1975	only	-	Nov	26	0:00s	0	-
+Rule	Greece	1976	only	-	Apr	11	2:00s	1:00	S
+Rule	Greece	1976	only	-	Oct	10	2:00s	0	-
+Rule	Greece	1977	1978	-	Apr	Sun>=1	2:00s	1:00	S
+Rule	Greece	1977	only	-	Sep	26	2:00s	0	-
+Rule	Greece	1978	only	-	Sep	24	4:00	0	-
+Rule	Greece	1979	only	-	Apr	 1	9:00	1:00	S
+Rule	Greece	1979	only	-	Sep	29	2:00	0	-
+Rule	Greece	1980	only	-	Apr	 1	0:00	1:00	S
+Rule	Greece	1980	only	-	Sep	28	0:00	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Athens	1:34:52 -	LMT	1895 Sep 14
+			1:34:52	-	AMT	1916 Jul 28 0:01     # Athens MT
+			2:00	Greece	EE%sT	1941 Apr 30
+			1:00	Greece	CE%sT	1944 Apr  4
+			2:00	Greece	EE%sT	1981
+			# Shanks & Pottenger say it switched to C-Eur in 1981;
+			# go with EU instead, since Greece joined it on Jan 1.
+			2:00	EU	EE%sT
+
+# Hungary
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Hungary	1918	only	-	Apr	 1	 3:00	1:00	S
+Rule	Hungary	1918	only	-	Sep	29	 3:00	0	-
+Rule	Hungary	1919	only	-	Apr	15	 3:00	1:00	S
+Rule	Hungary	1919	only	-	Sep	15	 3:00	0	-
+Rule	Hungary	1920	only	-	Apr	 5	 3:00	1:00	S
+Rule	Hungary	1920	only	-	Sep	30	 3:00	0	-
+Rule	Hungary	1945	only	-	May	 1	23:00	1:00	S
+Rule	Hungary	1945	only	-	Nov	 3	 0:00	0	-
+Rule	Hungary	1946	only	-	Mar	31	 2:00s	1:00	S
+Rule	Hungary	1946	1949	-	Oct	Sun>=1	 2:00s	0	-
+Rule	Hungary	1947	1949	-	Apr	Sun>=4	 2:00s	1:00	S
+Rule	Hungary	1950	only	-	Apr	17	 2:00s	1:00	S
+Rule	Hungary	1950	only	-	Oct	23	 2:00s	0	-
+Rule	Hungary	1954	1955	-	May	23	 0:00	1:00	S
+Rule	Hungary	1954	1955	-	Oct	 3	 0:00	0	-
+Rule	Hungary	1956	only	-	Jun	Sun>=1	 0:00	1:00	S
+Rule	Hungary	1956	only	-	Sep	lastSun	 0:00	0	-
+Rule	Hungary	1957	only	-	Jun	Sun>=1	 1:00	1:00	S
+Rule	Hungary	1957	only	-	Sep	lastSun	 3:00	0	-
+Rule	Hungary	1980	only	-	Apr	 6	 1:00	1:00	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Budapest	1:16:20 -	LMT	1890 Oct
+			1:00	C-Eur	CE%sT	1918
+			1:00	Hungary	CE%sT	1941 Apr  6  2:00
+			1:00	C-Eur	CE%sT	1945
+			1:00	Hungary	CE%sT	1980 Sep 28  2:00s
+			1:00	EU	CE%sT
+
+# Iceland
+#
+# From Adam David (1993-11-06):
+# The name of the timezone in Iceland for system / mail / news purposes is GMT.
+#
+# (1993-12-05):
+# This material is paraphrased from the 1988 edition of the University of
+# Iceland Almanak.
+#
+# From January 1st, 1908 the whole of Iceland was standardised at 1 hour
+# behind GMT. Previously, local mean solar time was used in different parts
+# of Iceland, the almanak had been based on Reykjavik mean solar time which
+# was 1 hour and 28 minutes behind GMT.
+#
+# "first day of winter" referred to [below] means the first day of the 26 weeks
+# of winter, according to the old icelandic calendar that dates back to the
+# time the norsemen first settled Iceland.  The first day of winter is always
+# Saturday, but is not dependent on the Julian or Gregorian calendars.
+#
+# (1993-12-10):
+# I have a reference from the Oxford Icelandic-English dictionary for the
+# beginning of winter, which ties it to the ecclesiastical calendar (and thus
+# to the julian/gregorian calendar) over the period in question.
+#	the winter begins on the Saturday next before St. Luke's day
+#	(old style), or on St. Luke's day, if a Saturday.
+# St. Luke's day ought to be traceable from ecclesiastical sources. "old style"
+# might be a reference to the Julian calendar as opposed to Gregorian, or it
+# might mean something else (???).
+#
+# From Paul Eggert (2006-03-22):
+# The Iceland Almanak, Shanks & Pottenger, and Whitman disagree on many points.
+# We go with the Almanak, except for one claim from Shanks & Pottenger, namely
+# that Reykavik was 21W57 from 1837 to 1908, local mean time before that.
+#
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Iceland	1917	1918	-	Feb	19	23:00	1:00	S
+Rule	Iceland	1917	only	-	Oct	21	 1:00	0	-
+Rule	Iceland	1918	only	-	Nov	16	 1:00	0	-
+Rule	Iceland	1939	only	-	Apr	29	23:00	1:00	S
+Rule	Iceland	1939	only	-	Nov	29	 2:00	0	-
+Rule	Iceland	1940	only	-	Feb	25	 2:00	1:00	S
+Rule	Iceland	1940	only	-	Nov	 3	 2:00	0	-
+Rule	Iceland	1941	only	-	Mar	 2	 1:00s	1:00	S
+Rule	Iceland	1941	only	-	Nov	 2	 1:00s	0	-
+Rule	Iceland	1942	only	-	Mar	 8	 1:00s	1:00	S
+Rule	Iceland	1942	only	-	Oct	25	 1:00s	0	-
+# 1943-1946 - first Sunday in March until first Sunday in winter
+Rule	Iceland	1943	1946	-	Mar	Sun>=1	 1:00s	1:00	S
+Rule	Iceland	1943	1948	-	Oct	Sun>=22	 1:00s	0	-
+# 1947-1967 - first Sunday in April until first Sunday in winter
+Rule	Iceland	1947	1967	-	Apr	Sun>=1	 1:00s	1:00	S
+# 1949 Oct transition delayed by 1 week
+Rule	Iceland	1949	only	-	Oct	30	 1:00s	0	-
+Rule	Iceland	1950	1966	-	Oct	Sun>=22	 1:00s	0	-
+Rule	Iceland	1967	only	-	Oct	29	 1:00s	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Atlantic/Reykjavik	-1:27:24 -	LMT	1837
+			-1:27:48 -	RMT	1908 # Reykjavik Mean Time?
+			-1:00	Iceland	IS%sT	1968 Apr 7 1:00s
+			 0:00	-	GMT
+
+# Italy
+#
+# From Paul Eggert (2001-03-06):
+# Sicily and Sardinia each had their own time zones from 1866 to 1893,
+# called Palermo Time (+00:53:28) and Cagliari Time (+00:36:32).
+# During World War II, German-controlled Italy used German time.
+# But these events all occurred before the 1970 cutoff,
+# so record only the time in Rome.
+#
+# From Paul Eggert (2006-03-22):
+# For Italian DST we have three sources: Shanks & Pottenger, Whitman, and
+# F. Pollastri
+# 
+# Day-light Saving Time in Italy (2006-02-03)
+# 
+# (`FP' below), taken from an Italian National Electrotechnical Institute
+# publication. When the three sources disagree, guess who's right, as follows:
+#
+# year	FP	Shanks&P. (S)	Whitman (W)	Go with:
+# 1916	06-03	06-03 24:00	06-03 00:00	FP & W
+#	09-30	09-30 24:00	09-30 01:00	FP; guess 24:00s
+# 1917	04-01	03-31 24:00	03-31 00:00	FP & S
+#	09-30	09-29 24:00	09-30 01:00	FP & W
+# 1918	03-09	03-09 24:00	03-09 00:00	FP & S
+#	10-06	10-05 24:00	10-06 01:00	FP & W
+# 1919	03-01	03-01 24:00	03-01 00:00	FP & S
+#	10-04	10-04 24:00	10-04 01:00	FP; guess 24:00s
+# 1920	03-20	03-20 24:00	03-20 00:00	FP & S
+#	09-18	09-18 24:00	10-01 01:00	FP; guess 24:00s
+# 1944	04-02	04-03 02:00			S (see C-Eur)
+#	09-16	10-02 03:00			FP; guess 24:00s
+# 1945	09-14	09-16 24:00			FP; guess 24:00s
+# 1970	05-21	05-31 00:00			S
+#	09-20	09-27 00:00			S
+#
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Italy	1916	only	-	Jun	 3	0:00s	1:00	S
+Rule	Italy	1916	only	-	Oct	 1	0:00s	0	-
+Rule	Italy	1917	only	-	Apr	 1	0:00s	1:00	S
+Rule	Italy	1917	only	-	Sep	30	0:00s	0	-
+Rule	Italy	1918	only	-	Mar	10	0:00s	1:00	S
+Rule	Italy	1918	1919	-	Oct	Sun>=1	0:00s	0	-
+Rule	Italy	1919	only	-	Mar	 2	0:00s	1:00	S
+Rule	Italy	1920	only	-	Mar	21	0:00s	1:00	S
+Rule	Italy	1920	only	-	Sep	19	0:00s	0	-
+Rule	Italy	1940	only	-	Jun	15	0:00s	1:00	S
+Rule	Italy	1944	only	-	Sep	17	0:00s	0	-
+Rule	Italy	1945	only	-	Apr	 2	2:00	1:00	S
+Rule	Italy	1945	only	-	Sep	15	0:00s	0	-
+Rule	Italy	1946	only	-	Mar	17	2:00s	1:00	S
+Rule	Italy	1946	only	-	Oct	 6	2:00s	0	-
+Rule	Italy	1947	only	-	Mar	16	0:00s	1:00	S
+Rule	Italy	1947	only	-	Oct	 5	0:00s	0	-
+Rule	Italy	1948	only	-	Feb	29	2:00s	1:00	S
+Rule	Italy	1948	only	-	Oct	 3	2:00s	0	-
+Rule	Italy	1966	1968	-	May	Sun>=22	0:00	1:00	S
+Rule	Italy	1966	1969	-	Sep	Sun>=22	0:00	0	-
+Rule	Italy	1969	only	-	Jun	 1	0:00	1:00	S
+Rule	Italy	1970	only	-	May	31	0:00	1:00	S
+Rule	Italy	1970	only	-	Sep	lastSun	0:00	0	-
+Rule	Italy	1971	1972	-	May	Sun>=22	0:00	1:00	S
+Rule	Italy	1971	only	-	Sep	lastSun	1:00	0	-
+Rule	Italy	1972	only	-	Oct	 1	0:00	0	-
+Rule	Italy	1973	only	-	Jun	 3	0:00	1:00	S
+Rule	Italy	1973	1974	-	Sep	lastSun	0:00	0	-
+Rule	Italy	1974	only	-	May	26	0:00	1:00	S
+Rule	Italy	1975	only	-	Jun	 1	0:00s	1:00	S
+Rule	Italy	1975	1977	-	Sep	lastSun	0:00s	0	-
+Rule	Italy	1976	only	-	May	30	0:00s	1:00	S
+Rule	Italy	1977	1979	-	May	Sun>=22	0:00s	1:00	S
+Rule	Italy	1978	only	-	Oct	 1	0:00s	0	-
+Rule	Italy	1979	only	-	Sep	30	0:00s	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Rome	0:49:56 -	LMT	1866 Sep 22
+			0:49:56	-	RMT	1893 Nov  1 0:00s # Rome Mean
+			1:00	Italy	CE%sT	1942 Nov  2 2:00s
+			1:00	C-Eur	CE%sT	1944 Jul
+			1:00	Italy	CE%sT	1980
+			1:00	EU	CE%sT
+
+Link	Europe/Rome	Europe/Vatican
+Link	Europe/Rome	Europe/San_Marino
+
+# Latvia
+
+# From Liene Kanepe (1998-09-17):
+
+# I asked about this matter Scientific Secretary of the Institute of Astronomy
+# of The University of Latvia Dr. paed Mr. Ilgonis Vilks. I also searched the
+# correct data in juridical acts and I found some juridical documents about
+# changes in the counting of time in Latvia from 1981....
+#
+# Act No.35 of the Council of Ministers of Latvian SSR of 1981-01-22 ...
+# according to the Act No.925 of the Council of Ministers of USSR of 1980-10-24
+# ...: all year round the time of 2nd time zone + 1 hour, in addition turning
+# the hands of the clock 1 hour forward on 1 April at 00:00 (GMT 31 March 21:00)
+# and 1 hour backward on the 1 October at 00:00 (GMT 30 September 20:00).
+#
+# Act No.592 of the Council of Ministers of Latvian SSR of 1984-09-24 ...
+# according to the Act No.967 of the Council of Ministers of USSR of 1984-09-13
+# ...: all year round the time of 2nd time zone + 1 hour, in addition turning
+# the hands of the clock 1 hour forward on the last Sunday of March at 02:00
+# (GMT 23:00 on the previous day) and 1 hour backward on the last Sunday of
+# September at 03:00 (GMT 23:00 on the previous day).
+#
+# Act No.81 of the Council of Ministers of Latvian SSR of 1989-03-22 ...
+# according to the Act No.227 of the Council of Ministers of USSR of 1989-03-14
+# ...: since the last Sunday of March 1989 in Lithuanian SSR, Latvian SSR,
+# Estonian SSR and Kaliningrad region of Russian Federation all year round the
+# time of 2nd time zone (Moscow time minus one hour). On the territory of Latvia
+# transition to summer time is performed on the last Sunday of March at 02:00
+# (GMT 00:00), turning the hands of the clock 1 hour forward.  The end of
+# daylight saving time is performed on the last Sunday of September at 03:00
+# (GMT 00:00), turning the hands of the clock 1 hour backward. Exception is
+# 1989-03-26, when we must not turn the hands of the clock....
+#
+# The Regulations of the Cabinet of Ministers of the Republic of Latvia of
+# 1997-01-21 on transition to Summer time ... established the same order of
+# daylight savings time settings as in the States of the European Union.
+
+# From Andrei Ivanov (2000-03-06):
+# This year Latvia will not switch to Daylight Savings Time (as specified in
+# 
+# The Regulations of the Cabinet of Ministers of the Rep. of Latvia of
+# 29-Feb-2000 (#79), in Latvian for subscribers only).
+
+# 
+# From RFE/RL Newsline (2001-01-03), noted after a heads-up by Rives McDow:
+# 
+# The Latvian government on 2 January decided that the country will
+# institute daylight-saving time this spring, LETA reported.
+# Last February the three Baltic states decided not to turn back their
+# clocks one hour in the spring....
+# Minister of Economy Aigars Kalvitis noted that Latvia had too few
+# daylight hours and thus decided to comply with a draft European
+# Commission directive that provides for instituting daylight-saving
+# time in EU countries between 2002 and 2006. The Latvian government
+# urged Lithuania and Estonia to adopt a similar time policy, but it
+# appears that they will not do so....
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Latvia	1989	1996	-	Mar	lastSun	 2:00s	1:00	S
+Rule	Latvia	1989	1996	-	Sep	lastSun	 2:00s	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Riga	1:36:24	-	LMT	1880
+			1:36:24	-	RMT	1918 Apr 15 2:00 #Riga Mean Time
+			1:36:24	1:00	LST	1918 Sep 16 3:00 #Latvian Summer
+			1:36:24	-	RMT	1919 Apr  1 2:00
+			1:36:24	1:00	LST	1919 May 22 3:00
+			1:36:24	-	RMT	1926 May 11
+			2:00	-	EET	1940 Aug  5
+			3:00	-	MSK	1941 Jul
+			1:00	C-Eur	CE%sT	1944 Oct 13
+			3:00	Russia	MSK/MSD	1989 Mar lastSun 2:00s
+			2:00	1:00	EEST	1989 Sep lastSun 2:00s
+			2:00	Latvia	EE%sT	1997 Jan 21
+			2:00	EU	EE%sT	2000 Feb 29
+			2:00	-	EET	2001 Jan  2
+			2:00	EU	EE%sT
+
+# Liechtenstein
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Vaduz	0:38:04 -	LMT	1894 Jun
+			1:00	-	CET	1981
+			1:00	EU	CE%sT
+
+# Lithuania
+
+# From Paul Eggert (1996-11-22):
+# IATA SSIM (1992/1996) says Lithuania uses W-Eur rules, but since it is
+# known to be wrong about Estonia and Latvia, assume it's wrong here too.
+
+# From Marius Gedminas (1998-08-07):
+# I would like to inform that in this year Lithuanian time zone
+# (Europe/Vilnius) was changed.
+
+# From ELTA No. 972 (2582) (1999-09-29),
+# via Steffen Thorsen:
+# Lithuania has shifted back to the second time zone (GMT plus two hours)
+# to be valid here starting from October 31,
+# as decided by the national government on Wednesday....
+# The Lithuanian government also announced plans to consider a
+# motion to give up shifting to summer time in spring, as it was
+# already done by Estonia.
+
+# From the 
+# Fact File, Lithuanian State Department of Tourism
+#  (2000-03-27): Local time is GMT+2 hours ..., no daylight saving.
+
+# From a user via Klaus Marten (2003-02-07):
+# As a candidate for membership of the European Union, Lithuania will
+# observe Summer Time in 2003, changing its clocks at the times laid
+# down in EU Directive 2000/84 of 19.I.01 (i.e. at the same times as its
+# neighbour Latvia). The text of the Lithuanian government Order of
+# 7.XI.02 to this effect can be found at
+# http://www.lrvk.lt/nut/11/n1749.htm
+
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Vilnius	1:41:16	-	LMT	1880
+			1:24:00	-	WMT	1917	    # Warsaw Mean Time
+			1:35:36	-	KMT	1919 Oct 10 # Kaunas Mean Time
+			1:00	-	CET	1920 Jul 12
+			2:00	-	EET	1920 Oct  9
+			1:00	-	CET	1940 Aug  3
+			3:00	-	MSK	1941 Jun 24
+			1:00	C-Eur	CE%sT	1944 Aug
+			3:00	Russia	MSK/MSD	1991 Mar 31 2:00s
+			2:00	1:00	EEST	1991 Sep 29 2:00s
+			2:00	C-Eur	EE%sT	1998
+			2:00	-	EET	1998 Mar 29 1:00u
+			1:00	EU	CE%sT	1999 Oct 31 1:00u
+			2:00	-	EET	2003 Jan  1
+			2:00	EU	EE%sT
+
+# Luxembourg
+# Whitman disagrees with most of these dates in minor ways;
+# go with Shanks & Pottenger.
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Lux	1916	only	-	May	14	23:00	1:00	S
+Rule	Lux	1916	only	-	Oct	 1	 1:00	0	-
+Rule	Lux	1917	only	-	Apr	28	23:00	1:00	S
+Rule	Lux	1917	only	-	Sep	17	 1:00	0	-
+Rule	Lux	1918	only	-	Apr	Mon>=15	 2:00s	1:00	S
+Rule	Lux	1918	only	-	Sep	Mon>=15	 2:00s	0	-
+Rule	Lux	1919	only	-	Mar	 1	23:00	1:00	S
+Rule	Lux	1919	only	-	Oct	 5	 3:00	0	-
+Rule	Lux	1920	only	-	Feb	14	23:00	1:00	S
+Rule	Lux	1920	only	-	Oct	24	 2:00	0	-
+Rule	Lux	1921	only	-	Mar	14	23:00	1:00	S
+Rule	Lux	1921	only	-	Oct	26	 2:00	0	-
+Rule	Lux	1922	only	-	Mar	25	23:00	1:00	S
+Rule	Lux	1922	only	-	Oct	Sun>=2	 1:00	0	-
+Rule	Lux	1923	only	-	Apr	21	23:00	1:00	S
+Rule	Lux	1923	only	-	Oct	Sun>=2	 2:00	0	-
+Rule	Lux	1924	only	-	Mar	29	23:00	1:00	S
+Rule	Lux	1924	1928	-	Oct	Sun>=2	 1:00	0	-
+Rule	Lux	1925	only	-	Apr	 5	23:00	1:00	S
+Rule	Lux	1926	only	-	Apr	17	23:00	1:00	S
+Rule	Lux	1927	only	-	Apr	 9	23:00	1:00	S
+Rule	Lux	1928	only	-	Apr	14	23:00	1:00	S
+Rule	Lux	1929	only	-	Apr	20	23:00	1:00	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Europe/Luxembourg	0:24:36 -	LMT	1904 Jun
+			1:00	Lux	CE%sT	1918 Nov 25
+			0:00	Lux	WE%sT	1929 Oct  6 2:00s
+			0:00	Belgium	WE%sT	1940 May 14 3:00
+			1:00	C-Eur	WE%sT	1944 Sep 18 3:00
+			1:00	Belgium	CE%sT	1977
+			1:00	EU	CE%sT
+
+# Macedonia
+# see Serbia
+
+# Malta
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Malta	1973	only	-	Mar	31	0:00s	1:00	S
+Rule	Malta	1973	only	-	Sep	29	0:00s	0	-
+Rule	Malta	1974	only	-	Apr	21	0:00s	1:00	S
+Rule	Malta	1974	only	-	Sep	16	0:00s	0	-
+Rule	Malta	1975	1979	-	Apr	Sun>=15	2:00	1:00	S
+Rule	Malta	1975	1980	-	Sep	Sun>=15	2:00	0	-
+Rule	Malta	1980	only	-	Mar	31	2:00	1:00	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Malta	0:58:04 -	LMT	1893 Nov  2 0:00s # Valletta
+			1:00	Italy	CE%sT	1942 Nov  2 2:00s
+			1:00	C-Eur	CE%sT	1945 Apr  2 2:00s
+			1:00	Italy	CE%sT	1973 Mar 31
+			1:00	Malta	CE%sT	1981
+			1:00	EU	CE%sT
+
+# Moldova
+
+# From Paul Eggert (2006-03-22):
+# A previous version of this database followed Shanks & Pottenger, who write
+# that Tiraspol switched to Moscow time on 1992-01-19 at 02:00.
+# However, this is most likely an error, as Moldova declared independence
+# on 1991-08-27 (the 1992-01-19 date is that of a Russian decree).
+# In early 1992 there was large-scale interethnic violence in the area
+# and it's possible that some Russophones continued to observe Moscow time.
+# But [two people] separately reported via
+# Jesper Norgaard that as of 2001-01-24 Tiraspol was like Chisinau.
+# The Tiraspol entry has therefore been removed for now.
+#
+# From Alexander Krivenyshev (2011-10-17):
+# Pridnestrovian Moldavian Republic (PMR, also known as
+# "Pridnestrovie") has abolished seasonal clock change (no transition
+# to the Winter Time).
+#
+# News (in Russian):
+# 
+# http://www.kyivpost.ua/russia/news/pridnestrove-otkazalos-ot-perehoda-na-zimnee-vremya-30954.html
+# 
+#
+# 
+# http://www.allmoldova.com/moldova-news/1249064116.html
+# 
+#
+# The substance of this change (reinstatement of the Tiraspol entry)
+# is from a patch from Petr Machata (2011-10-17)
+#
+# From Tim Parenti (2011-10-19)
+# In addition, being situated at +4651+2938 would give Tiraspol
+# a pre-1880 LMT offset of 1:58:32.
+#
+# (which agrees with the earlier entry that had been removed)
+#
+# From Alexander Krivenyshev (2011-10-26)
+# NO need to divide Moldova into two timezones at this point.
+# As of today, Transnistria (Pridnestrovie)- Tiraspol reversed its own
+# decision to abolish DST this winter.
+# Following Moldova and neighboring Ukraine- Transnistria (Pridnestrovie)-
+# Tiraspol will go back to winter time on October 30, 2011.
+# News from Moldova (in russian):
+# 
+# http://ru.publika.md/link_317061.html
+# 
+
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Chisinau	1:55:20 -	LMT	1880
+			1:55	-	CMT	1918 Feb 15 # Chisinau MT
+			1:44:24	-	BMT	1931 Jul 24 # Bucharest MT
+			2:00	Romania	EE%sT	1940 Aug 15
+			2:00	1:00	EEST	1941 Jul 17
+			1:00	C-Eur	CE%sT	1944 Aug 24
+			3:00	Russia	MSK/MSD	1990
+			3:00	-	MSK	1990 May 6
+			2:00	-	EET	1991
+			2:00	Russia	EE%sT	1992
+			2:00	E-Eur	EE%sT	1997
+# See Romania commentary for the guessed 1997 transition to EU rules.
+			2:00	EU	EE%sT
+
+# Monaco
+# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
+# more precise 0:09:21.
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Monaco	0:29:32 -	LMT	1891 Mar 15
+			0:09:21	-	PMT	1911 Mar 11    # Paris Mean Time
+			0:00	France	WE%sT	1945 Sep 16 3:00
+			1:00	France	CE%sT	1977
+			1:00	EU	CE%sT
+
+# Montenegro
+# see Serbia
+
+# Netherlands
+
+# Howse writes that the Netherlands' railways used GMT between 1892 and 1940,
+# but for other purposes the Netherlands used Amsterdam mean time.
+
+# However, Robert H. van Gent writes (2001-04-01):
+# Howse's statement is only correct up to 1909. From 1909-05-01 (00:00:00
+# Amsterdam mean time) onwards, the whole of the Netherlands (including
+# the Dutch railways) was required by law to observe Amsterdam mean time
+# (19 minutes 32.13 seconds ahead of GMT). This had already been the
+# common practice (except for the railways) for many decades but it was
+# not until 1909 when the Dutch government finally defined this by law.
+# On 1937-07-01 this was changed to 20 minutes (exactly) ahead of GMT and
+# was generally known as Dutch Time ("Nederlandse Tijd").
+#
+# (2001-04-08):
+# 1892-05-01 was the date when the Dutch railways were by law required to
+# observe GMT while the remainder of the Netherlands adhered to the common
+# practice of following Amsterdam mean time.
+#
+# (2001-04-09):
+# In 1835 the authorities of the province of North Holland requested the
+# municipal authorities of the towns and cities in the province to observe
+# Amsterdam mean time but I do not know in how many cases this request was
+# actually followed.
+#
+# From 1852 onwards the Dutch telegraph offices were by law required to
+# observe Amsterdam mean time. As the time signals from the observatory of
+# Leiden were also distributed by the telegraph system, I assume that most
+# places linked up with the telegraph (and railway) system automatically
+# adopted Amsterdam mean time.
+#
+# Although the early Dutch railway companies initially observed a variety
+# of times, most of them had adopted Amsterdam mean time by 1858 but it
+# was not until 1866 when they were all required by law to observe
+# Amsterdam mean time.
+
+# The data before 1945 are taken from
+# .
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Neth	1916	only	-	May	 1	0:00	1:00	NST	# Netherlands Summer Time
+Rule	Neth	1916	only	-	Oct	 1	0:00	0	AMT	# Amsterdam Mean Time
+Rule	Neth	1917	only	-	Apr	16	2:00s	1:00	NST
+Rule	Neth	1917	only	-	Sep	17	2:00s	0	AMT
+Rule	Neth	1918	1921	-	Apr	Mon>=1	2:00s	1:00	NST
+Rule	Neth	1918	1921	-	Sep	lastMon	2:00s	0	AMT
+Rule	Neth	1922	only	-	Mar	lastSun	2:00s	1:00	NST
+Rule	Neth	1922	1936	-	Oct	Sun>=2	2:00s	0	AMT
+Rule	Neth	1923	only	-	Jun	Fri>=1	2:00s	1:00	NST
+Rule	Neth	1924	only	-	Mar	lastSun	2:00s	1:00	NST
+Rule	Neth	1925	only	-	Jun	Fri>=1	2:00s	1:00	NST
+# From 1926 through 1939 DST began 05-15, except that it was delayed by a week
+# in years when 05-15 fell in the Pentecost weekend.
+Rule	Neth	1926	1931	-	May	15	2:00s	1:00	NST
+Rule	Neth	1932	only	-	May	22	2:00s	1:00	NST
+Rule	Neth	1933	1936	-	May	15	2:00s	1:00	NST
+Rule	Neth	1937	only	-	May	22	2:00s	1:00	NST
+Rule	Neth	1937	only	-	Jul	 1	0:00	1:00	S
+Rule	Neth	1937	1939	-	Oct	Sun>=2	2:00s	0	-
+Rule	Neth	1938	1939	-	May	15	2:00s	1:00	S
+Rule	Neth	1945	only	-	Apr	 2	2:00s	1:00	S
+Rule	Neth	1945	only	-	Sep	16	2:00s	0	-
+#
+# Amsterdam Mean Time was +00:19:32.13 exactly, but the .13 is omitted
+# below because the current format requires GMTOFF to be an integer.
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Europe/Amsterdam	0:19:32 -	LMT	1835
+			0:19:32	Neth	%s	1937 Jul  1
+			0:20	Neth	NE%sT	1940 May 16 0:00 # Dutch Time
+			1:00	C-Eur	CE%sT	1945 Apr  2 2:00
+			1:00	Neth	CE%sT	1977
+			1:00	EU	CE%sT
+
+# Norway
+# http://met.no/met/met_lex/q_u/sommertid.html (2004-01) agrees with Shanks &
+# Pottenger.
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Norway	1916	only	-	May	22	1:00	1:00	S
+Rule	Norway	1916	only	-	Sep	30	0:00	0	-
+Rule	Norway	1945	only	-	Apr	 2	2:00s	1:00	S
+Rule	Norway	1945	only	-	Oct	 1	2:00s	0	-
+Rule	Norway	1959	1964	-	Mar	Sun>=15	2:00s	1:00	S
+Rule	Norway	1959	1965	-	Sep	Sun>=15	2:00s	0	-
+Rule	Norway	1965	only	-	Apr	25	2:00s	1:00	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Oslo	0:43:00 -	LMT	1895 Jan  1
+			1:00	Norway	CE%sT	1940 Aug 10 23:00
+			1:00	C-Eur	CE%sT	1945 Apr  2  2:00
+			1:00	Norway	CE%sT	1980
+			1:00	EU	CE%sT
+
+# Svalbard & Jan Mayen
+
+# From Steffen Thorsen (2001-05-01):
+# Although I could not find it explicitly, it seems that Jan Mayen and
+# Svalbard have been using the same time as Norway at least since the
+# time they were declared as parts of Norway.  Svalbard was declared
+# as a part of Norway by law of 1925-07-17 no 11, section 4 and Jan
+# Mayen by law of 1930-02-27 no 2, section 2. (From
+# http://www.lovdata.no/all/nl-19250717-011.html and
+# http://www.lovdata.no/all/nl-19300227-002.html).  The law/regulation
+# for normal/standard time in Norway is from 1894-06-29 no 1 (came
+# into operation on 1895-01-01) and Svalbard/Jan Mayen seem to be a
+# part of this law since 1925/1930. (From
+# http://www.lovdata.no/all/nl-18940629-001.html ) I have not been
+# able to find if Jan Mayen used a different time zone (e.g. -0100)
+# before 1930. Jan Mayen has only been "inhabitated" since 1921 by
+# Norwegian meteorologists and maybe used the same time as Norway ever
+# since 1921.  Svalbard (Arctic/Longyearbyen) has been inhabited since
+# before 1895, and therefore probably changed the local time somewhere
+# between 1895 and 1925 (inclusive).
+
+# From Paul Eggert (2001-05-01):
+#
+# Actually, Jan Mayen was never occupied by Germany during World War II,
+# so it must have diverged from Oslo time during the war, as Oslo was
+# keeping Berlin time.
+#
+#  says that the meteorologists
+# burned down their station in 1940 and left the island, but returned in
+# 1941 with a small Norwegian garrison and continued operations despite
+# frequent air ttacks from Germans.  In 1943 the Americans established a
+# radiolocating station on the island, called "Atlantic City".  Possibly
+# the UTC offset changed during the war, but I think it unlikely that
+# Jan Mayen used German daylight-saving rules.
+#
+# Svalbard is more complicated, as it was raided in August 1941 by an
+# Allied party that evacuated the civilian population to England (says
+# ).  The Svalbard FAQ
+#  says that the Germans were
+# expelled on 1942-05-14.  However, small parties of Germans did return,
+# and according to Wilhelm Dege's book "War North of 80" (1954)
+# 
+# the German armed forces at the Svalbard weather station code-named
+# Haudegen did not surrender to the Allies until September 1945.
+#
+# All these events predate our cutoff date of 1970.  Unless we can
+# come up with more definitive info about the timekeeping during the
+# war years it's probably best just do...the following for now:
+Link	Europe/Oslo	Arctic/Longyearbyen
+
+# Poland
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Poland	1918	1919	-	Sep	16	2:00s	0	-
+Rule	Poland	1919	only	-	Apr	15	2:00s	1:00	S
+Rule	Poland	1944	only	-	Apr	 3	2:00s	1:00	S
+# Whitman gives 1944 Nov 30; go with Shanks & Pottenger.
+Rule	Poland	1944	only	-	Oct	 4	2:00	0	-
+# For 1944-1948 Whitman gives the previous day; go with Shanks & Pottenger.
+Rule	Poland	1945	only	-	Apr	29	0:00	1:00	S
+Rule	Poland	1945	only	-	Nov	 1	0:00	0	-
+# For 1946 on the source is Kazimierz Borkowski,
+# Torun Center for Astronomy, Dept. of Radio Astronomy, Nicolaus Copernicus U.,
+# 
+# Thanks to Przemyslaw Augustyniak (2005-05-28) for this reference.
+# He also gives these further references:
+# Mon Pol nr 13, poz 162 (1995) 
+# Druk nr 2180 (2003) 
+Rule	Poland	1946	only	-	Apr	14	0:00s	1:00	S
+Rule	Poland	1946	only	-	Oct	 7	2:00s	0	-
+Rule	Poland	1947	only	-	May	 4	2:00s	1:00	S
+Rule	Poland	1947	1949	-	Oct	Sun>=1	2:00s	0	-
+Rule	Poland	1948	only	-	Apr	18	2:00s	1:00	S
+Rule	Poland	1949	only	-	Apr	10	2:00s	1:00	S
+Rule	Poland	1957	only	-	Jun	 2	1:00s	1:00	S
+Rule	Poland	1957	1958	-	Sep	lastSun	1:00s	0	-
+Rule	Poland	1958	only	-	Mar	30	1:00s	1:00	S
+Rule	Poland	1959	only	-	May	31	1:00s	1:00	S
+Rule	Poland	1959	1961	-	Oct	Sun>=1	1:00s	0	-
+Rule	Poland	1960	only	-	Apr	 3	1:00s	1:00	S
+Rule	Poland	1961	1964	-	May	lastSun	1:00s	1:00	S
+Rule	Poland	1962	1964	-	Sep	lastSun	1:00s	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Warsaw	1:24:00 -	LMT	1880
+			1:24:00	-	WMT	1915 Aug  5   # Warsaw Mean Time
+			1:00	C-Eur	CE%sT	1918 Sep 16 3:00
+			2:00	Poland	EE%sT	1922 Jun
+			1:00	Poland	CE%sT	1940 Jun 23 2:00
+			1:00	C-Eur	CE%sT	1944 Oct
+			1:00	Poland	CE%sT	1977
+			1:00	W-Eur	CE%sT	1988
+			1:00	EU	CE%sT
+
+# Portugal
+#
+# From Rui Pedro Salgueiro (1992-11-12):
+# Portugal has recently (September, 27) changed timezone
+# (from WET to MET or CET) to harmonize with EEC.
+#
+# Martin Bruckmann (1996-02-29) reports via Peter Ilieve
+# that Portugal is reverting to 0:00 by not moving its clocks this spring.
+# The new Prime Minister was fed up with getting up in the dark in the winter.
+#
+# From Paul Eggert (1996-11-12):
+# IATA SSIM (1991-09) reports several 1991-09 and 1992-09 transitions
+# at 02:00u, not 01:00u.  Assume that these are typos.
+# IATA SSIM (1991/1992) reports that the Azores were at -1:00.
+# IATA SSIM (1993-02) says +0:00; later issues (through 1996-09) say -1:00.
+# Guess that the Azores changed to EU rules in 1992 (since that's when Portugal
+# harmonized with the EU), and that they stayed +0:00 that winter.
+#
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+# DSH writes that despite Decree 1,469 (1915), the change to the clocks was not
+# done every year, depending on what Spain did, because of railroad schedules.
+# Go with Shanks & Pottenger.
+Rule	Port	1916	only	-	Jun	17	23:00	1:00	S
+# Whitman gives 1916 Oct 31; go with Shanks & Pottenger.
+Rule	Port	1916	only	-	Nov	 1	 1:00	0	-
+Rule	Port	1917	only	-	Feb	28	23:00s	1:00	S
+Rule	Port	1917	1921	-	Oct	14	23:00s	0	-
+Rule	Port	1918	only	-	Mar	 1	23:00s	1:00	S
+Rule	Port	1919	only	-	Feb	28	23:00s	1:00	S
+Rule	Port	1920	only	-	Feb	29	23:00s	1:00	S
+Rule	Port	1921	only	-	Feb	28	23:00s	1:00	S
+Rule	Port	1924	only	-	Apr	16	23:00s	1:00	S
+Rule	Port	1924	only	-	Oct	14	23:00s	0	-
+Rule	Port	1926	only	-	Apr	17	23:00s	1:00	S
+Rule	Port	1926	1929	-	Oct	Sat>=1	23:00s	0	-
+Rule	Port	1927	only	-	Apr	 9	23:00s	1:00	S
+Rule	Port	1928	only	-	Apr	14	23:00s	1:00	S
+Rule	Port	1929	only	-	Apr	20	23:00s	1:00	S
+Rule	Port	1931	only	-	Apr	18	23:00s	1:00	S
+# Whitman gives 1931 Oct 8; go with Shanks & Pottenger.
+Rule	Port	1931	1932	-	Oct	Sat>=1	23:00s	0	-
+Rule	Port	1932	only	-	Apr	 2	23:00s	1:00	S
+Rule	Port	1934	only	-	Apr	 7	23:00s	1:00	S
+# Whitman gives 1934 Oct 5; go with Shanks & Pottenger.
+Rule	Port	1934	1938	-	Oct	Sat>=1	23:00s	0	-
+# Shanks & Pottenger give 1935 Apr 30; go with Whitman.
+Rule	Port	1935	only	-	Mar	30	23:00s	1:00	S
+Rule	Port	1936	only	-	Apr	18	23:00s	1:00	S
+# Whitman gives 1937 Apr 2; go with Shanks & Pottenger.
+Rule	Port	1937	only	-	Apr	 3	23:00s	1:00	S
+Rule	Port	1938	only	-	Mar	26	23:00s	1:00	S
+Rule	Port	1939	only	-	Apr	15	23:00s	1:00	S
+# Whitman gives 1939 Oct 7; go with Shanks & Pottenger.
+Rule	Port	1939	only	-	Nov	18	23:00s	0	-
+Rule	Port	1940	only	-	Feb	24	23:00s	1:00	S
+# Shanks & Pottenger give 1940 Oct 7; go with Whitman.
+Rule	Port	1940	1941	-	Oct	 5	23:00s	0	-
+Rule	Port	1941	only	-	Apr	 5	23:00s	1:00	S
+Rule	Port	1942	1945	-	Mar	Sat>=8	23:00s	1:00	S
+Rule	Port	1942	only	-	Apr	25	22:00s	2:00	M # Midsummer
+Rule	Port	1942	only	-	Aug	15	22:00s	1:00	S
+Rule	Port	1942	1945	-	Oct	Sat>=24	23:00s	0	-
+Rule	Port	1943	only	-	Apr	17	22:00s	2:00	M
+Rule	Port	1943	1945	-	Aug	Sat>=25	22:00s	1:00	S
+Rule	Port	1944	1945	-	Apr	Sat>=21	22:00s	2:00	M
+Rule	Port	1946	only	-	Apr	Sat>=1	23:00s	1:00	S
+Rule	Port	1946	only	-	Oct	Sat>=1	23:00s	0	-
+Rule	Port	1947	1949	-	Apr	Sun>=1	 2:00s	1:00	S
+Rule	Port	1947	1949	-	Oct	Sun>=1	 2:00s	0	-
+# Shanks & Pottenger say DST was observed in 1950; go with Whitman.
+# Whitman gives Oct lastSun for 1952 on; go with Shanks & Pottenger.
+Rule	Port	1951	1965	-	Apr	Sun>=1	 2:00s	1:00	S
+Rule	Port	1951	1965	-	Oct	Sun>=1	 2:00s	0	-
+Rule	Port	1977	only	-	Mar	27	 0:00s	1:00	S
+Rule	Port	1977	only	-	Sep	25	 0:00s	0	-
+Rule	Port	1978	1979	-	Apr	Sun>=1	 0:00s	1:00	S
+Rule	Port	1978	only	-	Oct	 1	 0:00s	0	-
+Rule	Port	1979	1982	-	Sep	lastSun	 1:00s	0	-
+Rule	Port	1980	only	-	Mar	lastSun	 0:00s	1:00	S
+Rule	Port	1981	1982	-	Mar	lastSun	 1:00s	1:00	S
+Rule	Port	1983	only	-	Mar	lastSun	 2:00s	1:00	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+# Shanks & Pottenger say the transition from LMT to WET occurred 1911-05-24;
+# Willett says 1912-01-01.  Go with Willett.
+Zone	Europe/Lisbon	-0:36:32 -	LMT	1884
+			-0:36:32 -	LMT	1912 Jan  1  # Lisbon Mean Time
+			 0:00	Port	WE%sT	1966 Apr  3 2:00
+			 1:00	-	CET	1976 Sep 26 1:00
+			 0:00	Port	WE%sT	1983 Sep 25 1:00s
+			 0:00	W-Eur	WE%sT	1992 Sep 27 1:00s
+			 1:00	EU	CE%sT	1996 Mar 31 1:00u
+			 0:00	EU	WE%sT
+Zone Atlantic/Azores	-1:42:40 -	LMT	1884		# Ponta Delgada
+			-1:54:32 -	HMT	1911 May 24  # Horta Mean Time
+			-2:00	Port	AZO%sT	1966 Apr  3 2:00 # Azores Time
+			-1:00	Port	AZO%sT	1983 Sep 25 1:00s
+			-1:00	W-Eur	AZO%sT	1992 Sep 27 1:00s
+			 0:00	EU	WE%sT	1993 Mar 28 1:00u
+			-1:00	EU	AZO%sT
+Zone Atlantic/Madeira	-1:07:36 -	LMT	1884		# Funchal
+			-1:07:36 -	FMT	1911 May 24  # Funchal Mean Time
+			-1:00	Port	MAD%sT	1966 Apr  3 2:00 # Madeira Time
+			 0:00	Port	WE%sT	1983 Sep 25 1:00s
+			 0:00	EU	WE%sT
+
+# Romania
+#
+# From Paul Eggert (1999-10-07):
+# 
+# Nine O'clock (1998-10-23) reports that the switch occurred at
+# 04:00 local time in fall 1998.  For lack of better info,
+# assume that Romania and Moldova switched to EU rules in 1997,
+# the same year as Bulgaria.
+#
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Romania	1932	only	-	May	21	 0:00s	1:00	S
+Rule	Romania	1932	1939	-	Oct	Sun>=1	 0:00s	0	-
+Rule	Romania	1933	1939	-	Apr	Sun>=2	 0:00s	1:00	S
+Rule	Romania	1979	only	-	May	27	 0:00	1:00	S
+Rule	Romania	1979	only	-	Sep	lastSun	 0:00	0	-
+Rule	Romania	1980	only	-	Apr	 5	23:00	1:00	S
+Rule	Romania	1980	only	-	Sep	lastSun	 1:00	0	-
+Rule	Romania	1991	1993	-	Mar	lastSun	 0:00s	1:00	S
+Rule	Romania	1991	1993	-	Sep	lastSun	 0:00s	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Europe/Bucharest	1:44:24 -	LMT	1891 Oct
+			1:44:24	-	BMT	1931 Jul 24	# Bucharest MT
+			2:00	Romania	EE%sT	1981 Mar 29 2:00s
+			2:00	C-Eur	EE%sT	1991
+			2:00	Romania	EE%sT	1994
+			2:00	E-Eur	EE%sT	1997
+			2:00	EU	EE%sT
+
+# Russia
+
+# From Paul Eggert (2006-03-22):
+# Except for Moscow after 1919-07-01, I invented the time zone abbreviations.
+# Moscow time zone abbreviations after 1919-07-01, and Moscow rules after 1991,
+# are from Andrey A. Chernov.  The rest is from Shanks & Pottenger,
+# except we follow Chernov's report that 1992 DST transitions were Sat
+# 23:00, not Sun 02:00s.
+#
+# From Stanislaw A. Kuzikowski (1994-06-29):
+# But now it is some months since Novosibirsk is 3 hours ahead of Moscow!
+# I do not know why they have decided to make this change;
+# as far as I remember it was done exactly during winter->summer switching
+# so we (Novosibirsk) simply did not switch.
+#
+# From Andrey A. Chernov (1996-10-04):
+# `MSK' and `MSD' were born and used initially on Moscow computers with
+# UNIX-like OSes by several developer groups (e.g. Demos group, Kiae group)....
+# The next step was the UUCP network, the Relcom predecessor
+# (used mainly for mail), and MSK/MSD was actively used there.
+#
+# From Chris Carrier (1996-10-30):
+# According to a friend of mine who rode the Trans-Siberian Railroad from
+# Moscow to Irkutsk in 1995, public air and rail transport in Russia ...
+# still follows Moscow time, no matter where in Russia it is located.
+#
+# For Grozny, Chechnya, we have the following story from
+# John Daniszewski, "Scavengers in the Rubble", Los Angeles Times (2001-02-07):
+# News--often false--is spread by word of mouth.  A rumor that it was
+# time to move the clocks back put this whole city out of sync with
+# the rest of Russia for two weeks--even soldiers stationed here began
+# enforcing curfew at the wrong time.
+#
+# From Gwillim Law (2001-06-05):
+# There's considerable evidence that Sakhalin Island used to be in
+# UTC+11, and has changed to UTC+10, in this decade.  I start with the
+# SSIM, which listed Yuzhno-Sakhalinsk in zone RU10 along with Magadan
+# until February 1997, and then in RU9 with Khabarovsk and Vladivostok
+# since September 1997....  Although the Kuril Islands are
+# administratively part of Sakhalin oblast', they appear to have
+# remained on UTC+11 along with Magadan.
+#
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+#
+# Kaliningradskaya oblast'.
+Zone Europe/Kaliningrad	 1:22:00 -	LMT	1893 Apr
+			 1:00	C-Eur	CE%sT	1945
+			 2:00	Poland	CE%sT	1946
+			 3:00	Russia	MSK/MSD	1991 Mar 31 2:00s
+			 2:00	Russia	EE%sT	2011 Mar 27 2:00s
+			 3:00	-	FET # Further-eastern European Time
+#
+# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+# Respublika Adygeya, Arkhangel'skaya oblast',
+# Belgorodskaya oblast', Bryanskaya oblast', Vladimirskaya oblast',
+# Vologodskaya oblast', Voronezhskaya oblast',
+# Respublika Dagestan, Ivanovskaya oblast', Respublika Ingushetiya,
+# Kabarbino-Balkarskaya Respublika, Respublika Kalmykiya,
+# Kalyzhskaya oblast', Respublika Karachaevo-Cherkessiya,
+# Respublika Kareliya, Respublika Komi,
+# Kostromskaya oblast', Krasnodarskij kraj, Kurskaya oblast',
+# Leningradskaya oblast', Lipetskaya oblast', Respublika Marij El,
+# Respublika Mordoviya, Moskva, Moskovskaya oblast',
+# Murmanskaya oblast', Nenetskij avtonomnyj okrug,
+# Nizhegorodskaya oblast', Novgorodskaya oblast', Orlovskaya oblast',
+# Penzenskaya oblast', Pskovskaya oblast', Rostovskaya oblast',
+# Ryazanskaya oblast', Sankt-Peterburg,
+# Respublika Severnaya Osetiya, Smolenskaya oblast',
+# Stavropol'skij kraj, Tambovskaya oblast', Respublika Tatarstan,
+# Tverskaya oblast', Tyl'skaya oblast', Ul'yanovskaya oblast',
+# Chechenskaya Respublika, Chuvashskaya oblast',
+# Yaroslavskaya oblast'
+Zone Europe/Moscow	 2:30:20 -	LMT	1880
+			 2:30	-	MMT	1916 Jul  3 # Moscow Mean Time
+			 2:30:48 Russia	%s	1919 Jul  1 2:00
+			 3:00	Russia	MSK/MSD	1922 Oct
+			 2:00	-	EET	1930 Jun 21
+			 3:00	Russia	MSK/MSD	1991 Mar 31 2:00s
+			 2:00	Russia	EE%sT	1992 Jan 19 2:00s
+			 3:00	Russia	MSK/MSD	2011 Mar 27 2:00s
+			 4:00	-	MSK
+#
+# Astrakhanskaya oblast', Kirovskaya oblast', Saratovskaya oblast',
+# Volgogradskaya oblast'.  Shanks & Pottenger say Kirov is still at +0400
+# but Wikipedia (2006-05-09) says +0300.  Perhaps it switched after the
+# others?  But we have no data.
+Zone Europe/Volgograd	 2:57:40 -	LMT	1920 Jan  3
+			 3:00	-	TSAT	1925 Apr  6 # Tsaritsyn Time
+			 3:00	-	STAT	1930 Jun 21 # Stalingrad Time
+			 4:00	-	STAT	1961 Nov 11
+			 4:00	Russia	VOL%sT	1989 Mar 26 2:00s # Volgograd T
+			 3:00	Russia	VOL%sT	1991 Mar 31 2:00s
+			 4:00	-	VOLT	1992 Mar 29 2:00s
+			 3:00	Russia	VOL%sT	2011 Mar 27 2:00s
+			 4:00	-	VOLT
+#
+# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+# Samarskaya oblast', Udmyrtskaya respublika
+Zone Europe/Samara	 3:20:36 -	LMT	1919 Jul  1 2:00
+			 3:00	-	SAMT	1930 Jun 21
+			 4:00	-	SAMT	1935 Jan 27
+			 4:00	Russia	KUY%sT	1989 Mar 26 2:00s # Kuybyshev
+			 3:00	Russia	KUY%sT	1991 Mar 31 2:00s
+			 2:00	Russia	KUY%sT	1991 Sep 29 2:00s
+			 3:00	-	KUYT	1991 Oct 20 3:00
+			 4:00	Russia	SAM%sT	2010 Mar 28 2:00s # Samara Time
+			 3:00	Russia	SAM%sT	2011 Mar 27 2:00s
+			 4:00	-	SAMT
+
+#
+# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+# Respublika Bashkortostan, Komi-Permyatskij avtonomnyj okrug,
+# Kurganskaya oblast', Orenburgskaya oblast', Permskaya oblast',
+# Sverdlovskaya oblast', Tyumenskaya oblast',
+# Khanty-Manskijskij avtonomnyj okrug, Chelyabinskaya oblast',
+# Yamalo-Nenetskij avtonomnyj okrug.
+Zone Asia/Yekaterinburg	 4:02:24 -	LMT	1919 Jul 15 4:00
+			 4:00	-	SVET	1930 Jun 21 # Sverdlovsk Time
+			 5:00	Russia	SVE%sT	1991 Mar 31 2:00s
+			 4:00	Russia	SVE%sT	1992 Jan 19 2:00s
+			 5:00	Russia	YEK%sT	2011 Mar 27 2:00s
+			 6:00	-	YEKT	# Yekaterinburg Time
+#
+# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+# Respublika Altaj, Altajskij kraj, Omskaya oblast'.
+Zone Asia/Omsk		 4:53:36 -	LMT	1919 Nov 14
+			 5:00	-	OMST	1930 Jun 21 # Omsk TIme
+			 6:00	Russia	OMS%sT	1991 Mar 31 2:00s
+			 5:00	Russia	OMS%sT	1992 Jan 19 2:00s
+			 6:00	Russia	OMS%sT	2011 Mar 27 2:00s
+			 7:00	-	OMST
+#
+# From Paul Eggert (2006-08-19): I'm guessing about Tomsk here; it's
+# not clear when it switched from +7 to +6.
+# Novosibirskaya oblast', Tomskaya oblast'.
+Zone Asia/Novosibirsk	 5:31:40 -	LMT	1919 Dec 14 6:00
+			 6:00	-	NOVT	1930 Jun 21 # Novosibirsk Time
+			 7:00	Russia	NOV%sT	1991 Mar 31 2:00s
+			 6:00	Russia	NOV%sT	1992 Jan 19 2:00s
+			 7:00	Russia	NOV%sT	1993 May 23 # say Shanks & P.
+			 6:00	Russia	NOV%sT	2011 Mar 27 2:00s
+			 7:00	-	NOVT
+
+# From Alexander Krivenyshev (2009-10-13):
+# Kemerovo oblast' (Kemerovo region) in Russia will change current time zone on
+# March 28, 2010:
+# from current Russia Zone 6 - Krasnoyarsk Time Zone (KRA) UTC +0700
+# to Russia Zone 5 - Novosibirsk Time Zone (NOV) UTC +0600
+#
+# This is according to Government of Russia decree # 740, on September
+# 14, 2009 "Application in the territory of the Kemerovo region the Fifth
+# time zone." ("Russia Zone 5" or old "USSR Zone 5" is GMT +0600)
+#
+# Russian Government web site (Russian language)
+# 
+# http://www.government.ru/content/governmentactivity/rfgovernmentdecisions/archive/2009/09/14/991633.htm
+# 
+# or Russian-English translation by WorldTimeZone.com with reference
+# map to local region and new Russia Time Zone map after March 28, 2010
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_russia03.html
+# 
+#
+# Thus, when Russia will switch to DST on the night of March 28, 2010
+# Kemerovo region (Kemerovo oblast') will not change the clock.
+#
+# As a result, Kemerovo oblast' will be in the same time zone as
+# Novosibirsk, Omsk, Tomsk, Barnaul and Altai Republic.
+
+Zone Asia/Novokuznetsk	 5:48:48 -	NMT	1920 Jan  6
+			 6:00	-	KRAT	1930 Jun 21 # Krasnoyarsk Time
+			 7:00	Russia	KRA%sT	1991 Mar 31 2:00s
+			 6:00	Russia	KRA%sT	1992 Jan 19 2:00s
+			 7:00	Russia	KRA%sT	2010 Mar 28 2:00s
+			 6:00	Russia	NOV%sT	2011 Mar 27 2:00s
+			 7:00	-	NOVT # Novosibirsk/Novokuznetsk Time
+
+#
+# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+# Krasnoyarskij kraj,
+# Tajmyrskij (Dolgano-Nenetskij) avtonomnyj okrug,
+# Respublika Tuva, Respublika Khakasiya, Evenkijskij avtonomnyj okrug.
+Zone Asia/Krasnoyarsk	 6:11:20 -	LMT	1920 Jan  6
+			 6:00	-	KRAT	1930 Jun 21 # Krasnoyarsk Time
+			 7:00	Russia	KRA%sT	1991 Mar 31 2:00s
+			 6:00	Russia	KRA%sT	1992 Jan 19 2:00s
+			 7:00	Russia	KRA%sT	2011 Mar 27 2:00s
+			 8:00	-	KRAT
+#
+# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+# Respublika Buryatiya, Irkutskaya oblast',
+# Ust'-Ordynskij Buryatskij avtonomnyj okrug.
+Zone Asia/Irkutsk	 6:57:20 -	LMT	1880
+			 6:57:20 -	IMT	1920 Jan 25 # Irkutsk Mean Time
+			 7:00	-	IRKT	1930 Jun 21 # Irkutsk Time
+			 8:00	Russia	IRK%sT	1991 Mar 31 2:00s
+			 7:00	Russia	IRK%sT	1992 Jan 19 2:00s
+			 8:00	Russia	IRK%sT	2011 Mar 27 2:00s
+			 9:00	-	IRKT
+#
+# From Oscar van Vlijmen (2003-10-18): [This region consists of]
+# Aginskij Buryatskij avtonomnyj okrug, Amurskaya oblast',
+# [parts of] Respublika Sakha (Yakutiya), Chitinskaya oblast'.
+
+# From Oscar van Vlijmen (2009-11-29):
+# ...some regions of [Russia] were merged with others since 2005...
+# Some names were changed, no big deal, except for one instance: a new name.
+# YAK/YAKST: UTC+9 Zabajkal'skij kraj.
+
+# From Oscar van Vlijmen (2009-11-29):
+# The Sakha districts are: Aldanskij, Amginskij, Anabarskij,
+# Verkhnevilyujskij, Vilyujskij, Gornyj,
+# Zhiganskij, Kobyajskij, Lenskij, Megino-Kangalasskij, Mirninskij,
+# Namskij, Nyurbinskij, Olenyokskij, Olyokminskij,
+# Suntarskij, Tattinskij, Ust'-Aldanskij, Khangalasskij,
+# Churapchinskij, Eveno-Bytantajskij Natsional'nij.
+
+Zone Asia/Yakutsk	 8:38:40 -	LMT	1919 Dec 15
+			 8:00	-	YAKT	1930 Jun 21 # Yakutsk Time
+			 9:00	Russia	YAK%sT	1991 Mar 31 2:00s
+			 8:00	Russia	YAK%sT	1992 Jan 19 2:00s
+			 9:00	Russia	YAK%sT	2011 Mar 27 2:00s
+			 10:00	-	YAKT
+#
+# From Oscar van Vlijmen (2003-10-18): [This region consists of]
+# Evrejskaya avtonomnaya oblast', Khabarovskij kraj, Primorskij kraj,
+# [parts of] Respublika Sakha (Yakutiya).
+
+# From Oscar van Vlijmen (2009-11-29):
+# The Sakha districts are: Bulunskij, Verkhoyanskij, Tomponskij, Ust'-Majskij,
+# Ust'-Yanskij.
+Zone Asia/Vladivostok	 8:47:44 -	LMT	1922 Nov 15
+			 9:00	-	VLAT	1930 Jun 21 # Vladivostok Time
+			10:00	Russia	VLA%sT	1991 Mar 31 2:00s
+			 9:00	Russia	VLA%sST	1992 Jan 19 2:00s
+			10:00	Russia	VLA%sT	2011 Mar 27 2:00s
+			11:00	-	VLAT
+#
+# Sakhalinskaya oblast'.
+# The Zone name should be Yuzhno-Sakhalinsk, but that's too long.
+Zone Asia/Sakhalin	 9:30:48 -	LMT	1905 Aug 23
+			 9:00	-	CJT	1938
+			 9:00	-	JST	1945 Aug 25
+			11:00	Russia	SAK%sT	1991 Mar 31 2:00s # Sakhalin T.
+			10:00	Russia	SAK%sT	1992 Jan 19 2:00s
+			11:00	Russia	SAK%sT	1997 Mar lastSun 2:00s
+			10:00	Russia	SAK%sT	2011 Mar 27 2:00s
+			11:00	-	SAKT
+#
+# From Oscar van Vlijmen (2003-10-18): [This region consists of]
+# Magadanskaya oblast', Respublika Sakha (Yakutiya).
+# Probably also: Kuril Islands.
+
+# From Oscar van Vlijmen (2009-11-29):
+# The Sakha districts are: Abyjskij, Allaikhovskij, Verkhhhnekolymskij, Momskij,
+# Nizhnekolymskij, Ojmyakonskij, Srednekolymskij.
+Zone Asia/Magadan	10:03:12 -	LMT	1924 May  2
+			10:00	-	MAGT	1930 Jun 21 # Magadan Time
+			11:00	Russia	MAG%sT	1991 Mar 31 2:00s
+			10:00	Russia	MAG%sT	1992 Jan 19 2:00s
+			11:00	Russia	MAG%sT	2011 Mar 27 2:00s
+			12:00	-	MAGT
+#
+# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+# Kamchatskaya oblast', Koryakskij avtonomnyj okrug.
+#
+# The Zone name should be Asia/Petropavlovsk-Kamchatski, but that's too long.
+Zone Asia/Kamchatka	10:34:36 -	LMT	1922 Nov 10
+			11:00	-	PETT	1930 Jun 21 # P-K Time
+			12:00	Russia	PET%sT	1991 Mar 31 2:00s
+			11:00	Russia	PET%sT	1992 Jan 19 2:00s
+			12:00	Russia	PET%sT	2010 Mar 28 2:00s
+			11:00	Russia	PET%sT	2011 Mar 27 2:00s
+			12:00	-	PETT
+#
+# Chukotskij avtonomnyj okrug
+Zone Asia/Anadyr	11:49:56 -	LMT	1924 May  2
+			12:00	-	ANAT	1930 Jun 21 # Anadyr Time
+			13:00	Russia	ANA%sT	1982 Apr  1 0:00s
+			12:00	Russia	ANA%sT	1991 Mar 31 2:00s
+			11:00	Russia	ANA%sT	1992 Jan 19 2:00s
+			12:00	Russia	ANA%sT	2010 Mar 28 2:00s
+			11:00	Russia	ANA%sT	2011 Mar 27 2:00s
+			12:00	-	ANAT
+
+# Serbia
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Belgrade	1:22:00	-	LMT	1884
+			1:00	-	CET	1941 Apr 18 23:00
+			1:00	C-Eur	CE%sT	1945
+			1:00	-	CET	1945 May 8 2:00s
+			1:00	1:00	CEST	1945 Sep 16  2:00s
+# Metod Kozelj reports that the legal date of
+# transition to EU rules was 1982-11-27, for all of Yugoslavia at the time.
+# Shanks & Pottenger don't give as much detail, so go with Kozelj.
+			1:00	-	CET	1982 Nov 27
+			1:00	EU	CE%sT
+Link Europe/Belgrade Europe/Ljubljana	# Slovenia
+Link Europe/Belgrade Europe/Podgorica	# Montenegro
+Link Europe/Belgrade Europe/Sarajevo	# Bosnia and Herzegovina
+Link Europe/Belgrade Europe/Skopje	# Macedonia
+Link Europe/Belgrade Europe/Zagreb	# Croatia
+
+# Slovakia
+Link Europe/Prague Europe/Bratislava
+
+# Slovenia
+# see Serbia
+
+# Spain
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+# For 1917-1919 Whitman gives Apr Sat>=1 - Oct Sat>=1;
+# go with Shanks & Pottenger.
+Rule	Spain	1917	only	-	May	 5	23:00s	1:00	S
+Rule	Spain	1917	1919	-	Oct	 6	23:00s	0	-
+Rule	Spain	1918	only	-	Apr	15	23:00s	1:00	S
+Rule	Spain	1919	only	-	Apr	 5	23:00s	1:00	S
+# Whitman gives 1921 Feb 28 - Oct 14; go with Shanks & Pottenger.
+Rule	Spain	1924	only	-	Apr	16	23:00s	1:00	S
+# Whitman gives 1924 Oct 14; go with Shanks & Pottenger.
+Rule	Spain	1924	only	-	Oct	 4	23:00s	0	-
+Rule	Spain	1926	only	-	Apr	17	23:00s	1:00	S
+# Whitman says no DST in 1929; go with Shanks & Pottenger.
+Rule	Spain	1926	1929	-	Oct	Sat>=1	23:00s	0	-
+Rule	Spain	1927	only	-	Apr	 9	23:00s	1:00	S
+Rule	Spain	1928	only	-	Apr	14	23:00s	1:00	S
+Rule	Spain	1929	only	-	Apr	20	23:00s	1:00	S
+# Whitman gives 1937 Jun 16, 1938 Apr 16, 1940 Apr 13;
+# go with Shanks & Pottenger.
+Rule	Spain	1937	only	-	May	22	23:00s	1:00	S
+Rule	Spain	1937	1939	-	Oct	Sat>=1	23:00s	0	-
+Rule	Spain	1938	only	-	Mar	22	23:00s	1:00	S
+Rule	Spain	1939	only	-	Apr	15	23:00s	1:00	S
+Rule	Spain	1940	only	-	Mar	16	23:00s	1:00	S
+# Whitman says no DST 1942-1945; go with Shanks & Pottenger.
+Rule	Spain	1942	only	-	May	 2	22:00s	2:00	M # Midsummer
+Rule	Spain	1942	only	-	Sep	 1	22:00s	1:00	S
+Rule	Spain	1943	1946	-	Apr	Sat>=13	22:00s	2:00	M
+Rule	Spain	1943	only	-	Oct	 3	22:00s	1:00	S
+Rule	Spain	1944	only	-	Oct	10	22:00s	1:00	S
+Rule	Spain	1945	only	-	Sep	30	 1:00	1:00	S
+Rule	Spain	1946	only	-	Sep	30	 0:00	0	-
+Rule	Spain	1949	only	-	Apr	30	23:00	1:00	S
+Rule	Spain	1949	only	-	Sep	30	 1:00	0	-
+Rule	Spain	1974	1975	-	Apr	Sat>=13	23:00	1:00	S
+Rule	Spain	1974	1975	-	Oct	Sun>=1	 1:00	0	-
+Rule	Spain	1976	only	-	Mar	27	23:00	1:00	S
+Rule	Spain	1976	1977	-	Sep	lastSun	 1:00	0	-
+Rule	Spain	1977	1978	-	Apr	 2	23:00	1:00	S
+Rule	Spain	1978	only	-	Oct	 1	 1:00	0	-
+# The following rules are copied from Morocco from 1967 through 1978.
+Rule SpainAfrica 1967	only	-	Jun	 3	12:00	1:00	S
+Rule SpainAfrica 1967	only	-	Oct	 1	 0:00	0	-
+Rule SpainAfrica 1974	only	-	Jun	24	 0:00	1:00	S
+Rule SpainAfrica 1974	only	-	Sep	 1	 0:00	0	-
+Rule SpainAfrica 1976	1977	-	May	 1	 0:00	1:00	S
+Rule SpainAfrica 1976	only	-	Aug	 1	 0:00	0	-
+Rule SpainAfrica 1977	only	-	Sep	28	 0:00	0	-
+Rule SpainAfrica 1978	only	-	Jun	 1	 0:00	1:00	S
+Rule SpainAfrica 1978	only	-	Aug	 4	 0:00	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Madrid	-0:14:44 -	LMT	1901 Jan  1  0:00s
+			 0:00	Spain	WE%sT	1946 Sep 30
+			 1:00	Spain	CE%sT	1979
+			 1:00	EU	CE%sT
+Zone	Africa/Ceuta	-0:21:16 -	LMT	1901
+			 0:00	-	WET	1918 May  6 23:00
+			 0:00	1:00	WEST	1918 Oct  7 23:00
+			 0:00	-	WET	1924
+			 0:00	Spain	WE%sT	1929
+			 0:00 SpainAfrica WE%sT 1984 Mar 16
+			 1:00	-	CET	1986
+			 1:00	EU	CE%sT
+Zone	Atlantic/Canary	-1:01:36 -	LMT	1922 Mar # Las Palmas de Gran C.
+			-1:00	-	CANT	1946 Sep 30 1:00 # Canaries Time
+			 0:00	-	WET	1980 Apr  6 0:00s
+			 0:00	1:00	WEST	1980 Sep 28 0:00s
+			 0:00	EU	WE%sT
+# IATA SSIM (1996-09) says the Canaries switch at 2:00u, not 1:00u.
+# Ignore this for now, as the Canaries are part of the EU.
+
+# Sweden
+
+# From Ivan Nilsson (2001-04-13), superseding Shanks & Pottenger:
+#
+# The law "Svensk forfattningssamling 1878, no 14" about standard time in 1879:
+# From the beginning of 1879 (that is 01-01 00:00) the time for all
+# places in the country is "the mean solar time for the meridian at
+# three degrees, or twelve minutes of time, to the west of the
+# meridian of the Observatory of Stockholm".  The law is dated 1878-05-31.
+#
+# The observatory at that time had the meridian 18 degrees 03' 30"
+# eastern longitude = 01:12:14 in time.  Less 12 minutes gives the
+# national standard time as 01:00:14 ahead of GMT....
+#
+# About the beginning of CET in Sweden. The lawtext ("Svensk
+# forfattningssamling 1899, no 44") states, that "from the beginning
+# of 1900... ... the same as the mean solar time for the meridian at
+# the distance of one hour of time from the meridian of the English
+# observatory at Greenwich, or at 12 minutes 14 seconds to the west
+# from the meridian of the Observatory of Stockholm". The law is dated
+# 1899-06-16.  In short: At 1900-01-01 00:00:00 the new standard time
+# in Sweden is 01:00:00 ahead of GMT.
+#
+# 1916: The lawtext ("Svensk forfattningssamling 1916, no 124") states
+# that "1916-05-15 is considered to begin one hour earlier". It is
+# pretty obvious that at 05-14 23:00 the clocks are set to 05-15 00:00....
+# Further the law says, that "1916-09-30 is considered to end one hour later".
+#
+# The laws regulating [DST] are available on the site of the Swedish
+# Parliament beginning with 1985 - the laws regulating 1980/1984 are
+# not available on the site (to my knowledge they are only available
+# in Swedish):  (type
+# "sommartid" without the quotes in the field "Fritext" and then click
+# the Sok-button).
+#
+# (2001-05-13):
+#
+# I have now found a newspaper stating that at 1916-10-01 01:00
+# summertime the church-clocks etc were set back one hour to show
+# 1916-10-01 00:00 standard time.  The article also reports that some
+# people thought the switch to standard time would take place already
+# at 1916-10-01 00:00 summer time, but they had to wait for another
+# hour before the event took place.
+#
+# Source: The newspaper "Dagens Nyheter", 1916-10-01, page 7 upper left.
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Europe/Stockholm	1:12:12 -	LMT	1879 Jan  1
+			1:00:14	-	SET	1900 Jan  1	# Swedish Time
+			1:00	-	CET	1916 May 14 23:00
+			1:00	1:00	CEST	1916 Oct  1 01:00
+			1:00	-	CET	1980
+			1:00	EU	CE%sT
+
+# Switzerland
+# From Howse:
+# By the end of the 18th century clocks and watches became commonplace
+# and their performance improved enormously.  Communities began to keep
+# mean time in preference to apparent time -- Geneva from 1780 ....
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+# From Whitman (who writes ``Midnight?''):
+# Rule	Swiss	1940	only	-	Nov	 2	0:00	1:00	S
+# Rule	Swiss	1940	only	-	Dec	31	0:00	0	-
+# From Shanks & Pottenger:
+# Rule	Swiss	1941	1942	-	May	Sun>=1	2:00	1:00	S
+# Rule	Swiss	1941	1942	-	Oct	Sun>=1	0:00	0	-
+
+# From Alois Treindl (2008-12-17):
+# I have researched the DST usage in Switzerland during the 1940ies.
+#
+# As I wrote in an earlier message, I suspected the current tzdata values
+# to be wrong. This is now verified.
+#
+# I have found copies of the original ruling by the Swiss Federal
+# government, in 'Eidgen[o]ssische Gesetzessammlung 1941 and 1942' (Swiss
+# federal law collection)...
+#
+# DST began on Monday 5 May 1941, 1:00 am by shifting the clocks to 2:00 am
+# DST ended on Monday 6 Oct 1941, 2:00 am by shifting the clocks to 1:00 am.
+#
+# DST began on Monday, 4 May 1942 at 01:00 am
+# DST ended on Monday, 5 Oct 1942 at 02:00 am
+#
+# There was no DST in 1940, I have checked the law collection carefully.
+# It is also indicated by the fact that the 1942 entry in the law
+# collection points back to 1941 as a reference, but no reference to any
+# other years are made.
+#
+# Newspaper articles I have read in the archives on 6 May 1941 reported
+# about the introduction of DST (Sommerzeit in German) during the previous
+# night as an absolute novelty, because this was the first time that such
+# a thing had happened in Switzerland.
+#
+# I have also checked 1916, because one book source (Gabriel, Traite de
+# l'heure dans le monde) claims that Switzerland had DST in 1916. This is
+# false, no official document could be found. Probably Gabriel got misled
+# by references to Germany, which introduced DST in 1916 for the first time.
+#
+# The tzdata rules for Switzerland must be changed to:
+# Rule  Swiss   1941    1942    -       May     Mon>=1  1:00    1:00    S
+# Rule  Swiss   1941    1942    -       Oct     Mon>=1  2:00    0       -
+#
+# The 1940 rules must be deleted.
+#
+# One further detail for Switzerland, which is probably out of scope for
+# most users of tzdata:
+# The zone file
+# Zone    Europe/Zurich   0:34:08 -       LMT     1848 Sep 12
+#                          0:29:44 -       BMT     1894 Jun #Bern Mean Time
+#                          1:00    Swiss   CE%sT   1981
+#                          1:00    EU      CE%sT
+# describes all of Switzerland correctly, with the exception of
+# the Cantone Geneve (Geneva, Genf). Between 1848 and 1894 Geneve did not
+# follow Bern Mean Time but kept its own local mean time.
+# To represent this, an extra zone would be needed.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Swiss	1941	1942	-	May	Mon>=1	1:00	1:00	S
+Rule	Swiss	1941	1942	-	Oct	Mon>=1	2:00	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Zurich	0:34:08 -	LMT	1848 Sep 12
+			0:29:44	-	BMT	1894 Jun # Bern Mean Time
+			1:00	Swiss	CE%sT	1981
+			1:00	EU	CE%sT
+
+# Turkey
+
+# From Amar Devegowda (2007-01-03):
+# The time zone rules for Istanbul, Turkey have not been changed for years now.
+# ... The latest rules are available at -
+# http://www.timeanddate.com/worldclock/timezone.html?n=107
+# From Steffen Thorsen (2007-01-03):
+# I have been able to find press records back to 1996 which all say that
+# DST started 01:00 local time and end at 02:00 local time.  I am not sure
+# what happened before that.  One example for each year from 1996 to 2001:
+# http://newspot.byegm.gov.tr/arsiv/1996/21/N4.htm
+# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING97/03/97X03X25.TXT
+# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING98/03/98X03X02.HTM
+# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING99/10/99X10X26.HTM#%2016
+# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING2000/03/00X03X06.HTM#%2021
+# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING2001/03/23x03x01.HTM#%2027
+# From Paul Eggert (2007-01-03):
+# Prefer the above source to Shanks & Pottenger for time stamps after 1990.
+
+# From Steffen Thorsen (2007-03-09):
+# Starting 2007 though, it seems that they are adopting EU's 1:00 UTC
+# start/end time, according to the following page (2007-03-07):
+# http://www.ntvmsnbc.com/news/402029.asp
+# The official document is located here - it is in Turkish...:
+# http://rega.basbakanlik.gov.tr/eskiler/2007/03/20070307-7.htm
+# I was able to locate the following seemingly official document
+# (on a non-government server though) describing dates between 2002 and 2006:
+# http://www.alomaliye.com/bkk_2002_3769.htm
+
+# From Gökdeniz Karadağ (2011-03-10):
+#
+# According to the articles linked below, Turkey will change into summer
+# time zone (GMT+3) on March 28, 2011 at 3:00 a.m. instead of March 27.
+# This change is due to a nationwide exam on 27th.
+#
+# 
+# http://www.worldbulletin.net/?aType=haber&ArticleID=70872
+# 
+# Turkish:
+# 
+# http://www.hurriyet.com.tr/ekonomi/17230464.asp?gid=373
+# 
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Turkey	1916	only	-	May	 1	0:00	1:00	S
+Rule	Turkey	1916	only	-	Oct	 1	0:00	0	-
+Rule	Turkey	1920	only	-	Mar	28	0:00	1:00	S
+Rule	Turkey	1920	only	-	Oct	25	0:00	0	-
+Rule	Turkey	1921	only	-	Apr	 3	0:00	1:00	S
+Rule	Turkey	1921	only	-	Oct	 3	0:00	0	-
+Rule	Turkey	1922	only	-	Mar	26	0:00	1:00	S
+Rule	Turkey	1922	only	-	Oct	 8	0:00	0	-
+# Whitman gives 1923 Apr 28 - Sep 16 and no DST in 1924-1925;
+# go with Shanks & Pottenger.
+Rule	Turkey	1924	only	-	May	13	0:00	1:00	S
+Rule	Turkey	1924	1925	-	Oct	 1	0:00	0	-
+Rule	Turkey	1925	only	-	May	 1	0:00	1:00	S
+Rule	Turkey	1940	only	-	Jun	30	0:00	1:00	S
+Rule	Turkey	1940	only	-	Oct	 5	0:00	0	-
+Rule	Turkey	1940	only	-	Dec	 1	0:00	1:00	S
+Rule	Turkey	1941	only	-	Sep	21	0:00	0	-
+Rule	Turkey	1942	only	-	Apr	 1	0:00	1:00	S
+# Whitman omits the next two transition and gives 1945 Oct 1;
+# go with Shanks & Pottenger.
+Rule	Turkey	1942	only	-	Nov	 1	0:00	0	-
+Rule	Turkey	1945	only	-	Apr	 2	0:00	1:00	S
+Rule	Turkey	1945	only	-	Oct	 8	0:00	0	-
+Rule	Turkey	1946	only	-	Jun	 1	0:00	1:00	S
+Rule	Turkey	1946	only	-	Oct	 1	0:00	0	-
+Rule	Turkey	1947	1948	-	Apr	Sun>=16	0:00	1:00	S
+Rule	Turkey	1947	1950	-	Oct	Sun>=2	0:00	0	-
+Rule	Turkey	1949	only	-	Apr	10	0:00	1:00	S
+Rule	Turkey	1950	only	-	Apr	19	0:00	1:00	S
+Rule	Turkey	1951	only	-	Apr	22	0:00	1:00	S
+Rule	Turkey	1951	only	-	Oct	 8	0:00	0	-
+Rule	Turkey	1962	only	-	Jul	15	0:00	1:00	S
+Rule	Turkey	1962	only	-	Oct	 8	0:00	0	-
+Rule	Turkey	1964	only	-	May	15	0:00	1:00	S
+Rule	Turkey	1964	only	-	Oct	 1	0:00	0	-
+Rule	Turkey	1970	1972	-	May	Sun>=2	0:00	1:00	S
+Rule	Turkey	1970	1972	-	Oct	Sun>=2	0:00	0	-
+Rule	Turkey	1973	only	-	Jun	 3	1:00	1:00	S
+Rule	Turkey	1973	only	-	Nov	 4	3:00	0	-
+Rule	Turkey	1974	only	-	Mar	31	2:00	1:00	S
+Rule	Turkey	1974	only	-	Nov	 3	5:00	0	-
+Rule	Turkey	1975	only	-	Mar	30	0:00	1:00	S
+Rule	Turkey	1975	1976	-	Oct	lastSun	0:00	0	-
+Rule	Turkey	1976	only	-	Jun	 1	0:00	1:00	S
+Rule	Turkey	1977	1978	-	Apr	Sun>=1	0:00	1:00	S
+Rule	Turkey	1977	only	-	Oct	16	0:00	0	-
+Rule	Turkey	1979	1980	-	Apr	Sun>=1	3:00	1:00	S
+Rule	Turkey	1979	1982	-	Oct	Mon>=11	0:00	0	-
+Rule	Turkey	1981	1982	-	Mar	lastSun	3:00	1:00	S
+Rule	Turkey	1983	only	-	Jul	31	0:00	1:00	S
+Rule	Turkey	1983	only	-	Oct	 2	0:00	0	-
+Rule	Turkey	1985	only	-	Apr	20	0:00	1:00	S
+Rule	Turkey	1985	only	-	Sep	28	0:00	0	-
+Rule	Turkey	1986	1990	-	Mar	lastSun	2:00s	1:00	S
+Rule	Turkey	1986	1990	-	Sep	lastSun	2:00s	0	-
+Rule	Turkey	1991	2006	-	Mar	lastSun	1:00s	1:00	S
+Rule	Turkey	1991	1995	-	Sep	lastSun	1:00s	0	-
+Rule	Turkey	1996	2006	-	Oct	lastSun	1:00s	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	Europe/Istanbul	1:55:52 -	LMT	1880
+			1:56:56	-	IMT	1910 Oct # Istanbul Mean Time?
+			2:00	Turkey	EE%sT	1978 Oct 15
+			3:00	Turkey	TR%sT	1985 Apr 20 # Turkey Time
+			2:00	Turkey	EE%sT	2007
+			2:00	EU	EE%sT	2011 Mar 27 1:00u
+			2:00	-	EET	2011 Mar 28 1:00u
+			2:00	EU	EE%sT
+Link	Europe/Istanbul	Asia/Istanbul	# Istanbul is in both continents.
+
+# Ukraine
+#
+# From Igor Karpov, who works for the Ukranian Ministry of Justice,
+# via Garrett Wollman (2003-01-27):
+# BTW, I've found the official document on this matter. It's goverment
+# regulations number 509, May 13, 1996. In my poor translation it says:
+# "Time in Ukraine is set to second timezone (Kiev time). Each last Sunday
+# of March at 3am the time is changing to 4am and each last Sunday of
+# October the time at 4am is changing to 3am"
+
+# From Alexander Krivenyshev (2011-09-20):
+# On September 20, 2011 the deputies of the Verkhovna Rada agreed to
+# abolish the transfer clock to winter time.
+#
+# Bill number 8330 of MP from the Party of Regions Oleg Nadoshi got
+# approval from 266 deputies.
+#
+# Ukraine abolishes transter back to the winter time (in Russian)
+# 
+# http://news.mail.ru/politics/6861560/
+# 
+#
+# The Ukrainians will no longer change the clock (in Russian)
+# 
+# http://www.segodnya.ua/news/14290482.html
+# 
+#
+# Deputies cancelled the winter time (in Russian)
+# 
+# http://www.pravda.com.ua/rus/news/2011/09/20/6600616/
+# 
+#
+# From Philip Pizzey (2011-10-18):
+# Today my Ukrainian colleagues have informed me that the
+# Ukrainian parliament have decided that they will go to winter
+# time this year after all.
+#
+# From Udo Schwedt (2011-10-18):
+# As far as I understand, the recent change to the Ukranian time zone
+# (Europe/Kiev) to introduce permanent daylight saving time (similar
+# to Russia) was reverted today:
+#
+# 
+# http://portal.rada.gov.ua/rada/control/en/publish/article/info_left?art_id=287324&cat_id=105995
+# 
+#
+# Also reported by Alexander Bokovoy (2011-10-18) who also noted:
+# The law documents themselves are at
+#
+# 
+# http://w1.c1.rada.gov.ua/pls/zweb_n/webproc4_1?id=&pf3511=41484
+# 
+
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+# Most of Ukraine since 1970 has been like Kiev.
+# "Kyiv" is the transliteration of the Ukrainian name, but
+# "Kiev" is more common in English.
+Zone Europe/Kiev	2:02:04 -	LMT	1880
+			2:02:04	-	KMT	1924 May  2 # Kiev Mean Time
+			2:00	-	EET	1930 Jun 21
+			3:00	-	MSK	1941 Sep 20
+			1:00	C-Eur	CE%sT	1943 Nov  6
+			3:00	Russia	MSK/MSD	1990
+			3:00	-	MSK	1990 Jul  1 2:00
+			2:00	-	EET	1992
+			2:00	E-Eur	EE%sT	1995
+			2:00	EU	EE%sT
+# Ruthenia used CET 1990/1991.
+# "Uzhhorod" is the transliteration of the Ukrainian name, but
+# "Uzhgorod" is more common in English.
+Zone Europe/Uzhgorod	1:29:12 -	LMT	1890 Oct
+			1:00	-	CET	1940
+			1:00	C-Eur	CE%sT	1944 Oct
+			1:00	1:00	CEST	1944 Oct 26
+			1:00	-	CET	1945 Jun 29
+			3:00	Russia	MSK/MSD	1990
+			3:00	-	MSK	1990 Jul  1 2:00
+			1:00	-	CET	1991 Mar 31 3:00
+			2:00	-	EET	1992
+			2:00	E-Eur	EE%sT	1995
+			2:00	EU	EE%sT
+# Zaporozh'ye and eastern Lugansk oblasts observed DST 1990/1991.
+# "Zaporizhia" is the transliteration of the Ukrainian name, but
+# "Zaporozh'ye" is more common in English.  Use the common English
+# spelling, except omit the apostrophe as it is not allowed in
+# portable Posix file names.
+Zone Europe/Zaporozhye	2:20:40 -	LMT	1880
+			2:20	-	CUT	1924 May  2 # Central Ukraine T
+			2:00	-	EET	1930 Jun 21
+			3:00	-	MSK	1941 Aug 25
+			1:00	C-Eur	CE%sT	1943 Oct 25
+			3:00	Russia	MSK/MSD	1991 Mar 31 2:00
+			2:00	E-Eur	EE%sT	1995
+			2:00	EU	EE%sT
+# Central Crimea used Moscow time 1994/1997.
+Zone Europe/Simferopol	2:16:24 -	LMT	1880
+			2:16	-	SMT	1924 May  2 # Simferopol Mean T
+			2:00	-	EET	1930 Jun 21
+			3:00	-	MSK	1941 Nov
+			1:00	C-Eur	CE%sT	1944 Apr 13
+			3:00	Russia	MSK/MSD	1990
+			3:00	-	MSK	1990 Jul  1 2:00
+			2:00	-	EET	1992
+# From Paul Eggert (2006-03-22):
+# The _Economist_ (1994-05-28, p 45) reports that central Crimea switched
+# from Kiev to Moscow time sometime after the January 1994 elections.
+# Shanks (1999) says ``date of change uncertain'', but implies that it happened
+# sometime between the 1994 DST switches.  Shanks & Pottenger simply say
+# 1994-09-25 03:00, but that can't be right.  For now, guess it
+# changed in May.
+			2:00	E-Eur	EE%sT	1994 May
+# From IATA SSIM (1994/1997), which also says that Kerch is still like Kiev.
+			3:00	E-Eur	MSK/MSD	1996 Mar 31 3:00s
+			3:00	1:00	MSD	1996 Oct 27 3:00s
+# IATA SSIM (1997-09) says Crimea switched to EET/EEST.
+# Assume it happened in March by not changing the clocks.
+			3:00	Russia	MSK/MSD	1997
+			3:00	-	MSK	1997 Mar lastSun 1:00u
+			2:00	EU	EE%sT
+
+###############################################################################
+
+# One source shows that Bulgaria, Cyprus, Finland, and Greece observe DST from
+# the last Sunday in March to the last Sunday in September in 1986.
+# The source shows Romania changing a day later than everybody else.
+#
+# According to Bernard Sieloff's source, Poland is in the MET time zone but
+# uses the WE DST rules.  The Western USSR uses EET+1 and ME DST rules.
+# Bernard Sieloff's source claims Romania switches on the same day, but at
+# 00:00 standard time (i.e., 01:00 DST).  It also claims that Turkey
+# switches on the same day, but switches on at 01:00 standard time
+# and off at 00:00 standard time (i.e., 01:00 DST)
+
+# ...
+# Date: Wed, 28 Jan 87 16:56:27 -0100
+# From: Tom Hofmann
+# ...
+#
+# ...the European time rules are...standardized since 1981, when
+# most European coun[tr]ies started DST.  Before that year, only
+# a few countries (UK, France, Italy) had DST, each according
+# to own national rules.  In 1981, however, DST started on
+# 'Apr firstSun', and not on 'Mar lastSun' as in the following
+# years...
+# But also since 1981 there are some more national exceptions
+# than listed in 'europe': Switzerland, for example, joined DST
+# one year later, Denmark ended DST on 'Oct 1' instead of 'Sep
+# lastSun' in 1981---I don't know how they handle now.
+#
+# Finally, DST ist always from 'Apr 1' to 'Oct 1' in the
+# Soviet Union (as far as I know).
+#
+# Tom Hofmann, Scientific Computer Center, CIBA-GEIGY AG,
+# 4002 Basle, Switzerland
+# ...
+
+# ...
+# Date: Wed, 4 Feb 87 22:35:22 +0100
+# From: Dik T. Winter
+# ...
+#
+# The information from Tom Hofmann is (as far as I know) not entirely correct.
+# After a request from chongo at amdahl I tried to retrieve all information
+# about DST in Europe.  I was able to find all from about 1969.
+#
+# ...standardization on DST in Europe started in about 1977 with switches on
+# first Sunday in April and last Sunday in September...
+# In 1981 UK joined Europe insofar that
+# the starting day for both shifted to last Sunday in March.  And from 1982
+# the whole of Europe used DST, with switch dates April 1 and October 1 in
+# the Sov[i]et Union.  In 1985 the SU reverted to standard Europe[a]n switch
+# dates...
+#
+# It should also be remembered that time-zones are not constants; e.g.
+# Portugal switched in 1976 from MET (or CET) to WET with DST...
+# Note also that though there were rules for switch dates not
+# all countries abided to these dates, and many individual deviations
+# occurred, though not since 1982 I believe.  Another note: it is always
+# assumed that DST is 1 hour ahead of normal time, this need not be the
+# case; at least in the Netherlands there have been times when DST was 2 hours
+# in advance of normal time.
+#
+# ...
+# dik t. winter, cwi, amsterdam, nederland
+# ...
+
+# From Bob Devine (1988-01-28):
+# ...
+# Greece: Last Sunday in April to last Sunday in September (iffy on dates).
+# Since 1978.  Change at midnight.
+# ...
+# Monaco: has same DST as France.
+# ...
diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/factory b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/factory
new file mode 100644
index 0000000..7143f73
--- /dev/null
+++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/factory
@@ -0,0 +1,10 @@
+# 
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
+
+# For companies who don't want to put time zone specification in
+# their installation procedures.  When users run date, they'll get the message.
+# Also useful for the "comp.sources" version.
+
+# Zone	NAME	GMTOFF	RULES	FORMAT
+Zone	Factory	0	- "Local time zone must be set--see zic manual page"
diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/iso3166.tab b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/iso3166.tab
new file mode 100644
index 0000000..c0d1850
--- /dev/null
+++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/iso3166.tab
@@ -0,0 +1,276 @@
+# 
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
+# ISO 3166 alpha-2 country codes
+#
+# From Paul Eggert (2006-09-27):
+#
+# This file contains a table with the following columns:
+# 1.  ISO 3166-1 alpha-2 country code, current as of
+#     ISO 3166-1 Newsletter VI-1 (2007-09-21).  See:
+#     
+#     ISO 3166 Maintenance agency (ISO 3166/MA)
+#     .
+# 2.  The usual English name for the country,
+#     chosen so that alphabetic sorting of subsets produces helpful lists.
+#     This is not the same as the English name in the ISO 3166 tables.
+#
+# Columns are separated by a single tab.
+# The table is sorted by country code.
+#
+# Lines beginning with `#' are comments.
+#
+# From Arthur David Olson (2011-08-17):
+# Resynchronized today with the ISO 3166 site (adding SS for South Sudan).
+#
+#country-
+#code	country name
+AD	Andorra
+AE	United Arab Emirates
+AF	Afghanistan
+AG	Antigua & Barbuda
+AI	Anguilla
+AL	Albania
+AM	Armenia
+AO	Angola
+AQ	Antarctica
+AR	Argentina
+AS	Samoa (American)
+AT	Austria
+AU	Australia
+AW	Aruba
+AX	Aaland Islands
+AZ	Azerbaijan
+BA	Bosnia & Herzegovina
+BB	Barbados
+BD	Bangladesh
+BE	Belgium
+BF	Burkina Faso
+BG	Bulgaria
+BH	Bahrain
+BI	Burundi
+BJ	Benin
+BL	St Barthelemy
+BM	Bermuda
+BN	Brunei
+BO	Bolivia
+BQ	Bonaire Sint Eustatius & Saba
+BR	Brazil
+BS	Bahamas
+BT	Bhutan
+BV	Bouvet Island
+BW	Botswana
+BY	Belarus
+BZ	Belize
+CA	Canada
+CC	Cocos (Keeling) Islands
+CD	Congo (Dem. Rep.)
+CF	Central African Rep.
+CG	Congo (Rep.)
+CH	Switzerland
+CI	Cote d'Ivoire
+CK	Cook Islands
+CL	Chile
+CM	Cameroon
+CN	China
+CO	Colombia
+CR	Costa Rica
+CU	Cuba
+CV	Cape Verde
+CW	Curacao
+CX	Christmas Island
+CY	Cyprus
+CZ	Czech Republic
+DE	Germany
+DJ	Djibouti
+DK	Denmark
+DM	Dominica
+DO	Dominican Republic
+DZ	Algeria
+EC	Ecuador
+EE	Estonia
+EG	Egypt
+EH	Western Sahara
+ER	Eritrea
+ES	Spain
+ET	Ethiopia
+FI	Finland
+FJ	Fiji
+FK	Falkland Islands
+FM	Micronesia
+FO	Faroe Islands
+FR	France
+GA	Gabon
+GB	Britain (UK)
+GD	Grenada
+GE	Georgia
+GF	French Guiana
+GG	Guernsey
+GH	Ghana
+GI	Gibraltar
+GL	Greenland
+GM	Gambia
+GN	Guinea
+GP	Guadeloupe
+GQ	Equatorial Guinea
+GR	Greece
+GS	South Georgia & the South Sandwich Islands
+GT	Guatemala
+GU	Guam
+GW	Guinea-Bissau
+GY	Guyana
+HK	Hong Kong
+HM	Heard Island & McDonald Islands
+HN	Honduras
+HR	Croatia
+HT	Haiti
+HU	Hungary
+ID	Indonesia
+IE	Ireland
+IL	Israel
+IM	Isle of Man
+IN	India
+IO	British Indian Ocean Territory
+IQ	Iraq
+IR	Iran
+IS	Iceland
+IT	Italy
+JE	Jersey
+JM	Jamaica
+JO	Jordan
+JP	Japan
+KE	Kenya
+KG	Kyrgyzstan
+KH	Cambodia
+KI	Kiribati
+KM	Comoros
+KN	St Kitts & Nevis
+KP	Korea (North)
+KR	Korea (South)
+KW	Kuwait
+KY	Cayman Islands
+KZ	Kazakhstan
+LA	Laos
+LB	Lebanon
+LC	St Lucia
+LI	Liechtenstein
+LK	Sri Lanka
+LR	Liberia
+LS	Lesotho
+LT	Lithuania
+LU	Luxembourg
+LV	Latvia
+LY	Libya
+MA	Morocco
+MC	Monaco
+MD	Moldova
+ME	Montenegro
+MF	St Martin (French part)
+MG	Madagascar
+MH	Marshall Islands
+MK	Macedonia
+ML	Mali
+MM	Myanmar (Burma)
+MN	Mongolia
+MO	Macau
+MP	Northern Mariana Islands
+MQ	Martinique
+MR	Mauritania
+MS	Montserrat
+MT	Malta
+MU	Mauritius
+MV	Maldives
+MW	Malawi
+MX	Mexico
+MY	Malaysia
+MZ	Mozambique
+NA	Namibia
+NC	New Caledonia
+NE	Niger
+NF	Norfolk Island
+NG	Nigeria
+NI	Nicaragua
+NL	Netherlands
+NO	Norway
+NP	Nepal
+NR	Nauru
+NU	Niue
+NZ	New Zealand
+OM	Oman
+PA	Panama
+PE	Peru
+PF	French Polynesia
+PG	Papua New Guinea
+PH	Philippines
+PK	Pakistan
+PL	Poland
+PM	St Pierre & Miquelon
+PN	Pitcairn
+PR	Puerto Rico
+PS	Palestine
+PT	Portugal
+PW	Palau
+PY	Paraguay
+QA	Qatar
+RE	Reunion
+RO	Romania
+RS	Serbia
+RU	Russia
+RW	Rwanda
+SA	Saudi Arabia
+SB	Solomon Islands
+SC	Seychelles
+SD	Sudan
+SE	Sweden
+SG	Singapore
+SH	St Helena
+SI	Slovenia
+SJ	Svalbard & Jan Mayen
+SK	Slovakia
+SL	Sierra Leone
+SM	San Marino
+SN	Senegal
+SO	Somalia
+SR	Suriname
+SS	South Sudan
+ST	Sao Tome & Principe
+SV	El Salvador
+SX	Sint Maarten
+SY	Syria
+SZ	Swaziland
+TC	Turks & Caicos Is
+TD	Chad
+TF	French Southern & Antarctic Lands
+TG	Togo
+TH	Thailand
+TJ	Tajikistan
+TK	Tokelau
+TL	East Timor
+TM	Turkmenistan
+TN	Tunisia
+TO	Tonga
+TR	Turkey
+TT	Trinidad & Tobago
+TV	Tuvalu
+TW	Taiwan
+TZ	Tanzania
+UA	Ukraine
+UG	Uganda
+UM	US minor outlying islands
+US	United States
+UY	Uruguay
+UZ	Uzbekistan
+VA	Vatican City
+VC	St Vincent
+VE	Venezuela
+VG	Virgin Islands (UK)
+VI	Virgin Islands (US)
+VN	Vietnam
+VU	Vanuatu
+WF	Wallis & Futuna
+WS	Samoa (western)
+YE	Yemen
+YT	Mayotte
+ZA	South Africa
+ZM	Zambia
+ZW	Zimbabwe
diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/leapseconds b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/leapseconds
new file mode 100644
index 0000000..bd1e096
--- /dev/null
+++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/leapseconds
@@ -0,0 +1,100 @@
+# 
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
+
+# Allowance for leapseconds added to each timezone file.
+
+# The International Earth Rotation Service periodically uses leap seconds
+# to keep UTC to within 0.9 s of UT1
+# (which measures the true angular orientation of the earth in space); see
+# Terry J Quinn, The BIPM and the accurate measure of time,
+# Proc IEEE 79, 7 (July 1991), 894-905.
+# There were no leap seconds before 1972, because the official mechanism
+# accounting for the discrepancy between atomic time and the earth's rotation
+# did not exist until the early 1970s.
+
+# The correction (+ or -) is made at the given time, so lines
+# will typically look like:
+#	Leap	YEAR	MON	DAY	23:59:60	+	R/S
+# or
+#	Leap	YEAR	MON	DAY	23:59:59	-	R/S
+
+# If the leapsecond is Rolling (R) the given time is local time
+# If the leapsecond is Stationary (S) the given time is UTC
+
+# Leap	YEAR	MONTH	DAY	HH:MM:SS	CORR	R/S
+Leap	1972	Jun	30	23:59:60	+	S
+Leap	1972	Dec	31	23:59:60	+	S
+Leap	1973	Dec	31	23:59:60	+	S
+Leap	1974	Dec	31	23:59:60	+	S
+Leap	1975	Dec	31	23:59:60	+	S
+Leap	1976	Dec	31	23:59:60	+	S
+Leap	1977	Dec	31	23:59:60	+	S
+Leap	1978	Dec	31	23:59:60	+	S
+Leap	1979	Dec	31	23:59:60	+	S
+Leap	1981	Jun	30	23:59:60	+	S
+Leap	1982	Jun	30	23:59:60	+	S
+Leap	1983	Jun	30	23:59:60	+	S
+Leap	1985	Jun	30	23:59:60	+	S
+Leap	1987	Dec	31	23:59:60	+	S
+Leap	1989	Dec	31	23:59:60	+	S
+Leap	1990	Dec	31	23:59:60	+	S
+Leap	1992	Jun	30	23:59:60	+	S
+Leap	1993	Jun	30	23:59:60	+	S
+Leap	1994	Jun	30	23:59:60	+	S
+Leap	1995	Dec	31	23:59:60	+	S
+Leap	1997	Jun	30	23:59:60	+	S
+Leap	1998	Dec	31	23:59:60	+	S
+Leap	2005	Dec	31	23:59:60	+	S
+Leap	2008	Dec	31	23:59:60	+	S
+Leap	2012	Jun	30	23:59:60	+	S
+
+# INTERNATIONAL EARTH ROTATION AND REFERENCE SYSTEMS SERVICE (IERS)
+#
+# SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE ET DES SYSTEMES DE REFERENCE
+#
+#
+# SERVICE DE LA ROTATION TERRESTRE
+# OBSERVATOIRE DE PARIS
+# 61, Av. de l'Observatoire 75014 PARIS (France)
+# Tel.      : 33 (0) 1 40 51 22 26
+# FAX       : 33 (0) 1 40 51 22 91
+# e-mail    : (E-Mail Removed)
+# http://hpiers.obspm.fr/eop-pc
+#
+# Paris, 5 January 2012
+#
+#
+# Bulletin C 43
+#
+# To authorities responsible
+# for the measurement and
+# distribution of time
+#
+#
+# UTC TIME STEP
+# on the 1st of July 2012
+#
+#
+# A positive leap second will be introduced at the end of June 2012.
+# The sequence of dates of the UTC second markers will be:
+#
+#                          2012 June 30,     23h 59m 59s
+#                          2012 June 30,     23h 59m 60s
+#                          2012 July  1,      0h  0m  0s
+#
+# The difference between UTC and the International Atomic Time TAI is:
+#
+# from 2009 January 1, 0h UTC, to 2012 July 1  0h UTC  : UTC-TAI = - 34s
+# from 2012 July 1,    0h UTC, until further notice    : UTC-TAI = - 35s
+#
+# Leap seconds can be introduced in UTC at the end of the months of December
+# or June, depending on the evolution of UT1-TAI. Bulletin C is mailed every
+# six months, either to announce a time step in UTC or to confirm that there
+# will be no time step at the next possible date.
+#
+#
+# Daniel GAMBIS
+# Head
+# Earth Orientation Center of IERS
+# Observatoire de Paris, France
diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/northamerica b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/northamerica
new file mode 100644
index 0000000..330c43f
--- /dev/null
+++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/northamerica
@@ -0,0 +1,3235 @@
+# 
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
+
+# also includes Central America and the Caribbean
+
+# This data is by no means authoritative; if you think you know better,
+# go ahead and edit the file (and please send any changes to
+# tz@iana.org for general use in the future).
+
+# From Paul Eggert (1999-03-22):
+# A reliable and entertaining source about time zones is
+# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+
+###############################################################################
+
+# United States
+
+# From Paul Eggert (1999-03-31):
+# Howse writes (pp 121-125) that time zones were invented by
+# Professor Charles Ferdinand Dowd (1825-1904),
+# Principal of Temple Grove Ladies' Seminary (Saratoga Springs, NY).
+# His pamphlet ``A System of National Time for Railroads'' (1870)
+# was the result of his proposals at the Convention of Railroad Trunk Lines
+# in New York City (1869-10).  His 1870 proposal was based on Washington, DC,
+# but in 1872-05 he moved the proposed origin to Greenwich.
+# His proposal was adopted by the railroads on 1883-11-18 at 12:00,
+# and the most of the country soon followed suit.
+
+# From Paul Eggert (2005-04-16):
+# That 1883 transition occurred at 12:00 new time, not at 12:00 old time.
+# See p 46 of David Prerau, Seize the daylight, Thunder's Mouth Press (2005).
+
+# From Paul Eggert (2006-03-22):
+# A good source for time zone historical data in the US is
+# Thomas G. Shanks, The American Atlas (5th edition),
+# San Diego: ACS Publications, Inc. (1991).
+# Make sure you have the errata sheet; the book is somewhat useless without it.
+# It is the source for most of the pre-1991 US entries below.
+
+# From Paul Eggert (2001-03-06):
+# Daylight Saving Time was first suggested as a joke by Benjamin Franklin
+# in his whimsical essay ``An Economical Project for Diminishing the Cost
+# of Light'' published in the Journal de Paris (1784-04-26).
+# Not everyone is happy with the results:
+#
+#	I don't really care how time is reckoned so long as there is some
+#	agreement about it, but I object to being told that I am saving
+#	daylight when my reason tells me that I am doing nothing of the kind.
+#	I even object to the implication that I am wasting something
+#	valuable if I stay in bed after the sun has risen.  As an admirer
+#	of moonlight I resent the bossy insistence of those who want to
+#	reduce my time for enjoying it.  At the back of the Daylight Saving
+#	scheme I detect the bony, blue-fingered hand of Puritanism, eager
+#	to push people into bed earlier, and get them up earlier, to make
+#	them healthy, wealthy and wise in spite of themselves.
+#
+#	-- Robertson Davies, The diary of Samuel Marchbanks,
+#	   Clarke, Irwin (1947), XIX, Sunday
+#
+# For more about the first ten years of DST in the United States, see
+# Robert Garland's 
+# Ten years of daylight saving from the Pittsburgh standpoint
+# (Carnegie Library of Pittsburgh, 1927).
+#
+# Shanks says that DST was called "War Time" in the US in 1918 and 1919.
+# However, DST was imposed by the Standard Time Act of 1918, which
+# was the first nationwide legal time standard, and apparently
+# time was just called "Standard Time" or "Daylight Saving Time".
+
+# From Arthur David Olson:
+# US Daylight Saving Time ended on the last Sunday of *October* in 1974.
+# See, for example, the front page of the Saturday, 1974-10-26
+# and Sunday, 1974-10-27 editions of the Washington Post.
+
+# From Arthur David Olson:
+# Before the Uniform Time Act of 1966 took effect in 1967, observance of
+# Daylight Saving Time in the US was by local option, except during wartime.
+
+# From Arthur David Olson (2000-09-25):
+# Last night I heard part of a rebroadcast of a 1945 Arch Oboler radio drama.
+# In the introduction, Oboler spoke of "Eastern Peace Time."
+# An AltaVista search turned up
+# :
+# "When the time is announced over the radio now, it is 'Eastern Peace
+# Time' instead of the old familiar 'Eastern War Time.'  Peace is wonderful."
+#  (August 1945) by way of confirmation.
+
+# From Joseph Gallant citing
+# George H. Douglas, _The Early Days of Radio Broadcasting_ (1987):
+# At 7 P.M. (Eastern War Time) [on 1945-08-14], the networks were set
+# to switch to London for Attlee's address, but the American people
+# never got to hear his speech live. According to one press account,
+# CBS' Bob Trout was first to announce the word of Japan's surrender,
+# but a few seconds later, NBC, ABC and Mutual also flashed the word
+# of surrender, all of whom interrupting the bells of Big Ben in
+# London which were to precede Mr. Attlee's speech.
+
+# From Paul Eggert (2003-02-09): It was Robert St John, not Bob Trout.  From
+# Myrna Oliver's obituary of St John on page B16 of today's Los Angeles Times:
+#
+# ... a war-weary U.S. clung to radios, awaiting word of Japan's surrender.
+# Any announcement from Asia would reach St. John's New York newsroom on a
+# wire service teletype machine, which had prescribed signals for major news.
+# Associated Press, for example, would ring five bells before spewing out
+# typed copy of an important story, and 10 bells for news "of transcendental
+# importance."
+#
+# On Aug. 14, stalling while talking steadily into the NBC networks' open
+# microphone, St. John heard five bells and waited only to hear a sixth bell,
+# before announcing confidently: "Ladies and gentlemen, World War II is over.
+# The Japanese have agreed to our surrender terms."
+#
+# He had scored a 20-second scoop on other broadcasters.
+
+# From Arthur David Olson (2005-08-22):
+# Paul has been careful to use the "US" rules only in those locations
+# that are part of the United States; this reflects the real scope of
+# U.S. government action.  So even though the "US" rules have changed
+# in the latest release, other countries won't be affected.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	US	1918	1919	-	Mar	lastSun	2:00	1:00	D
+Rule	US	1918	1919	-	Oct	lastSun	2:00	0	S
+Rule	US	1942	only	-	Feb	9	2:00	1:00	W # War
+Rule	US	1945	only	-	Aug	14	23:00u	1:00	P # Peace
+Rule	US	1945	only	-	Sep	30	2:00	0	S
+Rule	US	1967	2006	-	Oct	lastSun	2:00	0	S
+Rule	US	1967	1973	-	Apr	lastSun	2:00	1:00	D
+Rule	US	1974	only	-	Jan	6	2:00	1:00	D
+Rule	US	1975	only	-	Feb	23	2:00	1:00	D
+Rule	US	1976	1986	-	Apr	lastSun	2:00	1:00	D
+Rule	US	1987	2006	-	Apr	Sun>=1	2:00	1:00	D
+Rule	US	2007	max	-	Mar	Sun>=8	2:00	1:00	D
+Rule	US	2007	max	-	Nov	Sun>=1	2:00	0	S
+
+# From Arthur David Olson, 2005-12-19
+# We generate the files specified below to guard against old files with
+# obsolete information being left in the time zone binary directory.
+# We limit the list to names that have appeared in previous versions of
+# this time zone package.
+# We do these as separate Zones rather than as Links to avoid problems if
+# a particular place changes whether it observes DST.
+# We put these specifications here in the northamerica file both to
+# increase the chances that they'll actually get compiled and to
+# avoid the need to duplicate the US rules in another file.
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	EST		 -5:00	-	EST
+Zone	MST		 -7:00	-	MST
+Zone	HST		-10:00	-	HST
+Zone	EST5EDT		 -5:00	US	E%sT
+Zone	CST6CDT		 -6:00	US	C%sT
+Zone	MST7MDT		 -7:00	US	M%sT
+Zone	PST8PDT		 -8:00	US	P%sT
+
+# From Bob Devine (1988-01-28):
+# ...Alaska (and Hawaii) had the timezone names changed in 1967.
+#    old			 new
+#    Pacific Standard Time(PST)  -same-
+#    Yukon Standard Time(YST)    -same-
+#    Central Alaska S.T. (CAT)   Alaska-Hawaii St[an]dard Time (AHST)
+#    Nome Standard Time (NT)     Bering Standard Time (BST)
+#
+# ...Alaska's timezone lines were redrawn in 1983 to give only 2 tz.
+#    The YST zone now covers nearly all of the state, AHST just part
+#    of the Aleutian islands.   No DST.
+
+# From Paul Eggert (1995-12-19):
+# The tables below use `NST', not `NT', for Nome Standard Time.
+# I invented `CAWT' for Central Alaska War Time.
+
+# From U. S. Naval Observatory (1989-01-19):
+# USA  EASTERN       5 H  BEHIND UTC    NEW YORK, WASHINGTON
+# USA  EASTERN       4 H  BEHIND UTC    APR 3 - OCT 30
+# USA  CENTRAL       6 H  BEHIND UTC    CHICAGO, HOUSTON
+# USA  CENTRAL       5 H  BEHIND UTC    APR 3 - OCT 30
+# USA  MOUNTAIN      7 H  BEHIND UTC    DENVER
+# USA  MOUNTAIN      6 H  BEHIND UTC    APR 3 - OCT 30
+# USA  PACIFIC       8 H  BEHIND UTC    L.A., SAN FRANCISCO
+# USA  PACIFIC       7 H  BEHIND UTC    APR 3 - OCT 30
+# USA  ALASKA STD    9 H  BEHIND UTC    MOST OF ALASKA     (AKST)
+# USA  ALASKA STD    8 H  BEHIND UTC    APR 3 - OCT 30 (AKDT)
+# USA  ALEUTIAN     10 H  BEHIND UTC    ISLANDS WEST OF 170W
+# USA  - " -         9 H  BEHIND UTC    APR 3 - OCT 30
+# USA  HAWAII       10 H  BEHIND UTC
+# USA  BERING       11 H  BEHIND UTC    SAMOA, MIDWAY
+
+# From Arthur David Olson (1989-01-21):
+# The above dates are for 1988.
+# Note the "AKST" and "AKDT" abbreviations, the claim that there's
+# no DST in Samoa, and the claim that there is DST in Alaska and the
+# Aleutians.
+
+# From Arthur David Olson (1988-02-13):
+# Legal standard time zone names, from United States Code (1982 Edition and
+# Supplement III), Title 15, Chapter 6, Section 260 and forward.  First, names
+# up to 1967-04-01 (when most provisions of the Uniform Time Act of 1966
+# took effect), as explained in sections 263 and 261:
+#	(none)
+#	United States standard eastern time
+#	United States standard mountain time
+#	United States standard central time
+#	United States standard Pacific time
+#	(none)
+#	United States standard Alaska time
+#	(none)
+# Next, names from 1967-04-01 until 1983-11-30 (the date for
+# public law 98-181):
+#	Atlantic standard time
+#	eastern standard time
+#	central standard time
+#	mountain standard time
+#	Pacific standard time
+#	Yukon standard time
+#	Alaska-Hawaii standard time
+#	Bering standard time
+# And after 1983-11-30:
+#	Atlantic standard time
+#	eastern standard time
+#	central standard time
+#	mountain standard time
+#	Pacific standard time
+#	Alaska standard time
+#	Hawaii-Aleutian standard time
+#	Samoa standard time
+# The law doesn't give abbreviations.
+#
+# From Paul Eggert (2000-01-08), following a heads-up from Rives McDow:
+# Public law 106-564 (2000-12-23) introduced the abbreviation
+# "Chamorro Standard Time" for time in Guam and the Northern Marianas.
+# See the file "australasia".
+
+# From Arthur David Olson, 2005-08-09
+# The following was signed into law on 2005-08-08.
+#
+# H.R. 6, Energy Policy Act of 2005, SEC. 110. DAYLIGHT SAVINGS.
+#   (a) Amendment- Section 3(a) of the Uniform Time Act of 1966 (15
+#   U.S.C. 260a(a)) is amended--
+#     (1) by striking `first Sunday of April' and inserting `second
+#     Sunday of March'; and
+#     (2) by striking `last Sunday of October' and inserting `first
+#     Sunday of November'.
+#   (b) Effective Date- Subsection (a) shall take effect 1 year after the
+#   date of enactment of this Act or March 1, 2007, whichever is later.
+#   (c) Report to Congress- Not later than 9 months after the effective
+#   date stated in subsection (b), the Secretary shall report to Congress
+#   on the impact of this section on energy consumption in the United
+#   States.
+#   (d) Right to Revert- Congress retains the right to revert the
+#   Daylight Saving Time back to the 2005 time schedules once the
+#   Department study is complete.
+
+# US eastern time, represented by New York
+
+# Connecticut, Delaware, District of Columbia, most of Florida,
+# Georgia, southeast Indiana (Dearborn and Ohio counties), eastern Kentucky
+# (except America/Kentucky/Louisville below), Maine, Maryland, Massachusetts,
+# New Hampshire, New Jersey, New York, North Carolina, Ohio,
+# Pennsylvania, Rhode Island, South Carolina, eastern Tennessee,
+# Vermont, Virginia, West Virginia
+
+# From Dave Cantor (2004-11-02):
+# Early this summer I had the occasion to visit the Mount Washington
+# Observatory weather station atop (of course!) Mount Washington [, NH]....
+# One of the staff members said that the station was on Eastern Standard Time
+# and didn't change their clocks for Daylight Saving ... so that their
+# reports will always have times which are 5 hours behind UTC.
+
+# From Paul Eggert (2005-08-26):
+# According to today's Huntsville Times
+# 
+# a few towns on Alabama's "eastern border with Georgia, such as Phenix City
+# in Russell County, Lanett in Chambers County and some towns in Lee County,
+# set their watches and clocks on Eastern time."  It quotes H.H. "Bubba"
+# Roberts, city administrator in Phenix City. as saying "We are in the Central
+# time zone, but we do go by the Eastern time zone because so many people work
+# in Columbus."
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
+Rule	NYC	1920	only	-	Mar	lastSun	2:00	1:00	D
+Rule	NYC	1920	only	-	Oct	lastSun	2:00	0	S
+Rule	NYC	1921	1966	-	Apr	lastSun	2:00	1:00	D
+Rule	NYC	1921	1954	-	Sep	lastSun	2:00	0	S
+Rule	NYC	1955	1966	-	Oct	lastSun	2:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/New_York	-4:56:02 -	LMT	1883 Nov 18 12:03:58
+			-5:00	US	E%sT	1920
+			-5:00	NYC	E%sT	1942
+			-5:00	US	E%sT	1946
+			-5:00	NYC	E%sT	1967
+			-5:00	US	E%sT
+
+# US central time, represented by Chicago
+
+# Alabama, Arkansas, Florida panhandle (Bay, Calhoun, Escambia,
+# Gulf, Holmes, Jackson, Okaloosa, Santa Rosa, Walton, and
+# Washington counties), Illinois, western Indiana
+# (Gibson, Jasper, Lake, LaPorte, Newton, Porter, Posey, Spencer,
+# Vanderburgh, and Warrick counties), Iowa, most of Kansas, western
+# Kentucky, Louisiana, Minnesota, Mississippi, Missouri, eastern
+# Nebraska, eastern North Dakota, Oklahoma, eastern South Dakota,
+# western Tennessee, most of Texas, Wisconsin
+
+# From Larry M. Smith (2006-04-26) re Wisconsin:
+# http://www.legis.state.wi.us/statutes/Stat0175.pdf ...
+# is currently enforced at the 01:00 time of change.  Because the local
+# "bar time" in the state corresponds to 02:00, a number of citations
+# are issued for the "sale of class 'B' alcohol after prohibited
+# hours" within the deviated hour of this change every year....
+#
+# From Douglas R. Bomberg (2007-03-12):
+# Wisconsin has enacted (nearly eleventh-hour) legislation to get WI
+# Statue 175 closer in synch with the US Congress' intent....
+# http://www.legis.state.wi.us/2007/data/acts/07Act3.pdf
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
+Rule	Chicago	1920	only	-	Jun	13	2:00	1:00	D
+Rule	Chicago	1920	1921	-	Oct	lastSun	2:00	0	S
+Rule	Chicago	1921	only	-	Mar	lastSun	2:00	1:00	D
+Rule	Chicago	1922	1966	-	Apr	lastSun	2:00	1:00	D
+Rule	Chicago	1922	1954	-	Sep	lastSun	2:00	0	S
+Rule	Chicago	1955	1966	-	Oct	lastSun	2:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Chicago	-5:50:36 -	LMT	1883 Nov 18 12:09:24
+			-6:00	US	C%sT	1920
+			-6:00	Chicago	C%sT	1936 Mar  1 2:00
+			-5:00	-	EST	1936 Nov 15 2:00
+			-6:00	Chicago	C%sT	1942
+			-6:00	US	C%sT	1946
+			-6:00	Chicago	C%sT	1967
+			-6:00	US	C%sT
+# Oliver County, ND switched from mountain to central time on 1992-10-25.
+Zone America/North_Dakota/Center -6:45:12 - LMT	1883 Nov 18 12:14:48
+			-7:00	US	M%sT	1992 Oct 25 02:00
+			-6:00	US	C%sT
+# Morton County, ND, switched from mountain to central time on
+# 2003-10-26, except for the area around Mandan which was already central time.
+# See .
+# Officially this switch also included part of Sioux County, and
+# Jones, Mellette, and Todd Counties in South Dakota;
+# but in practice these other counties were already observing central time.
+# See .
+Zone America/North_Dakota/New_Salem -6:45:39 - LMT 1883 Nov 18 12:14:21
+			-7:00	US	M%sT	2003 Oct 26 02:00
+			-6:00	US	C%sT
+
+# From Josh Findley (2011-01-21):
+# ...it appears that Mercer County, North Dakota, changed from the
+# mountain time zone to the central time zone at the last transition from
+# daylight-saving to standard time (on Nov. 7, 2010):
+# 
+# http://www.gpo.gov/fdsys/pkg/FR-2010-09-29/html/2010-24376.htm
+# 
+# 
+# http://www.bismarcktribune.com/news/local/article_1eb1b588-c758-11df-b472-001cc4c03286.html
+# 
+
+# From Andy Lipscomb (2011-01-24):
+# ...according to the Census Bureau, the largest city is Beulah (although
+# it's commonly referred to as Beulah-Hazen, with Hazen being the next
+# largest city in Mercer County).  Google Maps places Beulah's city hall
+# at 4715'51" north, 10146'40" west, which yields an offset of 6h47'07".
+
+Zone America/North_Dakota/Beulah -6:47:07 - LMT 1883 Nov 18 12:12:53
+			-7:00	US	M%sT	2010 Nov  7 2:00
+			-6:00	US	C%sT
+
+# US mountain time, represented by Denver
+#
+# Colorado, far western Kansas, Montana, western
+# Nebraska, Nevada border (Jackpot, Owyhee, and Mountain City),
+# New Mexico, southwestern North Dakota,
+# western South Dakota, far western Texas (El Paso County, Hudspeth County,
+# and Pine Springs and Nickel Creek in Culberson County), Utah, Wyoming
+#
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
+Rule	Denver	1920	1921	-	Mar	lastSun	2:00	1:00	D
+Rule	Denver	1920	only	-	Oct	lastSun	2:00	0	S
+Rule	Denver	1921	only	-	May	22	2:00	0	S
+Rule	Denver	1965	1966	-	Apr	lastSun	2:00	1:00	D
+Rule	Denver	1965	1966	-	Oct	lastSun	2:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Denver	-6:59:56 -	LMT	1883 Nov 18 12:00:04
+			-7:00	US	M%sT	1920
+			-7:00	Denver	M%sT	1942
+			-7:00	US	M%sT	1946
+			-7:00	Denver	M%sT	1967
+			-7:00	US	M%sT
+
+# US Pacific time, represented by Los Angeles
+#
+# California, northern Idaho (Benewah, Bonner, Boundary, Clearwater,
+# Idaho, Kootenai, Latah, Lewis, Nez Perce, and Shoshone counties,
+# and the northern three-quarters of Idaho county),
+# most of Nevada, most of Oregon, and Washington
+#
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
+Rule	CA	1948	only	-	Mar	14	2:00	1:00	D
+Rule	CA	1949	only	-	Jan	 1	2:00	0	S
+Rule	CA	1950	1966	-	Apr	lastSun	2:00	1:00	D
+Rule	CA	1950	1961	-	Sep	lastSun	2:00	0	S
+Rule	CA	1962	1966	-	Oct	lastSun	2:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Los_Angeles -7:52:58 -	LMT	1883 Nov 18 12:07:02
+			-8:00	US	P%sT	1946
+			-8:00	CA	P%sT	1967
+			-8:00	US	P%sT
+
+# Alaska
+# AK%sT is the modern abbreviation for -9:00 per USNO.
+#
+# From Paul Eggert (2001-05-30):
+# Howse writes that Alaska switched from the Julian to the Gregorian calendar,
+# and from east-of-GMT to west-of-GMT days, when the US bought it from Russia.
+# This was on 1867-10-18, a Friday; the previous day was 1867-10-06 Julian,
+# also a Friday.  Include only the time zone part of this transition,
+# ignoring the switch from Julian to Gregorian, since we can't represent
+# the Julian calendar.
+#
+# As far as we know, none of the exact locations mentioned below were
+# permanently inhabited in 1867 by anyone using either calendar.
+# (Yakutat was colonized by the Russians in 1799, but the settlement
+# was destroyed in 1805 by a Yakutat-kon war party.)  However, there
+# were nearby inhabitants in some cases and for our purposes perhaps
+# it's best to simply use the official transition.
+#
+
+# From Steve Ferguson (2011-01-31):
+# The author lives in Alaska and many of the references listed are only
+# available to Alaskan residents.
+#
+# 
+# http://www.alaskahistoricalsociety.org/index.cfm?section=discover%20alaska&page=Glimpses%20of%20the%20Past&viewpost=2&ContentId=98
+# 
+
+# From Arthur David Olson (2011-02-01):
+# Here's database-relevant material from the 2001 "Alaska History" article:
+#
+# On September 20 [1979]...DOT...officials decreed that on April 27,
+# 1980, Juneau and other nearby communities would move to Yukon Time.
+# Sitka, Petersburg, Wrangell, and Ketchikan, however, would remain on
+# Pacific Time.
+#
+# ...on September 22, 1980, DOT Secretary Neil E. Goldschmidt rescinded the
+# Department's September 1979 decision. Juneau and other communities in
+# northern Southeast reverted to Pacific Time on October 26.
+#
+# On October 28 [1983]...the Metlakatla Indian Community Council voted
+# unanimously to keep the reservation on Pacific Time.
+#
+# According to DOT official Joanne Petrie, Indian reservations are not
+# bound to follow time zones imposed by neighboring jurisdictions.
+#
+# (The last is consistent with how the database now handles the Navajo
+# Nation.)
+
+# From Arthur David Olson (2011-02-09):
+# I just spoke by phone with a staff member at the Metlakatla Indian
+# Community office (using contact information available at
+# 
+# http://www.commerce.state.ak.us/dca/commdb/CIS.cfm?Comm_Boro_name=Metlakatla
+# ).
+# It's shortly after 1:00 here on the east coast of the United States;
+# the staffer said it was shortly after 10:00 there. When I asked whether
+# that meant they were on Pacific time, they said no--they were on their
+# own time. I asked about daylight saving; they said it wasn't used. I
+# did not inquire about practices in the past.
+
+# From Arthur David Olson (2011-08-17):
+# For lack of better information, assume that Metlakatla's
+# abandonment of use of daylight saving resulted from the 1983 vote.
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Juneau	 15:02:19 -	LMT	1867 Oct 18
+			 -8:57:41 -	LMT	1900 Aug 20 12:00
+			 -8:00	-	PST	1942
+			 -8:00	US	P%sT	1946
+			 -8:00	-	PST	1969
+			 -8:00	US	P%sT	1980 Apr 27 2:00
+			 -9:00	US	Y%sT	1980 Oct 26 2:00
+			 -8:00	US	P%sT	1983 Oct 30 2:00
+			 -9:00	US	Y%sT	1983 Nov 30
+			 -9:00	US	AK%sT
+Zone America/Sitka	 14:58:47 -	LMT	1867 Oct 18
+			 -9:01:13 -	LMT	1900 Aug 20 12:00
+			 -8:00	-	PST	1942
+			 -8:00	US	P%sT	1946
+			 -8:00	-	PST	1969
+			 -8:00	US	P%sT	1983 Oct 30 2:00
+			 -9:00	US	Y%sT	1983 Nov 30
+			 -9:00	US	AK%sT
+Zone America/Metlakatla	 15:13:42 -	LMT	1867 Oct 18
+			 -8:46:18 -	LMT	1900 Aug 20 12:00
+			 -8:00	-	PST	1942
+			 -8:00	US	P%sT	1946
+			 -8:00	-	PST	1969
+			 -8:00	US	P%sT	1983 Oct 30 2:00
+			 -8:00	-	MeST
+Zone America/Yakutat	 14:41:05 -	LMT	1867 Oct 18
+			 -9:18:55 -	LMT	1900 Aug 20 12:00
+			 -9:00	-	YST	1942
+			 -9:00	US	Y%sT	1946
+			 -9:00	-	YST	1969
+			 -9:00	US	Y%sT	1983 Nov 30
+			 -9:00	US	AK%sT
+Zone America/Anchorage	 14:00:24 -	LMT	1867 Oct 18
+			 -9:59:36 -	LMT	1900 Aug 20 12:00
+			-10:00	-	CAT	1942
+			-10:00	US	CAT/CAWT 1945 Aug 14 23:00u
+			-10:00	US	CAT/CAPT 1946 # Peace
+			-10:00	-	CAT	1967 Apr
+			-10:00	-	AHST	1969
+			-10:00	US	AH%sT	1983 Oct 30 2:00
+			 -9:00	US	Y%sT	1983 Nov 30
+			 -9:00	US	AK%sT
+Zone America/Nome	 12:58:21 -	LMT	1867 Oct 18
+			-11:01:38 -	LMT	1900 Aug 20 12:00
+			-11:00	-	NST	1942
+			-11:00	US	N%sT	1946
+			-11:00	-	NST	1967 Apr
+			-11:00	-	BST	1969
+			-11:00	US	B%sT	1983 Oct 30 2:00
+			 -9:00	US	Y%sT	1983 Nov 30
+			 -9:00	US	AK%sT
+Zone America/Adak	 12:13:21 -	LMT	1867 Oct 18
+			-11:46:38 -	LMT	1900 Aug 20 12:00
+			-11:00	-	NST	1942
+			-11:00	US	N%sT	1946
+			-11:00	-	NST	1967 Apr
+			-11:00	-	BST	1969
+			-11:00	US	B%sT	1983 Oct 30 2:00
+			-10:00	US	AH%sT	1983 Nov 30
+			-10:00	US	HA%sT
+# The following switches don't quite make our 1970 cutoff.
+#
+# Shanks writes that part of southwest Alaska (e.g. Aniak)
+# switched from -11:00 to -10:00 on 1968-09-22 at 02:00,
+# and another part (e.g. Akiak) made the same switch five weeks later.
+#
+# From David Flater (2004-11-09):
+# In e-mail, 2004-11-02, Ray Hudson, historian/liaison to the Unalaska
+# Historic Preservation Commission, provided this information, which
+# suggests that Unalaska deviated from statutory time from early 1967
+# possibly until 1983:
+#
+#  Minutes of the Unalaska City Council Meeting, January 10, 1967:
+#  "Except for St. Paul and Akutan, Unalaska is the only important
+#  location not on Alaska Standard Time.  The following resolution was
+#  made by William Robinson and seconded by Henry Swanson:  Be it
+#  resolved that the City of Unalaska hereby goes to Alaska Standard
+#  Time as of midnight Friday, January 13, 1967 (1 A.M. Saturday,
+#  January 14, Alaska Standard Time.)  This resolution was passed with
+#  three votes for and one against."
+
+# Hawaii
+
+# From Arthur David Olson (2010-12-09):
+# "Hawaiian Time" by Robert C. Schmitt and Doak C. Cox appears on pages 207-225
+# of volume 26 of The Hawaiian Journal of History (1992). As of 2010-12-09,
+# the article is available at
+# 
+# http://evols.library.manoa.hawaii.edu/bitstream/10524/239/2/JL26215.pdf
+# 
+# and indicates that standard time was adopted effective noon, January
+# 13, 1896 (page 218), that in "1933, the Legislature decreed daylight
+# saving for the period between the last Sunday of each April and the
+# last Sunday of each September, but less than a month later repealed the
+# act," (page 220), that year-round daylight saving time was in effect
+# from 1942-02-09 to 1945-09-30 (page 221, with no time of day given for
+# when clocks changed) and that clocks were changed by 30 minutes
+# effective the second Sunday of June, 1947 (page 219, with no time of
+# day given for when clocks changed). A footnote for the 1933 changes
+# cites Session Laws of Hawaii 1933, "Act. 90 (approved 26 Apr. 1933)
+# and Act 163 (approved 21 May 1933)."
+
+# From Arthur David Olson (2011-01-19):
+# The following is from "Laws of the Territory of Hawaii Passed by the
+# Seventeenth Legislature: Regular Session 1933," available (as of
+# 2011-01-19) at American University's Pence Law Library. Page 85: "Act
+# 90...At 2 o'clock ante meridian of the last Sunday in April of each
+# year, the standard time of this Territory shall be advanced one
+# hour...This Act shall take effect upon its approval. Approved this 26th
+# day of April, A. D. 1933. LAWRENCE M JUDD, Governor of the Territory of
+# Hawaii." Page 172:  "Act 163...Act 90 of the Session Laws of 1933 is
+# hereby repealed...This Act shall take effect upon its approval, upon
+# which date the standard time of this Territory shall be restored to
+# that existing immediately prior to the taking effect of said Act 90.
+# Approved this 21st day of May, A. D. 1933. LAWRENCE M. JUDD, Governor
+# of the Territory of Hawaii."
+#
+# Note that 1933-05-21 was a Sunday.
+# We're left to guess the time of day when Act 163 was approved; guess noon.
+
+Zone Pacific/Honolulu	-10:31:26 -	LMT	1896 Jan 13 12:00 #Schmitt&Cox
+			-10:30	-	HST	1933 Apr 30 2:00 #Laws 1933
+			-10:30	1:00	HDT	1933 May 21 12:00 #Laws 1933+12
+			-10:30	-	HST	1942 Feb 09 2:00 #Schmitt&Cox+2
+			-10:30	1:00	HDT	1945 Sep 30 2:00 #Schmitt&Cox+2
+			-10:30	-	HST	1947 Jun  8 2:00 #Schmitt&Cox+2
+			-10:00	-	HST
+
+# Now we turn to US areas that have diverged from the consensus since 1970.
+
+# Arizona mostly uses MST.
+
+# From Paul Eggert (2002-10-20):
+#
+# The information in the rest of this paragraph is derived from the
+# 
+# Daylight Saving Time web page (2002-01-23) maintained by the
+# Arizona State Library, Archives and Public Records.
+# Between 1944-01-01 and 1944-04-01 the State of Arizona used standard
+# time, but by federal law railroads, airlines, bus lines, military
+# personnel, and some engaged in interstate commerce continued to
+# observe war (i.e., daylight saving) time.  The 1944-03-17 Phoenix
+# Gazette says that was the date the law changed, and that 04-01 was
+# the date the state's clocks would change.  In 1945 the State of
+# Arizona used standard time all year, again with exceptions only as
+# mandated by federal law.  Arizona observed DST in 1967, but Arizona
+# Laws 1968, ch. 183 (effective 1968-03-21) repealed DST.
+#
+# Shanks says the 1944 experiment came to an end on 1944-03-17.
+# Go with the Arizona State Library instead.
+
+Zone America/Phoenix	-7:28:18 -	LMT	1883 Nov 18 11:31:42
+			-7:00	US	M%sT	1944 Jan  1 00:01
+			-7:00	-	MST	1944 Apr  1 00:01
+			-7:00	US	M%sT	1944 Oct  1 00:01
+			-7:00	-	MST	1967
+			-7:00	US	M%sT	1968 Mar 21
+			-7:00	-	MST
+# From Arthur David Olson (1988-02-13):
+# A writer from the Inter Tribal Council of Arizona, Inc.,
+# notes in private correspondence dated 1987-12-28 that "Presently, only the
+# Navajo Nation participates in the Daylight Saving Time policy, due to its
+# large size and location in three states."  (The "only" means that other
+# tribal nations don't use DST.)
+
+Link America/Denver America/Shiprock
+
+# Southern Idaho (Ada, Adams, Bannock, Bear Lake, Bingham, Blaine,
+# Boise, Bonneville, Butte, Camas, Canyon, Caribou, Cassia, Clark,
+# Custer, Elmore, Franklin, Fremont, Gem, Gooding, Jefferson, Jerome,
+# Lemhi, Lincoln, Madison, Minidoka, Oneida, Owyhee, Payette, Power,
+# Teton, Twin Falls, Valley, Washington counties, and the southern
+# quarter of Idaho county) and eastern Oregon (most of Malheur County)
+# switched four weeks late in 1974.
+#
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Boise	-7:44:49 -	LMT	1883 Nov 18 12:15:11
+			-8:00	US	P%sT	1923 May 13 2:00
+			-7:00	US	M%sT	1974
+			-7:00	-	MST	1974 Feb  3 2:00
+			-7:00	US	M%sT
+
+# Indiana
+#
+# For a map of Indiana's time zone regions, see:
+# 
+# What time is it in Indiana?
+#  (2006-03-01)
+#
+# From Paul Eggert (2007-08-17):
+# Since 1970, most of Indiana has been like America/Indiana/Indianapolis,
+# with the following exceptions:
+#
+# - Gibson, Jasper, Lake, LaPorte, Newton, Porter, Posey, Spencer,
+#   Vandenburgh, and Warrick counties have been like America/Chicago.
+#
+# - Dearborn and Ohio counties have been like America/New_York.
+#
+# - Clark, Floyd, and Harrison counties have been like
+#   America/Kentucky/Louisville.
+#
+# - Crawford, Daviess, Dubois, Knox, Martin, Perry, Pike, Pulaski, Starke,
+#   and Switzerland counties have their own time zone histories as noted below.
+#
+# Shanks partitioned Indiana into 345 regions, each with its own time history,
+# and wrote ``Even newspaper reports present contradictory information.''
+# Those Hoosiers!  Such a flighty and changeable people!
+# Fortunately, most of the complexity occurred before our cutoff date of 1970.
+#
+# Other than Indianapolis, the Indiana place names are so nondescript
+# that they would be ambiguous if we left them at the `America' level.
+# So we reluctantly put them all in a subdirectory `America/Indiana'.
+
+# From Paul Eggert (2005-08-16):
+# http://www.mccsc.edu/time.html says that Indiana will use DST starting 2006.
+
+# From Nathan Stratton Treadway (2006-03-30):
+# http://www.dot.gov/affairs/dot0406.htm [3705 B]
+# From Deborah Goldsmith (2006-01-18):
+# http://dmses.dot.gov/docimages/pdf95/382329_web.pdf [2.9 MB]
+# From Paul Eggert (2006-01-20):
+# It says "DOT is relocating the time zone boundary in Indiana to move Starke,
+# Pulaski, Knox, Daviess, Martin, Pike, Dubois, and Perry Counties from the
+# Eastern Time Zone to the Central Time Zone.... The effective date of
+# this rule is 2:OO a.m. EST Sunday, April 2, 2006, which is the
+# changeover date from standard time to Daylight Saving Time."
+# Strictly speaking, this means the affected counties will change their
+# clocks twice that night, but this obviously is in error.  The intent
+# is that 01:59:59 EST be followed by 02:00:00 CDT.
+
+# From Gwillim Law (2007-02-10):
+# The Associated Press has been reporting that Pulaski County, Indiana is
+# going to switch from Central to Eastern Time on March 11, 2007....
+# http://www.indystar.com/apps/pbcs.dll/article?AID=/20070207/LOCAL190108/702070524/0/LOCAL
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
+Rule Indianapolis 1941	only	-	Jun	22	2:00	1:00	D
+Rule Indianapolis 1941	1954	-	Sep	lastSun	2:00	0	S
+Rule Indianapolis 1946	1954	-	Apr	lastSun	2:00	1:00	D
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Indiana/Indianapolis -5:44:38 - LMT 1883 Nov 18 12:15:22
+			-6:00	US	C%sT	1920
+			-6:00 Indianapolis C%sT	1942
+			-6:00	US	C%sT	1946
+			-6:00 Indianapolis C%sT	1955 Apr 24 2:00
+			-5:00	-	EST	1957 Sep 29 2:00
+			-6:00	-	CST	1958 Apr 27 2:00
+			-5:00	-	EST	1969
+			-5:00	US	E%sT	1971
+			-5:00	-	EST	2006
+			-5:00	US	E%sT
+#
+# Eastern Crawford County, Indiana, left its clocks alone in 1974,
+# as well as from 1976 through 2005.
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
+Rule	Marengo	1951	only	-	Apr	lastSun	2:00	1:00	D
+Rule	Marengo	1951	only	-	Sep	lastSun	2:00	0	S
+Rule	Marengo	1954	1960	-	Apr	lastSun	2:00	1:00	D
+Rule	Marengo	1954	1960	-	Sep	lastSun	2:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Indiana/Marengo -5:45:23 -	LMT	1883 Nov 18 12:14:37
+			-6:00	US	C%sT	1951
+			-6:00	Marengo	C%sT	1961 Apr 30 2:00
+			-5:00	-	EST	1969
+			-5:00	US	E%sT	1974 Jan  6 2:00
+			-6:00	1:00	CDT	1974 Oct 27 2:00
+			-5:00	US	E%sT	1976
+			-5:00	-	EST	2006
+			-5:00	US	E%sT
+#
+# Daviess, Dubois, Knox, and Martin Counties, Indiana,
+# switched from eastern to central time in April 2006, then switched back
+# in November 2007.
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
+Rule Vincennes	1946	only	-	Apr	lastSun	2:00	1:00	D
+Rule Vincennes	1946	only	-	Sep	lastSun	2:00	0	S
+Rule Vincennes	1953	1954	-	Apr	lastSun	2:00	1:00	D
+Rule Vincennes	1953	1959	-	Sep	lastSun	2:00	0	S
+Rule Vincennes	1955	only	-	May	 1	0:00	1:00	D
+Rule Vincennes	1956	1963	-	Apr	lastSun	2:00	1:00	D
+Rule Vincennes	1960	only	-	Oct	lastSun	2:00	0	S
+Rule Vincennes	1961	only	-	Sep	lastSun	2:00	0	S
+Rule Vincennes	1962	1963	-	Oct	lastSun	2:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Indiana/Vincennes -5:50:07 - LMT	1883 Nov 18 12:09:53
+			-6:00	US	C%sT	1946
+			-6:00 Vincennes	C%sT	1964 Apr 26 2:00
+			-5:00	-	EST	1969
+			-5:00	US	E%sT	1971
+			-5:00	-	EST	2006 Apr  2 2:00
+			-6:00	US	C%sT	2007 Nov  4 2:00
+			-5:00	US	E%sT
+#
+# Perry County, Indiana, switched from eastern to central time in April 2006.
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
+Rule Perry	1946	only	-	Apr	lastSun	2:00	1:00	D
+Rule Perry	1946	only	-	Sep	lastSun	2:00	0	S
+Rule Perry	1953	1954	-	Apr	lastSun	2:00	1:00	D
+Rule Perry	1953	1959	-	Sep	lastSun	2:00	0	S
+Rule Perry	1955	only	-	May	 1	0:00	1:00	D
+Rule Perry	1956	1963	-	Apr	lastSun	2:00	1:00	D
+Rule Perry	1960	only	-	Oct	lastSun	2:00	0	S
+Rule Perry	1961	only	-	Sep	lastSun	2:00	0	S
+Rule Perry	1962	1963	-	Oct	lastSun	2:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Indiana/Tell_City -5:47:03 - LMT	1883 Nov 18 12:12:57
+			-6:00	US	C%sT	1946
+			-6:00 Perry	C%sT	1964 Apr 26 2:00
+			-5:00	-	EST	1969
+			-5:00	US	E%sT	1971
+			-5:00	-	EST	2006 Apr  2 2:00
+			-6:00	US	C%sT
+#
+# Pike County, Indiana moved from central to eastern time in 1977,
+# then switched back in 2006, then switched back again in 2007.
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
+Rule	Pike	1955	only	-	May	 1	0:00	1:00	D
+Rule	Pike	1955	1960	-	Sep	lastSun	2:00	0	S
+Rule	Pike	1956	1964	-	Apr	lastSun	2:00	1:00	D
+Rule	Pike	1961	1964	-	Oct	lastSun	2:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Indiana/Petersburg -5:49:07 - LMT	1883 Nov 18 12:10:53
+			-6:00	US	C%sT	1955
+			-6:00	Pike	C%sT	1965 Apr 25 2:00
+			-5:00	-	EST	1966 Oct 30 2:00
+			-6:00	US	C%sT	1977 Oct 30 2:00
+			-5:00	-	EST	2006 Apr  2 2:00
+			-6:00	US	C%sT	2007 Nov  4 2:00
+			-5:00	US	E%sT
+#
+# Starke County, Indiana moved from central to eastern time in 1991,
+# then switched back in 2006.
+# From Arthur David Olson (1991-10-28):
+# An article on page A3 of the Sunday, 1991-10-27 Washington Post
+# notes that Starke County switched from Central time to Eastern time as of
+# 1991-10-27.
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
+Rule	Starke	1947	1961	-	Apr	lastSun	2:00	1:00	D
+Rule	Starke	1947	1954	-	Sep	lastSun	2:00	0	S
+Rule	Starke	1955	1956	-	Oct	lastSun	2:00	0	S
+Rule	Starke	1957	1958	-	Sep	lastSun	2:00	0	S
+Rule	Starke	1959	1961	-	Oct	lastSun	2:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Indiana/Knox -5:46:30 -	LMT	1883 Nov 18 12:13:30
+			-6:00	US	C%sT	1947
+			-6:00	Starke	C%sT	1962 Apr 29 2:00
+			-5:00	-	EST	1963 Oct 27 2:00
+			-6:00	US	C%sT	1991 Oct 27 2:00
+			-5:00	-	EST	2006 Apr  2 2:00
+			-6:00	US	C%sT
+#
+# Pulaski County, Indiana, switched from eastern to central time in
+# April 2006 and then switched back in March 2007.
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
+Rule	Pulaski	1946	1960	-	Apr	lastSun	2:00	1:00	D
+Rule	Pulaski	1946	1954	-	Sep	lastSun	2:00	0	S
+Rule	Pulaski	1955	1956	-	Oct	lastSun	2:00	0	S
+Rule	Pulaski	1957	1960	-	Sep	lastSun	2:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Indiana/Winamac -5:46:25 - LMT	1883 Nov 18 12:13:35
+			-6:00	US	C%sT	1946
+			-6:00	Pulaski	C%sT	1961 Apr 30 2:00
+			-5:00	-	EST	1969
+			-5:00	US	E%sT	1971
+			-5:00	-	EST	2006 Apr  2 2:00
+			-6:00	US	C%sT	2007 Mar 11 2:00
+			-5:00	US	E%sT
+#
+# Switzerland County, Indiana, did not observe DST from 1973 through 2005.
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Indiana/Vevay -5:40:16 -	LMT	1883 Nov 18 12:19:44
+			-6:00	US	C%sT	1954 Apr 25 2:00
+			-5:00	-	EST	1969
+			-5:00	US	E%sT	1973
+			-5:00	-	EST	2006
+			-5:00	US	E%sT
+
+# Part of Kentucky left its clocks alone in 1974.
+# This also includes Clark, Floyd, and Harrison counties in Indiana.
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
+Rule Louisville	1921	only	-	May	1	2:00	1:00	D
+Rule Louisville	1921	only	-	Sep	1	2:00	0	S
+Rule Louisville	1941	1961	-	Apr	lastSun	2:00	1:00	D
+Rule Louisville	1941	only	-	Sep	lastSun	2:00	0	S
+Rule Louisville	1946	only	-	Jun	2	2:00	0	S
+Rule Louisville	1950	1955	-	Sep	lastSun	2:00	0	S
+Rule Louisville	1956	1960	-	Oct	lastSun	2:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Kentucky/Louisville -5:43:02 -	LMT	1883 Nov 18 12:16:58
+			-6:00	US	C%sT	1921
+			-6:00 Louisville C%sT	1942
+			-6:00	US	C%sT	1946
+			-6:00 Louisville C%sT	1961 Jul 23 2:00
+			-5:00	-	EST	1968
+			-5:00	US	E%sT	1974 Jan  6 2:00
+			-6:00	1:00	CDT	1974 Oct 27 2:00
+			-5:00	US	E%sT
+#
+# Wayne County, Kentucky
+#
+# From
+# 
+# Lake Cumberland LIFE
+#  (1999-01-29) via WKYM-101.7:
+# Clinton County has joined Wayne County in asking the DoT to change from
+# the Central to the Eastern time zone....  The Wayne County government made
+# the same request in December.  And while Russell County officials have not
+# taken action, the majority of respondents to a poll conducted there in
+# August indicated they would like to change to "fast time" also.
+# The three Lake Cumberland counties are the farthest east of any U.S.
+# location in the Central time zone.
+#
+# From Rich Wales (2000-08-29):
+# After prolonged debate, and despite continuing deep differences of opinion,
+# Wayne County (central Kentucky) is switching from Central (-0600) to Eastern
+# (-0500) time.  They won't "fall back" this year.  See Sara Shipley,
+# The difference an hour makes, Nando Times (2000-08-29 15:33 -0400).
+#
+# From Paul Eggert (2001-07-16):
+# The final rule was published in the
+# 
+# Federal Register 65, 160 (2000-08-17), page 50154-50158.
+# 
+#
+Zone America/Kentucky/Monticello -5:39:24 - LMT	1883 Nov 18 12:20:36
+			-6:00	US	C%sT	1946
+			-6:00	-	CST	1968
+			-6:00	US	C%sT	2000 Oct 29  2:00
+			-5:00	US	E%sT
+
+
+# From Rives McDow (2000-08-30):
+# Here ... are all the changes in the US since 1985.
+# Kearny County, KS (put all of county on central;
+#	previously split between MST and CST) ... 1990-10
+# Starke County, IN (from CST to EST) ... 1991-10
+# Oliver County, ND (from MST to CST) ... 1992-10
+# West Wendover, NV (from PST TO MST) ... 1999-10
+# Wayne County, KY (from CST to EST) ... 2000-10
+#
+# From Paul Eggert (2001-07-17):
+# We don't know where the line used to be within Kearny County, KS,
+# so omit that change for now.
+# See America/Indiana/Knox for the Starke County, IN change.
+# See America/North_Dakota/Center for the Oliver County, ND change.
+# West Wendover, NV officially switched from Pacific to mountain time on
+# 1999-10-31.  See the
+# 
+# Federal Register 64, 203 (1999-10-21), page 56705-56707.
+# 
+# However, the Federal Register says that West Wendover already operated
+# on mountain time, and the rule merely made this official;
+# hence a separate tz entry is not needed.
+
+# Michigan
+#
+# From Bob Devine (1988-01-28):
+# Michigan didn't observe DST from 1968 to 1973.
+#
+# From Paul Eggert (1999-03-31):
+# Shanks writes that Michigan started using standard time on 1885-09-18,
+# but Howse writes (pp 124-125, referring to Popular Astronomy, 1901-01)
+# that Detroit kept
+#
+#	local time until 1900 when the City Council decreed that clocks should
+#	be put back twenty-eight minutes to Central Standard Time.  Half the
+#	city obeyed, half refused.  After considerable debate, the decision
+#	was rescinded and the city reverted to Sun time.  A derisive offer to
+#	erect a sundial in front of the city hall was referred to the
+#	Committee on Sewers.  Then, in 1905, Central time was adopted
+#	by city vote.
+#
+# This story is too entertaining to be false, so go with Howse over Shanks.
+#
+# From Paul Eggert (2001-03-06):
+# Garland (1927) writes ``Cleveland and Detroit advanced their clocks
+# one hour in 1914.''  This change is not in Shanks.  We have no more
+# info, so omit this for now.
+#
+# Most of Michigan observed DST from 1973 on, but was a bit late in 1975.
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
+Rule	Detroit	1948	only	-	Apr	lastSun	2:00	1:00	D
+Rule	Detroit	1948	only	-	Sep	lastSun	2:00	0	S
+Rule	Detroit	1967	only	-	Jun	14	2:00	1:00	D
+Rule	Detroit	1967	only	-	Oct	lastSun	2:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Detroit	-5:32:11 -	LMT	1905
+			-6:00	-	CST	1915 May 15 2:00
+			-5:00	-	EST	1942
+			-5:00	US	E%sT	1946
+			-5:00	Detroit	E%sT	1973
+			-5:00	US	E%sT	1975
+			-5:00	-	EST	1975 Apr 27 2:00
+			-5:00	US	E%sT
+#
+# Dickinson, Gogebic, Iron, and Menominee Counties, Michigan,
+# switched from EST to CST/CDT in 1973.
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
+Rule Menominee	1946	only	-	Apr	lastSun	2:00	1:00	D
+Rule Menominee	1946	only	-	Sep	lastSun	2:00	0	S
+Rule Menominee	1966	only	-	Apr	lastSun	2:00	1:00	D
+Rule Menominee	1966	only	-	Oct	lastSun	2:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Menominee	-5:50:27 -	LMT	1885 Sep 18 12:00
+			-6:00	US	C%sT	1946
+			-6:00 Menominee	C%sT	1969 Apr 27 2:00
+			-5:00	-	EST	1973 Apr 29 2:00
+			-6:00	US	C%sT
+
+# Navassa
+# administered by the US Fish and Wildlife Service
+# claimed by US under the provisions of the 1856 Guano Islands Act
+# also claimed by Haiti
+# occupied 1857/1900 by the Navassa Phosphate Co
+# US lighthouse 1917/1996-09
+# currently uninhabited
+# see Mark Fineman, ``An Isle Rich in Guano and Discord'',
+# _Los Angeles Times_ (1998-11-10), A1, A10; it cites
+# Jimmy Skaggs, _The Great Guano Rush_ (1994).
+
+################################################################################
+
+
+# From Paul Eggert (2006-03-22):
+# A good source for time zone historical data outside the U.S. is
+# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+# San Diego: ACS Publications, Inc. (2003).
+#
+# Gwillim Law writes that a good source
+# for recent time zone data is the International Air Transport
+# Association's Standard Schedules Information Manual (IATA SSIM),
+# published semiannually.  Law sent in several helpful summaries
+# of the IATA's data after 1990.
+#
+# Except where otherwise noted, Shanks & Pottenger is the source for
+# entries through 1990, and IATA SSIM is the source for entries afterwards.
+#
+# Other sources occasionally used include:
+#
+#	Edward W. Whitman, World Time Differences,
+#	Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated),
+#	which I found in the UCLA library.
+#
+#	
+#	William Willett, The Waste of Daylight, 19th edition
+#	 (1914-03)
+#
+# See the `europe' file for Greenland.
+
+# Canada
+
+# From Alain LaBont (1994-11-14):
+# I post here the time zone abbreviations standardized in Canada
+# for both English and French in the CAN/CSA-Z234.4-89 standard....
+#
+#	UTC	Standard time	Daylight savings time
+#	offset	French	English	French	English
+#	-2:30	-	-	HAT	NDT
+#	-3	-	-	HAA	ADT
+#	-3:30	HNT	NST	-	-
+#	-4	HNA	AST	HAE	EDT
+#	-5	HNE	EST	HAC	CDT
+#	-6	HNC	CST	HAR	MDT
+#	-7	HNR	MST	HAP	PDT
+#	-8	HNP	PST	HAY	YDT
+#	-9	HNY	YST	-	-
+#
+#	HN: Heure Normale	ST: Standard Time
+#	HA: Heure Avance	DT: Daylight saving Time
+#
+#	A: de l'Atlantique	Atlantic
+#	C: du Centre		Central
+#	E: de l'Est		Eastern
+#	M:			Mountain
+#	N:			Newfoundland
+#	P: du Pacifique		Pacific
+#	R: des Rocheuses
+#	T: de Terre-Neuve
+#	Y: du Yukon		Yukon
+#
+# From Paul Eggert (1994-11-22):
+# Alas, this sort of thing must be handled by localization software.
+
+# Unless otherwise specified, the data for Canada are all from Shanks
+# & Pottenger.
+
+# From Chris Walton (2006-04-01, 2006-04-25, 2006-06-26, 2007-01-31,
+# 2007-03-01):
+# The British Columbia government announced yesterday that it will
+# adjust daylight savings next year to align with changes in the
+# U.S. and the rest of Canada....
+# http://www2.news.gov.bc.ca/news_releases_2005-2009/2006AG0014-000330.htm
+# ...
+# Nova Scotia
+# Daylight saving time will be extended by four weeks starting in 2007....
+# http://www.gov.ns.ca/just/regulations/rg2/2006/ma1206.pdf
+#
+# [For New Brunswick] the new legislation dictates that the time change is to
+# be done at 02:00 instead of 00:01.
+# http://www.gnb.ca/0062/acts/BBA-2006/Chap-19.pdf
+# ...
+# Manitoba has traditionally changed the clock every fall at 03:00.
+# As of 2006, the transition is to take place one hour earlier at 02:00.
+# http://web2.gov.mb.ca/laws/statutes/ccsm/o030e.php
+# ...
+# [Alberta, Ontario, Quebec] will follow US rules.
+# http://www.qp.gov.ab.ca/documents/spring/CH03_06.CFM
+# http://www.e-laws.gov.on.ca/DBLaws/Source/Regs/English/2006/R06111_e.htm
+# http://www2.publicationsduquebec.gouv.qc.ca/dynamicSearch/telecharge.php?type=5&file=2006C39A.PDF
+# ...
+# P.E.I. will follow US rules....
+# http://www.assembly.pe.ca/bills/pdf_chapter/62/3/chapter-41.pdf
+# ...
+# Province of Newfoundland and Labrador....
+# http://www.hoa.gov.nl.ca/hoa/bills/Bill0634.htm
+# ...
+# Yukon
+# http://www.gov.yk.ca/legislation/regs/oic2006_127.pdf
+# ...
+# N.W.T. will follow US rules.  Whoever maintains the government web site
+# does not seem to believe in bookmarks.  To see the news release, click the
+# following link and search for "Daylight Savings Time Change".  Press the
+# "Daylight Savings Time Change" link; it will fire off a popup using
+# JavaScript.
+# http://www.exec.gov.nt.ca/currentnews/currentPR.asp?mode=archive
+# ...
+# Nunavut
+# An amendment to the Interpretation Act was registered on February 19/2007....
+# http://action.attavik.ca/home/justice-gn/attach/2007/gaz02part2.pdf
+
+# From Paul Eggert (2006-04-25):
+# H. David Matthews and Mary Vincent's map
+# 
+# "It's about TIME", _Canadian Geographic_ (September-October 1998)
+#  contains detailed boundaries for regions observing nonstandard
+# time and daylight saving time arrangements in Canada circa 1998.
+#
+# INMS, the Institute for National Measurement Standards in Ottawa, has 
+# information about standard and daylight saving time zones in Canada.
+#  (updated periodically).
+# Its unofficial information is often taken from Matthews and Vincent.
+
+# From Paul Eggert (2006-06-27):
+# For now, assume all of DST-observing Canada will fall into line with the
+# new US DST rules,
+
+# From Chris Walton (2011-12-01)
+# In the first of Tammy Hardwick's articles
+# 
+# http://www.ilovecreston.com/?p=articles&t=spec&ar=260
+# 
+# she quotes the Friday November 1/1918 edition of the Creston Review.
+# The quote includes these two statements:
+# 'Sunday the CPR went back to the old system of time...'
+# '... The daylight saving scheme was dropped all over Canada at the same time,'
+# These statements refer to a transition from daylight time to standard time
+# that occurred nationally on Sunday October 27/1918.  This transition was
+# also documented in the Saturday October 26/1918 edition of the Toronto Star.
+
+# In light of that evidence, we alter the date from the earlier believed
+# Oct 31, to Oct 27, 1918 (and Sunday is a more likely transition day
+# than Thursday) in all Canadian rulesets.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Canada	1918	only	-	Apr	14	2:00	1:00	D
+Rule	Canada	1918	only	-	Oct	27	2:00	0	S
+Rule	Canada	1942	only	-	Feb	 9	2:00	1:00	W # War
+Rule	Canada	1945	only	-	Aug	14	23:00u	1:00	P # Peace
+Rule	Canada	1945	only	-	Sep	30	2:00	0	S
+Rule	Canada	1974	1986	-	Apr	lastSun	2:00	1:00	D
+Rule	Canada	1974	2006	-	Oct	lastSun	2:00	0	S
+Rule	Canada	1987	2006	-	Apr	Sun>=1	2:00	1:00	D
+Rule	Canada	2007	max	-	Mar	Sun>=8	2:00	1:00	D
+Rule	Canada	2007	max	-	Nov	Sun>=1	2:00	0	S
+
+
+# Newfoundland and Labrador
+
+# From Paul Eggert (2000-10-02):
+# Matthews and Vincent (1998) write that Labrador should use NST/NDT,
+# but the only part of Labrador that follows the rules is the
+# southeast corner, including Port Hope Simpson and Mary's Harbour,
+# but excluding, say, Black Tickle.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	StJohns	1917	only	-	Apr	 8	2:00	1:00	D
+Rule	StJohns	1917	only	-	Sep	17	2:00	0	S
+# Whitman gives 1919 Apr 5 and 1920 Apr 5; go with Shanks & Pottenger.
+Rule	StJohns	1919	only	-	May	 5	23:00	1:00	D
+Rule	StJohns	1919	only	-	Aug	12	23:00	0	S
+# For 1931-1935 Whitman gives Apr same date; go with Shanks & Pottenger.
+Rule	StJohns	1920	1935	-	May	Sun>=1	23:00	1:00	D
+Rule	StJohns	1920	1935	-	Oct	lastSun	23:00	0	S
+# For 1936-1941 Whitman gives May Sun>=8 and Oct Sun>=1; go with Shanks &
+# Pottenger.
+Rule	StJohns	1936	1941	-	May	Mon>=9	0:00	1:00	D
+Rule	StJohns	1936	1941	-	Oct	Mon>=2	0:00	0	S
+# Whitman gives the following transitions:
+# 1942 03-01/12-31, 1943 05-30/09-05, 1944 07-10/09-02, 1945 01-01/10-07
+# but go with Shanks & Pottenger and assume they used Canadian rules.
+# For 1946-9 Whitman gives May 5,4,9,1 - Oct 1,5,3,2, and for 1950 he gives
+# Apr 30 - Sep 24; go with Shanks & Pottenger.
+Rule	StJohns	1946	1950	-	May	Sun>=8	2:00	1:00	D
+Rule	StJohns	1946	1950	-	Oct	Sun>=2	2:00	0	S
+Rule	StJohns	1951	1986	-	Apr	lastSun	2:00	1:00	D
+Rule	StJohns	1951	1959	-	Sep	lastSun	2:00	0	S
+Rule	StJohns	1960	1986	-	Oct	lastSun	2:00	0	S
+# From Paul Eggert (2000-10-02):
+# INMS (2000-09-12) says that, since 1988 at least, Newfoundland switches
+# at 00:01 local time.  For now, assume it started in 1987.
+
+# From Michael Pelley (2011-09-12):
+# We received today, Monday, September 12, 2011, notification that the
+# changes to the Newfoundland Standard Time Act have been proclaimed.
+# The change in the Act stipulates that the change from Daylight Savings
+# Time to Standard Time and from Standard Time to Daylight Savings Time
+# now occurs at 2:00AM.
+# ...
+# 
+# http://www.assembly.nl.ca/legislation/sr/annualstatutes/2011/1106.chp.htm
+# 
+# ...
+# MICHAEL PELLEY  |  Manager of Enterprise Architecture - Solution Delivery
+# Office of the Chief Information Officer
+# Executive Council
+# Government of Newfoundland & Labrador
+
+Rule	StJohns	1987	only	-	Apr	Sun>=1	0:01	1:00	D
+Rule	StJohns	1987	2006	-	Oct	lastSun	0:01	0	S
+Rule	StJohns	1988	only	-	Apr	Sun>=1	0:01	2:00	DD
+Rule	StJohns	1989	2006	-	Apr	Sun>=1	0:01	1:00	D
+Rule	StJohns	2007	2011	-	Mar	Sun>=8	0:01	1:00	D
+Rule	StJohns	2007	2010	-	Nov	Sun>=1	0:01	0	S
+#
+# St John's has an apostrophe, but Posix file names can't have apostrophes.
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/St_Johns	-3:30:52 -	LMT	1884
+			-3:30:52 StJohns N%sT	1918
+			-3:30:52 Canada	N%sT	1919
+			-3:30:52 StJohns N%sT	1935 Mar 30
+			-3:30	StJohns	N%sT	1942 May 11
+			-3:30	Canada	N%sT	1946
+			-3:30	StJohns	N%sT	2011 Nov
+			-3:30	Canada	N%sT
+
+# most of east Labrador
+
+# The name `Happy Valley-Goose Bay' is too long; use `Goose Bay'.
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Goose_Bay	-4:01:40 -	LMT	1884 # Happy Valley-Goose Bay
+			-3:30:52 -	NST	1918
+			-3:30:52 Canada N%sT	1919
+			-3:30:52 -	NST	1935 Mar 30
+			-3:30	-	NST	1936
+			-3:30	StJohns	N%sT	1942 May 11
+			-3:30	Canada	N%sT	1946
+			-3:30	StJohns	N%sT	1966 Mar 15 2:00
+			-4:00	StJohns	A%sT	2011 Nov
+			-4:00	Canada	A%sT
+
+
+# west Labrador, Nova Scotia, Prince Edward I
+
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger write that since 1970 most of this region has been like
+# Halifax.  Many locales did not observe peacetime DST until 1972;
+# Glace Bay, NS is the largest that we know of.
+# Shanks & Pottenger also write that Liverpool, NS was the only town
+# in Canada to observe DST in 1971 but not 1970; for now we'll assume
+# this is a typo.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Halifax	1916	only	-	Apr	 1	0:00	1:00	D
+Rule	Halifax	1916	only	-	Oct	 1	0:00	0	S
+Rule	Halifax	1920	only	-	May	 9	0:00	1:00	D
+Rule	Halifax	1920	only	-	Aug	29	0:00	0	S
+Rule	Halifax	1921	only	-	May	 6	0:00	1:00	D
+Rule	Halifax	1921	1922	-	Sep	 5	0:00	0	S
+Rule	Halifax	1922	only	-	Apr	30	0:00	1:00	D
+Rule	Halifax	1923	1925	-	May	Sun>=1	0:00	1:00	D
+Rule	Halifax	1923	only	-	Sep	 4	0:00	0	S
+Rule	Halifax	1924	only	-	Sep	15	0:00	0	S
+Rule	Halifax	1925	only	-	Sep	28	0:00	0	S
+Rule	Halifax	1926	only	-	May	16	0:00	1:00	D
+Rule	Halifax	1926	only	-	Sep	13	0:00	0	S
+Rule	Halifax	1927	only	-	May	 1	0:00	1:00	D
+Rule	Halifax	1927	only	-	Sep	26	0:00	0	S
+Rule	Halifax	1928	1931	-	May	Sun>=8	0:00	1:00	D
+Rule	Halifax	1928	only	-	Sep	 9	0:00	0	S
+Rule	Halifax	1929	only	-	Sep	 3	0:00	0	S
+Rule	Halifax	1930	only	-	Sep	15	0:00	0	S
+Rule	Halifax	1931	1932	-	Sep	Mon>=24	0:00	0	S
+Rule	Halifax	1932	only	-	May	 1	0:00	1:00	D
+Rule	Halifax	1933	only	-	Apr	30	0:00	1:00	D
+Rule	Halifax	1933	only	-	Oct	 2	0:00	0	S
+Rule	Halifax	1934	only	-	May	20	0:00	1:00	D
+Rule	Halifax	1934	only	-	Sep	16	0:00	0	S
+Rule	Halifax	1935	only	-	Jun	 2	0:00	1:00	D
+Rule	Halifax	1935	only	-	Sep	30	0:00	0	S
+Rule	Halifax	1936	only	-	Jun	 1	0:00	1:00	D
+Rule	Halifax	1936	only	-	Sep	14	0:00	0	S
+Rule	Halifax	1937	1938	-	May	Sun>=1	0:00	1:00	D
+Rule	Halifax	1937	1941	-	Sep	Mon>=24	0:00	0	S
+Rule	Halifax	1939	only	-	May	28	0:00	1:00	D
+Rule	Halifax	1940	1941	-	May	Sun>=1	0:00	1:00	D
+Rule	Halifax	1946	1949	-	Apr	lastSun	2:00	1:00	D
+Rule	Halifax	1946	1949	-	Sep	lastSun	2:00	0	S
+Rule	Halifax	1951	1954	-	Apr	lastSun	2:00	1:00	D
+Rule	Halifax	1951	1954	-	Sep	lastSun	2:00	0	S
+Rule	Halifax	1956	1959	-	Apr	lastSun	2:00	1:00	D
+Rule	Halifax	1956	1959	-	Sep	lastSun	2:00	0	S
+Rule	Halifax	1962	1973	-	Apr	lastSun	2:00	1:00	D
+Rule	Halifax	1962	1973	-	Oct	lastSun	2:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Halifax	-4:14:24 -	LMT	1902 Jun 15
+			-4:00	Halifax	A%sT	1918
+			-4:00	Canada	A%sT	1919
+			-4:00	Halifax	A%sT	1942 Feb  9 2:00s
+			-4:00	Canada	A%sT	1946
+			-4:00	Halifax	A%sT	1974
+			-4:00	Canada	A%sT
+Zone America/Glace_Bay	-3:59:48 -	LMT	1902 Jun 15
+			-4:00	Canada	A%sT	1953
+			-4:00	Halifax	A%sT	1954
+			-4:00	-	AST	1972
+			-4:00	Halifax	A%sT	1974
+			-4:00	Canada	A%sT
+
+# New Brunswick
+
+# From Paul Eggert (2007-01-31):
+# The Time Definition Act 
+# says they changed at 00:01 through 2006, and
+#  makes it
+# clear that this was the case since at least 1993.
+# For now, assume it started in 1993.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Moncton	1933	1935	-	Jun	Sun>=8	1:00	1:00	D
+Rule	Moncton	1933	1935	-	Sep	Sun>=8	1:00	0	S
+Rule	Moncton	1936	1938	-	Jun	Sun>=1	1:00	1:00	D
+Rule	Moncton	1936	1938	-	Sep	Sun>=1	1:00	0	S
+Rule	Moncton	1939	only	-	May	27	1:00	1:00	D
+Rule	Moncton	1939	1941	-	Sep	Sat>=21	1:00	0	S
+Rule	Moncton	1940	only	-	May	19	1:00	1:00	D
+Rule	Moncton	1941	only	-	May	 4	1:00	1:00	D
+Rule	Moncton	1946	1972	-	Apr	lastSun	2:00	1:00	D
+Rule	Moncton	1946	1956	-	Sep	lastSun	2:00	0	S
+Rule	Moncton	1957	1972	-	Oct	lastSun	2:00	0	S
+Rule	Moncton	1993	2006	-	Apr	Sun>=1	0:01	1:00	D
+Rule	Moncton	1993	2006	-	Oct	lastSun	0:01	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Moncton	-4:19:08 -	LMT	1883 Dec  9
+			-5:00	-	EST	1902 Jun 15
+			-4:00	Canada	A%sT	1933
+			-4:00	Moncton	A%sT	1942
+			-4:00	Canada	A%sT	1946
+			-4:00	Moncton	A%sT	1973
+			-4:00	Canada	A%sT	1993
+			-4:00	Moncton	A%sT	2007
+			-4:00	Canada	A%sT
+
+# Quebec
+
+# From Paul Eggert (2006-07-09):
+# Shanks & Pottenger write that since 1970 most of Quebec has been
+# like Montreal.
+
+# From Paul Eggert (2006-06-27):
+# Matthews and Vincent (1998) also write that Quebec east of the -63
+# meridian is supposed to observe AST, but residents as far east as
+# Natashquan use EST/EDT, and residents east of Natashquan use AST.
+# In "Official time in Quebec" the Quebec department of justice writes in
+# http://www.justice.gouv.qc.ca/english/publications/generale/temps-regl-1-a.htm
+# that "The residents of the Municipality of the
+# Cote-Nord-du-Golfe-Saint-Laurent and the municipalities of Saint-Augustin,
+# Bonne-Esperance and Blanc-Sablon apply the Official Time Act as it is
+# written and use Atlantic standard time all year round. The same applies to
+# the residents of the Native facilities along the lower North Shore."
+# 
+# says this common practice was codified into law as of 2007.
+# For lack of better info, guess this practice began around 1970, contra to
+# Shanks & Pottenger who have this region observing AST/ADT.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Mont	1917	only	-	Mar	25	2:00	1:00	D
+Rule	Mont	1917	only	-	Apr	24	0:00	0	S
+Rule	Mont	1919	only	-	Mar	31	2:30	1:00	D
+Rule	Mont	1919	only	-	Oct	25	2:30	0	S
+Rule	Mont	1920	only	-	May	 2	2:30	1:00	D
+Rule	Mont	1920	1922	-	Oct	Sun>=1	2:30	0	S
+Rule	Mont	1921	only	-	May	 1	2:00	1:00	D
+Rule	Mont	1922	only	-	Apr	30	2:00	1:00	D
+Rule	Mont	1924	only	-	May	17	2:00	1:00	D
+Rule	Mont	1924	1926	-	Sep	lastSun	2:30	0	S
+Rule	Mont	1925	1926	-	May	Sun>=1	2:00	1:00	D
+# The 1927-to-1937 rules can be expressed more simply as
+# Rule	Mont	1927	1937	-	Apr	lastSat	24:00	1:00	D
+# Rule	Mont	1927	1937	-	Sep	lastSat	24:00	0	S
+# The rules below avoid use of 24:00
+# (which pre-1998 versions of zic cannot handle).
+Rule	Mont	1927	only	-	May	1	0:00	1:00	D
+Rule	Mont	1927	1932	-	Sep	lastSun	0:00	0	S
+Rule	Mont	1928	1931	-	Apr	lastSun	0:00	1:00	D
+Rule	Mont	1932	only	-	May	1	0:00	1:00	D
+Rule	Mont	1933	1940	-	Apr	lastSun	0:00	1:00	D
+Rule	Mont	1933	only	-	Oct	1	0:00	0	S
+Rule	Mont	1934	1939	-	Sep	lastSun	0:00	0	S
+Rule	Mont	1946	1973	-	Apr	lastSun	2:00	1:00	D
+Rule	Mont	1945	1948	-	Sep	lastSun	2:00	0	S
+Rule	Mont	1949	1950	-	Oct	lastSun	2:00	0	S
+Rule	Mont	1951	1956	-	Sep	lastSun	2:00	0	S
+Rule	Mont	1957	1973	-	Oct	lastSun	2:00	0	S
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Blanc-Sablon -3:48:28 -	LMT	1884
+			-4:00	Canada	A%sT	1970
+			-4:00	-	AST
+Zone America/Montreal	-4:54:16 -	LMT	1884
+			-5:00	Mont	E%sT	1918
+			-5:00	Canada	E%sT	1919
+			-5:00	Mont	E%sT	1942 Feb  9 2:00s
+			-5:00	Canada	E%sT	1946
+			-5:00	Mont	E%sT	1974
+			-5:00	Canada	E%sT
+
+
+# Ontario
+
+# From Paul Eggert (2006-07-09):
+# Shanks & Pottenger write that since 1970 most of Ontario has been like
+# Toronto.
+# Thunder Bay skipped DST in 1973.
+# Many smaller locales did not observe peacetime DST until 1974;
+# Nipigon (EST) and Rainy River (CST) are the largest that we know of.
+# Far west Ontario is like Winnipeg; far east Quebec is like Halifax.
+
+# From Mark Brader (2003-07-26):
+# [According to the Toronto Star] Orillia, Ontario, adopted DST
+# effective Saturday, 1912-06-22, 22:00; the article mentions that
+# Port Arthur (now part of Thunder Bay, Ontario) as well as Moose Jaw
+# have already done so.  In Orillia DST was to run until Saturday,
+# 1912-08-31 (no time mentioned), but it was met with considerable
+# hostility from certain segments of the public, and was revoked after
+# only two weeks -- I copied it as Saturday, 1912-07-07, 22:00, but
+# presumably that should be -07-06.  (1912-06-19, -07-12; also letters
+# earlier in June).
+#
+# Kenora, Ontario, was to abandon DST on 1914-06-01 (-05-21).
+
+# From Paul Eggert (1997-10-17):
+# Mark Brader writes that an article in the 1997-10-14 Toronto Star
+# says that Atikokan, Ontario currently does not observe DST,
+# but will vote on 11-10 whether to use EST/EDT.
+# He also writes that the
+# 
+# Ontario Time Act (1990, Chapter T.9)
+# 
+# says that Ontario east of 90W uses EST/EDT, and west of 90W uses CST/CDT.
+# Officially Atikokan is therefore on CST/CDT, and most likely this report
+# concerns a non-official time observed as a matter of local practice.
+#
+# From Paul Eggert (2000-10-02):
+# Matthews and Vincent (1998) write that Atikokan, Pickle Lake, and
+# New Osnaburgh observe CST all year, that Big Trout Lake observes
+# CST/CDT, and that Upsala and Shebandowan observe EST/EDT, all in
+# violation of the official Ontario rules.
+#
+# From Paul Eggert (2006-07-09):
+# Chris Walton (2006-07-06) mentioned an article by Stephanie MacLellan in the
+# 2005-07-21 Chronicle-Journal, which said:
+#
+#	The clocks in Atikokan stay set on standard time year-round.
+#	This means they spend about half the time on central time and
+#	the other half on eastern time.
+#
+#	For the most part, the system works, Mayor Dennis Brown said.
+#
+#	"The majority of businesses in Atikokan deal more with Eastern
+#	Canada, but there are some that deal with Western Canada," he
+#	said.  "I don't see any changes happening here."
+#
+# Walton also writes "Supposedly Pickle Lake and Mishkeegogamang
+# [New Osnaburgh] follow the same practice."
+
+# From Garry McKinnon (2006-07-14) via Chris Walton:
+# I chatted with a member of my board who has an outstanding memory
+# and a long history in Atikokan (and in the telecom industry) and he
+# can say for certain that Atikokan has been practicing the current
+# time keeping since 1952, at least.
+
+# From Paul Eggert (2006-07-17):
+# Shanks & Pottenger say that Atikokan has agreed with Rainy River
+# ever since standard time was introduced, but the information from
+# McKinnon sounds more authoritative.  For now, assume that Atikokan
+# switched to EST immediately after WWII era daylight saving time
+# ended.  This matches the old (less-populous) America/Coral_Harbour
+# entry since our cutoff date of 1970, so we can move
+# America/Coral_Harbour to the 'backward' file.
+
+# From Mark Brader (2010-03-06):
+#
+# Currently the database has:
+#
+# # Ontario
+#
+# # From Paul Eggert (2006-07-09):
+# # Shanks & Pottenger write that since 1970 most of Ontario has been like
+# # Toronto.
+# # Thunder Bay skipped DST in 1973.
+# # Many smaller locales did not observe peacetime DST until 1974;
+# # Nipigon (EST) and Rainy River (CST) are the largest that we know of.
+#
+# In the (Toronto) Globe and Mail for Saturday, 1955-09-24, in the bottom
+# right corner of page 1, it says that Toronto will return to standard
+# time at 2 am Sunday morning (which agrees with the database), and that:
+#
+#     The one-hour setback will go into effect throughout most of Ontario,
+#     except in areas like Windsor which remains on standard time all year.
+#
+# Windsor is, of course, a lot larger than Nipigon.
+#
+# I only came across this incidentally.  I don't know if Windsor began
+# observing DST when Detroit did, or in 1974, or on some other date.
+#
+# By the way, the article continues by noting that:
+#
+#     Some cities in the United States have pushed the deadline back
+#     three weeks and will change over from daylight saving in October.
+
+# From Arthur David Olson (2010-07-17):
+#
+# "Standard Time and Time Zones in Canada" appeared in
+# The Journal of The Royal Astronomical Society of Canada,
+# volume 26, number 2 (February 1932) and, as of 2010-07-17,
+# was available at
+# 
+# http://adsabs.harvard.edu/full/1932JRASC..26...49S
+# 
+#
+# It includes the text below (starting on page 57):
+#
+#   A list of the places in Canada using daylight saving time would
+# require yearly revision. From information kindly furnished by
+# the provincial governments and by the postmasters in many cities
+# and towns, it is found that the following places used daylight sav-
+# ing in 1930. The information for the province of Quebec is definite,
+# for the other provinces only approximate:
+#
+# 	Province	Daylight saving time used
+# Prince Edward Island	Not used.
+# Nova Scotia		In Halifax only.
+# New Brunswick		In St. John only.
+# Quebec		In the following places:
+# 			Montreal	Lachine
+# 			Quebec		Mont-Royal
+# 			Levis		Iberville
+# 			St. Lambert	Cap de la Madeleine
+# 			Verdun		Loretteville
+# 			Westmount	Richmond
+# 			Outremont	St. Jerome
+# 			Longueuil	Greenfield Park
+# 			Arvida		Waterloo
+# 			Chambly-Canton	Beaulieu
+# 			Melbourne	La Tuque
+# 			St. Theophile	Buckingham
+# Ontario		Used generally in the cities and towns along
+# 			the southerly part of the province. Not
+# 			used in the northwesterlhy part.
+# Manitoba		Not used.
+# Saskatchewan		In Regina only.
+# Alberta		Not used.
+# British Columbia	Not used.
+#
+#   With some exceptions, the use of daylight saving may be said to be limited
+# to those cities and towns lying between Quebec city and Windsor, Ont.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Toronto	1919	only	-	Mar	30	23:30	1:00	D
+Rule	Toronto	1919	only	-	Oct	26	0:00	0	S
+Rule	Toronto	1920	only	-	May	 2	2:00	1:00	D
+Rule	Toronto	1920	only	-	Sep	26	0:00	0	S
+Rule	Toronto	1921	only	-	May	15	2:00	1:00	D
+Rule	Toronto	1921	only	-	Sep	15	2:00	0	S
+Rule	Toronto	1922	1923	-	May	Sun>=8	2:00	1:00	D
+# Shanks & Pottenger say 1923-09-19; assume it's a typo and that "-16"
+# was meant.
+Rule	Toronto	1922	1926	-	Sep	Sun>=15	2:00	0	S
+Rule	Toronto	1924	1927	-	May	Sun>=1	2:00	1:00	D
+# The 1927-to-1939 rules can be expressed more simply as
+# Rule	Toronto	1927	1937	-	Sep	Sun>=25	2:00	0	S
+# Rule	Toronto	1928	1937	-	Apr	Sun>=25	2:00	1:00	D
+# Rule	Toronto	1938	1940	-	Apr	lastSun	2:00	1:00	D
+# Rule	Toronto	1938	1939	-	Sep	lastSun	2:00	0	S
+# The rules below avoid use of Sun>=25
+# (which pre-2004 versions of zic cannot handle).
+Rule	Toronto	1927	1932	-	Sep	lastSun	2:00	0	S
+Rule	Toronto	1928	1931	-	Apr	lastSun	2:00	1:00	D
+Rule	Toronto	1932	only	-	May	1	2:00	1:00	D
+Rule	Toronto	1933	1940	-	Apr	lastSun	2:00	1:00	D
+Rule	Toronto	1933	only	-	Oct	1	2:00	0	S
+Rule	Toronto	1934	1939	-	Sep	lastSun	2:00	0	S
+Rule	Toronto	1945	1946	-	Sep	lastSun	2:00	0	S
+Rule	Toronto	1946	only	-	Apr	lastSun	2:00	1:00	D
+Rule	Toronto	1947	1949	-	Apr	lastSun	0:00	1:00	D
+Rule	Toronto	1947	1948	-	Sep	lastSun	0:00	0	S
+Rule	Toronto	1949	only	-	Nov	lastSun	0:00	0	S
+Rule	Toronto	1950	1973	-	Apr	lastSun	2:00	1:00	D
+Rule	Toronto	1950	only	-	Nov	lastSun	2:00	0	S
+Rule	Toronto	1951	1956	-	Sep	lastSun	2:00	0	S
+# Shanks & Pottenger say Toronto ended DST a week early in 1971,
+# namely on 1971-10-24, but Mark Brader wrote (2003-05-31) that this
+# is wrong, and that he had confirmed it by checking the 1971-10-30
+# Toronto Star, which said that DST was ending 1971-10-31 as usual.
+Rule	Toronto	1957	1973	-	Oct	lastSun	2:00	0	S
+
+# From Paul Eggert (2003-07-27):
+# Willett (1914-03) writes (p. 17) "In the Cities of Fort William, and
+# Port Arthur, Ontario, the principle of the Bill has been in
+# operation for the past three years, and in the City of Moose Jaw,
+# Saskatchewan, for one year."
+
+# From David Bryan via Tory Tronrud, Director/Curator,
+# Thunder Bay Museum (2003-11-12):
+# There is some suggestion, however, that, by-law or not, daylight
+# savings time was being practiced in Fort William and Port Arthur
+# before 1909.... [I]n 1910, the line between the Eastern and Central
+# Time Zones was permanently moved about two hundred miles west to
+# include the Thunder Bay area....  When Canada adopted daylight
+# savings time in 1916, Fort William and Port Arthur, having done so
+# already, did not change their clocks....  During the Second World
+# War,... [t]he cities agreed to implement DST during the summer
+# months for the remainder of the war years.
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Toronto	-5:17:32 -	LMT	1895
+			-5:00	Canada	E%sT	1919
+			-5:00	Toronto	E%sT	1942 Feb  9 2:00s
+			-5:00	Canada	E%sT	1946
+			-5:00	Toronto	E%sT	1974
+			-5:00	Canada	E%sT
+Zone America/Thunder_Bay -5:57:00 -	LMT	1895
+			-6:00	-	CST	1910
+			-5:00	-	EST	1942
+			-5:00	Canada	E%sT	1970
+			-5:00	Mont	E%sT	1973
+			-5:00	-	EST	1974
+			-5:00	Canada	E%sT
+Zone America/Nipigon	-5:53:04 -	LMT	1895
+			-5:00	Canada	E%sT	1940 Sep 29
+			-5:00	1:00	EDT	1942 Feb  9 2:00s
+			-5:00	Canada	E%sT
+Zone America/Rainy_River -6:18:16 -	LMT	1895
+			-6:00	Canada	C%sT	1940 Sep 29
+			-6:00	1:00	CDT	1942 Feb  9 2:00s
+			-6:00	Canada	C%sT
+Zone America/Atikokan	-6:06:28 -	LMT	1895
+			-6:00	Canada	C%sT	1940 Sep 29
+			-6:00	1:00	CDT	1942 Feb  9 2:00s
+			-6:00	Canada	C%sT	1945 Sep 30 2:00
+			-5:00	-	EST
+
+
+# Manitoba
+
+# From Rob Douglas (2006-04-06):
+# the old Manitoba Time Act - as amended by Bill 2, assented to
+# March 27, 1987 ... said ...
+# "between two o'clock Central Standard Time in the morning of
+# the first Sunday of April of each year and two o'clock Central
+# Standard Time in the morning of the last Sunday of October next
+# following, one hour in advance of Central Standard Time."...
+# I believe that the English legislation [of the old time act] had =
+# been assented to (March 22, 1967)....
+# Also, as far as I can tell, there was no order-in-council varying
+# the time of Daylight Saving Time for 2005 and so the provisions of
+# the 1987 version would apply - the changeover was at 2:00 Central
+# Standard Time (i.e. not until 3:00 Central Daylight Time).
+
+# From Paul Eggert (2006-04-10):
+# Shanks & Pottenger say Manitoba switched at 02:00 (not 02:00s)
+# starting 1966.  Since 02:00s is clearly correct for 1967 on, assume
+# it was also 02:00s in 1966.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Winn	1916	only	-	Apr	23	0:00	1:00	D
+Rule	Winn	1916	only	-	Sep	17	0:00	0	S
+Rule	Winn	1918	only	-	Apr	14	2:00	1:00	D
+Rule	Winn	1918	only	-	Oct	27	2:00	0	S
+Rule	Winn	1937	only	-	May	16	2:00	1:00	D
+Rule	Winn	1937	only	-	Sep	26	2:00	0	S
+Rule	Winn	1942	only	-	Feb	 9	2:00	1:00	W # War
+Rule	Winn	1945	only	-	Aug	14	23:00u	1:00	P # Peace
+Rule	Winn	1945	only	-	Sep	lastSun	2:00	0	S
+Rule	Winn	1946	only	-	May	12	2:00	1:00	D
+Rule	Winn	1946	only	-	Oct	13	2:00	0	S
+Rule	Winn	1947	1949	-	Apr	lastSun	2:00	1:00	D
+Rule	Winn	1947	1949	-	Sep	lastSun	2:00	0	S
+Rule	Winn	1950	only	-	May	 1	2:00	1:00	D
+Rule	Winn	1950	only	-	Sep	30	2:00	0	S
+Rule	Winn	1951	1960	-	Apr	lastSun	2:00	1:00	D
+Rule	Winn	1951	1958	-	Sep	lastSun	2:00	0	S
+Rule	Winn	1959	only	-	Oct	lastSun	2:00	0	S
+Rule	Winn	1960	only	-	Sep	lastSun	2:00	0	S
+Rule	Winn	1963	only	-	Apr	lastSun	2:00	1:00	D
+Rule	Winn	1963	only	-	Sep	22	2:00	0	S
+Rule	Winn	1966	1986	-	Apr	lastSun	2:00s	1:00	D
+Rule	Winn	1966	2005	-	Oct	lastSun	2:00s	0	S
+Rule	Winn	1987	2005	-	Apr	Sun>=1	2:00s	1:00	D
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Winnipeg	-6:28:36 -	LMT	1887 Jul 16
+			-6:00	Winn	C%sT	2006
+			-6:00	Canada	C%sT
+
+
+# Saskatchewan
+
+# From Mark Brader (2003-07-26):
+# The first actual adoption of DST in Canada was at the municipal
+# level.  As the [Toronto] Star put it (1912-06-07), "While people
+# elsewhere have long been talking of legislation to save daylight,
+# the city of Moose Jaw [Saskatchewan] has acted on its own hook."
+# DST in Moose Jaw began on Saturday, 1912-06-01 (no time mentioned:
+# presumably late evening, as below), and would run until "the end of
+# the summer".  The discrepancy between municipal time and railroad
+# time was noted.
+
+# From Paul Eggert (2003-07-27):
+# Willett (1914-03) notes that DST "has been in operation ... in the
+# City of Moose Jaw, Saskatchewan, for one year."
+
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger say that since 1970 this region has mostly been as Regina.
+# Some western towns (e.g. Swift Current) switched from MST/MDT to CST in 1972.
+# Other western towns (e.g. Lloydminster) are like Edmonton.
+# Matthews and Vincent (1998) write that Denare Beach and Creighton
+# are like Winnipeg, in violation of Saskatchewan law.
+
+# From W. Jones (1992-11-06):
+# The. . .below is based on information I got from our law library, the
+# provincial archives, and the provincial Community Services department.
+# A precise history would require digging through newspaper archives, and
+# since you didn't say what you wanted, I didn't bother.
+#
+# Saskatchewan is split by a time zone meridian (105W) and over the years
+# the boundary became pretty ragged as communities near it reevaluated
+# their affiliations in one direction or the other.  In 1965 a provincial
+# referendum favoured legislating common time practices.
+#
+# On 15 April 1966 the Time Act (c. T-14, Revised Statutes of
+# Saskatchewan 1978) was proclaimed, and established that the eastern
+# part of Saskatchewan would use CST year round, that districts in
+# northwest Saskatchewan would by default follow CST but could opt to
+# follow Mountain Time rules (thus 1 hour difference in the winter and
+# zero in the summer), and that districts in southwest Saskatchewan would
+# by default follow MT but could opt to follow CST.
+#
+# It took a few years for the dust to settle (I know one story of a town
+# on one time zone having its school in another, such that a mom had to
+# serve her family lunch in two shifts), but presently it seems that only
+# a few towns on the border with Alberta (e.g. Lloydminster) follow MT
+# rules any more; all other districts appear to have used CST year round
+# since sometime in the 1960s.
+
+# From Chris Walton (2006-06-26):
+# The Saskatchewan time act which was last updated in 1996 is about 30 pages
+# long and rather painful to read.
+# http://www.qp.gov.sk.ca/documents/English/Statutes/Statutes/T14.pdf
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Regina	1918	only	-	Apr	14	2:00	1:00	D
+Rule	Regina	1918	only	-	Oct	27	2:00	0	S
+Rule	Regina	1930	1934	-	May	Sun>=1	0:00	1:00	D
+Rule	Regina	1930	1934	-	Oct	Sun>=1	0:00	0	S
+Rule	Regina	1937	1941	-	Apr	Sun>=8	0:00	1:00	D
+Rule	Regina	1937	only	-	Oct	Sun>=8	0:00	0	S
+Rule	Regina	1938	only	-	Oct	Sun>=1	0:00	0	S
+Rule	Regina	1939	1941	-	Oct	Sun>=8	0:00	0	S
+Rule	Regina	1942	only	-	Feb	 9	2:00	1:00	W # War
+Rule	Regina	1945	only	-	Aug	14	23:00u	1:00	P # Peace
+Rule	Regina	1945	only	-	Sep	lastSun	2:00	0	S
+Rule	Regina	1946	only	-	Apr	Sun>=8	2:00	1:00	D
+Rule	Regina	1946	only	-	Oct	Sun>=8	2:00	0	S
+Rule	Regina	1947	1957	-	Apr	lastSun	2:00	1:00	D
+Rule	Regina	1947	1957	-	Sep	lastSun	2:00	0	S
+Rule	Regina	1959	only	-	Apr	lastSun	2:00	1:00	D
+Rule	Regina	1959	only	-	Oct	lastSun	2:00	0	S
+#
+Rule	Swift	1957	only	-	Apr	lastSun	2:00	1:00	D
+Rule	Swift	1957	only	-	Oct	lastSun	2:00	0	S
+Rule	Swift	1959	1961	-	Apr	lastSun	2:00	1:00	D
+Rule	Swift	1959	only	-	Oct	lastSun	2:00	0	S
+Rule	Swift	1960	1961	-	Sep	lastSun	2:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Regina	-6:58:36 -	LMT	1905 Sep
+			-7:00	Regina	M%sT	1960 Apr lastSun 2:00
+			-6:00	-	CST
+Zone America/Swift_Current -7:11:20 -	LMT	1905 Sep
+			-7:00	Canada	M%sT	1946 Apr lastSun 2:00
+			-7:00	Regina	M%sT	1950
+			-7:00	Swift	M%sT	1972 Apr lastSun 2:00
+			-6:00	-	CST
+
+
+# Alberta
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Edm	1918	1919	-	Apr	Sun>=8	2:00	1:00	D
+Rule	Edm	1918	only	-	Oct	27	2:00	0	S
+Rule	Edm	1919	only	-	May	27	2:00	0	S
+Rule	Edm	1920	1923	-	Apr	lastSun	2:00	1:00	D
+Rule	Edm	1920	only	-	Oct	lastSun	2:00	0	S
+Rule	Edm	1921	1923	-	Sep	lastSun	2:00	0	S
+Rule	Edm	1942	only	-	Feb	 9	2:00	1:00	W # War
+Rule	Edm	1945	only	-	Aug	14	23:00u	1:00	P # Peace
+Rule	Edm	1945	only	-	Sep	lastSun	2:00	0	S
+Rule	Edm	1947	only	-	Apr	lastSun	2:00	1:00	D
+Rule	Edm	1947	only	-	Sep	lastSun	2:00	0	S
+Rule	Edm	1967	only	-	Apr	lastSun	2:00	1:00	D
+Rule	Edm	1967	only	-	Oct	lastSun	2:00	0	S
+Rule	Edm	1969	only	-	Apr	lastSun	2:00	1:00	D
+Rule	Edm	1969	only	-	Oct	lastSun	2:00	0	S
+Rule	Edm	1972	1986	-	Apr	lastSun	2:00	1:00	D
+Rule	Edm	1972	2006	-	Oct	lastSun	2:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Edmonton	-7:33:52 -	LMT	1906 Sep
+			-7:00	Edm	M%sT	1987
+			-7:00	Canada	M%sT
+
+
+# British Columbia
+
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger write that since 1970 most of this region has
+# been like Vancouver.
+# Dawson Creek uses MST.  Much of east BC is like Edmonton.
+# Matthews and Vincent (1998) write that Creston is like Dawson Creek.
+
+# It seems though that (re: Creston) is not entirely correct:
+
+# From Chris Walton (2011-12-01):
+# There are two areas within the Canadian province of British Columbia
+# that do not currently observe daylight saving:
+# a) The Creston Valley (includes the town of Creston and surrounding area)
+# b) The eastern half of the Peace River Regional District
+# (includes the cities of Dawson Creek and Fort St. John)
+
+# Earlier this year I stumbled across a detailed article about the time
+# keeping history of Creston; it was written by Tammy Hardwick who is the
+# manager of the Creston & District Museum. The article was written in May 2009.
+# 
+# http://www.ilovecreston.com/?p=articles&t=spec&ar=260
+# 
+# According to the article, Creston has not changed its clocks since June 1918.
+# i.e. Creston has been stuck on UTC-7 for 93 years.
+# Dawson Creek, on the other hand, changed its clocks as recently as April 1972.
+
+# Unfortunately the exact date for the time change in June 1918 remains
+# unknown and will be difficult to ascertain.  I e-mailed Tammy a few months
+# ago to ask if Sunday June 2 was a reasonable guess.  She said it was just
+# as plausible as any other date (in June).  She also said that after writing the
+# article she had discovered another time change in 1916; this is the subject
+# of another article which she wrote in October 2010.
+# 
+# http://www.creston.museum.bc.ca/index.php?module=comments&uop=view_comment&cm+id=56
+# 
+
+# Here is a summary of the three clock change events in Creston's history:
+# 1. 1884 or 1885: adoption of Mountain Standard Time (GMT-7)
+# Exact date unknown
+# 2. Oct 1916: switch to Pacific Standard Time (GMT-8)
+# Exact date in October unknown;  Sunday October 1 is a reasonable guess.
+# 3. June 1918: switch to Pacific Daylight Time (GMT-7)
+# Exact date in June unknown; Sunday June 2 is a reasonable guess.
+# note#1:
+# On Oct 27/1918 when daylight saving ended in the rest of Canada,
+# Creston did not change its clocks.
+# note#2:
+# During WWII when the Federal Government legislated a mandatory clock change,
+# Creston did not oblige.
+# note#3:
+# There is no guarantee that Creston will remain on Mountain Standard Time
+# (UTC-7) forever.
+# The subject was debated at least once this year by the town Council.
+# 
+# http://www.bclocalnews.com/kootenay_rockies/crestonvalleyadvance/news/116760809.html
+# 
+
+# During a period WWII, summer time (Daylight saying) was mandatory in Canada.
+# In Creston, that was handled by shifting the area to PST (-8:00) then applying
+# summer time to cause the offset to be -7:00, the same as it had been before
+# the change.  It can be argued that the timezone abbreviation during this
+# period should be PDT rather than MST, but that doesn't seem important enough
+# (to anyone) to further complicate the rules.
+
+# The transition dates (and times) are guesses.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Vanc	1918	only	-	Apr	14	2:00	1:00	D
+Rule	Vanc	1918	only	-	Oct	27	2:00	0	S
+Rule	Vanc	1942	only	-	Feb	 9	2:00	1:00	W # War
+Rule	Vanc	1945	only	-	Aug	14	23:00u	1:00	P # Peace
+Rule	Vanc	1945	only	-	Sep	30	2:00	0	S
+Rule	Vanc	1946	1986	-	Apr	lastSun	2:00	1:00	D
+Rule	Vanc	1946	only	-	Oct	13	2:00	0	S
+Rule	Vanc	1947	1961	-	Sep	lastSun	2:00	0	S
+Rule	Vanc	1962	2006	-	Oct	lastSun	2:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Vancouver	-8:12:28 -	LMT	1884
+			-8:00	Vanc	P%sT	1987
+			-8:00	Canada	P%sT
+Zone America/Dawson_Creek -8:00:56 -	LMT	1884
+			-8:00	Canada	P%sT	1947
+			-8:00	Vanc	P%sT	1972 Aug 30 2:00
+			-7:00	-	MST
+Zone America/Creston	-7:46:04 -	LMT	1884
+			-7:00	-	MST	1916 Oct 1
+			-8:00	-	PST	1918 Jun 2
+			-7:00	-	MST
+
+# Northwest Territories, Nunavut, Yukon
+
+# From Paul Eggert (2006-03-22):
+# Dawson switched to PST in 1973.  Inuvik switched to MST in 1979.
+# Mathew Englander (1996-10-07) gives the following refs:
+#	* 1967. Paragraph 28(34)(g) of the Interpretation Act, S.C. 1967-68,
+#	c. 7 defines Yukon standard time as UTC-9.  This is still valid;
+#	see Interpretation Act, R.S.C. 1985, c. I-21, s. 35(1).
+#	* C.O. 1973/214 switched Yukon to PST on 1973-10-28 00:00.
+#	* O.I.C. 1980/02 established DST.
+#	* O.I.C. 1987/056 changed DST to Apr firstSun 2:00 to Oct lastSun 2:00.
+# Shanks & Pottenger say Yukon's 1973-10-28 switch was at 2:00; go
+# with Englander.
+# From Chris Walton (2006-06-26):
+# Here is a link to the old daylight saving portion of the interpretation
+# act which was last updated in 1987:
+# http://www.gov.yk.ca/legislation/regs/oic1987_056.pdf
+
+# From Rives McDow (1999-09-04):
+# Nunavut ... moved ... to incorporate the whole territory into one time zone.
+# 
+# Nunavut moves to single time zone Oct. 31
+# 
+#
+# From Antoine Leca (1999-09-06):
+# We then need to create a new timezone for the Kitikmeot region of Nunavut
+# to differentiate it from the Yellowknife region.
+
+# From Paul Eggert (1999-09-20):
+# 
+# Basic Facts: The New Territory
+#  (1999) reports that Pangnirtung operates on eastern time,
+# and that Coral Harbour does not observe DST.  We don't know when
+# Pangnirtung switched to eastern time; we'll guess 1995.
+
+# From Rives McDow (1999-11-08):
+# On October 31, when the rest of Nunavut went to Central time,
+# Pangnirtung wobbled.  Here is the result of their wobble:
+#
+# The following businesses and organizations in Pangnirtung use Central Time:
+#
+#	First Air, Power Corp, Nunavut Construction, Health Center, RCMP,
+#	Eastern Arctic National Parks, A & D Specialist
+#
+# The following businesses and organizations in Pangnirtung use Eastern Time:
+#
+#	Hamlet office, All other businesses, Both schools, Airport operator
+#
+# This has made for an interesting situation there, which warranted the news.
+# No one there that I spoke with seems concerned, or has plans to
+# change the local methods of keeping time, as it evidently does not
+# really interfere with any activities or make things difficult locally.
+# They plan to celebrate New Year's turn-over twice, one hour apart,
+# so it appears that the situation will last at least that long.
+# The Nunavut Intergovernmental Affairs hopes that they will "come to
+# their senses", but the locals evidently don't see any problem with
+# the current state of affairs.
+
+# From Michaela Rodrigue, writing in the
+# 
+# Nunatsiaq News (1999-11-19):
+# Clyde River, Pangnirtung and Sanikiluaq now operate with two time zones,
+# central - or Nunavut time - for government offices, and eastern time
+# for municipal offices and schools....  Igloolik [was similar but then]
+# made the switch to central time on Saturday, Nov. 6.
+
+# From Paul Eggert (2000-10-02):
+# Matthews and Vincent (1998) say the following, but we lack histories
+# for these potential new Zones.
+#
+# The Canadian Forces station at Alert uses Eastern Time while the
+# handful of residents at the Eureka weather station [in the Central
+# zone] skip daylight savings.  Baffin Island, which is crossed by the
+# Central, Eastern and Atlantic Time zones only uses Eastern Time.
+# Gjoa Haven, Taloyoak and Pelly Bay all use Mountain instead of
+# Central Time and Southampton Island [in the Central zone] is not
+# required to use daylight savings.
+
+# From
+# 
+# Nunavut now has two time zones
+#  (2000-11-10):
+# The Nunavut government would allow its employees in Kugluktuk and
+# Cambridge Bay to operate on central time year-round, putting them
+# one hour behind the rest of Nunavut for six months during the winter.
+# At the end of October the two communities had rebelled against
+# Nunavut's unified time zone, refusing to shift to eastern time with
+# the rest of the territory for the winter.  Cambridge Bay remained on
+# central time, while Kugluktuk, even farther west, reverted to
+# mountain time, which they had used before the advent of Nunavut's
+# unified time zone in 1999.
+#
+# From Rives McDow (2001-01-20), quoting the Nunavut government:
+# The preceding decision came into effect at midnight, Saturday Nov 4, 2000.
+
+# From Paul Eggert (2000-12-04):
+# Let's just keep track of the official times for now.
+
+# From Rives McDow (2001-03-07):
+# The premier of Nunavut has issued a ministerial statement advising
+# that effective 2001-04-01, the territory of Nunavut will revert
+# back to three time zones (mountain, central, and eastern).  Of the
+# cities in Nunavut, Coral Harbor is the only one that I know of that
+# has said it will not observe dst, staying on EST year round.  I'm
+# checking for more info, and will get back to you if I come up with
+# more.
+# [Also see  (2001-03-09).]
+
+# From Gwillim Law (2005-05-21):
+# According to maps at
+# http://inms-ienm.nrc-cnrc.gc.ca/images/time_services/TZ01SWE.jpg
+# http://inms-ienm.nrc-cnrc.gc.ca/images/time_services/TZ01SSE.jpg
+# (both dated 2003), and
+# http://www.canadiangeographic.ca/Magazine/SO98/geomap.asp
+# (from a 1998 Canadian Geographic article), the de facto and de jure time
+# for Southampton Island (at the north end of Hudson Bay) is UTC-5 all year
+# round.  Using Google, it's easy to find other websites that confirm this.
+# I wasn't able to find how far back this time regimen goes, but since it
+# predates the creation of Nunavut, it probably goes back many years....
+# The Inuktitut name of Coral Harbour is Sallit, but it's rarely used.
+#
+# From Paul Eggert (2005-07-26):
+# For lack of better information, assume that Southampton Island observed
+# daylight saving only during wartime.
+
+# From Chris Walton (2007-03-01):
+# ... the community of Resolute (located on Cornwallis Island in
+# Nunavut) moved from Central Time to Eastern Time last November.
+# Basically the community did not change its clocks at the end of
+# daylight saving....
+# http://www.nnsl.com/frames/newspapers/2006-11/nov13_06none.html
+
+# From Chris Walton (2011-03-21):
+# Back in 2007 I initiated the creation of a new "zone file" for Resolute
+# Bay. Resolute Bay is a small community located about 900km north of
+# the Arctic Circle. The zone file was required because Resolute Bay had
+# decided to use UTC-5 instead of UTC-6 for the winter of 2006-2007.
+#
+# According to new information which I received last week, Resolute Bay
+# went back to using UTC-6 in the winter of 2007-2008...
+#
+# On March 11/2007 most of Canada went onto daylight saving. On March
+# 14/2007 I phoned the Resolute Bay hamlet office to do a "time check." I
+# talked to somebody that was both knowledgeable and helpful. I was able
+# to confirm that Resolute Bay was still operating on UTC-5. It was
+# explained to me that Resolute Bay had been on the Eastern Time zone
+# (EST) in the winter, and was now back on the Central Time zone (CDT).
+# i.e. the time zone had changed twice in the last year but the clocks
+# had not moved. The residents had to know which time zone they were in
+# so they could follow the correct TV schedule...
+#
+# On Nov 02/2008 most of Canada went onto standard time. On Nov 03/2008 I
+# phoned the Resolute Bay hamlet office...[D]ue to the challenging nature
+# of the phone call, I decided to seek out an alternate source of
+# information. I found an e-mail address for somebody by the name of
+# Stephanie Adams whose job was listed as "Inns North Support Officer for
+# Arctic Co-operatives." I was under the impression that Stephanie lived
+# and worked in Resolute Bay...
+#
+# On March 14/2011 I phoned the hamlet office again. I was told that
+# Resolute Bay had been using Central Standard Time over the winter of
+# 2010-2011 and that the clocks had therefore been moved one hour ahead
+# on March 13/2011. The person I talked to was aware that Resolute Bay
+# had previously experimented with Eastern Standard Time but he could not
+# tell me when the practice had stopped.
+#
+# On March 17/2011 I searched the Web to find an e-mail address of
+# somebody that might be able to tell me exactly when Resolute Bay went
+# off Eastern Standard Time. I stumbled on the name "Aziz Kheraj." Aziz
+# used to be the mayor of Resolute Bay and he apparently owns half the
+# businesses including "South Camp Inn." This website has some info on
+# Aziz:
+# 
+# http://www.uphere.ca/node/493
+# 
+#
+# I sent Aziz an e-mail asking when Resolute Bay had stopped using
+# Eastern Standard Time.
+#
+# Aziz responded quickly with this: "hi, The time was not changed for the
+# 1 year only, the following year, the community went back to the old way
+# of "spring ahead-fall behind" currently we are zulu plus 5 hrs and in
+# the winter Zulu plus 6 hrs"
+#
+# This of course conflicted with everything I had ascertained in November 2008.
+#
+# I sent Aziz a copy of my 2008 e-mail exchange with Stephanie. Aziz
+# responded with this: "Hi, Stephanie lives in Winnipeg. I live here, You
+# may want to check with the weather office in Resolute Bay or do a
+# search on the weather through Env. Canada. web site"
+#
+# If I had realized the Stephanie did not live in Resolute Bay I would
+# never have contacted her.  I now believe that all the information I
+# obtained in November 2008 should be ignored...
+# I apologize for reporting incorrect information in 2008.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	NT_YK	1918	only	-	Apr	14	2:00	1:00	D
+Rule	NT_YK	1918	only	-	Oct	27	2:00	0	S
+Rule	NT_YK	1919	only	-	May	25	2:00	1:00	D
+Rule	NT_YK	1919	only	-	Nov	 1	0:00	0	S
+Rule	NT_YK	1942	only	-	Feb	 9	2:00	1:00	W # War
+Rule	NT_YK	1945	only	-	Aug	14	23:00u	1:00	P # Peace
+Rule	NT_YK	1945	only	-	Sep	30	2:00	0	S
+Rule	NT_YK	1965	only	-	Apr	lastSun	0:00	2:00	DD
+Rule	NT_YK	1965	only	-	Oct	lastSun	2:00	0	S
+Rule	NT_YK	1980	1986	-	Apr	lastSun	2:00	1:00	D
+Rule	NT_YK	1980	2006	-	Oct	lastSun	2:00	0	S
+Rule	NT_YK	1987	2006	-	Apr	Sun>=1	2:00	1:00	D
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+# aka Panniqtuuq
+Zone America/Pangnirtung 0	-	zzz	1921 # trading post est.
+			-4:00	NT_YK	A%sT	1995 Apr Sun>=1 2:00
+			-5:00	Canada	E%sT	1999 Oct 31 2:00
+			-6:00	Canada	C%sT	2000 Oct 29 2:00
+			-5:00	Canada	E%sT
+# formerly Frobisher Bay
+Zone America/Iqaluit	0	-	zzz	1942 Aug # Frobisher Bay est.
+			-5:00	NT_YK	E%sT	1999 Oct 31 2:00
+			-6:00	Canada	C%sT	2000 Oct 29 2:00
+			-5:00	Canada	E%sT
+# aka Qausuittuq
+Zone America/Resolute	0	-	zzz	1947 Aug 31 # Resolute founded
+			-6:00	NT_YK	C%sT	2000 Oct 29 2:00
+			-5:00	-	EST	2001 Apr  1 3:00
+			-6:00	Canada	C%sT	2006 Oct 29 2:00
+			-5:00	-	EST	2007 Mar 11 3:00
+			-6:00	Canada	C%sT
+# aka Kangiqiniq
+Zone America/Rankin_Inlet 0	-	zzz	1957 # Rankin Inlet founded
+			-6:00	NT_YK	C%sT	2000 Oct 29 2:00
+			-5:00	-	EST	2001 Apr  1 3:00
+			-6:00	Canada	C%sT
+# aka Iqaluktuuttiaq
+Zone America/Cambridge_Bay 0	-	zzz	1920 # trading post est.?
+			-7:00	NT_YK	M%sT	1999 Oct 31 2:00
+			-6:00	Canada	C%sT	2000 Oct 29 2:00
+			-5:00	-	EST	2000 Nov  5 0:00
+			-6:00	-	CST	2001 Apr  1 3:00
+			-7:00	Canada	M%sT
+Zone America/Yellowknife 0	-	zzz	1935 # Yellowknife founded?
+			-7:00	NT_YK	M%sT	1980
+			-7:00	Canada	M%sT
+Zone America/Inuvik	0	-	zzz	1953 # Inuvik founded
+			-8:00	NT_YK	P%sT	1979 Apr lastSun 2:00
+			-7:00	NT_YK	M%sT	1980
+			-7:00	Canada	M%sT
+Zone America/Whitehorse	-9:00:12 -	LMT	1900 Aug 20
+			-9:00	NT_YK	Y%sT	1966 Jul 1 2:00
+			-8:00	NT_YK	P%sT	1980
+			-8:00	Canada	P%sT
+Zone America/Dawson	-9:17:40 -	LMT	1900 Aug 20
+			-9:00	NT_YK	Y%sT	1973 Oct 28 0:00
+			-8:00	NT_YK	P%sT	1980
+			-8:00	Canada	P%sT
+
+
+###############################################################################
+
+# Mexico
+
+# From Paul Eggert (2001-03-05):
+# The Investigation and Analysis Service of the
+# Mexican Library of Congress (MLoC) has published a
+# 
+# history of Mexican local time (in Spanish)
+# .
+#
+# Here are the discrepancies between Shanks & Pottenger (S&P) and the MLoC.
+# (In all cases we go with the MLoC.)
+# S&P report that Baja was at -8:00 in 1922/1923.
+# S&P say the 1930 transition in Baja was 1930-11-16.
+# S&P report no DST during summer 1931.
+# S&P report a transition at 1932-03-30 23:00, not 1932-04-01.
+
+# From Gwillim Law (2001-02-20):
+# There are some other discrepancies between the Decrees page and the
+# tz database.  I think they can best be explained by supposing that
+# the researchers who prepared the Decrees page failed to find some of
+# the relevant documents.
+
+# From Alan Perry (1996-02-15):
+# A guy from our Mexico subsidiary finally found the Presidential Decree
+# outlining the timezone changes in Mexico.
+#
+# ------------- Begin Forwarded Message -------------
+#
+# I finally got my hands on the Official Presidential Decree that sets up the
+# rules for the DST changes. The rules are:
+#
+# 1. The country is divided in 3 timezones:
+#    - Baja California Norte (the Mexico/BajaNorte TZ)
+#    - Baja California Sur, Nayarit, Sinaloa and Sonora (the Mexico/BajaSur TZ)
+#    - The rest of the country (the Mexico/General TZ)
+#
+# 2. From the first Sunday in April at 2:00 AM to the last Sunday in October
+#    at 2:00 AM, the times in each zone are as follows:
+#    BajaNorte: GMT+7
+#    BajaSur:   GMT+6
+#    General:   GMT+5
+#
+# 3. The rest of the year, the times are as follows:
+#    BajaNorte: GMT+8
+#    BajaSur:   GMT+7
+#    General:   GMT+6
+#
+# The Decree was published in Mexico's Official Newspaper on January 4th.
+#
+# -------------- End Forwarded Message --------------
+# From Paul Eggert (1996-06-12):
+# For an English translation of the decree, see
+# 
+# ``Diario Oficial: Time Zone Changeover'' (1996-01-04).
+# 
+
+# From Rives McDow (1998-10-08):
+# The State of Quintana Roo has reverted back to central STD and DST times
+# (i.e. UTC -0600 and -0500 as of 1998-08-02).
+
+# From Rives McDow (2000-01-10):
+# Effective April 4, 1999 at 2:00 AM local time, Sonora changed to the time
+# zone 5 hours from the International Date Line, and will not observe daylight
+# savings time so as to stay on the same time zone as the southern part of
+# Arizona year round.
+
+# From Jesper Norgaard, translating
+#  (2001-01-17):
+# In Oaxaca, the 55.000 teachers from the Section 22 of the National
+# Syndicate of Education Workers, refuse to apply daylight saving each
+# year, so that the more than 10,000 schools work at normal hour the
+# whole year.
+
+# From Gwillim Law (2001-01-19):
+#  ... says
+# (translated):...
+# January 17, 2000 - The Energy Secretary, Ernesto Martens, announced
+# that Summer Time will be reduced from seven to five months, starting
+# this year....
+# 
+# [translated], says "summer time will ... take effect on the first Sunday
+# in May, and end on the last Sunday of September.
+
+# From Arthur David Olson (2001-01-25):
+# The 2001-01-24 traditional Washington Post contained the page one
+# story "Timely Issue Divides Mexicans."...
+# http://www.washingtonpost.com/wp-dyn/articles/A37383-2001Jan23.html
+# ... Mexico City Mayor Lopez Obrador "...is threatening to keep
+# Mexico City and its 20 million residents on a different time than
+# the rest of the country..." In particular, Lopez Obrador would abolish
+# observation of Daylight Saving Time.
+
+# 
+# Official statute published by the Energy Department
+#  (2001-02-01) shows Baja and Chihauhua as still using US DST rules,
+# and Sonora with no DST.  This was reported by Jesper Norgaard (2001-02-03).
+
+# From Paul Eggert (2001-03-03):
+#
+# 
+# James F. Smith writes in today's LA Times
+# 
+# * Sonora will continue to observe standard time.
+# * Last week Mexico City's mayor Andres Manuel Lopez Obrador decreed that
+#   the Federal District will not adopt DST.
+# * 4 of 16 district leaders announced they'll ignore the decree.
+# * The decree does not affect federal-controlled facilities including
+#   the airport, banks, hospitals, and schools.
+#
+# For now we'll assume that the Federal District will bow to federal rules.
+
+# From Jesper Norgaard (2001-04-01):
+# I found some references to the Mexican application of daylight
+# saving, which modifies what I had already sent you, stating earlier
+# that a number of northern Mexican states would go on daylight
+# saving. The modification reverts this to only cover Baja California
+# (Norte), while all other states (except Sonora, who has no daylight
+# saving all year) will follow the original decree of president
+# Vicente Fox, starting daylight saving May 6, 2001 and ending
+# September 30, 2001.
+# References: "Diario de Monterrey" 
+# Palabra  (2001-03-31)
+
+# From Reuters (2001-09-04):
+# Mexico's Supreme Court on Tuesday declared that daylight savings was
+# unconstitutional in Mexico City, creating the possibility the
+# capital will be in a different time zone from the rest of the nation
+# next year....  The Supreme Court's ruling takes effect at 2:00
+# a.m. (0800 GMT) on Sept. 30, when Mexico is scheduled to revert to
+# standard time. "This is so residents of the Federal District are not
+# subject to unexpected time changes," a statement from the court said.
+
+# From Jesper Norgaard Welen (2002-03-12):
+# ... consulting my local grocery store(!) and my coworkers, they all insisted
+# that a new decision had been made to reinstate US style DST in Mexico....
+# http://www.conae.gob.mx/ahorro/horaver2001_m1_2002.html (2002-02-20)
+# confirms this.  Sonora as usual is the only state where DST is not applied.
+
+# From Steffen Thorsen (2009-12-28):
+#
+# Steffen Thorsen wrote:
+# > Mexico's House of Representatives has approved a proposal for northern
+# > Mexico's border cities to share the same daylight saving schedule as
+# > the United States.
+# Now this has passed both the Congress and the Senate, so starting from
+# 2010, some border regions will be the same:
+# 
+# http://www.signonsandiego.com/news/2009/dec/28/clocks-will-match-both-sides-border/
+# 
+# 
+# http://www.elmananarey.com/diario/noticia/nacional/noticias/empatan_horario_de_frontera_con_eu/621939
+# 
+# (Spanish)
+#
+# Could not find the new law text, but the proposed law text changes are here:
+# 
+# http://gaceta.diputados.gob.mx/Gaceta/61/2009/dic/20091210-V.pdf
+# 
+# (Gaceta Parlamentaria)
+#
+# There is also a list of the votes here:
+# 
+# http://gaceta.diputados.gob.mx/Gaceta/61/2009/dic/V2-101209.html
+# 
+#
+# Our page:
+# 
+# http://www.timeanddate.com/news/time/north-mexico-dst-change.html
+# 
+
+# From Arthur David Olson (2010-01-20):
+# The page
+# 
+# http://dof.gob.mx/nota_detalle.php?codigo=5127480&fecha=06/01/2010
+# 
+# includes this text:
+# En los municipios fronterizos de Tijuana y Mexicali en Baja California;
+# Juárez y Ojinaga en Chihuahua; Acuña y Piedras Negras en Coahuila;
+# Anáhuac en Nuevo León; y Nuevo Laredo, Reynosa y Matamoros en
+# Tamaulipas, la aplicación de este horario estacional surtirá efecto
+# desde las dos horas del segundo domingo de marzo y concluirá a las dos
+# horas del primer domingo de noviembre.
+# En los municipios fronterizos que se encuentren ubicados en la franja
+# fronteriza norte en el territorio comprendido entre la línea
+# internacional y la línea paralela ubicada a una distancia de veinte
+# kilómetros, así como la Ciudad de Ensenada, Baja California, hacia el
+# interior del país, la aplicación de este horario estacional surtirá
+# efecto desde las dos horas del segundo domingo de marzo y concluirá a
+# las dos horas del primer domingo de noviembre.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Mexico	1939	only	-	Feb	5	0:00	1:00	D
+Rule	Mexico	1939	only	-	Jun	25	0:00	0	S
+Rule	Mexico	1940	only	-	Dec	9	0:00	1:00	D
+Rule	Mexico	1941	only	-	Apr	1	0:00	0	S
+Rule	Mexico	1943	only	-	Dec	16	0:00	1:00	W # War
+Rule	Mexico	1944	only	-	May	1	0:00	0	S
+Rule	Mexico	1950	only	-	Feb	12	0:00	1:00	D
+Rule	Mexico	1950	only	-	Jul	30	0:00	0	S
+Rule	Mexico	1996	2000	-	Apr	Sun>=1	2:00	1:00	D
+Rule	Mexico	1996	2000	-	Oct	lastSun	2:00	0	S
+Rule	Mexico	2001	only	-	May	Sun>=1	2:00	1:00	D
+Rule	Mexico	2001	only	-	Sep	lastSun	2:00	0	S
+Rule	Mexico	2002	max	-	Apr	Sun>=1	2:00	1:00	D
+Rule	Mexico	2002	max	-	Oct	lastSun	2:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+# Quintana Roo
+Zone America/Cancun	-5:47:04 -	LMT	1922 Jan  1  0:12:56
+			-6:00	-	CST	1981 Dec 23
+			-5:00	Mexico	E%sT	1998 Aug  2  2:00
+			-6:00	Mexico	C%sT
+# Campeche, Yucatan
+Zone America/Merida	-5:58:28 -	LMT	1922 Jan  1  0:01:32
+			-6:00	-	CST	1981 Dec 23
+			-5:00	-	EST	1982 Dec  2
+			-6:00	Mexico	C%sT
+# Coahuila, Durango, Nuevo Leon, Tamaulipas (near US border)
+Zone America/Matamoros	-6:40:00 -	LMT	1921 Dec 31 23:20:00
+			-6:00	-	CST	1988
+			-6:00	US	C%sT	1989
+			-6:00	Mexico	C%sT	2010
+			-6:00	US	C%sT
+# Coahuila, Durango, Nuevo Leon, Tamaulipas (away from US border)
+Zone America/Monterrey	-6:41:16 -	LMT	1921 Dec 31 23:18:44
+			-6:00	-	CST	1988
+			-6:00	US	C%sT	1989
+			-6:00	Mexico	C%sT
+# Central Mexico
+Zone America/Mexico_City -6:36:36 -	LMT	1922 Jan  1 0:23:24
+			-7:00	-	MST	1927 Jun 10 23:00
+			-6:00	-	CST	1930 Nov 15
+			-7:00	-	MST	1931 May  1 23:00
+			-6:00	-	CST	1931 Oct
+			-7:00	-	MST	1932 Apr  1
+			-6:00	Mexico	C%sT	2001 Sep 30 02:00
+			-6:00	-	CST	2002 Feb 20
+			-6:00	Mexico	C%sT
+# Chihuahua (near US border)
+Zone America/Ojinaga	-6:57:40 -	LMT	1922 Jan 1 0:02:20
+			-7:00	-	MST	1927 Jun 10 23:00
+			-6:00	-	CST	1930 Nov 15
+			-7:00	-	MST	1931 May  1 23:00
+			-6:00	-	CST	1931 Oct
+			-7:00	-	MST	1932 Apr  1
+			-6:00	-	CST	1996
+			-6:00	Mexico	C%sT	1998
+			-6:00	-	CST	1998 Apr Sun>=1 3:00
+			-7:00	Mexico	M%sT	2010
+			-7:00	US	M%sT
+# Chihuahua (away from US border)
+Zone America/Chihuahua	-7:04:20 -	LMT	1921 Dec 31 23:55:40
+			-7:00	-	MST	1927 Jun 10 23:00
+			-6:00	-	CST	1930 Nov 15
+			-7:00	-	MST	1931 May  1 23:00
+			-6:00	-	CST	1931 Oct
+			-7:00	-	MST	1932 Apr  1
+			-6:00	-	CST	1996
+			-6:00	Mexico	C%sT	1998
+			-6:00	-	CST	1998 Apr Sun>=1 3:00
+			-7:00	Mexico	M%sT
+# Sonora
+Zone America/Hermosillo	-7:23:52 -	LMT	1921 Dec 31 23:36:08
+			-7:00	-	MST	1927 Jun 10 23:00
+			-6:00	-	CST	1930 Nov 15
+			-7:00	-	MST	1931 May  1 23:00
+			-6:00	-	CST	1931 Oct
+			-7:00	-	MST	1932 Apr  1
+			-6:00	-	CST	1942 Apr 24
+			-7:00	-	MST	1949 Jan 14
+			-8:00	-	PST	1970
+			-7:00	Mexico	M%sT	1999
+			-7:00	-	MST
+
+# From Alexander Krivenyshev (2010-04-21):
+# According to news, Bahía de Banderas (Mexican state of Nayarit)
+# changed time zone UTC-7 to new time zone UTC-6 on April 4, 2010 (to
+# share the same time zone as nearby city Puerto Vallarta, Jalisco).
+#
+# (Spanish)
+# Bahía de Banderas homologa su horario al del centro del
+# país, a partir de este domingo
+# 
+# http://www.nayarit.gob.mx/notes.asp?id=20748
+# 
+#
+# Bahía de Banderas homologa su horario con el del Centro del
+# País
+# 
+# http://www.bahiadebanderas.gob.mx/principal/index.php?option=com_content&view=article&id=261:bahia-de-banderas-homologa-su-horario-con-el-del-centro-del-pais&catid=42:comunicacion-social&Itemid=50"
+# 
+#
+# (English)
+# Puerto Vallarta and Bahía de Banderas: One Time Zone
+# 
+# http://virtualvallarta.com/puertovallarta/puertovallarta/localnews/2009-12-03-Puerto-Vallarta-and-Bahia-de-Banderas-One-Time-Zone.shtml
+# 
+#
+# or
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_mexico08.html
+# 
+#
+# "Mexico's Senate approved the amendments to the Mexican Schedule System that
+# will allow Bahía de Banderas and Puerto Vallarta to share the same time
+# zone ..."
+# Baja California Sur, Nayarit, Sinaloa
+
+# From Arthur David Olson (2010-05-01):
+# Use "Bahia_Banderas" to keep the name to fourteen characters.
+
+Zone America/Mazatlan	-7:05:40 -	LMT	1921 Dec 31 23:54:20
+			-7:00	-	MST	1927 Jun 10 23:00
+			-6:00	-	CST	1930 Nov 15
+			-7:00	-	MST	1931 May  1 23:00
+			-6:00	-	CST	1931 Oct
+			-7:00	-	MST	1932 Apr  1
+			-6:00	-	CST	1942 Apr 24
+			-7:00	-	MST	1949 Jan 14
+			-8:00	-	PST	1970
+			-7:00	Mexico	M%sT
+
+Zone America/Bahia_Banderas	-7:01:00 -	LMT	1921 Dec 31 23:59:00
+			-7:00	-	MST	1927 Jun 10 23:00
+			-6:00	-	CST	1930 Nov 15
+			-7:00	-	MST	1931 May  1 23:00
+			-6:00	-	CST	1931 Oct
+			-7:00	-	MST	1932 Apr  1
+			-6:00	-	CST	1942 Apr 24
+			-7:00	-	MST	1949 Jan 14
+			-8:00	-	PST	1970
+			-7:00	Mexico	M%sT	2010 Apr 4 2:00
+			-6:00	Mexico	C%sT
+
+# Baja California (near US border)
+Zone America/Tijuana	-7:48:04 -	LMT	1922 Jan  1  0:11:56
+			-7:00	-	MST	1924
+			-8:00	-	PST	1927 Jun 10 23:00
+			-7:00	-	MST	1930 Nov 15
+			-8:00	-	PST	1931 Apr  1
+			-8:00	1:00	PDT	1931 Sep 30
+			-8:00	-	PST	1942 Apr 24
+			-8:00	1:00	PWT	1945 Aug 14 23:00u
+			-8:00	1:00	PPT	1945 Nov 12 # Peace
+			-8:00	-	PST	1948 Apr  5
+			-8:00	1:00	PDT	1949 Jan 14
+			-8:00	-	PST	1954
+			-8:00	CA	P%sT	1961
+			-8:00	-	PST	1976
+			-8:00	US	P%sT	1996
+			-8:00	Mexico	P%sT	2001
+			-8:00	US	P%sT	2002 Feb 20
+			-8:00	Mexico	P%sT	2010
+			-8:00	US	P%sT
+# Baja California (away from US border)
+Zone America/Santa_Isabel	-7:39:28 -	LMT	1922 Jan  1  0:20:32
+			-7:00	-	MST	1924
+			-8:00	-	PST	1927 Jun 10 23:00
+			-7:00	-	MST	1930 Nov 15
+			-8:00	-	PST	1931 Apr  1
+			-8:00	1:00	PDT	1931 Sep 30
+			-8:00	-	PST	1942 Apr 24
+			-8:00	1:00	PWT	1945 Aug 14 23:00u
+			-8:00	1:00	PPT	1945 Nov 12 # Peace
+			-8:00	-	PST	1948 Apr  5
+			-8:00	1:00	PDT	1949 Jan 14
+			-8:00	-	PST	1954
+			-8:00	CA	P%sT	1961
+			-8:00	-	PST	1976
+			-8:00	US	P%sT	1996
+			-8:00	Mexico	P%sT	2001
+			-8:00	US	P%sT	2002 Feb 20
+			-8:00	Mexico	P%sT
+# From Paul Eggert (2006-03-22):
+# Formerly there was an America/Ensenada zone, which differed from
+# America/Tijuana only in that it did not observe DST from 1976
+# through 1995.  This was as per Shanks (1999).  But Shanks & Pottenger say
+# Ensenada did not observe DST from 1948 through 1975.  Guy Harris reports
+# that the 1987 OAG says "Only Ensenada, Mexicale, San Felipe and
+# Tijuana observe DST," which agrees with Shanks & Pottenger but implies that
+# DST-observance was a town-by-town matter back then.  This concerns
+# data after 1970 so most likely there should be at least one Zone
+# other than America/Tijuana for Baja, but it's not clear yet what its
+# name or contents should be.
+#
+# Revillagigedo Is
+# no information
+
+###############################################################################
+
+# Anguilla
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Anguilla	-4:12:16 -	LMT	1912 Mar 2
+			-4:00	-	AST
+
+# Antigua and Barbuda
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	America/Antigua	-4:07:12 -	LMT	1912 Mar 2
+			-5:00	-	EST	1951
+			-4:00	-	AST
+
+# Bahamas
+#
+# From Sue Williams (2006-12-07):
+# The Bahamas announced about a month ago that they plan to change their DST
+# rules to sync with the U.S. starting in 2007....
+# http://www.jonesbahamas.com/?c=45&a=10412
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Bahamas	1964	1975	-	Oct	lastSun	2:00	0	S
+Rule	Bahamas	1964	1975	-	Apr	lastSun	2:00	1:00	D
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	America/Nassau	-5:09:24 -	LMT	1912 Mar 2
+			-5:00	Bahamas	E%sT	1976
+			-5:00	US	E%sT
+
+# Barbados
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Barb	1977	only	-	Jun	12	2:00	1:00	D
+Rule	Barb	1977	1978	-	Oct	Sun>=1	2:00	0	S
+Rule	Barb	1978	1980	-	Apr	Sun>=15	2:00	1:00	D
+Rule	Barb	1979	only	-	Sep	30	2:00	0	S
+Rule	Barb	1980	only	-	Sep	25	2:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Barbados	-3:58:28 -	LMT	1924		# Bridgetown
+			-3:58:28 -	BMT	1932	  # Bridgetown Mean Time
+			-4:00	Barb	A%sT
+
+# Belize
+# Whitman entirely disagrees with Shanks; go with Shanks & Pottenger.
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Belize	1918	1942	-	Oct	Sun>=2	0:00	0:30	HD
+Rule	Belize	1919	1943	-	Feb	Sun>=9	0:00	0	S
+Rule	Belize	1973	only	-	Dec	 5	0:00	1:00	D
+Rule	Belize	1974	only	-	Feb	 9	0:00	0	S
+Rule	Belize	1982	only	-	Dec	18	0:00	1:00	D
+Rule	Belize	1983	only	-	Feb	12	0:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	America/Belize	-5:52:48 -	LMT	1912 Apr
+			-6:00	Belize	C%sT
+
+# Bermuda
+
+# From Dan Jones, reporting in The Royal Gazette (2006-06-26):
+
+# Next year, however, clocks in the US will go forward on the second Sunday
+# in March, until the first Sunday in November.  And, after the Time Zone
+# (Seasonal Variation) Bill 2006 was passed in the House of Assembly on
+# Friday, the same thing will happen in Bermuda.
+# http://www.theroyalgazette.com/apps/pbcs.dll/article?AID=/20060529/NEWS/105290135
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Atlantic/Bermuda	-4:19:04 -	LMT	1930 Jan  1 2:00    # Hamilton
+			-4:00	-	AST	1974 Apr 28 2:00
+			-4:00	Bahamas	A%sT	1976
+			-4:00	US	A%sT
+
+# Cayman Is
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	America/Cayman	-5:25:32 -	LMT	1890		# Georgetown
+			-5:07:12 -	KMT	1912 Feb    # Kingston Mean Time
+			-5:00	-	EST
+
+# Costa Rica
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	CR	1979	1980	-	Feb	lastSun	0:00	1:00	D
+Rule	CR	1979	1980	-	Jun	Sun>=1	0:00	0	S
+Rule	CR	1991	1992	-	Jan	Sat>=15	0:00	1:00	D
+# IATA SSIM (1991-09) says the following was at 1:00;
+# go with Shanks & Pottenger.
+Rule	CR	1991	only	-	Jul	 1	0:00	0	S
+Rule	CR	1992	only	-	Mar	15	0:00	0	S
+# There are too many San Joses elsewhere, so we'll use `Costa Rica'.
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Costa_Rica	-5:36:20 -	LMT	1890		# San Jose
+			-5:36:20 -	SJMT	1921 Jan 15 # San Jose Mean Time
+			-6:00	CR	C%sT
+# Coco
+# no information; probably like America/Costa_Rica
+
+# Cuba
+
+# From Arthur David Olson (1999-03-29):
+# The 1999-03-28 exhibition baseball game held in Havana, Cuba, between
+# the Cuban National Team and the Baltimore Orioles was carried live on
+# the Orioles Radio Network, including affiliate WTOP in Washington, DC.
+# During the game, play-by-play announcer Jim Hunter noted that
+# "We'll be losing two hours of sleep...Cuba switched to Daylight Saving
+# Time today."  (The "two hour" remark referred to losing one hour of
+# sleep on 1999-03-28--when the announcers were in Cuba as it switched
+# to DST--and one more hour on 1999-04-04--when the announcers will have
+# returned to Baltimore, which switches on that date.)
+
+# From Evert van der Veer via Steffen Thorsen (2004-10-28):
+# Cuba is not going back to standard time this year.
+# From Paul Eggert (2006-03-22):
+# http://www.granma.cu/ingles/2004/septiembre/juev30/41medid-i.html
+# says that it's due to a problem at the Antonio Guiteras
+# thermoelectric plant, and says "This October there will be no return
+# to normal hours (after daylight saving time)".
+# For now, let's assume that it's a temporary measure.
+
+# From Carlos A. Carnero Delgado (2005-11-12):
+# This year (just like in 2004-2005) there's no change in time zone
+# adjustment in Cuba.  We will stay in daylight saving time:
+# http://www.granma.cu/espanol/2005/noviembre/mier9/horario.html
+
+# From Jesper Norgaard Welen (2006-10-21):
+# An article in GRANMA INTERNACIONAL claims that Cuba will end
+# the 3 years of permanent DST next weekend, see
+# http://www.granma.cu/ingles/2006/octubre/lun16/43horario.html
+# "On Saturday night, October 28 going into Sunday, October 29, at 01:00,
+# watches should be set back one hour -- going back to 00:00 hours -- returning
+# to the normal schedule....
+
+# From Paul Eggert (2007-03-02):
+# http://www.granma.cubaweb.cu/english/news/art89.html, dated yesterday,
+# says Cuban clocks will advance at midnight on March 10.
+# For lack of better information, assume Cuba will use US rules,
+# except that it switches at midnight standard time as usual.
+#
+# From Steffen Thorsen (2007-10-25):
+# Carlos Alberto Fonseca Arauz informed me that Cuba will end DST one week
+# earlier - on the last Sunday of October, just like in 2006.
+#
+# He supplied these references:
+#
+# http://www.prensalatina.com.mx/article.asp?ID=%7B4CC32C1B-A9F7-42FB-8A07-8631AFC923AF%7D&language=ES
+# http://actualidad.terra.es/sociedad/articulo/cuba_llama_ahorrar_energia_cambio_1957044.htm
+#
+# From Alex Kryvenishev (2007-10-25):
+# Here is also article from Granma (Cuba):
+#
+# [Regira] el Horario Normal desde el [proximo] domingo 28 de octubre
+# http://www.granma.cubaweb.cu/2007/10/24/nacional/artic07.html
+#
+# http://www.worldtimezone.com/dst_news/dst_news_cuba03.html
+
+# From Arthur David Olson (2008-03-09):
+# I'm in Maryland which is now observing United States Eastern Daylight
+# Time. At 9:44 local time I used RealPlayer to listen to
+# 
+# http://media.enet.cu/radioreloj
+# , a Cuban information station, and heard
+# the time announced as "ocho cuarenta y cuatro" ("eight forty-four"),
+# indicating that Cuba is still on standard time.
+
+# From Steffen Thorsen (2008-03-12):
+# It seems that Cuba will start DST on Sunday, 2007-03-16...
+# It was announced yesterday, according to this source (in Spanish):
+# 
+# http://www.nnc.cubaweb.cu/marzo-2008/cien-1-11-3-08.htm
+# 
+#
+# Some more background information is posted here:
+# 
+# http://www.timeanddate.com/news/time/cuba-starts-dst-march-16.html
+# 
+#
+# The article also says that Cuba has been observing DST since 1963,
+# while Shanks (and tzdata) has 1965 as the first date (except in the
+# 1940's). Many other web pages in Cuba also claim that it has been
+# observed since 1963, but with the exception of 1970 - an exception
+# which is not present in tzdata/Shanks. So there is a chance we need to
+# change some historic records as well.
+#
+# One example:
+# 
+# http://www.radiohc.cu/espanol/noticias/mar07/11mar/hor.htm
+# 
+
+# From Jesper Norgaard Welen (2008-03-13):
+# The Cuban time change has just been confirmed on the most authoritative
+# web site, the Granma.  Please check out
+# 
+# http://www.granma.cubaweb.cu/2008/03/13/nacional/artic10.html
+# 
+#
+# Basically as expected after Steffen Thorsens information, the change
+# will take place midnight between Saturday and Sunday.
+
+# From Arthur David Olson (2008-03-12):
+# Assume Sun>=15 (third Sunday) going forward.
+
+# From Alexander Krivenyshev (2009-03-04)
+# According to the Radio Reloj - Cuba will start Daylight Saving Time on
+# midnight between Saturday, March 07, 2009 and Sunday, March 08, 2009-
+# not on midnight March 14 / March 15 as previously thought.
+#
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_cuba05.html
+# (in Spanish)
+# 
+
+# From Arthur David Olson (2009-03-09)
+# I listened over the Internet to
+# 
+# http://media.enet.cu/readioreloj
+# 
+# this morning; when it was 10:05 a. m. here in Bethesda, Maryland the
+# the time was announced as "diez cinco"--the same time as here, indicating
+# that has indeed switched to DST. Assume second Sunday from 2009 forward.
+
+# From Steffen Thorsen (2011-03-08):
+# Granma announced that Cuba is going to start DST on 2011-03-20 00:00:00
+# this year. Nothing about the end date known so far (if that has
+# changed at all).
+#
+# Source:
+# 
+# http://granma.co.cu/2011/03/08/nacional/artic01.html
+# 
+#
+# Our info:
+# 
+# http://www.timeanddate.com/news/time/cuba-starts-dst-2011.html
+# 
+#
+# From Steffen Thorsen (2011-10-30)
+# Cuba will end DST two weeks later this year. Instead of going back
+# tonight, it has been delayed to 2011-11-13 at 01:00.
+#
+# One source (Spanish)
+# 
+# http://www.radioangulo.cu/noticias/cuba/17105-cuba-restablecera-el-horario-del-meridiano-de-greenwich.html
+# 
+#
+# Our page:
+# 
+# http://www.timeanddate.com/news/time/cuba-time-changes-2011.html
+# 
+#
+# From Steffen Thorsen (2012-03-01)
+# According to Radio Reloj, Cuba will start DST on Midnight between March
+# 31 and April 1.
+#
+# Radio Reloj has the following info (Spanish):
+# 
+# http://www.radioreloj.cu/index.php/noticias-radio-reloj/71-miscelaneas/7529-cuba-aplicara-el-horario-de-verano-desde-el-1-de-abril
+# 
+#
+# Our info on it:
+# 
+# http://www.timeanddate.com/news/time/cuba-starts-dst-2012.html
+# 
+
+# From Steffen Thorsen (2012-11-03):
+# Radio Reloj and many other sources report that Cuba is changing back
+# to standard time on 2012-11-04:
+# http://www.radioreloj.cu/index.php/noticias-radio-reloj/36-nacionales/9961-regira-horario-normal-en-cuba-desde-el-domingo-cuatro-de-noviembre
+# From Paul Eggert (2012-11-03):
+# For now, assume the future rule is first Sunday in November.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Cuba	1928	only	-	Jun	10	0:00	1:00	D
+Rule	Cuba	1928	only	-	Oct	10	0:00	0	S
+Rule	Cuba	1940	1942	-	Jun	Sun>=1	0:00	1:00	D
+Rule	Cuba	1940	1942	-	Sep	Sun>=1	0:00	0	S
+Rule	Cuba	1945	1946	-	Jun	Sun>=1	0:00	1:00	D
+Rule	Cuba	1945	1946	-	Sep	Sun>=1	0:00	0	S
+Rule	Cuba	1965	only	-	Jun	1	0:00	1:00	D
+Rule	Cuba	1965	only	-	Sep	30	0:00	0	S
+Rule	Cuba	1966	only	-	May	29	0:00	1:00	D
+Rule	Cuba	1966	only	-	Oct	2	0:00	0	S
+Rule	Cuba	1967	only	-	Apr	8	0:00	1:00	D
+Rule	Cuba	1967	1968	-	Sep	Sun>=8	0:00	0	S
+Rule	Cuba	1968	only	-	Apr	14	0:00	1:00	D
+Rule	Cuba	1969	1977	-	Apr	lastSun	0:00	1:00	D
+Rule	Cuba	1969	1971	-	Oct	lastSun	0:00	0	S
+Rule	Cuba	1972	1974	-	Oct	8	0:00	0	S
+Rule	Cuba	1975	1977	-	Oct	lastSun	0:00	0	S
+Rule	Cuba	1978	only	-	May	7	0:00	1:00	D
+Rule	Cuba	1978	1990	-	Oct	Sun>=8	0:00	0	S
+Rule	Cuba	1979	1980	-	Mar	Sun>=15	0:00	1:00	D
+Rule	Cuba	1981	1985	-	May	Sun>=5	0:00	1:00	D
+Rule	Cuba	1986	1989	-	Mar	Sun>=14	0:00	1:00	D
+Rule	Cuba	1990	1997	-	Apr	Sun>=1	0:00	1:00	D
+Rule	Cuba	1991	1995	-	Oct	Sun>=8	0:00s	0	S
+Rule	Cuba	1996	only	-	Oct	 6	0:00s	0	S
+Rule	Cuba	1997	only	-	Oct	12	0:00s	0	S
+Rule	Cuba	1998	1999	-	Mar	lastSun	0:00s	1:00	D
+Rule	Cuba	1998	2003	-	Oct	lastSun	0:00s	0	S
+Rule	Cuba	2000	2004	-	Apr	Sun>=1	0:00s	1:00	D
+Rule	Cuba	2006	2010	-	Oct	lastSun	0:00s	0	S
+Rule	Cuba	2007	only	-	Mar	Sun>=8	0:00s	1:00	D
+Rule	Cuba	2008	only	-	Mar	Sun>=15	0:00s	1:00	D
+Rule	Cuba	2009	2010	-	Mar	Sun>=8	0:00s	1:00	D
+Rule	Cuba	2011	only	-	Mar	Sun>=15	0:00s	1:00	D
+Rule	Cuba	2011	only	-	Nov	13	0:00s	0	S
+Rule	Cuba	2012	only	-	Apr	1	0:00s	1:00	D
+Rule	Cuba	2012	max	-	Nov	Sun>=1	0:00s	0	S
+Rule	Cuba	2013	max	-	Mar	Sun>=8	0:00s	1:00	D
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	America/Havana	-5:29:28 -	LMT	1890
+			-5:29:36 -	HMT	1925 Jul 19 12:00 # Havana MT
+			-5:00	Cuba	C%sT
+
+# Dominica
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Dominica	-4:05:36 -	LMT	1911 Jul 1 0:01		# Roseau
+			-4:00	-	AST
+
+# Dominican Republic
+
+# From Steffen Thorsen (2000-10-30):
+# Enrique Morales reported to me that the Dominican Republic has changed the
+# time zone to Eastern Standard Time as of Sunday 29 at 2 am....
+# http://www.listin.com.do/antes/261000/republica/princi.html
+
+# From Paul Eggert (2000-12-04):
+# That URL (2000-10-26, in Spanish) says they planned to use US-style DST.
+
+# From Rives McDow (2000-12-01):
+# Dominican Republic changed its mind and presidential decree on Tuesday,
+# November 28, 2000, with a new decree.  On Sunday, December 3 at 1:00 AM the
+# Dominican Republic will be reverting to 8 hours from the International Date
+# Line, and will not be using DST in the foreseeable future.  The reason they
+# decided to use DST was to be in synch with Puerto Rico, who was also going
+# to implement DST.  When Puerto Rico didn't implement DST, the president
+# decided to revert.
+
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	DR	1966	only	-	Oct	30	0:00	1:00	D
+Rule	DR	1967	only	-	Feb	28	0:00	0	S
+Rule	DR	1969	1973	-	Oct	lastSun	0:00	0:30	HD
+Rule	DR	1970	only	-	Feb	21	0:00	0	S
+Rule	DR	1971	only	-	Jan	20	0:00	0	S
+Rule	DR	1972	1974	-	Jan	21	0:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Santo_Domingo -4:39:36 -	LMT	1890
+			-4:40	-	SDMT	1933 Apr  1 12:00 # S. Dom. MT
+			-5:00	DR	E%sT	1974 Oct 27
+			-4:00	-	AST	2000 Oct 29 02:00
+			-5:00	US	E%sT	2000 Dec  3 01:00
+			-4:00	-	AST
+
+# El Salvador
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Salv	1987	1988	-	May	Sun>=1	0:00	1:00	D
+Rule	Salv	1987	1988	-	Sep	lastSun	0:00	0	S
+# There are too many San Salvadors elsewhere, so use America/El_Salvador
+# instead of America/San_Salvador.
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/El_Salvador -5:56:48 -	LMT	1921		# San Salvador
+			-6:00	Salv	C%sT
+
+# Grenada
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	America/Grenada	-4:07:00 -	LMT	1911 Jul	# St George's
+			-4:00	-	AST
+
+# Guadeloupe
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Guadeloupe	-4:06:08 -	LMT	1911 Jun 8	# Pointe a Pitre
+			-4:00	-	AST
+# St Barthelemy
+Link America/Guadeloupe	America/St_Barthelemy
+# St Martin (French part)
+Link America/Guadeloupe	America/Marigot
+
+# Guatemala
+#
+# From Gwillim Law (2006-04-22), after a heads-up from Oscar van Vlijmen:
+# Diario Co Latino, at
+# http://www.diariocolatino.com/internacionales/detalles.asp?NewsID=8079,
+# says in an article dated 2006-04-19 that the Guatemalan government had
+# decided on that date to advance official time by 60 minutes, to lessen the
+# impact of the elevated cost of oil....  Daylight saving time will last from
+# 2006-04-29 24:00 (Guatemalan standard time) to 2006-09-30 (time unspecified).
+# From Paul Eggert (2006-06-22):
+# The Ministry of Energy and Mines, press release CP-15/2006
+# (2006-04-19), says DST ends at 24:00.  See
+# .
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Guat	1973	only	-	Nov	25	0:00	1:00	D
+Rule	Guat	1974	only	-	Feb	24	0:00	0	S
+Rule	Guat	1983	only	-	May	21	0:00	1:00	D
+Rule	Guat	1983	only	-	Sep	22	0:00	0	S
+Rule	Guat	1991	only	-	Mar	23	0:00	1:00	D
+Rule	Guat	1991	only	-	Sep	 7	0:00	0	S
+Rule	Guat	2006	only	-	Apr	30	0:00	1:00	D
+Rule	Guat	2006	only	-	Oct	 1	0:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Guatemala	-6:02:04 -	LMT	1918 Oct 5
+			-6:00	Guat	C%sT
+
+# Haiti
+# From Gwillim Law (2005-04-15):
+# Risto O. Nykanen wrote me that Haiti is now on DST.
+# I searched for confirmation, and I found a
+#  press release
+# on the Web page of the Haitian Consulate in Chicago (2005-03-31),
+# .  Translated from French, it says:
+#
+#  "The Prime Minister's Communication Office notifies the public in general
+#   and the press in particular that, following a decision of the Interior
+#   Ministry and the Territorial Collectivities [I suppose that means the
+#   provinces], Haiti will move to Eastern Daylight Time in the night from next
+#   Saturday the 2nd to Sunday the 3rd.
+#
+#  "Consequently, the Prime Minister's Communication Office wishes to inform
+#   the population that the country's clocks will be set forward one hour
+#   starting at midnight.  This provision will hold until the last Saturday in
+#   October 2005.
+#
+#  "Port-au-Prince, March 31, 2005"
+#
+# From Steffen Thorsen (2006-04-04):
+# I have been informed by users that Haiti observes DST this year like
+# last year, so the current "only" rule for 2005 might be changed to a
+# "max" rule or to last until 2006. (Who knows if they will observe DST
+# next year or if they will extend their DST like US/Canada next year).
+#
+# I have found this article about it (in French):
+# http://www.haitipressnetwork.com/news.cfm?articleID=7612
+#
+# The reason seems to be an energy crisis.
+
+# From Stephen Colebourne (2007-02-22):
+# Some IATA info: Haiti won't be having DST in 2007.
+
+# From Steffen Thorsen (2012-03-11):
+# According to several news sources, Haiti will observe DST this year,
+# apparently using the same start and end date as USA/Canada.
+# So this means they have already changed their time.
+#
+# (Sources in French):
+# 
+# http://www.alterpresse.org/spip.php?article12510
+# 
+# 
+# http://radiovision2000haiti.net/home/?p=13253
+# 
+#
+# Our coverage:
+# 
+# http://www.timeanddate.com/news/time/haiti-dst-2012.html
+# 
+
+# From Arthur David Olson (2012-03-11):
+# The alterpresse.org source seems to show a US-style leap from 2:00 a.m. to
+# 3:00 a.m. rather than the traditional Haitian jump at midnight.
+# Assume a US-style fall back as well XXX.
+# Do not yet assume that the change carries forward past 2012 XXX.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Haiti	1983	only	-	May	8	0:00	1:00	D
+Rule	Haiti	1984	1987	-	Apr	lastSun	0:00	1:00	D
+Rule	Haiti	1983	1987	-	Oct	lastSun	0:00	0	S
+# Shanks & Pottenger say AT is 2:00, but IATA SSIM (1991/1997) says 1:00s.
+# Go with IATA.
+Rule	Haiti	1988	1997	-	Apr	Sun>=1	1:00s	1:00	D
+Rule	Haiti	1988	1997	-	Oct	lastSun	1:00s	0	S
+Rule	Haiti	2005	2006	-	Apr	Sun>=1	0:00	1:00	D
+Rule	Haiti	2005	2006	-	Oct	lastSun	0:00	0	S
+Rule	Haiti	2012	only	-	Mar	Sun>=8	2:00	1:00	D
+Rule	Haiti	2012	only	-	Nov	Sun>=1	2:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Port-au-Prince -4:49:20 -	LMT	1890
+			-4:49	-	PPMT	1917 Jan 24 12:00 # P-a-P MT
+			-5:00	Haiti	E%sT
+
+# Honduras
+# Shanks & Pottenger say 1921 Jan 1; go with Whitman's more precise Apr 1.
+
+# From Paul Eggert (2006-05-05):
+# worldtimezone.com reports a 2006-05-02 Spanish-language AP article
+# saying Honduras will start using DST midnight Saturday, effective 4
+# months until September.  La Tribuna reported today
+#  that Manuel Zelaya, the president
+# of Honduras, refused to back down on this.
+
+# From Jesper Norgaard Welen (2006-08-08):
+# It seems that Honduras has returned from DST to standard time this Monday at
+# 00:00 hours (prolonging Sunday to 25 hours duration).
+# http://www.worldtimezone.com/dst_news/dst_news_honduras04.html
+
+# From Paul Eggert (2006-08-08):
+# Also see Diario El Heraldo, The country returns to standard time (2006-08-08)
+# .
+# It mentions executive decree 18-2006.
+
+# From Steffen Thorsen (2006-08-17):
+# Honduras will observe DST from 2007 to 2009, exact dates are not
+# published, I have located this authoritative source:
+# http://www.presidencia.gob.hn/noticia.aspx?nId=47
+
+# From Steffen Thorsen (2007-03-30):
+# http://www.laprensahn.com/pais_nota.php?id04962=7386
+# So it seems that Honduras will not enter DST this year....
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Hond	1987	1988	-	May	Sun>=1	0:00	1:00	D
+Rule	Hond	1987	1988	-	Sep	lastSun	0:00	0	S
+Rule	Hond	2006	only	-	May	Sun>=1	0:00	1:00	D
+Rule	Hond	2006	only	-	Aug	Mon>=1	0:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Tegucigalpa -5:48:52 -	LMT	1921 Apr
+			-6:00	Hond	C%sT
+#
+# Great Swan I ceded by US to Honduras in 1972
+
+# Jamaica
+
+# From Bob Devine (1988-01-28):
+# Follows US rules.
+
+# From U. S. Naval Observatory (1989-01-19):
+# JAMAICA             5 H  BEHIND UTC
+
+# From Shanks & Pottenger:
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	America/Jamaica	-5:07:12 -	LMT	1890		# Kingston
+			-5:07:12 -	KMT	1912 Feb    # Kingston Mean Time
+			-5:00	-	EST	1974 Apr 28 2:00
+			-5:00	US	E%sT	1984
+			-5:00	-	EST
+
+# Martinique
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Martinique	-4:04:20 -      LMT	1890		# Fort-de-France
+			-4:04:20 -	FFMT	1911 May     # Fort-de-France MT
+			-4:00	-	AST	1980 Apr  6
+			-4:00	1:00	ADT	1980 Sep 28
+			-4:00	-	AST
+
+# Montserrat
+# From Paul Eggert (2006-03-22):
+# In 1995 volcanic eruptions forced evacuation of Plymouth, the capital.
+# world.gazetteer.com says Cork Hill is the most populous location now.
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Montserrat	-4:08:52 -	LMT	1911 Jul 1 0:01   # Cork Hill
+			-4:00	-	AST
+
+# Nicaragua
+#
+# This uses Shanks & Pottenger for times before 2005.
+#
+# From Steffen Thorsen (2005-04-12):
+# I've got reports from 8 different people that Nicaragua just started
+# DST on Sunday 2005-04-10, in order to save energy because of
+# expensive petroleum.  The exact end date for DST is not yet
+# announced, only "September" but some sites also say "mid-September".
+# Some background information is available on the President's official site:
+# http://www.presidencia.gob.ni/Presidencia/Files_index/Secretaria/Notas%20de%20Prensa/Presidente/2005/ABRIL/Gobierno-de-nicaragua-adelanta-hora-oficial-06abril.htm
+# The Decree, no 23-2005 is available here:
+# http://www.presidencia.gob.ni/buscador_gaceta/BD/DECRETOS/2005/Decreto%2023-2005%20Se%20adelanta%20en%20una%20hora%20en%20todo%20el%20territorio%20nacional%20apartir%20de%20las%2024horas%20del%2009%20de%20Abril.pdf
+#
+# From Paul Eggert (2005-05-01):
+# The decree doesn't say anything about daylight saving, but for now let's
+# assume that it is daylight saving....
+#
+# From Gwillim Law (2005-04-21):
+# The Associated Press story on the time change, which can be found at
+# http://www.lapalmainteractivo.com/guias/content/gen/ap/America_Latina/AMC_GEN_NICARAGUA_HORA.html
+# and elsewhere, says (fifth paragraph, translated from Spanish):  "The last
+# time that a change of clocks was applied to save energy was in the year 2000
+# during the Arnoldo Aleman administration."...
+# The northamerica file says that Nicaragua has been on UTC-6 continuously
+# since December 1998.  I wasn't able to find any details of Nicaraguan time
+# changes in 2000.  Perhaps a note could be added to the northamerica file, to
+# the effect that we have indirect evidence that DST was observed in 2000.
+#
+# From Jesper Norgaard Welen (2005-11-02):
+# Nicaragua left DST the 2005-10-02 at 00:00 (local time).
+# http://www.presidencia.gob.ni/presidencia/files_index/secretaria/comunicados/2005/septiembre/26septiembre-cambio-hora.htm
+# (2005-09-26)
+#
+# From Jesper Norgaard Welen (2006-05-05):
+# http://www.elnuevodiario.com.ni/2006/05/01/nacionales/18410
+# (my informal translation)
+# By order of the president of the republic, Enrique Bolanos, Nicaragua
+# advanced by sixty minutes their official time, yesterday at 2 in the
+# morning, and will stay that way until 30.th. of september.
+#
+# From Jesper Norgaard Welen (2006-09-30):
+# http://www.presidencia.gob.ni/buscador_gaceta/BD/DECRETOS/2006/D-063-2006P-PRN-Cambio-Hora.pdf
+# My informal translation runs:
+# The natural sun time is restored in all the national territory, in that the
+# time is returned one hour at 01:00 am of October 1 of 2006.
+#
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Nic	1979	1980	-	Mar	Sun>=16	0:00	1:00	D
+Rule	Nic	1979	1980	-	Jun	Mon>=23	0:00	0	S
+Rule	Nic	2005	only	-	Apr	10	0:00	1:00	D
+Rule	Nic	2005	only	-	Oct	Sun>=1	0:00	0	S
+Rule	Nic	2006	only	-	Apr	30	2:00	1:00	D
+Rule	Nic	2006	only	-	Oct	Sun>=1	1:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	America/Managua	-5:45:08 -	LMT	1890
+			-5:45:12 -	MMT	1934 Jun 23 # Managua Mean Time?
+			-6:00	-	CST	1973 May
+			-5:00	-	EST	1975 Feb 16
+			-6:00	Nic	C%sT	1992 Jan  1 4:00
+			-5:00	-	EST	1992 Sep 24
+			-6:00	-	CST	1993
+			-5:00	-	EST	1997
+			-6:00	Nic	C%sT
+
+# Panama
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	America/Panama	-5:18:08 -	LMT	1890
+			-5:19:36 -	CMT	1908 Apr 22   # Colon Mean Time
+			-5:00	-	EST
+
+# Puerto Rico
+# There are too many San Juans elsewhere, so we'll use `Puerto_Rico'.
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Puerto_Rico -4:24:25 -	LMT	1899 Mar 28 12:00    # San Juan
+			-4:00	-	AST	1942 May  3
+			-4:00	US	A%sT	1946
+			-4:00	-	AST
+
+# St Kitts-Nevis
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/St_Kitts	-4:10:52 -	LMT	1912 Mar 2	# Basseterre
+			-4:00	-	AST
+
+# St Lucia
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/St_Lucia	-4:04:00 -	LMT	1890		# Castries
+			-4:04:00 -	CMT	1912	    # Castries Mean Time
+			-4:00	-	AST
+
+# St Pierre and Miquelon
+# There are too many St Pierres elsewhere, so we'll use `Miquelon'.
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Miquelon	-3:44:40 -	LMT	1911 May 15	# St Pierre
+			-4:00	-	AST	1980 May
+			-3:00	-	PMST	1987 # Pierre & Miquelon Time
+			-3:00	Canada	PM%sT
+
+# St Vincent and the Grenadines
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/St_Vincent	-4:04:56 -	LMT	1890		# Kingstown
+			-4:04:56 -	KMT	1912	   # Kingstown Mean Time
+			-4:00	-	AST
+
+# Turks and Caicos
+#
+# From Chris Dunn in
+# 
+# (2007-03-15): In the Turks & Caicos Islands (America/Grand_Turk) the
+# daylight saving dates for time changes have been adjusted to match
+# the recent U.S. change of dates.
+#
+# From Brian Inglis (2007-04-28):
+# http://www.turksandcaicos.tc/calendar/index.htm [2007-04-26]
+# there is an entry for Nov 4 "Daylight Savings Time Ends 2007" and three
+# rows before that there is an out of date entry for Oct:
+# "Eastern Standard Times Begins 2007
+# Clocks are set back one hour at 2:00 a.m. local Daylight Saving Time"
+# indicating that the normal ET rules are followed.
+#
+# From Paul Eggert (2006-05-01):
+# Shanks & Pottenger say they use US DST rules, but IATA SSIM (1991/1998)
+# says they switch at midnight.  Go with Shanks & Pottenger.
+#
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	TC	1979	1986	-	Apr	lastSun	2:00	1:00	D
+Rule	TC	1979	2006	-	Oct	lastSun	2:00	0	S
+Rule	TC	1987	2006	-	Apr	Sun>=1	2:00	1:00	D
+Rule	TC	2007	max	-	Mar	Sun>=8	2:00	1:00	D
+Rule	TC	2007	max	-	Nov	Sun>=1	2:00	0	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Grand_Turk	-4:44:32 -	LMT	1890
+			-5:07:12 -	KMT	1912 Feb    # Kingston Mean Time
+			-5:00	TC	E%sT
+
+# British Virgin Is
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Tortola	-4:18:28 -	LMT	1911 Jul    # Road Town
+			-4:00	-	AST
+
+# Virgin Is
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/St_Thomas	-4:19:44 -	LMT	1911 Jul    # Charlotte Amalie
+			-4:00	-	AST
diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/pacificnew b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/pacificnew
new file mode 100644
index 0000000..69c88f3
--- /dev/null
+++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/pacificnew
@@ -0,0 +1,28 @@
+# 
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
+
+# From Arthur David Olson (1989-04-05):
+# On 1989-04-05, the U. S. House of Representatives passed (238-154) a bill
+# establishing "Pacific Presidential Election Time"; it was not acted on
+# by the Senate or signed into law by the President.
+# You might want to change the "PE" (Presidential Election) below to
+# "Q" (Quadrennial) to maintain three-character zone abbreviations.
+# If you're really conservative, you might want to change it to "D".
+# Avoid "L" (Leap Year), which won't be true in 2100.
+
+# If Presidential Election Time is ever established, replace "XXXX" below
+# with the year the law takes effect and uncomment the "##" lines.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+## Rule	Twilite	XXXX	max	-	Apr	Sun>=1	2:00	1:00	D
+## Rule	Twilite	XXXX	max	uspres	Oct	lastSun	2:00	1:00	PE
+## Rule	Twilite	XXXX	max	uspres	Nov	Sun>=7	2:00	0	S
+## Rule	Twilite	XXXX	max	nonpres	Oct	lastSun	2:00	0	S
+
+# Zone	NAME			GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
+## Zone	America/Los_Angeles-PET	-8:00	US		P%sT	XXXX
+##				-8:00	Twilite		P%sT
+
+# For now...
+Link	America/Los_Angeles	US/Pacific-New	##
diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/solar87 b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/solar87
new file mode 100644
index 0000000..b4efdbb
--- /dev/null
+++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/solar87
@@ -0,0 +1,390 @@
+# 
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
+
+# So much for footnotes about Saudi Arabia.
+# Apparent noon times below are for Riyadh; your mileage will vary.
+# Times were computed using formulas in the U.S. Naval Observatory's
+# Almanac for Computers 1987; the formulas "will give EqT to an accuracy of
+# [plus or minus two] seconds during the current year."
+#
+# Rounding to the nearest five seconds results in fewer than
+# 256 different "time types"--a limit that's faced because time types are
+# stored on disk as unsigned chars.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	sol87	1987	only	-	Jan	1	12:03:20s -0:03:20 -
+Rule	sol87	1987	only	-	Jan	2	12:03:50s -0:03:50 -
+Rule	sol87	1987	only	-	Jan	3	12:04:15s -0:04:15 -
+Rule	sol87	1987	only	-	Jan	4	12:04:45s -0:04:45 -
+Rule	sol87	1987	only	-	Jan	5	12:05:10s -0:05:10 -
+Rule	sol87	1987	only	-	Jan	6	12:05:40s -0:05:40 -
+Rule	sol87	1987	only	-	Jan	7	12:06:05s -0:06:05 -
+Rule	sol87	1987	only	-	Jan	8	12:06:30s -0:06:30 -
+Rule	sol87	1987	only	-	Jan	9	12:06:55s -0:06:55 -
+Rule	sol87	1987	only	-	Jan	10	12:07:20s -0:07:20 -
+Rule	sol87	1987	only	-	Jan	11	12:07:45s -0:07:45 -
+Rule	sol87	1987	only	-	Jan	12	12:08:10s -0:08:10 -
+Rule	sol87	1987	only	-	Jan	13	12:08:30s -0:08:30 -
+Rule	sol87	1987	only	-	Jan	14	12:08:55s -0:08:55 -
+Rule	sol87	1987	only	-	Jan	15	12:09:15s -0:09:15 -
+Rule	sol87	1987	only	-	Jan	16	12:09:35s -0:09:35 -
+Rule	sol87	1987	only	-	Jan	17	12:09:55s -0:09:55 -
+Rule	sol87	1987	only	-	Jan	18	12:10:15s -0:10:15 -
+Rule	sol87	1987	only	-	Jan	19	12:10:35s -0:10:35 -
+Rule	sol87	1987	only	-	Jan	20	12:10:55s -0:10:55 -
+Rule	sol87	1987	only	-	Jan	21	12:11:10s -0:11:10 -
+Rule	sol87	1987	only	-	Jan	22	12:11:30s -0:11:30 -
+Rule	sol87	1987	only	-	Jan	23	12:11:45s -0:11:45 -
+Rule	sol87	1987	only	-	Jan	24	12:12:00s -0:12:00 -
+Rule	sol87	1987	only	-	Jan	25	12:12:15s -0:12:15 -
+Rule	sol87	1987	only	-	Jan	26	12:12:30s -0:12:30 -
+Rule	sol87	1987	only	-	Jan	27	12:12:40s -0:12:40 -
+Rule	sol87	1987	only	-	Jan	28	12:12:55s -0:12:55 -
+Rule	sol87	1987	only	-	Jan	29	12:13:05s -0:13:05 -
+Rule	sol87	1987	only	-	Jan	30	12:13:15s -0:13:15 -
+Rule	sol87	1987	only	-	Jan	31	12:13:25s -0:13:25 -
+Rule	sol87	1987	only	-	Feb	1	12:13:35s -0:13:35 -
+Rule	sol87	1987	only	-	Feb	2	12:13:40s -0:13:40 -
+Rule	sol87	1987	only	-	Feb	3	12:13:50s -0:13:50 -
+Rule	sol87	1987	only	-	Feb	4	12:13:55s -0:13:55 -
+Rule	sol87	1987	only	-	Feb	5	12:14:00s -0:14:00 -
+Rule	sol87	1987	only	-	Feb	6	12:14:05s -0:14:05 -
+Rule	sol87	1987	only	-	Feb	7	12:14:10s -0:14:10 -
+Rule	sol87	1987	only	-	Feb	8	12:14:10s -0:14:10 -
+Rule	sol87	1987	only	-	Feb	9	12:14:15s -0:14:15 -
+Rule	sol87	1987	only	-	Feb	10	12:14:15s -0:14:15 -
+Rule	sol87	1987	only	-	Feb	11	12:14:15s -0:14:15 -
+Rule	sol87	1987	only	-	Feb	12	12:14:15s -0:14:15 -
+Rule	sol87	1987	only	-	Feb	13	12:14:15s -0:14:15 -
+Rule	sol87	1987	only	-	Feb	14	12:14:15s -0:14:15 -
+Rule	sol87	1987	only	-	Feb	15	12:14:10s -0:14:10 -
+Rule	sol87	1987	only	-	Feb	16	12:14:10s -0:14:10 -
+Rule	sol87	1987	only	-	Feb	17	12:14:05s -0:14:05 -
+Rule	sol87	1987	only	-	Feb	18	12:14:00s -0:14:00 -
+Rule	sol87	1987	only	-	Feb	19	12:13:55s -0:13:55 -
+Rule	sol87	1987	only	-	Feb	20	12:13:50s -0:13:50 -
+Rule	sol87	1987	only	-	Feb	21	12:13:45s -0:13:45 -
+Rule	sol87	1987	only	-	Feb	22	12:13:35s -0:13:35 -
+Rule	sol87	1987	only	-	Feb	23	12:13:30s -0:13:30 -
+Rule	sol87	1987	only	-	Feb	24	12:13:20s -0:13:20 -
+Rule	sol87	1987	only	-	Feb	25	12:13:10s -0:13:10 -
+Rule	sol87	1987	only	-	Feb	26	12:13:00s -0:13:00 -
+Rule	sol87	1987	only	-	Feb	27	12:12:50s -0:12:50 -
+Rule	sol87	1987	only	-	Feb	28	12:12:40s -0:12:40 -
+Rule	sol87	1987	only	-	Mar	1	12:12:30s -0:12:30 -
+Rule	sol87	1987	only	-	Mar	2	12:12:20s -0:12:20 -
+Rule	sol87	1987	only	-	Mar	3	12:12:05s -0:12:05 -
+Rule	sol87	1987	only	-	Mar	4	12:11:55s -0:11:55 -
+Rule	sol87	1987	only	-	Mar	5	12:11:40s -0:11:40 -
+Rule	sol87	1987	only	-	Mar	6	12:11:25s -0:11:25 -
+Rule	sol87	1987	only	-	Mar	7	12:11:15s -0:11:15 -
+Rule	sol87	1987	only	-	Mar	8	12:11:00s -0:11:00 -
+Rule	sol87	1987	only	-	Mar	9	12:10:45s -0:10:45 -
+Rule	sol87	1987	only	-	Mar	10	12:10:30s -0:10:30 -
+Rule	sol87	1987	only	-	Mar	11	12:10:15s -0:10:15 -
+Rule	sol87	1987	only	-	Mar	12	12:09:55s -0:09:55 -
+Rule	sol87	1987	only	-	Mar	13	12:09:40s -0:09:40 -
+Rule	sol87	1987	only	-	Mar	14	12:09:25s -0:09:25 -
+Rule	sol87	1987	only	-	Mar	15	12:09:10s -0:09:10 -
+Rule	sol87	1987	only	-	Mar	16	12:08:50s -0:08:50 -
+Rule	sol87	1987	only	-	Mar	17	12:08:35s -0:08:35 -
+Rule	sol87	1987	only	-	Mar	18	12:08:15s -0:08:15 -
+Rule	sol87	1987	only	-	Mar	19	12:08:00s -0:08:00 -
+Rule	sol87	1987	only	-	Mar	20	12:07:40s -0:07:40 -
+Rule	sol87	1987	only	-	Mar	21	12:07:25s -0:07:25 -
+Rule	sol87	1987	only	-	Mar	22	12:07:05s -0:07:05 -
+Rule	sol87	1987	only	-	Mar	23	12:06:50s -0:06:50 -
+Rule	sol87	1987	only	-	Mar	24	12:06:30s -0:06:30 -
+Rule	sol87	1987	only	-	Mar	25	12:06:10s -0:06:10 -
+Rule	sol87	1987	only	-	Mar	26	12:05:55s -0:05:55 -
+Rule	sol87	1987	only	-	Mar	27	12:05:35s -0:05:35 -
+Rule	sol87	1987	only	-	Mar	28	12:05:15s -0:05:15 -
+Rule	sol87	1987	only	-	Mar	29	12:05:00s -0:05:00 -
+Rule	sol87	1987	only	-	Mar	30	12:04:40s -0:04:40 -
+Rule	sol87	1987	only	-	Mar	31	12:04:25s -0:04:25 -
+Rule	sol87	1987	only	-	Apr	1	12:04:05s -0:04:05 -
+Rule	sol87	1987	only	-	Apr	2	12:03:45s -0:03:45 -
+Rule	sol87	1987	only	-	Apr	3	12:03:30s -0:03:30 -
+Rule	sol87	1987	only	-	Apr	4	12:03:10s -0:03:10 -
+Rule	sol87	1987	only	-	Apr	5	12:02:55s -0:02:55 -
+Rule	sol87	1987	only	-	Apr	6	12:02:35s -0:02:35 -
+Rule	sol87	1987	only	-	Apr	7	12:02:20s -0:02:20 -
+Rule	sol87	1987	only	-	Apr	8	12:02:05s -0:02:05 -
+Rule	sol87	1987	only	-	Apr	9	12:01:45s -0:01:45 -
+Rule	sol87	1987	only	-	Apr	10	12:01:30s -0:01:30 -
+Rule	sol87	1987	only	-	Apr	11	12:01:15s -0:01:15 -
+Rule	sol87	1987	only	-	Apr	12	12:00:55s -0:00:55 -
+Rule	sol87	1987	only	-	Apr	13	12:00:40s -0:00:40 -
+Rule	sol87	1987	only	-	Apr	14	12:00:25s -0:00:25 -
+Rule	sol87	1987	only	-	Apr	15	12:00:10s -0:00:10 -
+Rule	sol87	1987	only	-	Apr	16	11:59:55s 0:00:05 -
+Rule	sol87	1987	only	-	Apr	17	11:59:45s 0:00:15 -
+Rule	sol87	1987	only	-	Apr	18	11:59:30s 0:00:30 -
+Rule	sol87	1987	only	-	Apr	19	11:59:15s 0:00:45 -
+Rule	sol87	1987	only	-	Apr	20	11:59:05s 0:00:55 -
+Rule	sol87	1987	only	-	Apr	21	11:58:50s 0:01:10 -
+Rule	sol87	1987	only	-	Apr	22	11:58:40s 0:01:20 -
+Rule	sol87	1987	only	-	Apr	23	11:58:25s 0:01:35 -
+Rule	sol87	1987	only	-	Apr	24	11:58:15s 0:01:45 -
+Rule	sol87	1987	only	-	Apr	25	11:58:05s 0:01:55 -
+Rule	sol87	1987	only	-	Apr	26	11:57:55s 0:02:05 -
+Rule	sol87	1987	only	-	Apr	27	11:57:45s 0:02:15 -
+Rule	sol87	1987	only	-	Apr	28	11:57:35s 0:02:25 -
+Rule	sol87	1987	only	-	Apr	29	11:57:25s 0:02:35 -
+Rule	sol87	1987	only	-	Apr	30	11:57:15s 0:02:45 -
+Rule	sol87	1987	only	-	May	1	11:57:10s 0:02:50 -
+Rule	sol87	1987	only	-	May	2	11:57:00s 0:03:00 -
+Rule	sol87	1987	only	-	May	3	11:56:55s 0:03:05 -
+Rule	sol87	1987	only	-	May	4	11:56:50s 0:03:10 -
+Rule	sol87	1987	only	-	May	5	11:56:45s 0:03:15 -
+Rule	sol87	1987	only	-	May	6	11:56:40s 0:03:20 -
+Rule	sol87	1987	only	-	May	7	11:56:35s 0:03:25 -
+Rule	sol87	1987	only	-	May	8	11:56:30s 0:03:30 -
+Rule	sol87	1987	only	-	May	9	11:56:25s 0:03:35 -
+Rule	sol87	1987	only	-	May	10	11:56:25s 0:03:35 -
+Rule	sol87	1987	only	-	May	11	11:56:20s 0:03:40 -
+Rule	sol87	1987	only	-	May	12	11:56:20s 0:03:40 -
+Rule	sol87	1987	only	-	May	13	11:56:20s 0:03:40 -
+Rule	sol87	1987	only	-	May	14	11:56:20s 0:03:40 -
+Rule	sol87	1987	only	-	May	15	11:56:20s 0:03:40 -
+Rule	sol87	1987	only	-	May	16	11:56:20s 0:03:40 -
+Rule	sol87	1987	only	-	May	17	11:56:20s 0:03:40 -
+Rule	sol87	1987	only	-	May	18	11:56:20s 0:03:40 -
+Rule	sol87	1987	only	-	May	19	11:56:25s 0:03:35 -
+Rule	sol87	1987	only	-	May	20	11:56:25s 0:03:35 -
+Rule	sol87	1987	only	-	May	21	11:56:30s 0:03:30 -
+Rule	sol87	1987	only	-	May	22	11:56:35s 0:03:25 -
+Rule	sol87	1987	only	-	May	23	11:56:40s 0:03:20 -
+Rule	sol87	1987	only	-	May	24	11:56:45s 0:03:15 -
+Rule	sol87	1987	only	-	May	25	11:56:50s 0:03:10 -
+Rule	sol87	1987	only	-	May	26	11:56:55s 0:03:05 -
+Rule	sol87	1987	only	-	May	27	11:57:00s 0:03:00 -
+Rule	sol87	1987	only	-	May	28	11:57:10s 0:02:50 -
+Rule	sol87	1987	only	-	May	29	11:57:15s 0:02:45 -
+Rule	sol87	1987	only	-	May	30	11:57:25s 0:02:35 -
+Rule	sol87	1987	only	-	May	31	11:57:30s 0:02:30 -
+Rule	sol87	1987	only	-	Jun	1	11:57:40s 0:02:20 -
+Rule	sol87	1987	only	-	Jun	2	11:57:50s 0:02:10 -
+Rule	sol87	1987	only	-	Jun	3	11:58:00s 0:02:00 -
+Rule	sol87	1987	only	-	Jun	4	11:58:10s 0:01:50 -
+Rule	sol87	1987	only	-	Jun	5	11:58:20s 0:01:40 -
+Rule	sol87	1987	only	-	Jun	6	11:58:30s 0:01:30 -
+Rule	sol87	1987	only	-	Jun	7	11:58:40s 0:01:20 -
+Rule	sol87	1987	only	-	Jun	8	11:58:50s 0:01:10 -
+Rule	sol87	1987	only	-	Jun	9	11:59:05s 0:00:55 -
+Rule	sol87	1987	only	-	Jun	10	11:59:15s 0:00:45 -
+Rule	sol87	1987	only	-	Jun	11	11:59:30s 0:00:30 -
+Rule	sol87	1987	only	-	Jun	12	11:59:40s 0:00:20 -
+Rule	sol87	1987	only	-	Jun	13	11:59:50s 0:00:10 -
+Rule	sol87	1987	only	-	Jun	14	12:00:05s -0:00:05 -
+Rule	sol87	1987	only	-	Jun	15	12:00:15s -0:00:15 -
+Rule	sol87	1987	only	-	Jun	16	12:00:30s -0:00:30 -
+Rule	sol87	1987	only	-	Jun	17	12:00:45s -0:00:45 -
+Rule	sol87	1987	only	-	Jun	18	12:00:55s -0:00:55 -
+Rule	sol87	1987	only	-	Jun	19	12:01:10s -0:01:10 -
+Rule	sol87	1987	only	-	Jun	20	12:01:20s -0:01:20 -
+Rule	sol87	1987	only	-	Jun	21	12:01:35s -0:01:35 -
+Rule	sol87	1987	only	-	Jun	22	12:01:50s -0:01:50 -
+Rule	sol87	1987	only	-	Jun	23	12:02:00s -0:02:00 -
+Rule	sol87	1987	only	-	Jun	24	12:02:15s -0:02:15 -
+Rule	sol87	1987	only	-	Jun	25	12:02:25s -0:02:25 -
+Rule	sol87	1987	only	-	Jun	26	12:02:40s -0:02:40 -
+Rule	sol87	1987	only	-	Jun	27	12:02:50s -0:02:50 -
+Rule	sol87	1987	only	-	Jun	28	12:03:05s -0:03:05 -
+Rule	sol87	1987	only	-	Jun	29	12:03:15s -0:03:15 -
+Rule	sol87	1987	only	-	Jun	30	12:03:30s -0:03:30 -
+Rule	sol87	1987	only	-	Jul	1	12:03:40s -0:03:40 -
+Rule	sol87	1987	only	-	Jul	2	12:03:50s -0:03:50 -
+Rule	sol87	1987	only	-	Jul	3	12:04:05s -0:04:05 -
+Rule	sol87	1987	only	-	Jul	4	12:04:15s -0:04:15 -
+Rule	sol87	1987	only	-	Jul	5	12:04:25s -0:04:25 -
+Rule	sol87	1987	only	-	Jul	6	12:04:35s -0:04:35 -
+Rule	sol87	1987	only	-	Jul	7	12:04:45s -0:04:45 -
+Rule	sol87	1987	only	-	Jul	8	12:04:55s -0:04:55 -
+Rule	sol87	1987	only	-	Jul	9	12:05:05s -0:05:05 -
+Rule	sol87	1987	only	-	Jul	10	12:05:15s -0:05:15 -
+Rule	sol87	1987	only	-	Jul	11	12:05:20s -0:05:20 -
+Rule	sol87	1987	only	-	Jul	12	12:05:30s -0:05:30 -
+Rule	sol87	1987	only	-	Jul	13	12:05:40s -0:05:40 -
+Rule	sol87	1987	only	-	Jul	14	12:05:45s -0:05:45 -
+Rule	sol87	1987	only	-	Jul	15	12:05:50s -0:05:50 -
+Rule	sol87	1987	only	-	Jul	16	12:06:00s -0:06:00 -
+Rule	sol87	1987	only	-	Jul	17	12:06:05s -0:06:05 -
+Rule	sol87	1987	only	-	Jul	18	12:06:10s -0:06:10 -
+Rule	sol87	1987	only	-	Jul	19	12:06:15s -0:06:15 -
+Rule	sol87	1987	only	-	Jul	20	12:06:15s -0:06:15 -
+Rule	sol87	1987	only	-	Jul	21	12:06:20s -0:06:20 -
+Rule	sol87	1987	only	-	Jul	22	12:06:25s -0:06:25 -
+Rule	sol87	1987	only	-	Jul	23	12:06:25s -0:06:25 -
+Rule	sol87	1987	only	-	Jul	24	12:06:25s -0:06:25 -
+Rule	sol87	1987	only	-	Jul	25	12:06:30s -0:06:30 -
+Rule	sol87	1987	only	-	Jul	26	12:06:30s -0:06:30 -
+Rule	sol87	1987	only	-	Jul	27	12:06:30s -0:06:30 -
+Rule	sol87	1987	only	-	Jul	28	12:06:30s -0:06:30 -
+Rule	sol87	1987	only	-	Jul	29	12:06:25s -0:06:25 -
+Rule	sol87	1987	only	-	Jul	30	12:06:25s -0:06:25 -
+Rule	sol87	1987	only	-	Jul	31	12:06:25s -0:06:25 -
+Rule	sol87	1987	only	-	Aug	1	12:06:20s -0:06:20 -
+Rule	sol87	1987	only	-	Aug	2	12:06:15s -0:06:15 -
+Rule	sol87	1987	only	-	Aug	3	12:06:10s -0:06:10 -
+Rule	sol87	1987	only	-	Aug	4	12:06:05s -0:06:05 -
+Rule	sol87	1987	only	-	Aug	5	12:06:00s -0:06:00 -
+Rule	sol87	1987	only	-	Aug	6	12:05:55s -0:05:55 -
+Rule	sol87	1987	only	-	Aug	7	12:05:50s -0:05:50 -
+Rule	sol87	1987	only	-	Aug	8	12:05:40s -0:05:40 -
+Rule	sol87	1987	only	-	Aug	9	12:05:35s -0:05:35 -
+Rule	sol87	1987	only	-	Aug	10	12:05:25s -0:05:25 -
+Rule	sol87	1987	only	-	Aug	11	12:05:15s -0:05:15 -
+Rule	sol87	1987	only	-	Aug	12	12:05:05s -0:05:05 -
+Rule	sol87	1987	only	-	Aug	13	12:04:55s -0:04:55 -
+Rule	sol87	1987	only	-	Aug	14	12:04:45s -0:04:45 -
+Rule	sol87	1987	only	-	Aug	15	12:04:35s -0:04:35 -
+Rule	sol87	1987	only	-	Aug	16	12:04:25s -0:04:25 -
+Rule	sol87	1987	only	-	Aug	17	12:04:10s -0:04:10 -
+Rule	sol87	1987	only	-	Aug	18	12:04:00s -0:04:00 -
+Rule	sol87	1987	only	-	Aug	19	12:03:45s -0:03:45 -
+Rule	sol87	1987	only	-	Aug	20	12:03:30s -0:03:30 -
+Rule	sol87	1987	only	-	Aug	21	12:03:15s -0:03:15 -
+Rule	sol87	1987	only	-	Aug	22	12:03:00s -0:03:00 -
+Rule	sol87	1987	only	-	Aug	23	12:02:45s -0:02:45 -
+Rule	sol87	1987	only	-	Aug	24	12:02:30s -0:02:30 -
+Rule	sol87	1987	only	-	Aug	25	12:02:15s -0:02:15 -
+Rule	sol87	1987	only	-	Aug	26	12:02:00s -0:02:00 -
+Rule	sol87	1987	only	-	Aug	27	12:01:40s -0:01:40 -
+Rule	sol87	1987	only	-	Aug	28	12:01:25s -0:01:25 -
+Rule	sol87	1987	only	-	Aug	29	12:01:05s -0:01:05 -
+Rule	sol87	1987	only	-	Aug	30	12:00:50s -0:00:50 -
+Rule	sol87	1987	only	-	Aug	31	12:00:30s -0:00:30 -
+Rule	sol87	1987	only	-	Sep	1	12:00:10s -0:00:10 -
+Rule	sol87	1987	only	-	Sep	2	11:59:50s 0:00:10 -
+Rule	sol87	1987	only	-	Sep	3	11:59:35s 0:00:25 -
+Rule	sol87	1987	only	-	Sep	4	11:59:15s 0:00:45 -
+Rule	sol87	1987	only	-	Sep	5	11:58:55s 0:01:05 -
+Rule	sol87	1987	only	-	Sep	6	11:58:35s 0:01:25 -
+Rule	sol87	1987	only	-	Sep	7	11:58:15s 0:01:45 -
+Rule	sol87	1987	only	-	Sep	8	11:57:55s 0:02:05 -
+Rule	sol87	1987	only	-	Sep	9	11:57:30s 0:02:30 -
+Rule	sol87	1987	only	-	Sep	10	11:57:10s 0:02:50 -
+Rule	sol87	1987	only	-	Sep	11	11:56:50s 0:03:10 -
+Rule	sol87	1987	only	-	Sep	12	11:56:30s 0:03:30 -
+Rule	sol87	1987	only	-	Sep	13	11:56:10s 0:03:50 -
+Rule	sol87	1987	only	-	Sep	14	11:55:45s 0:04:15 -
+Rule	sol87	1987	only	-	Sep	15	11:55:25s 0:04:35 -
+Rule	sol87	1987	only	-	Sep	16	11:55:05s 0:04:55 -
+Rule	sol87	1987	only	-	Sep	17	11:54:45s 0:05:15 -
+Rule	sol87	1987	only	-	Sep	18	11:54:20s 0:05:40 -
+Rule	sol87	1987	only	-	Sep	19	11:54:00s 0:06:00 -
+Rule	sol87	1987	only	-	Sep	20	11:53:40s 0:06:20 -
+Rule	sol87	1987	only	-	Sep	21	11:53:15s 0:06:45 -
+Rule	sol87	1987	only	-	Sep	22	11:52:55s 0:07:05 -
+Rule	sol87	1987	only	-	Sep	23	11:52:35s 0:07:25 -
+Rule	sol87	1987	only	-	Sep	24	11:52:15s 0:07:45 -
+Rule	sol87	1987	only	-	Sep	25	11:51:55s 0:08:05 -
+Rule	sol87	1987	only	-	Sep	26	11:51:35s 0:08:25 -
+Rule	sol87	1987	only	-	Sep	27	11:51:10s 0:08:50 -
+Rule	sol87	1987	only	-	Sep	28	11:50:50s 0:09:10 -
+Rule	sol87	1987	only	-	Sep	29	11:50:30s 0:09:30 -
+Rule	sol87	1987	only	-	Sep	30	11:50:10s 0:09:50 -
+Rule	sol87	1987	only	-	Oct	1	11:49:50s 0:10:10 -
+Rule	sol87	1987	only	-	Oct	2	11:49:35s 0:10:25 -
+Rule	sol87	1987	only	-	Oct	3	11:49:15s 0:10:45 -
+Rule	sol87	1987	only	-	Oct	4	11:48:55s 0:11:05 -
+Rule	sol87	1987	only	-	Oct	5	11:48:35s 0:11:25 -
+Rule	sol87	1987	only	-	Oct	6	11:48:20s 0:11:40 -
+Rule	sol87	1987	only	-	Oct	7	11:48:00s 0:12:00 -
+Rule	sol87	1987	only	-	Oct	8	11:47:45s 0:12:15 -
+Rule	sol87	1987	only	-	Oct	9	11:47:25s 0:12:35 -
+Rule	sol87	1987	only	-	Oct	10	11:47:10s 0:12:50 -
+Rule	sol87	1987	only	-	Oct	11	11:46:55s 0:13:05 -
+Rule	sol87	1987	only	-	Oct	12	11:46:40s 0:13:20 -
+Rule	sol87	1987	only	-	Oct	13	11:46:25s 0:13:35 -
+Rule	sol87	1987	only	-	Oct	14	11:46:10s 0:13:50 -
+Rule	sol87	1987	only	-	Oct	15	11:45:55s 0:14:05 -
+Rule	sol87	1987	only	-	Oct	16	11:45:45s 0:14:15 -
+Rule	sol87	1987	only	-	Oct	17	11:45:30s 0:14:30 -
+Rule	sol87	1987	only	-	Oct	18	11:45:20s 0:14:40 -
+Rule	sol87	1987	only	-	Oct	19	11:45:05s 0:14:55 -
+Rule	sol87	1987	only	-	Oct	20	11:44:55s 0:15:05 -
+Rule	sol87	1987	only	-	Oct	21	11:44:45s 0:15:15 -
+Rule	sol87	1987	only	-	Oct	22	11:44:35s 0:15:25 -
+Rule	sol87	1987	only	-	Oct	23	11:44:25s 0:15:35 -
+Rule	sol87	1987	only	-	Oct	24	11:44:20s 0:15:40 -
+Rule	sol87	1987	only	-	Oct	25	11:44:10s 0:15:50 -
+Rule	sol87	1987	only	-	Oct	26	11:44:05s 0:15:55 -
+Rule	sol87	1987	only	-	Oct	27	11:43:55s 0:16:05 -
+Rule	sol87	1987	only	-	Oct	28	11:43:50s 0:16:10 -
+Rule	sol87	1987	only	-	Oct	29	11:43:45s 0:16:15 -
+Rule	sol87	1987	only	-	Oct	30	11:43:45s 0:16:15 -
+Rule	sol87	1987	only	-	Oct	31	11:43:40s 0:16:20 -
+Rule	sol87	1987	only	-	Nov	1	11:43:40s 0:16:20 -
+Rule	sol87	1987	only	-	Nov	2	11:43:35s 0:16:25 -
+Rule	sol87	1987	only	-	Nov	3	11:43:35s 0:16:25 -
+Rule	sol87	1987	only	-	Nov	4	11:43:35s 0:16:25 -
+Rule	sol87	1987	only	-	Nov	5	11:43:35s 0:16:25 -
+Rule	sol87	1987	only	-	Nov	6	11:43:40s 0:16:20 -
+Rule	sol87	1987	only	-	Nov	7	11:43:40s 0:16:20 -
+Rule	sol87	1987	only	-	Nov	8	11:43:45s 0:16:15 -
+Rule	sol87	1987	only	-	Nov	9	11:43:50s 0:16:10 -
+Rule	sol87	1987	only	-	Nov	10	11:43:55s 0:16:05 -
+Rule	sol87	1987	only	-	Nov	11	11:44:00s 0:16:00 -
+Rule	sol87	1987	only	-	Nov	12	11:44:05s 0:15:55 -
+Rule	sol87	1987	only	-	Nov	13	11:44:15s 0:15:45 -
+Rule	sol87	1987	only	-	Nov	14	11:44:20s 0:15:40 -
+Rule	sol87	1987	only	-	Nov	15	11:44:30s 0:15:30 -
+Rule	sol87	1987	only	-	Nov	16	11:44:40s 0:15:20 -
+Rule	sol87	1987	only	-	Nov	17	11:44:50s 0:15:10 -
+Rule	sol87	1987	only	-	Nov	18	11:45:05s 0:14:55 -
+Rule	sol87	1987	only	-	Nov	19	11:45:15s 0:14:45 -
+Rule	sol87	1987	only	-	Nov	20	11:45:30s 0:14:30 -
+Rule	sol87	1987	only	-	Nov	21	11:45:45s 0:14:15 -
+Rule	sol87	1987	only	-	Nov	22	11:46:00s 0:14:00 -
+Rule	sol87	1987	only	-	Nov	23	11:46:15s 0:13:45 -
+Rule	sol87	1987	only	-	Nov	24	11:46:30s 0:13:30 -
+Rule	sol87	1987	only	-	Nov	25	11:46:50s 0:13:10 -
+Rule	sol87	1987	only	-	Nov	26	11:47:10s 0:12:50 -
+Rule	sol87	1987	only	-	Nov	27	11:47:25s 0:12:35 -
+Rule	sol87	1987	only	-	Nov	28	11:47:45s 0:12:15 -
+Rule	sol87	1987	only	-	Nov	29	11:48:05s 0:11:55 -
+Rule	sol87	1987	only	-	Nov	30	11:48:30s 0:11:30 -
+Rule	sol87	1987	only	-	Dec	1	11:48:50s 0:11:10 -
+Rule	sol87	1987	only	-	Dec	2	11:49:10s 0:10:50 -
+Rule	sol87	1987	only	-	Dec	3	11:49:35s 0:10:25 -
+Rule	sol87	1987	only	-	Dec	4	11:50:00s 0:10:00 -
+Rule	sol87	1987	only	-	Dec	5	11:50:25s 0:09:35 -
+Rule	sol87	1987	only	-	Dec	6	11:50:50s 0:09:10 -
+Rule	sol87	1987	only	-	Dec	7	11:51:15s 0:08:45 -
+Rule	sol87	1987	only	-	Dec	8	11:51:40s 0:08:20 -
+Rule	sol87	1987	only	-	Dec	9	11:52:05s 0:07:55 -
+Rule	sol87	1987	only	-	Dec	10	11:52:30s 0:07:30 -
+Rule	sol87	1987	only	-	Dec	11	11:53:00s 0:07:00 -
+Rule	sol87	1987	only	-	Dec	12	11:53:25s 0:06:35 -
+Rule	sol87	1987	only	-	Dec	13	11:53:55s 0:06:05 -
+Rule	sol87	1987	only	-	Dec	14	11:54:25s 0:05:35 -
+Rule	sol87	1987	only	-	Dec	15	11:54:50s 0:05:10 -
+Rule	sol87	1987	only	-	Dec	16	11:55:20s 0:04:40 -
+Rule	sol87	1987	only	-	Dec	17	11:55:50s 0:04:10 -
+Rule	sol87	1987	only	-	Dec	18	11:56:20s 0:03:40 -
+Rule	sol87	1987	only	-	Dec	19	11:56:50s 0:03:10 -
+Rule	sol87	1987	only	-	Dec	20	11:57:20s 0:02:40 -
+Rule	sol87	1987	only	-	Dec	21	11:57:50s 0:02:10 -
+Rule	sol87	1987	only	-	Dec	22	11:58:20s 0:01:40 -
+Rule	sol87	1987	only	-	Dec	23	11:58:50s 0:01:10 -
+Rule	sol87	1987	only	-	Dec	24	11:59:20s 0:00:40 -
+Rule	sol87	1987	only	-	Dec	25	11:59:50s 0:00:10 -
+Rule	sol87	1987	only	-	Dec	26	12:00:20s -0:00:20 -
+Rule	sol87	1987	only	-	Dec	27	12:00:45s -0:00:45 -
+Rule	sol87	1987	only	-	Dec	28	12:01:15s -0:01:15 -
+Rule	sol87	1987	only	-	Dec	29	12:01:45s -0:01:45 -
+Rule	sol87	1987	only	-	Dec	30	12:02:15s -0:02:15 -
+Rule	sol87	1987	only	-	Dec	31	12:02:45s -0:02:45 -
+
+# Riyadh is at about 46 degrees 46 minutes East:  3 hrs, 7 mins, 4 secs
+# Before and after 1987, we'll operate on local mean solar time.
+
+# Zone	NAME		GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
+Zone	Asia/Riyadh87	3:07:04	-		zzz	1987
+			3:07:04	sol87		zzz	1988
+			3:07:04	-		zzz
+# For backward compatibility...
+Link	Asia/Riyadh87	Mideast/Riyadh87
diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/solar88 b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/solar88
new file mode 100644
index 0000000..005b3b8
--- /dev/null
+++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/solar88
@@ -0,0 +1,390 @@
+# 
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
+
+# Apparent noon times below are for Riyadh; they're a bit off for other places.
+# Times were computed using formulas in the U.S. Naval Observatory's
+# Almanac for Computers 1988; the formulas "will give EqT to an accuracy of
+# [plus or minus two] seconds during the current year."
+#
+# Rounding to the nearest five seconds results in fewer than
+# 256 different "time types"--a limit that's faced because time types are
+# stored on disk as unsigned chars.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	sol88	1988	only	-	Jan	1	12:03:15s -0:03:15 -
+Rule	sol88	1988	only	-	Jan	2	12:03:40s -0:03:40 -
+Rule	sol88	1988	only	-	Jan	3	12:04:10s -0:04:10 -
+Rule	sol88	1988	only	-	Jan	4	12:04:40s -0:04:40 -
+Rule	sol88	1988	only	-	Jan	5	12:05:05s -0:05:05 -
+Rule	sol88	1988	only	-	Jan	6	12:05:30s -0:05:30 -
+Rule	sol88	1988	only	-	Jan	7	12:06:00s -0:06:00 -
+Rule	sol88	1988	only	-	Jan	8	12:06:25s -0:06:25 -
+Rule	sol88	1988	only	-	Jan	9	12:06:50s -0:06:50 -
+Rule	sol88	1988	only	-	Jan	10	12:07:15s -0:07:15 -
+Rule	sol88	1988	only	-	Jan	11	12:07:40s -0:07:40 -
+Rule	sol88	1988	only	-	Jan	12	12:08:05s -0:08:05 -
+Rule	sol88	1988	only	-	Jan	13	12:08:25s -0:08:25 -
+Rule	sol88	1988	only	-	Jan	14	12:08:50s -0:08:50 -
+Rule	sol88	1988	only	-	Jan	15	12:09:10s -0:09:10 -
+Rule	sol88	1988	only	-	Jan	16	12:09:30s -0:09:30 -
+Rule	sol88	1988	only	-	Jan	17	12:09:50s -0:09:50 -
+Rule	sol88	1988	only	-	Jan	18	12:10:10s -0:10:10 -
+Rule	sol88	1988	only	-	Jan	19	12:10:30s -0:10:30 -
+Rule	sol88	1988	only	-	Jan	20	12:10:50s -0:10:50 -
+Rule	sol88	1988	only	-	Jan	21	12:11:05s -0:11:05 -
+Rule	sol88	1988	only	-	Jan	22	12:11:25s -0:11:25 -
+Rule	sol88	1988	only	-	Jan	23	12:11:40s -0:11:40 -
+Rule	sol88	1988	only	-	Jan	24	12:11:55s -0:11:55 -
+Rule	sol88	1988	only	-	Jan	25	12:12:10s -0:12:10 -
+Rule	sol88	1988	only	-	Jan	26	12:12:25s -0:12:25 -
+Rule	sol88	1988	only	-	Jan	27	12:12:40s -0:12:40 -
+Rule	sol88	1988	only	-	Jan	28	12:12:50s -0:12:50 -
+Rule	sol88	1988	only	-	Jan	29	12:13:00s -0:13:00 -
+Rule	sol88	1988	only	-	Jan	30	12:13:10s -0:13:10 -
+Rule	sol88	1988	only	-	Jan	31	12:13:20s -0:13:20 -
+Rule	sol88	1988	only	-	Feb	1	12:13:30s -0:13:30 -
+Rule	sol88	1988	only	-	Feb	2	12:13:40s -0:13:40 -
+Rule	sol88	1988	only	-	Feb	3	12:13:45s -0:13:45 -
+Rule	sol88	1988	only	-	Feb	4	12:13:55s -0:13:55 -
+Rule	sol88	1988	only	-	Feb	5	12:14:00s -0:14:00 -
+Rule	sol88	1988	only	-	Feb	6	12:14:05s -0:14:05 -
+Rule	sol88	1988	only	-	Feb	7	12:14:10s -0:14:10 -
+Rule	sol88	1988	only	-	Feb	8	12:14:10s -0:14:10 -
+Rule	sol88	1988	only	-	Feb	9	12:14:15s -0:14:15 -
+Rule	sol88	1988	only	-	Feb	10	12:14:15s -0:14:15 -
+Rule	sol88	1988	only	-	Feb	11	12:14:15s -0:14:15 -
+Rule	sol88	1988	only	-	Feb	12	12:14:15s -0:14:15 -
+Rule	sol88	1988	only	-	Feb	13	12:14:15s -0:14:15 -
+Rule	sol88	1988	only	-	Feb	14	12:14:15s -0:14:15 -
+Rule	sol88	1988	only	-	Feb	15	12:14:10s -0:14:10 -
+Rule	sol88	1988	only	-	Feb	16	12:14:10s -0:14:10 -
+Rule	sol88	1988	only	-	Feb	17	12:14:05s -0:14:05 -
+Rule	sol88	1988	only	-	Feb	18	12:14:00s -0:14:00 -
+Rule	sol88	1988	only	-	Feb	19	12:13:55s -0:13:55 -
+Rule	sol88	1988	only	-	Feb	20	12:13:50s -0:13:50 -
+Rule	sol88	1988	only	-	Feb	21	12:13:45s -0:13:45 -
+Rule	sol88	1988	only	-	Feb	22	12:13:40s -0:13:40 -
+Rule	sol88	1988	only	-	Feb	23	12:13:30s -0:13:30 -
+Rule	sol88	1988	only	-	Feb	24	12:13:20s -0:13:20 -
+Rule	sol88	1988	only	-	Feb	25	12:13:15s -0:13:15 -
+Rule	sol88	1988	only	-	Feb	26	12:13:05s -0:13:05 -
+Rule	sol88	1988	only	-	Feb	27	12:12:55s -0:12:55 -
+Rule	sol88	1988	only	-	Feb	28	12:12:45s -0:12:45 -
+Rule	sol88	1988	only	-	Feb	29	12:12:30s -0:12:30 -
+Rule	sol88	1988	only	-	Mar	1	12:12:20s -0:12:20 -
+Rule	sol88	1988	only	-	Mar	2	12:12:10s -0:12:10 -
+Rule	sol88	1988	only	-	Mar	3	12:11:55s -0:11:55 -
+Rule	sol88	1988	only	-	Mar	4	12:11:45s -0:11:45 -
+Rule	sol88	1988	only	-	Mar	5	12:11:30s -0:11:30 -
+Rule	sol88	1988	only	-	Mar	6	12:11:15s -0:11:15 -
+Rule	sol88	1988	only	-	Mar	7	12:11:00s -0:11:00 -
+Rule	sol88	1988	only	-	Mar	8	12:10:45s -0:10:45 -
+Rule	sol88	1988	only	-	Mar	9	12:10:30s -0:10:30 -
+Rule	sol88	1988	only	-	Mar	10	12:10:15s -0:10:15 -
+Rule	sol88	1988	only	-	Mar	11	12:10:00s -0:10:00 -
+Rule	sol88	1988	only	-	Mar	12	12:09:45s -0:09:45 -
+Rule	sol88	1988	only	-	Mar	13	12:09:30s -0:09:30 -
+Rule	sol88	1988	only	-	Mar	14	12:09:10s -0:09:10 -
+Rule	sol88	1988	only	-	Mar	15	12:08:55s -0:08:55 -
+Rule	sol88	1988	only	-	Mar	16	12:08:40s -0:08:40 -
+Rule	sol88	1988	only	-	Mar	17	12:08:20s -0:08:20 -
+Rule	sol88	1988	only	-	Mar	18	12:08:05s -0:08:05 -
+Rule	sol88	1988	only	-	Mar	19	12:07:45s -0:07:45 -
+Rule	sol88	1988	only	-	Mar	20	12:07:30s -0:07:30 -
+Rule	sol88	1988	only	-	Mar	21	12:07:10s -0:07:10 -
+Rule	sol88	1988	only	-	Mar	22	12:06:50s -0:06:50 -
+Rule	sol88	1988	only	-	Mar	23	12:06:35s -0:06:35 -
+Rule	sol88	1988	only	-	Mar	24	12:06:15s -0:06:15 -
+Rule	sol88	1988	only	-	Mar	25	12:06:00s -0:06:00 -
+Rule	sol88	1988	only	-	Mar	26	12:05:40s -0:05:40 -
+Rule	sol88	1988	only	-	Mar	27	12:05:20s -0:05:20 -
+Rule	sol88	1988	only	-	Mar	28	12:05:05s -0:05:05 -
+Rule	sol88	1988	only	-	Mar	29	12:04:45s -0:04:45 -
+Rule	sol88	1988	only	-	Mar	30	12:04:25s -0:04:25 -
+Rule	sol88	1988	only	-	Mar	31	12:04:10s -0:04:10 -
+Rule	sol88	1988	only	-	Apr	1	12:03:50s -0:03:50 -
+Rule	sol88	1988	only	-	Apr	2	12:03:35s -0:03:35 -
+Rule	sol88	1988	only	-	Apr	3	12:03:15s -0:03:15 -
+Rule	sol88	1988	only	-	Apr	4	12:03:00s -0:03:00 -
+Rule	sol88	1988	only	-	Apr	5	12:02:40s -0:02:40 -
+Rule	sol88	1988	only	-	Apr	6	12:02:25s -0:02:25 -
+Rule	sol88	1988	only	-	Apr	7	12:02:05s -0:02:05 -
+Rule	sol88	1988	only	-	Apr	8	12:01:50s -0:01:50 -
+Rule	sol88	1988	only	-	Apr	9	12:01:35s -0:01:35 -
+Rule	sol88	1988	only	-	Apr	10	12:01:15s -0:01:15 -
+Rule	sol88	1988	only	-	Apr	11	12:01:00s -0:01:00 -
+Rule	sol88	1988	only	-	Apr	12	12:00:45s -0:00:45 -
+Rule	sol88	1988	only	-	Apr	13	12:00:30s -0:00:30 -
+Rule	sol88	1988	only	-	Apr	14	12:00:15s -0:00:15 -
+Rule	sol88	1988	only	-	Apr	15	12:00:00s 0:00:00 -
+Rule	sol88	1988	only	-	Apr	16	11:59:45s 0:00:15 -
+Rule	sol88	1988	only	-	Apr	17	11:59:30s 0:00:30 -
+Rule	sol88	1988	only	-	Apr	18	11:59:20s 0:00:40 -
+Rule	sol88	1988	only	-	Apr	19	11:59:05s 0:00:55 -
+Rule	sol88	1988	only	-	Apr	20	11:58:55s 0:01:05 -
+Rule	sol88	1988	only	-	Apr	21	11:58:40s 0:01:20 -
+Rule	sol88	1988	only	-	Apr	22	11:58:30s 0:01:30 -
+Rule	sol88	1988	only	-	Apr	23	11:58:15s 0:01:45 -
+Rule	sol88	1988	only	-	Apr	24	11:58:05s 0:01:55 -
+Rule	sol88	1988	only	-	Apr	25	11:57:55s 0:02:05 -
+Rule	sol88	1988	only	-	Apr	26	11:57:45s 0:02:15 -
+Rule	sol88	1988	only	-	Apr	27	11:57:35s 0:02:25 -
+Rule	sol88	1988	only	-	Apr	28	11:57:30s 0:02:30 -
+Rule	sol88	1988	only	-	Apr	29	11:57:20s 0:02:40 -
+Rule	sol88	1988	only	-	Apr	30	11:57:10s 0:02:50 -
+Rule	sol88	1988	only	-	May	1	11:57:05s 0:02:55 -
+Rule	sol88	1988	only	-	May	2	11:56:55s 0:03:05 -
+Rule	sol88	1988	only	-	May	3	11:56:50s 0:03:10 -
+Rule	sol88	1988	only	-	May	4	11:56:45s 0:03:15 -
+Rule	sol88	1988	only	-	May	5	11:56:40s 0:03:20 -
+Rule	sol88	1988	only	-	May	6	11:56:35s 0:03:25 -
+Rule	sol88	1988	only	-	May	7	11:56:30s 0:03:30 -
+Rule	sol88	1988	only	-	May	8	11:56:25s 0:03:35 -
+Rule	sol88	1988	only	-	May	9	11:56:25s 0:03:35 -
+Rule	sol88	1988	only	-	May	10	11:56:20s 0:03:40 -
+Rule	sol88	1988	only	-	May	11	11:56:20s 0:03:40 -
+Rule	sol88	1988	only	-	May	12	11:56:20s 0:03:40 -
+Rule	sol88	1988	only	-	May	13	11:56:20s 0:03:40 -
+Rule	sol88	1988	only	-	May	14	11:56:20s 0:03:40 -
+Rule	sol88	1988	only	-	May	15	11:56:20s 0:03:40 -
+Rule	sol88	1988	only	-	May	16	11:56:20s 0:03:40 -
+Rule	sol88	1988	only	-	May	17	11:56:20s 0:03:40 -
+Rule	sol88	1988	only	-	May	18	11:56:25s 0:03:35 -
+Rule	sol88	1988	only	-	May	19	11:56:25s 0:03:35 -
+Rule	sol88	1988	only	-	May	20	11:56:30s 0:03:30 -
+Rule	sol88	1988	only	-	May	21	11:56:35s 0:03:25 -
+Rule	sol88	1988	only	-	May	22	11:56:40s 0:03:20 -
+Rule	sol88	1988	only	-	May	23	11:56:45s 0:03:15 -
+Rule	sol88	1988	only	-	May	24	11:56:50s 0:03:10 -
+Rule	sol88	1988	only	-	May	25	11:56:55s 0:03:05 -
+Rule	sol88	1988	only	-	May	26	11:57:00s 0:03:00 -
+Rule	sol88	1988	only	-	May	27	11:57:05s 0:02:55 -
+Rule	sol88	1988	only	-	May	28	11:57:15s 0:02:45 -
+Rule	sol88	1988	only	-	May	29	11:57:20s 0:02:40 -
+Rule	sol88	1988	only	-	May	30	11:57:30s 0:02:30 -
+Rule	sol88	1988	only	-	May	31	11:57:40s 0:02:20 -
+Rule	sol88	1988	only	-	Jun	1	11:57:50s 0:02:10 -
+Rule	sol88	1988	only	-	Jun	2	11:57:55s 0:02:05 -
+Rule	sol88	1988	only	-	Jun	3	11:58:05s 0:01:55 -
+Rule	sol88	1988	only	-	Jun	4	11:58:15s 0:01:45 -
+Rule	sol88	1988	only	-	Jun	5	11:58:30s 0:01:30 -
+Rule	sol88	1988	only	-	Jun	6	11:58:40s 0:01:20 -
+Rule	sol88	1988	only	-	Jun	7	11:58:50s 0:01:10 -
+Rule	sol88	1988	only	-	Jun	8	11:59:00s 0:01:00 -
+Rule	sol88	1988	only	-	Jun	9	11:59:15s 0:00:45 -
+Rule	sol88	1988	only	-	Jun	10	11:59:25s 0:00:35 -
+Rule	sol88	1988	only	-	Jun	11	11:59:35s 0:00:25 -
+Rule	sol88	1988	only	-	Jun	12	11:59:50s 0:00:10 -
+Rule	sol88	1988	only	-	Jun	13	12:00:00s 0:00:00 -
+Rule	sol88	1988	only	-	Jun	14	12:00:15s -0:00:15 -
+Rule	sol88	1988	only	-	Jun	15	12:00:25s -0:00:25 -
+Rule	sol88	1988	only	-	Jun	16	12:00:40s -0:00:40 -
+Rule	sol88	1988	only	-	Jun	17	12:00:55s -0:00:55 -
+Rule	sol88	1988	only	-	Jun	18	12:01:05s -0:01:05 -
+Rule	sol88	1988	only	-	Jun	19	12:01:20s -0:01:20 -
+Rule	sol88	1988	only	-	Jun	20	12:01:30s -0:01:30 -
+Rule	sol88	1988	only	-	Jun	21	12:01:45s -0:01:45 -
+Rule	sol88	1988	only	-	Jun	22	12:02:00s -0:02:00 -
+Rule	sol88	1988	only	-	Jun	23	12:02:10s -0:02:10 -
+Rule	sol88	1988	only	-	Jun	24	12:02:25s -0:02:25 -
+Rule	sol88	1988	only	-	Jun	25	12:02:35s -0:02:35 -
+Rule	sol88	1988	only	-	Jun	26	12:02:50s -0:02:50 -
+Rule	sol88	1988	only	-	Jun	27	12:03:00s -0:03:00 -
+Rule	sol88	1988	only	-	Jun	28	12:03:15s -0:03:15 -
+Rule	sol88	1988	only	-	Jun	29	12:03:25s -0:03:25 -
+Rule	sol88	1988	only	-	Jun	30	12:03:40s -0:03:40 -
+Rule	sol88	1988	only	-	Jul	1	12:03:50s -0:03:50 -
+Rule	sol88	1988	only	-	Jul	2	12:04:00s -0:04:00 -
+Rule	sol88	1988	only	-	Jul	3	12:04:10s -0:04:10 -
+Rule	sol88	1988	only	-	Jul	4	12:04:25s -0:04:25 -
+Rule	sol88	1988	only	-	Jul	5	12:04:35s -0:04:35 -
+Rule	sol88	1988	only	-	Jul	6	12:04:45s -0:04:45 -
+Rule	sol88	1988	only	-	Jul	7	12:04:55s -0:04:55 -
+Rule	sol88	1988	only	-	Jul	8	12:05:05s -0:05:05 -
+Rule	sol88	1988	only	-	Jul	9	12:05:10s -0:05:10 -
+Rule	sol88	1988	only	-	Jul	10	12:05:20s -0:05:20 -
+Rule	sol88	1988	only	-	Jul	11	12:05:30s -0:05:30 -
+Rule	sol88	1988	only	-	Jul	12	12:05:35s -0:05:35 -
+Rule	sol88	1988	only	-	Jul	13	12:05:45s -0:05:45 -
+Rule	sol88	1988	only	-	Jul	14	12:05:50s -0:05:50 -
+Rule	sol88	1988	only	-	Jul	15	12:05:55s -0:05:55 -
+Rule	sol88	1988	only	-	Jul	16	12:06:00s -0:06:00 -
+Rule	sol88	1988	only	-	Jul	17	12:06:05s -0:06:05 -
+Rule	sol88	1988	only	-	Jul	18	12:06:10s -0:06:10 -
+Rule	sol88	1988	only	-	Jul	19	12:06:15s -0:06:15 -
+Rule	sol88	1988	only	-	Jul	20	12:06:20s -0:06:20 -
+Rule	sol88	1988	only	-	Jul	21	12:06:25s -0:06:25 -
+Rule	sol88	1988	only	-	Jul	22	12:06:25s -0:06:25 -
+Rule	sol88	1988	only	-	Jul	23	12:06:25s -0:06:25 -
+Rule	sol88	1988	only	-	Jul	24	12:06:30s -0:06:30 -
+Rule	sol88	1988	only	-	Jul	25	12:06:30s -0:06:30 -
+Rule	sol88	1988	only	-	Jul	26	12:06:30s -0:06:30 -
+Rule	sol88	1988	only	-	Jul	27	12:06:30s -0:06:30 -
+Rule	sol88	1988	only	-	Jul	28	12:06:30s -0:06:30 -
+Rule	sol88	1988	only	-	Jul	29	12:06:25s -0:06:25 -
+Rule	sol88	1988	only	-	Jul	30	12:06:25s -0:06:25 -
+Rule	sol88	1988	only	-	Jul	31	12:06:20s -0:06:20 -
+Rule	sol88	1988	only	-	Aug	1	12:06:15s -0:06:15 -
+Rule	sol88	1988	only	-	Aug	2	12:06:15s -0:06:15 -
+Rule	sol88	1988	only	-	Aug	3	12:06:10s -0:06:10 -
+Rule	sol88	1988	only	-	Aug	4	12:06:05s -0:06:05 -
+Rule	sol88	1988	only	-	Aug	5	12:05:55s -0:05:55 -
+Rule	sol88	1988	only	-	Aug	6	12:05:50s -0:05:50 -
+Rule	sol88	1988	only	-	Aug	7	12:05:45s -0:05:45 -
+Rule	sol88	1988	only	-	Aug	8	12:05:35s -0:05:35 -
+Rule	sol88	1988	only	-	Aug	9	12:05:25s -0:05:25 -
+Rule	sol88	1988	only	-	Aug	10	12:05:20s -0:05:20 -
+Rule	sol88	1988	only	-	Aug	11	12:05:10s -0:05:10 -
+Rule	sol88	1988	only	-	Aug	12	12:05:00s -0:05:00 -
+Rule	sol88	1988	only	-	Aug	13	12:04:50s -0:04:50 -
+Rule	sol88	1988	only	-	Aug	14	12:04:35s -0:04:35 -
+Rule	sol88	1988	only	-	Aug	15	12:04:25s -0:04:25 -
+Rule	sol88	1988	only	-	Aug	16	12:04:15s -0:04:15 -
+Rule	sol88	1988	only	-	Aug	17	12:04:00s -0:04:00 -
+Rule	sol88	1988	only	-	Aug	18	12:03:50s -0:03:50 -
+Rule	sol88	1988	only	-	Aug	19	12:03:35s -0:03:35 -
+Rule	sol88	1988	only	-	Aug	20	12:03:20s -0:03:20 -
+Rule	sol88	1988	only	-	Aug	21	12:03:05s -0:03:05 -
+Rule	sol88	1988	only	-	Aug	22	12:02:50s -0:02:50 -
+Rule	sol88	1988	only	-	Aug	23	12:02:35s -0:02:35 -
+Rule	sol88	1988	only	-	Aug	24	12:02:20s -0:02:20 -
+Rule	sol88	1988	only	-	Aug	25	12:02:00s -0:02:00 -
+Rule	sol88	1988	only	-	Aug	26	12:01:45s -0:01:45 -
+Rule	sol88	1988	only	-	Aug	27	12:01:30s -0:01:30 -
+Rule	sol88	1988	only	-	Aug	28	12:01:10s -0:01:10 -
+Rule	sol88	1988	only	-	Aug	29	12:00:50s -0:00:50 -
+Rule	sol88	1988	only	-	Aug	30	12:00:35s -0:00:35 -
+Rule	sol88	1988	only	-	Aug	31	12:00:15s -0:00:15 -
+Rule	sol88	1988	only	-	Sep	1	11:59:55s 0:00:05 -
+Rule	sol88	1988	only	-	Sep	2	11:59:35s 0:00:25 -
+Rule	sol88	1988	only	-	Sep	3	11:59:20s 0:00:40 -
+Rule	sol88	1988	only	-	Sep	4	11:59:00s 0:01:00 -
+Rule	sol88	1988	only	-	Sep	5	11:58:40s 0:01:20 -
+Rule	sol88	1988	only	-	Sep	6	11:58:20s 0:01:40 -
+Rule	sol88	1988	only	-	Sep	7	11:58:00s 0:02:00 -
+Rule	sol88	1988	only	-	Sep	8	11:57:35s 0:02:25 -
+Rule	sol88	1988	only	-	Sep	9	11:57:15s 0:02:45 -
+Rule	sol88	1988	only	-	Sep	10	11:56:55s 0:03:05 -
+Rule	sol88	1988	only	-	Sep	11	11:56:35s 0:03:25 -
+Rule	sol88	1988	only	-	Sep	12	11:56:15s 0:03:45 -
+Rule	sol88	1988	only	-	Sep	13	11:55:50s 0:04:10 -
+Rule	sol88	1988	only	-	Sep	14	11:55:30s 0:04:30 -
+Rule	sol88	1988	only	-	Sep	15	11:55:10s 0:04:50 -
+Rule	sol88	1988	only	-	Sep	16	11:54:50s 0:05:10 -
+Rule	sol88	1988	only	-	Sep	17	11:54:25s 0:05:35 -
+Rule	sol88	1988	only	-	Sep	18	11:54:05s 0:05:55 -
+Rule	sol88	1988	only	-	Sep	19	11:53:45s 0:06:15 -
+Rule	sol88	1988	only	-	Sep	20	11:53:25s 0:06:35 -
+Rule	sol88	1988	only	-	Sep	21	11:53:00s 0:07:00 -
+Rule	sol88	1988	only	-	Sep	22	11:52:40s 0:07:20 -
+Rule	sol88	1988	only	-	Sep	23	11:52:20s 0:07:40 -
+Rule	sol88	1988	only	-	Sep	24	11:52:00s 0:08:00 -
+Rule	sol88	1988	only	-	Sep	25	11:51:40s 0:08:20 -
+Rule	sol88	1988	only	-	Sep	26	11:51:15s 0:08:45 -
+Rule	sol88	1988	only	-	Sep	27	11:50:55s 0:09:05 -
+Rule	sol88	1988	only	-	Sep	28	11:50:35s 0:09:25 -
+Rule	sol88	1988	only	-	Sep	29	11:50:15s 0:09:45 -
+Rule	sol88	1988	only	-	Sep	30	11:49:55s 0:10:05 -
+Rule	sol88	1988	only	-	Oct	1	11:49:35s 0:10:25 -
+Rule	sol88	1988	only	-	Oct	2	11:49:20s 0:10:40 -
+Rule	sol88	1988	only	-	Oct	3	11:49:00s 0:11:00 -
+Rule	sol88	1988	only	-	Oct	4	11:48:40s 0:11:20 -
+Rule	sol88	1988	only	-	Oct	5	11:48:25s 0:11:35 -
+Rule	sol88	1988	only	-	Oct	6	11:48:05s 0:11:55 -
+Rule	sol88	1988	only	-	Oct	7	11:47:50s 0:12:10 -
+Rule	sol88	1988	only	-	Oct	8	11:47:30s 0:12:30 -
+Rule	sol88	1988	only	-	Oct	9	11:47:15s 0:12:45 -
+Rule	sol88	1988	only	-	Oct	10	11:47:00s 0:13:00 -
+Rule	sol88	1988	only	-	Oct	11	11:46:45s 0:13:15 -
+Rule	sol88	1988	only	-	Oct	12	11:46:30s 0:13:30 -
+Rule	sol88	1988	only	-	Oct	13	11:46:15s 0:13:45 -
+Rule	sol88	1988	only	-	Oct	14	11:46:00s 0:14:00 -
+Rule	sol88	1988	only	-	Oct	15	11:45:45s 0:14:15 -
+Rule	sol88	1988	only	-	Oct	16	11:45:35s 0:14:25 -
+Rule	sol88	1988	only	-	Oct	17	11:45:20s 0:14:40 -
+Rule	sol88	1988	only	-	Oct	18	11:45:10s 0:14:50 -
+Rule	sol88	1988	only	-	Oct	19	11:45:00s 0:15:00 -
+Rule	sol88	1988	only	-	Oct	20	11:44:45s 0:15:15 -
+Rule	sol88	1988	only	-	Oct	21	11:44:40s 0:15:20 -
+Rule	sol88	1988	only	-	Oct	22	11:44:30s 0:15:30 -
+Rule	sol88	1988	only	-	Oct	23	11:44:20s 0:15:40 -
+Rule	sol88	1988	only	-	Oct	24	11:44:10s 0:15:50 -
+Rule	sol88	1988	only	-	Oct	25	11:44:05s 0:15:55 -
+Rule	sol88	1988	only	-	Oct	26	11:44:00s 0:16:00 -
+Rule	sol88	1988	only	-	Oct	27	11:43:55s 0:16:05 -
+Rule	sol88	1988	only	-	Oct	28	11:43:50s 0:16:10 -
+Rule	sol88	1988	only	-	Oct	29	11:43:45s 0:16:15 -
+Rule	sol88	1988	only	-	Oct	30	11:43:40s 0:16:20 -
+Rule	sol88	1988	only	-	Oct	31	11:43:40s 0:16:20 -
+Rule	sol88	1988	only	-	Nov	1	11:43:35s 0:16:25 -
+Rule	sol88	1988	only	-	Nov	2	11:43:35s 0:16:25 -
+Rule	sol88	1988	only	-	Nov	3	11:43:35s 0:16:25 -
+Rule	sol88	1988	only	-	Nov	4	11:43:35s 0:16:25 -
+Rule	sol88	1988	only	-	Nov	5	11:43:40s 0:16:20 -
+Rule	sol88	1988	only	-	Nov	6	11:43:40s 0:16:20 -
+Rule	sol88	1988	only	-	Nov	7	11:43:45s 0:16:15 -
+Rule	sol88	1988	only	-	Nov	8	11:43:45s 0:16:15 -
+Rule	sol88	1988	only	-	Nov	9	11:43:50s 0:16:10 -
+Rule	sol88	1988	only	-	Nov	10	11:44:00s 0:16:00 -
+Rule	sol88	1988	only	-	Nov	11	11:44:05s 0:15:55 -
+Rule	sol88	1988	only	-	Nov	12	11:44:10s 0:15:50 -
+Rule	sol88	1988	only	-	Nov	13	11:44:20s 0:15:40 -
+Rule	sol88	1988	only	-	Nov	14	11:44:30s 0:15:30 -
+Rule	sol88	1988	only	-	Nov	15	11:44:40s 0:15:20 -
+Rule	sol88	1988	only	-	Nov	16	11:44:50s 0:15:10 -
+Rule	sol88	1988	only	-	Nov	17	11:45:00s 0:15:00 -
+Rule	sol88	1988	only	-	Nov	18	11:45:15s 0:14:45 -
+Rule	sol88	1988	only	-	Nov	19	11:45:25s 0:14:35 -
+Rule	sol88	1988	only	-	Nov	20	11:45:40s 0:14:20 -
+Rule	sol88	1988	only	-	Nov	21	11:45:55s 0:14:05 -
+Rule	sol88	1988	only	-	Nov	22	11:46:10s 0:13:50 -
+Rule	sol88	1988	only	-	Nov	23	11:46:30s 0:13:30 -
+Rule	sol88	1988	only	-	Nov	24	11:46:45s 0:13:15 -
+Rule	sol88	1988	only	-	Nov	25	11:47:05s 0:12:55 -
+Rule	sol88	1988	only	-	Nov	26	11:47:20s 0:12:40 -
+Rule	sol88	1988	only	-	Nov	27	11:47:40s 0:12:20 -
+Rule	sol88	1988	only	-	Nov	28	11:48:00s 0:12:00 -
+Rule	sol88	1988	only	-	Nov	29	11:48:25s 0:11:35 -
+Rule	sol88	1988	only	-	Nov	30	11:48:45s 0:11:15 -
+Rule	sol88	1988	only	-	Dec	1	11:49:05s 0:10:55 -
+Rule	sol88	1988	only	-	Dec	2	11:49:30s 0:10:30 -
+Rule	sol88	1988	only	-	Dec	3	11:49:55s 0:10:05 -
+Rule	sol88	1988	only	-	Dec	4	11:50:15s 0:09:45 -
+Rule	sol88	1988	only	-	Dec	5	11:50:40s 0:09:20 -
+Rule	sol88	1988	only	-	Dec	6	11:51:05s 0:08:55 -
+Rule	sol88	1988	only	-	Dec	7	11:51:35s 0:08:25 -
+Rule	sol88	1988	only	-	Dec	8	11:52:00s 0:08:00 -
+Rule	sol88	1988	only	-	Dec	9	11:52:25s 0:07:35 -
+Rule	sol88	1988	only	-	Dec	10	11:52:55s 0:07:05 -
+Rule	sol88	1988	only	-	Dec	11	11:53:20s 0:06:40 -
+Rule	sol88	1988	only	-	Dec	12	11:53:50s 0:06:10 -
+Rule	sol88	1988	only	-	Dec	13	11:54:15s 0:05:45 -
+Rule	sol88	1988	only	-	Dec	14	11:54:45s 0:05:15 -
+Rule	sol88	1988	only	-	Dec	15	11:55:15s 0:04:45 -
+Rule	sol88	1988	only	-	Dec	16	11:55:45s 0:04:15 -
+Rule	sol88	1988	only	-	Dec	17	11:56:15s 0:03:45 -
+Rule	sol88	1988	only	-	Dec	18	11:56:40s 0:03:20 -
+Rule	sol88	1988	only	-	Dec	19	11:57:10s 0:02:50 -
+Rule	sol88	1988	only	-	Dec	20	11:57:40s 0:02:20 -
+Rule	sol88	1988	only	-	Dec	21	11:58:10s 0:01:50 -
+Rule	sol88	1988	only	-	Dec	22	11:58:40s 0:01:20 -
+Rule	sol88	1988	only	-	Dec	23	11:59:10s 0:00:50 -
+Rule	sol88	1988	only	-	Dec	24	11:59:40s 0:00:20 -
+Rule	sol88	1988	only	-	Dec	25	12:00:10s -0:00:10 -
+Rule	sol88	1988	only	-	Dec	26	12:00:40s -0:00:40 -
+Rule	sol88	1988	only	-	Dec	27	12:01:10s -0:01:10 -
+Rule	sol88	1988	only	-	Dec	28	12:01:40s -0:01:40 -
+Rule	sol88	1988	only	-	Dec	29	12:02:10s -0:02:10 -
+Rule	sol88	1988	only	-	Dec	30	12:02:35s -0:02:35 -
+Rule	sol88	1988	only	-	Dec	31	12:03:05s -0:03:05 -
+
+# Riyadh is at about 46 degrees 46 minutes East:  3 hrs, 7 mins, 4 secs
+# Before and after 1988, we'll operate on local mean solar time.
+
+# Zone	NAME		GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
+Zone	Asia/Riyadh88	3:07:04	-		zzz	1988
+			3:07:04	sol88		zzz	1989
+			3:07:04	-		zzz
+# For backward compatibility...
+Link	Asia/Riyadh88	Mideast/Riyadh88
diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/solar89 b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/solar89
new file mode 100644
index 0000000..f56e1ad
--- /dev/null
+++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/solar89
@@ -0,0 +1,395 @@
+# 
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
+
+# Apparent noon times below are for Riyadh; they're a bit off for other places.
+# Times were computed using a formula provided by the U. S. Naval Observatory:
+#	eqt = -105.8 * sin(l) + 596.2 * sin(2 * l) + 4.4 * sin(3 * l)
+#		-12.7 * sin(4 * l) - 429.0 * cos(l) - 2.1 * cos (2 * l)
+#		+ 19.3 * cos(3 * l);
+# where l is the "mean longitude of the Sun" given by
+#	l = 279.642 degrees + 0.985647 * d
+# and d is the interval in days from January 0, 0 hours Universal Time
+# (equaling the day of the year plus the fraction of a day from zero hours).
+# The accuracy of the formula is plus or minus three seconds.
+#
+# Rounding to the nearest five seconds results in fewer than
+# 256 different "time types"--a limit that's faced because time types are
+# stored on disk as unsigned chars.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	sol89	1989	only	-	Jan	1	12:03:35s -0:03:35 -
+Rule	sol89	1989	only	-	Jan	2	12:04:05s -0:04:05 -
+Rule	sol89	1989	only	-	Jan	3	12:04:30s -0:04:30 -
+Rule	sol89	1989	only	-	Jan	4	12:05:00s -0:05:00 -
+Rule	sol89	1989	only	-	Jan	5	12:05:25s -0:05:25 -
+Rule	sol89	1989	only	-	Jan	6	12:05:50s -0:05:50 -
+Rule	sol89	1989	only	-	Jan	7	12:06:15s -0:06:15 -
+Rule	sol89	1989	only	-	Jan	8	12:06:45s -0:06:45 -
+Rule	sol89	1989	only	-	Jan	9	12:07:10s -0:07:10 -
+Rule	sol89	1989	only	-	Jan	10	12:07:35s -0:07:35 -
+Rule	sol89	1989	only	-	Jan	11	12:07:55s -0:07:55 -
+Rule	sol89	1989	only	-	Jan	12	12:08:20s -0:08:20 -
+Rule	sol89	1989	only	-	Jan	13	12:08:45s -0:08:45 -
+Rule	sol89	1989	only	-	Jan	14	12:09:05s -0:09:05 -
+Rule	sol89	1989	only	-	Jan	15	12:09:25s -0:09:25 -
+Rule	sol89	1989	only	-	Jan	16	12:09:45s -0:09:45 -
+Rule	sol89	1989	only	-	Jan	17	12:10:05s -0:10:05 -
+Rule	sol89	1989	only	-	Jan	18	12:10:25s -0:10:25 -
+Rule	sol89	1989	only	-	Jan	19	12:10:45s -0:10:45 -
+Rule	sol89	1989	only	-	Jan	20	12:11:05s -0:11:05 -
+Rule	sol89	1989	only	-	Jan	21	12:11:20s -0:11:20 -
+Rule	sol89	1989	only	-	Jan	22	12:11:35s -0:11:35 -
+Rule	sol89	1989	only	-	Jan	23	12:11:55s -0:11:55 -
+Rule	sol89	1989	only	-	Jan	24	12:12:10s -0:12:10 -
+Rule	sol89	1989	only	-	Jan	25	12:12:20s -0:12:20 -
+Rule	sol89	1989	only	-	Jan	26	12:12:35s -0:12:35 -
+Rule	sol89	1989	only	-	Jan	27	12:12:50s -0:12:50 -
+Rule	sol89	1989	only	-	Jan	28	12:13:00s -0:13:00 -
+Rule	sol89	1989	only	-	Jan	29	12:13:10s -0:13:10 -
+Rule	sol89	1989	only	-	Jan	30	12:13:20s -0:13:20 -
+Rule	sol89	1989	only	-	Jan	31	12:13:30s -0:13:30 -
+Rule	sol89	1989	only	-	Feb	1	12:13:40s -0:13:40 -
+Rule	sol89	1989	only	-	Feb	2	12:13:45s -0:13:45 -
+Rule	sol89	1989	only	-	Feb	3	12:13:55s -0:13:55 -
+Rule	sol89	1989	only	-	Feb	4	12:14:00s -0:14:00 -
+Rule	sol89	1989	only	-	Feb	5	12:14:05s -0:14:05 -
+Rule	sol89	1989	only	-	Feb	6	12:14:10s -0:14:10 -
+Rule	sol89	1989	only	-	Feb	7	12:14:10s -0:14:10 -
+Rule	sol89	1989	only	-	Feb	8	12:14:15s -0:14:15 -
+Rule	sol89	1989	only	-	Feb	9	12:14:15s -0:14:15 -
+Rule	sol89	1989	only	-	Feb	10	12:14:20s -0:14:20 -
+Rule	sol89	1989	only	-	Feb	11	12:14:20s -0:14:20 -
+Rule	sol89	1989	only	-	Feb	12	12:14:20s -0:14:20 -
+Rule	sol89	1989	only	-	Feb	13	12:14:15s -0:14:15 -
+Rule	sol89	1989	only	-	Feb	14	12:14:15s -0:14:15 -
+Rule	sol89	1989	only	-	Feb	15	12:14:10s -0:14:10 -
+Rule	sol89	1989	only	-	Feb	16	12:14:10s -0:14:10 -
+Rule	sol89	1989	only	-	Feb	17	12:14:05s -0:14:05 -
+Rule	sol89	1989	only	-	Feb	18	12:14:00s -0:14:00 -
+Rule	sol89	1989	only	-	Feb	19	12:13:55s -0:13:55 -
+Rule	sol89	1989	only	-	Feb	20	12:13:50s -0:13:50 -
+Rule	sol89	1989	only	-	Feb	21	12:13:40s -0:13:40 -
+Rule	sol89	1989	only	-	Feb	22	12:13:35s -0:13:35 -
+Rule	sol89	1989	only	-	Feb	23	12:13:25s -0:13:25 -
+Rule	sol89	1989	only	-	Feb	24	12:13:15s -0:13:15 -
+Rule	sol89	1989	only	-	Feb	25	12:13:05s -0:13:05 -
+Rule	sol89	1989	only	-	Feb	26	12:12:55s -0:12:55 -
+Rule	sol89	1989	only	-	Feb	27	12:12:45s -0:12:45 -
+Rule	sol89	1989	only	-	Feb	28	12:12:35s -0:12:35 -
+Rule	sol89	1989	only	-	Mar	1	12:12:25s -0:12:25 -
+Rule	sol89	1989	only	-	Mar	2	12:12:10s -0:12:10 -
+Rule	sol89	1989	only	-	Mar	3	12:12:00s -0:12:00 -
+Rule	sol89	1989	only	-	Mar	4	12:11:45s -0:11:45 -
+Rule	sol89	1989	only	-	Mar	5	12:11:35s -0:11:35 -
+Rule	sol89	1989	only	-	Mar	6	12:11:20s -0:11:20 -
+Rule	sol89	1989	only	-	Mar	7	12:11:05s -0:11:05 -
+Rule	sol89	1989	only	-	Mar	8	12:10:50s -0:10:50 -
+Rule	sol89	1989	only	-	Mar	9	12:10:35s -0:10:35 -
+Rule	sol89	1989	only	-	Mar	10	12:10:20s -0:10:20 -
+Rule	sol89	1989	only	-	Mar	11	12:10:05s -0:10:05 -
+Rule	sol89	1989	only	-	Mar	12	12:09:50s -0:09:50 -
+Rule	sol89	1989	only	-	Mar	13	12:09:30s -0:09:30 -
+Rule	sol89	1989	only	-	Mar	14	12:09:15s -0:09:15 -
+Rule	sol89	1989	only	-	Mar	15	12:09:00s -0:09:00 -
+Rule	sol89	1989	only	-	Mar	16	12:08:40s -0:08:40 -
+Rule	sol89	1989	only	-	Mar	17	12:08:25s -0:08:25 -
+Rule	sol89	1989	only	-	Mar	18	12:08:05s -0:08:05 -
+Rule	sol89	1989	only	-	Mar	19	12:07:50s -0:07:50 -
+Rule	sol89	1989	only	-	Mar	20	12:07:30s -0:07:30 -
+Rule	sol89	1989	only	-	Mar	21	12:07:15s -0:07:15 -
+Rule	sol89	1989	only	-	Mar	22	12:06:55s -0:06:55 -
+Rule	sol89	1989	only	-	Mar	23	12:06:35s -0:06:35 -
+Rule	sol89	1989	only	-	Mar	24	12:06:20s -0:06:20 -
+Rule	sol89	1989	only	-	Mar	25	12:06:00s -0:06:00 -
+Rule	sol89	1989	only	-	Mar	26	12:05:40s -0:05:40 -
+Rule	sol89	1989	only	-	Mar	27	12:05:25s -0:05:25 -
+Rule	sol89	1989	only	-	Mar	28	12:05:05s -0:05:05 -
+Rule	sol89	1989	only	-	Mar	29	12:04:50s -0:04:50 -
+Rule	sol89	1989	only	-	Mar	30	12:04:30s -0:04:30 -
+Rule	sol89	1989	only	-	Mar	31	12:04:10s -0:04:10 -
+Rule	sol89	1989	only	-	Apr	1	12:03:55s -0:03:55 -
+Rule	sol89	1989	only	-	Apr	2	12:03:35s -0:03:35 -
+Rule	sol89	1989	only	-	Apr	3	12:03:20s -0:03:20 -
+Rule	sol89	1989	only	-	Apr	4	12:03:00s -0:03:00 -
+Rule	sol89	1989	only	-	Apr	5	12:02:45s -0:02:45 -
+Rule	sol89	1989	only	-	Apr	6	12:02:25s -0:02:25 -
+Rule	sol89	1989	only	-	Apr	7	12:02:10s -0:02:10 -
+Rule	sol89	1989	only	-	Apr	8	12:01:50s -0:01:50 -
+Rule	sol89	1989	only	-	Apr	9	12:01:35s -0:01:35 -
+Rule	sol89	1989	only	-	Apr	10	12:01:20s -0:01:20 -
+Rule	sol89	1989	only	-	Apr	11	12:01:05s -0:01:05 -
+Rule	sol89	1989	only	-	Apr	12	12:00:50s -0:00:50 -
+Rule	sol89	1989	only	-	Apr	13	12:00:35s -0:00:35 -
+Rule	sol89	1989	only	-	Apr	14	12:00:20s -0:00:20 -
+Rule	sol89	1989	only	-	Apr	15	12:00:05s -0:00:05 -
+Rule	sol89	1989	only	-	Apr	16	11:59:50s 0:00:10 -
+Rule	sol89	1989	only	-	Apr	17	11:59:35s 0:00:25 -
+Rule	sol89	1989	only	-	Apr	18	11:59:20s 0:00:40 -
+Rule	sol89	1989	only	-	Apr	19	11:59:10s 0:00:50 -
+Rule	sol89	1989	only	-	Apr	20	11:58:55s 0:01:05 -
+Rule	sol89	1989	only	-	Apr	21	11:58:45s 0:01:15 -
+Rule	sol89	1989	only	-	Apr	22	11:58:30s 0:01:30 -
+Rule	sol89	1989	only	-	Apr	23	11:58:20s 0:01:40 -
+Rule	sol89	1989	only	-	Apr	24	11:58:10s 0:01:50 -
+Rule	sol89	1989	only	-	Apr	25	11:58:00s 0:02:00 -
+Rule	sol89	1989	only	-	Apr	26	11:57:50s 0:02:10 -
+Rule	sol89	1989	only	-	Apr	27	11:57:40s 0:02:20 -
+Rule	sol89	1989	only	-	Apr	28	11:57:30s 0:02:30 -
+Rule	sol89	1989	only	-	Apr	29	11:57:20s 0:02:40 -
+Rule	sol89	1989	only	-	Apr	30	11:57:15s 0:02:45 -
+Rule	sol89	1989	only	-	May	1	11:57:05s 0:02:55 -
+Rule	sol89	1989	only	-	May	2	11:57:00s 0:03:00 -
+Rule	sol89	1989	only	-	May	3	11:56:50s 0:03:10 -
+Rule	sol89	1989	only	-	May	4	11:56:45s 0:03:15 -
+Rule	sol89	1989	only	-	May	5	11:56:40s 0:03:20 -
+Rule	sol89	1989	only	-	May	6	11:56:35s 0:03:25 -
+Rule	sol89	1989	only	-	May	7	11:56:30s 0:03:30 -
+Rule	sol89	1989	only	-	May	8	11:56:30s 0:03:30 -
+Rule	sol89	1989	only	-	May	9	11:56:25s 0:03:35 -
+Rule	sol89	1989	only	-	May	10	11:56:25s 0:03:35 -
+Rule	sol89	1989	only	-	May	11	11:56:20s 0:03:40 -
+Rule	sol89	1989	only	-	May	12	11:56:20s 0:03:40 -
+Rule	sol89	1989	only	-	May	13	11:56:20s 0:03:40 -
+Rule	sol89	1989	only	-	May	14	11:56:20s 0:03:40 -
+Rule	sol89	1989	only	-	May	15	11:56:20s 0:03:40 -
+Rule	sol89	1989	only	-	May	16	11:56:20s 0:03:40 -
+Rule	sol89	1989	only	-	May	17	11:56:20s 0:03:40 -
+Rule	sol89	1989	only	-	May	18	11:56:25s 0:03:35 -
+Rule	sol89	1989	only	-	May	19	11:56:25s 0:03:35 -
+Rule	sol89	1989	only	-	May	20	11:56:30s 0:03:30 -
+Rule	sol89	1989	only	-	May	21	11:56:35s 0:03:25 -
+Rule	sol89	1989	only	-	May	22	11:56:35s 0:03:25 -
+Rule	sol89	1989	only	-	May	23	11:56:40s 0:03:20 -
+Rule	sol89	1989	only	-	May	24	11:56:45s 0:03:15 -
+Rule	sol89	1989	only	-	May	25	11:56:55s 0:03:05 -
+Rule	sol89	1989	only	-	May	26	11:57:00s 0:03:00 -
+Rule	sol89	1989	only	-	May	27	11:57:05s 0:02:55 -
+Rule	sol89	1989	only	-	May	28	11:57:15s 0:02:45 -
+Rule	sol89	1989	only	-	May	29	11:57:20s 0:02:40 -
+Rule	sol89	1989	only	-	May	30	11:57:30s 0:02:30 -
+Rule	sol89	1989	only	-	May	31	11:57:35s 0:02:25 -
+Rule	sol89	1989	only	-	Jun	1	11:57:45s 0:02:15 -
+Rule	sol89	1989	only	-	Jun	2	11:57:55s 0:02:05 -
+Rule	sol89	1989	only	-	Jun	3	11:58:05s 0:01:55 -
+Rule	sol89	1989	only	-	Jun	4	11:58:15s 0:01:45 -
+Rule	sol89	1989	only	-	Jun	5	11:58:25s 0:01:35 -
+Rule	sol89	1989	only	-	Jun	6	11:58:35s 0:01:25 -
+Rule	sol89	1989	only	-	Jun	7	11:58:45s 0:01:15 -
+Rule	sol89	1989	only	-	Jun	8	11:59:00s 0:01:00 -
+Rule	sol89	1989	only	-	Jun	9	11:59:10s 0:00:50 -
+Rule	sol89	1989	only	-	Jun	10	11:59:20s 0:00:40 -
+Rule	sol89	1989	only	-	Jun	11	11:59:35s 0:00:25 -
+Rule	sol89	1989	only	-	Jun	12	11:59:45s 0:00:15 -
+Rule	sol89	1989	only	-	Jun	13	12:00:00s 0:00:00 -
+Rule	sol89	1989	only	-	Jun	14	12:00:10s -0:00:10 -
+Rule	sol89	1989	only	-	Jun	15	12:00:25s -0:00:25 -
+Rule	sol89	1989	only	-	Jun	16	12:00:35s -0:00:35 -
+Rule	sol89	1989	only	-	Jun	17	12:00:50s -0:00:50 -
+Rule	sol89	1989	only	-	Jun	18	12:01:05s -0:01:05 -
+Rule	sol89	1989	only	-	Jun	19	12:01:15s -0:01:15 -
+Rule	sol89	1989	only	-	Jun	20	12:01:30s -0:01:30 -
+Rule	sol89	1989	only	-	Jun	21	12:01:40s -0:01:40 -
+Rule	sol89	1989	only	-	Jun	22	12:01:55s -0:01:55 -
+Rule	sol89	1989	only	-	Jun	23	12:02:10s -0:02:10 -
+Rule	sol89	1989	only	-	Jun	24	12:02:20s -0:02:20 -
+Rule	sol89	1989	only	-	Jun	25	12:02:35s -0:02:35 -
+Rule	sol89	1989	only	-	Jun	26	12:02:45s -0:02:45 -
+Rule	sol89	1989	only	-	Jun	27	12:03:00s -0:03:00 -
+Rule	sol89	1989	only	-	Jun	28	12:03:10s -0:03:10 -
+Rule	sol89	1989	only	-	Jun	29	12:03:25s -0:03:25 -
+Rule	sol89	1989	only	-	Jun	30	12:03:35s -0:03:35 -
+Rule	sol89	1989	only	-	Jul	1	12:03:45s -0:03:45 -
+Rule	sol89	1989	only	-	Jul	2	12:04:00s -0:04:00 -
+Rule	sol89	1989	only	-	Jul	3	12:04:10s -0:04:10 -
+Rule	sol89	1989	only	-	Jul	4	12:04:20s -0:04:20 -
+Rule	sol89	1989	only	-	Jul	5	12:04:30s -0:04:30 -
+Rule	sol89	1989	only	-	Jul	6	12:04:40s -0:04:40 -
+Rule	sol89	1989	only	-	Jul	7	12:04:50s -0:04:50 -
+Rule	sol89	1989	only	-	Jul	8	12:05:00s -0:05:00 -
+Rule	sol89	1989	only	-	Jul	9	12:05:10s -0:05:10 -
+Rule	sol89	1989	only	-	Jul	10	12:05:20s -0:05:20 -
+Rule	sol89	1989	only	-	Jul	11	12:05:25s -0:05:25 -
+Rule	sol89	1989	only	-	Jul	12	12:05:35s -0:05:35 -
+Rule	sol89	1989	only	-	Jul	13	12:05:40s -0:05:40 -
+Rule	sol89	1989	only	-	Jul	14	12:05:50s -0:05:50 -
+Rule	sol89	1989	only	-	Jul	15	12:05:55s -0:05:55 -
+Rule	sol89	1989	only	-	Jul	16	12:06:00s -0:06:00 -
+Rule	sol89	1989	only	-	Jul	17	12:06:05s -0:06:05 -
+Rule	sol89	1989	only	-	Jul	18	12:06:10s -0:06:10 -
+Rule	sol89	1989	only	-	Jul	19	12:06:15s -0:06:15 -
+Rule	sol89	1989	only	-	Jul	20	12:06:20s -0:06:20 -
+Rule	sol89	1989	only	-	Jul	21	12:06:20s -0:06:20 -
+Rule	sol89	1989	only	-	Jul	22	12:06:25s -0:06:25 -
+Rule	sol89	1989	only	-	Jul	23	12:06:25s -0:06:25 -
+Rule	sol89	1989	only	-	Jul	24	12:06:30s -0:06:30 -
+Rule	sol89	1989	only	-	Jul	25	12:06:30s -0:06:30 -
+Rule	sol89	1989	only	-	Jul	26	12:06:30s -0:06:30 -
+Rule	sol89	1989	only	-	Jul	27	12:06:30s -0:06:30 -
+Rule	sol89	1989	only	-	Jul	28	12:06:30s -0:06:30 -
+Rule	sol89	1989	only	-	Jul	29	12:06:25s -0:06:25 -
+Rule	sol89	1989	only	-	Jul	30	12:06:25s -0:06:25 -
+Rule	sol89	1989	only	-	Jul	31	12:06:20s -0:06:20 -
+Rule	sol89	1989	only	-	Aug	1	12:06:20s -0:06:20 -
+Rule	sol89	1989	only	-	Aug	2	12:06:15s -0:06:15 -
+Rule	sol89	1989	only	-	Aug	3	12:06:10s -0:06:10 -
+Rule	sol89	1989	only	-	Aug	4	12:06:05s -0:06:05 -
+Rule	sol89	1989	only	-	Aug	5	12:06:00s -0:06:00 -
+Rule	sol89	1989	only	-	Aug	6	12:05:50s -0:05:50 -
+Rule	sol89	1989	only	-	Aug	7	12:05:45s -0:05:45 -
+Rule	sol89	1989	only	-	Aug	8	12:05:35s -0:05:35 -
+Rule	sol89	1989	only	-	Aug	9	12:05:30s -0:05:30 -
+Rule	sol89	1989	only	-	Aug	10	12:05:20s -0:05:20 -
+Rule	sol89	1989	only	-	Aug	11	12:05:10s -0:05:10 -
+Rule	sol89	1989	only	-	Aug	12	12:05:00s -0:05:00 -
+Rule	sol89	1989	only	-	Aug	13	12:04:50s -0:04:50 -
+Rule	sol89	1989	only	-	Aug	14	12:04:40s -0:04:40 -
+Rule	sol89	1989	only	-	Aug	15	12:04:30s -0:04:30 -
+Rule	sol89	1989	only	-	Aug	16	12:04:15s -0:04:15 -
+Rule	sol89	1989	only	-	Aug	17	12:04:05s -0:04:05 -
+Rule	sol89	1989	only	-	Aug	18	12:03:50s -0:03:50 -
+Rule	sol89	1989	only	-	Aug	19	12:03:35s -0:03:35 -
+Rule	sol89	1989	only	-	Aug	20	12:03:25s -0:03:25 -
+Rule	sol89	1989	only	-	Aug	21	12:03:10s -0:03:10 -
+Rule	sol89	1989	only	-	Aug	22	12:02:55s -0:02:55 -
+Rule	sol89	1989	only	-	Aug	23	12:02:40s -0:02:40 -
+Rule	sol89	1989	only	-	Aug	24	12:02:20s -0:02:20 -
+Rule	sol89	1989	only	-	Aug	25	12:02:05s -0:02:05 -
+Rule	sol89	1989	only	-	Aug	26	12:01:50s -0:01:50 -
+Rule	sol89	1989	only	-	Aug	27	12:01:30s -0:01:30 -
+Rule	sol89	1989	only	-	Aug	28	12:01:15s -0:01:15 -
+Rule	sol89	1989	only	-	Aug	29	12:00:55s -0:00:55 -
+Rule	sol89	1989	only	-	Aug	30	12:00:40s -0:00:40 -
+Rule	sol89	1989	only	-	Aug	31	12:00:20s -0:00:20 -
+Rule	sol89	1989	only	-	Sep	1	12:00:00s 0:00:00 -
+Rule	sol89	1989	only	-	Sep	2	11:59:45s 0:00:15 -
+Rule	sol89	1989	only	-	Sep	3	11:59:25s 0:00:35 -
+Rule	sol89	1989	only	-	Sep	4	11:59:05s 0:00:55 -
+Rule	sol89	1989	only	-	Sep	5	11:58:45s 0:01:15 -
+Rule	sol89	1989	only	-	Sep	6	11:58:25s 0:01:35 -
+Rule	sol89	1989	only	-	Sep	7	11:58:05s 0:01:55 -
+Rule	sol89	1989	only	-	Sep	8	11:57:45s 0:02:15 -
+Rule	sol89	1989	only	-	Sep	9	11:57:20s 0:02:40 -
+Rule	sol89	1989	only	-	Sep	10	11:57:00s 0:03:00 -
+Rule	sol89	1989	only	-	Sep	11	11:56:40s 0:03:20 -
+Rule	sol89	1989	only	-	Sep	12	11:56:20s 0:03:40 -
+Rule	sol89	1989	only	-	Sep	13	11:56:00s 0:04:00 -
+Rule	sol89	1989	only	-	Sep	14	11:55:35s 0:04:25 -
+Rule	sol89	1989	only	-	Sep	15	11:55:15s 0:04:45 -
+Rule	sol89	1989	only	-	Sep	16	11:54:55s 0:05:05 -
+Rule	sol89	1989	only	-	Sep	17	11:54:35s 0:05:25 -
+Rule	sol89	1989	only	-	Sep	18	11:54:10s 0:05:50 -
+Rule	sol89	1989	only	-	Sep	19	11:53:50s 0:06:10 -
+Rule	sol89	1989	only	-	Sep	20	11:53:30s 0:06:30 -
+Rule	sol89	1989	only	-	Sep	21	11:53:10s 0:06:50 -
+Rule	sol89	1989	only	-	Sep	22	11:52:45s 0:07:15 -
+Rule	sol89	1989	only	-	Sep	23	11:52:25s 0:07:35 -
+Rule	sol89	1989	only	-	Sep	24	11:52:05s 0:07:55 -
+Rule	sol89	1989	only	-	Sep	25	11:51:45s 0:08:15 -
+Rule	sol89	1989	only	-	Sep	26	11:51:25s 0:08:35 -
+Rule	sol89	1989	only	-	Sep	27	11:51:05s 0:08:55 -
+Rule	sol89	1989	only	-	Sep	28	11:50:40s 0:09:20 -
+Rule	sol89	1989	only	-	Sep	29	11:50:20s 0:09:40 -
+Rule	sol89	1989	only	-	Sep	30	11:50:00s 0:10:00 -
+Rule	sol89	1989	only	-	Oct	1	11:49:45s 0:10:15 -
+Rule	sol89	1989	only	-	Oct	2	11:49:25s 0:10:35 -
+Rule	sol89	1989	only	-	Oct	3	11:49:05s 0:10:55 -
+Rule	sol89	1989	only	-	Oct	4	11:48:45s 0:11:15 -
+Rule	sol89	1989	only	-	Oct	5	11:48:30s 0:11:30 -
+Rule	sol89	1989	only	-	Oct	6	11:48:10s 0:11:50 -
+Rule	sol89	1989	only	-	Oct	7	11:47:50s 0:12:10 -
+Rule	sol89	1989	only	-	Oct	8	11:47:35s 0:12:25 -
+Rule	sol89	1989	only	-	Oct	9	11:47:20s 0:12:40 -
+Rule	sol89	1989	only	-	Oct	10	11:47:00s 0:13:00 -
+Rule	sol89	1989	only	-	Oct	11	11:46:45s 0:13:15 -
+Rule	sol89	1989	only	-	Oct	12	11:46:30s 0:13:30 -
+Rule	sol89	1989	only	-	Oct	13	11:46:15s 0:13:45 -
+Rule	sol89	1989	only	-	Oct	14	11:46:00s 0:14:00 -
+Rule	sol89	1989	only	-	Oct	15	11:45:50s 0:14:10 -
+Rule	sol89	1989	only	-	Oct	16	11:45:35s 0:14:25 -
+Rule	sol89	1989	only	-	Oct	17	11:45:20s 0:14:40 -
+Rule	sol89	1989	only	-	Oct	18	11:45:10s 0:14:50 -
+Rule	sol89	1989	only	-	Oct	19	11:45:00s 0:15:00 -
+Rule	sol89	1989	only	-	Oct	20	11:44:50s 0:15:10 -
+Rule	sol89	1989	only	-	Oct	21	11:44:40s 0:15:20 -
+Rule	sol89	1989	only	-	Oct	22	11:44:30s 0:15:30 -
+Rule	sol89	1989	only	-	Oct	23	11:44:20s 0:15:40 -
+Rule	sol89	1989	only	-	Oct	24	11:44:10s 0:15:50 -
+Rule	sol89	1989	only	-	Oct	25	11:44:05s 0:15:55 -
+Rule	sol89	1989	only	-	Oct	26	11:44:00s 0:16:00 -
+Rule	sol89	1989	only	-	Oct	27	11:43:50s 0:16:10 -
+Rule	sol89	1989	only	-	Oct	28	11:43:45s 0:16:15 -
+Rule	sol89	1989	only	-	Oct	29	11:43:40s 0:16:20 -
+Rule	sol89	1989	only	-	Oct	30	11:43:40s 0:16:20 -
+Rule	sol89	1989	only	-	Oct	31	11:43:35s 0:16:25 -
+Rule	sol89	1989	only	-	Nov	1	11:43:35s 0:16:25 -
+Rule	sol89	1989	only	-	Nov	2	11:43:35s 0:16:25 -
+Rule	sol89	1989	only	-	Nov	3	11:43:30s 0:16:30 -
+Rule	sol89	1989	only	-	Nov	4	11:43:35s 0:16:25 -
+Rule	sol89	1989	only	-	Nov	5	11:43:35s 0:16:25 -
+Rule	sol89	1989	only	-	Nov	6	11:43:35s 0:16:25 -
+Rule	sol89	1989	only	-	Nov	7	11:43:40s 0:16:20 -
+Rule	sol89	1989	only	-	Nov	8	11:43:45s 0:16:15 -
+Rule	sol89	1989	only	-	Nov	9	11:43:50s 0:16:10 -
+Rule	sol89	1989	only	-	Nov	10	11:43:55s 0:16:05 -
+Rule	sol89	1989	only	-	Nov	11	11:44:00s 0:16:00 -
+Rule	sol89	1989	only	-	Nov	12	11:44:05s 0:15:55 -
+Rule	sol89	1989	only	-	Nov	13	11:44:15s 0:15:45 -
+Rule	sol89	1989	only	-	Nov	14	11:44:25s 0:15:35 -
+Rule	sol89	1989	only	-	Nov	15	11:44:35s 0:15:25 -
+Rule	sol89	1989	only	-	Nov	16	11:44:45s 0:15:15 -
+Rule	sol89	1989	only	-	Nov	17	11:44:55s 0:15:05 -
+Rule	sol89	1989	only	-	Nov	18	11:45:10s 0:14:50 -
+Rule	sol89	1989	only	-	Nov	19	11:45:20s 0:14:40 -
+Rule	sol89	1989	only	-	Nov	20	11:45:35s 0:14:25 -
+Rule	sol89	1989	only	-	Nov	21	11:45:50s 0:14:10 -
+Rule	sol89	1989	only	-	Nov	22	11:46:05s 0:13:55 -
+Rule	sol89	1989	only	-	Nov	23	11:46:25s 0:13:35 -
+Rule	sol89	1989	only	-	Nov	24	11:46:40s 0:13:20 -
+Rule	sol89	1989	only	-	Nov	25	11:47:00s 0:13:00 -
+Rule	sol89	1989	only	-	Nov	26	11:47:20s 0:12:40 -
+Rule	sol89	1989	only	-	Nov	27	11:47:35s 0:12:25 -
+Rule	sol89	1989	only	-	Nov	28	11:47:55s 0:12:05 -
+Rule	sol89	1989	only	-	Nov	29	11:48:20s 0:11:40 -
+Rule	sol89	1989	only	-	Nov	30	11:48:40s 0:11:20 -
+Rule	sol89	1989	only	-	Dec	1	11:49:00s 0:11:00 -
+Rule	sol89	1989	only	-	Dec	2	11:49:25s 0:10:35 -
+Rule	sol89	1989	only	-	Dec	3	11:49:50s 0:10:10 -
+Rule	sol89	1989	only	-	Dec	4	11:50:15s 0:09:45 -
+Rule	sol89	1989	only	-	Dec	5	11:50:35s 0:09:25 -
+Rule	sol89	1989	only	-	Dec	6	11:51:00s 0:09:00 -
+Rule	sol89	1989	only	-	Dec	7	11:51:30s 0:08:30 -
+Rule	sol89	1989	only	-	Dec	8	11:51:55s 0:08:05 -
+Rule	sol89	1989	only	-	Dec	9	11:52:20s 0:07:40 -
+Rule	sol89	1989	only	-	Dec	10	11:52:50s 0:07:10 -
+Rule	sol89	1989	only	-	Dec	11	11:53:15s 0:06:45 -
+Rule	sol89	1989	only	-	Dec	12	11:53:45s 0:06:15 -
+Rule	sol89	1989	only	-	Dec	13	11:54:10s 0:05:50 -
+Rule	sol89	1989	only	-	Dec	14	11:54:40s 0:05:20 -
+Rule	sol89	1989	only	-	Dec	15	11:55:10s 0:04:50 -
+Rule	sol89	1989	only	-	Dec	16	11:55:40s 0:04:20 -
+Rule	sol89	1989	only	-	Dec	17	11:56:05s 0:03:55 -
+Rule	sol89	1989	only	-	Dec	18	11:56:35s 0:03:25 -
+Rule	sol89	1989	only	-	Dec	19	11:57:05s 0:02:55 -
+Rule	sol89	1989	only	-	Dec	20	11:57:35s 0:02:25 -
+Rule	sol89	1989	only	-	Dec	21	11:58:05s 0:01:55 -
+Rule	sol89	1989	only	-	Dec	22	11:58:35s 0:01:25 -
+Rule	sol89	1989	only	-	Dec	23	11:59:05s 0:00:55 -
+Rule	sol89	1989	only	-	Dec	24	11:59:35s 0:00:25 -
+Rule	sol89	1989	only	-	Dec	25	12:00:05s -0:00:05 -
+Rule	sol89	1989	only	-	Dec	26	12:00:35s -0:00:35 -
+Rule	sol89	1989	only	-	Dec	27	12:01:05s -0:01:05 -
+Rule	sol89	1989	only	-	Dec	28	12:01:35s -0:01:35 -
+Rule	sol89	1989	only	-	Dec	29	12:02:00s -0:02:00 -
+Rule	sol89	1989	only	-	Dec	30	12:02:30s -0:02:30 -
+Rule	sol89	1989	only	-	Dec	31	12:03:00s -0:03:00 -
+
+# Riyadh is at about 46 degrees 46 minutes East:  3 hrs, 7 mins, 4 secs
+# Before and after 1989, we'll operate on local mean solar time.
+
+# Zone	NAME		GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
+Zone	Asia/Riyadh89	3:07:04	-		zzz	1989
+			3:07:04	sol89		zzz	1990
+			3:07:04	-		zzz
+# For backward compatibility...
+Link	Asia/Riyadh89	Mideast/Riyadh89
diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/southamerica b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/southamerica
new file mode 100644
index 0000000..9b9bf6b
--- /dev/null
+++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/southamerica
@@ -0,0 +1,1711 @@
+# 
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
+
+# This data is by no means authoritative; if you think you know better,
+# go ahead and edit the file (and please send any changes to
+# tz@iana.org for general use in the future).
+
+# From Paul Eggert (2006-03-22):
+# A good source for time zone historical data outside the U.S. is
+# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+# San Diego: ACS Publications, Inc. (2003).
+#
+# Gwillim Law writes that a good source
+# for recent time zone data is the International Air Transport
+# Association's Standard Schedules Information Manual (IATA SSIM),
+# published semiannually.  Law sent in several helpful summaries
+# of the IATA's data after 1990.
+#
+# Except where otherwise noted, Shanks & Pottenger is the source for
+# entries through 1990, and IATA SSIM is the source for entries afterwards.
+#
+# Earlier editions of these tables used the North American style (e.g. ARST and
+# ARDT for Argentine Standard and Daylight Time), but the following quote
+# suggests that it's better to use European style (e.g. ART and ARST).
+#	I suggest the use of _Summer time_ instead of the more cumbersome
+#	_daylight-saving time_.  _Summer time_ seems to be in general use
+#	in Europe and South America.
+#	-- E O Cutler, _New York Times_ (1937-02-14), quoted in
+#	H L Mencken, _The American Language: Supplement I_ (1960), p 466
+#
+# Earlier editions of these tables also used the North American style
+# for time zones in Brazil, but this was incorrect, as Brazilians say
+# "summer time".  Reinaldo Goulart, a Sao Paulo businessman active in
+# the railroad sector, writes (1999-07-06):
+#	The subject of time zones is currently a matter of discussion/debate in
+#	Brazil.  Let's say that "the Brasilia time" is considered the
+#	"official time" because Brasilia is the capital city.
+#	The other three time zones are called "Brasilia time "minus one" or
+#	"plus one" or "plus two".  As far as I know there is no such
+#	name/designation as "Eastern Time" or "Central Time".
+# So I invented the following (English-language) abbreviations for now.
+# Corrections are welcome!
+#		std	dst
+#	-2:00	FNT	FNST	Fernando de Noronha
+#	-3:00	BRT	BRST	Brasilia
+#	-4:00	AMT	AMST	Amazon
+#	-5:00	ACT	ACST	Acre
+
+###############################################################################
+
+###############################################################################
+
+# Argentina
+
+# From Bob Devine (1988-01-28):
+# Argentina: first Sunday in October to first Sunday in April since 1976.
+# Double Summer time from 1969 to 1974.  Switches at midnight.
+
+# From U. S. Naval Observatory (1988-01-199):
+# ARGENTINA           3 H BEHIND   UTC
+
+# From Hernan G. Otero (1995-06-26):
+# I am sending modifications to the Argentine time zone table...
+# AR was chosen because they are the ISO letters that represent Argentina.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Arg	1930	only	-	Dec	 1	0:00	1:00	S
+Rule	Arg	1931	only	-	Apr	 1	0:00	0	-
+Rule	Arg	1931	only	-	Oct	15	0:00	1:00	S
+Rule	Arg	1932	1940	-	Mar	 1	0:00	0	-
+Rule	Arg	1932	1939	-	Nov	 1	0:00	1:00	S
+Rule	Arg	1940	only	-	Jul	 1	0:00	1:00	S
+Rule	Arg	1941	only	-	Jun	15	0:00	0	-
+Rule	Arg	1941	only	-	Oct	15	0:00	1:00	S
+Rule	Arg	1943	only	-	Aug	 1	0:00	0	-
+Rule	Arg	1943	only	-	Oct	15	0:00	1:00	S
+Rule	Arg	1946	only	-	Mar	 1	0:00	0	-
+Rule	Arg	1946	only	-	Oct	 1	0:00	1:00	S
+Rule	Arg	1963	only	-	Oct	 1	0:00	0	-
+Rule	Arg	1963	only	-	Dec	15	0:00	1:00	S
+Rule	Arg	1964	1966	-	Mar	 1	0:00	0	-
+Rule	Arg	1964	1966	-	Oct	15	0:00	1:00	S
+Rule	Arg	1967	only	-	Apr	 2	0:00	0	-
+Rule	Arg	1967	1968	-	Oct	Sun>=1	0:00	1:00	S
+Rule	Arg	1968	1969	-	Apr	Sun>=1	0:00	0	-
+Rule	Arg	1974	only	-	Jan	23	0:00	1:00	S
+Rule	Arg	1974	only	-	May	 1	0:00	0	-
+Rule	Arg	1988	only	-	Dec	 1	0:00	1:00	S
+#
+# From Hernan G. Otero (1995-06-26):
+# These corrections were contributed by InterSoft Argentina S.A.,
+# obtaining the data from the:
+# Talleres de Hidrografia Naval Argentina
+# (Argentine Naval Hydrography Institute)
+Rule	Arg	1989	1993	-	Mar	Sun>=1	0:00	0	-
+Rule	Arg	1989	1992	-	Oct	Sun>=15	0:00	1:00	S
+#
+# From Hernan G. Otero (1995-06-26):
+# From this moment on, the law that mandated the daylight saving
+# time corrections was derogated and no more modifications
+# to the time zones (for daylight saving) are now made.
+#
+# From Rives McDow (2000-01-10):
+# On October 3, 1999, 0:00 local, Argentina implemented daylight savings time,
+# which did not result in the switch of a time zone, as they stayed 9 hours
+# from the International Date Line.
+Rule	Arg	1999	only	-	Oct	Sun>=1	0:00	1:00	S
+# From Paul Eggert (2007-12-28):
+# DST was set to expire on March 5, not March 3, but since it was converted
+# to standard time on March 3 it's more convenient for us to pretend that
+# it ended on March 3.
+Rule	Arg	2000	only	-	Mar	3	0:00	0	-
+#
+# From Peter Gradelski via Steffen Thorsen (2000-03-01):
+# We just checked with our Sao Paulo office and they say the government of
+# Argentina decided not to become one of the countries that go on or off DST.
+# So Buenos Aires should be -3 hours from GMT at all times.
+#
+# From Fabian L. Arce Jofre (2000-04-04):
+# The law that claimed DST for Argentina was derogated by President Fernando
+# de la Rua on March 2, 2000, because it would make people spend more energy
+# in the winter time, rather than less.  The change took effect on March 3.
+#
+# From Mariano Absatz (2001-06-06):
+# one of the major newspapers here in Argentina said that the 1999
+# Timezone Law (which never was effectively applied) will (would?) be
+# in effect.... The article is at
+# http://ar.clarin.com/diario/2001-06-06/e-01701.htm
+# ... The Law itself is "Ley No 25155", sanctioned on 1999-08-25, enacted
+# 1999-09-17, and published 1999-09-21.  The official publication is at:
+# http://www.boletin.jus.gov.ar/BON/Primera/1999/09-Septiembre/21/PDF/BO21-09-99LEG.PDF
+# Regretfully, you have to subscribe (and pay) for the on-line version....
+#
+# (2001-06-12):
+# the timezone for Argentina will not change next Sunday.
+# Apparently it will do so on Sunday 24th....
+# http://ar.clarin.com/diario/2001-06-12/s-03501.htm
+#
+# (2001-06-25):
+# Last Friday (yes, the last working day before the date of the change), the
+# Senate annulled the 1999 law that introduced the changes later postponed.
+# http://www.clarin.com.ar/diario/2001-06-22/s-03601.htm
+# It remains the vote of the Deputies..., but it will be the same....
+# This kind of things had always been done this way in Argentina.
+# We are still -03:00 all year round in all of the country.
+#
+# From Steffen Thorsen (2007-12-21):
+# A user (Leonardo Chaim) reported that Argentina will adopt DST....
+# all of the country (all Zone-entries) are affected.  News reports like
+# http://www.lanacion.com.ar/opinion/nota.asp?nota_id=973037 indicate
+# that Argentina will use DST next year as well, from October to
+# March, although exact rules are not given.
+#
+# From Jesper Norgaard Welen (2007-12-26)
+# The last hurdle of Argentina DST is over, the proposal was approved in
+# the lower chamber too (Deputados) with a vote 192 for and 2 against.
+# By the way thanks to Mariano Absatz and Daniel Mario Vega for the link to
+# the original scanned proposal, where the dates and the zero hours are
+# clear and unambiguous...This is the article about final approval:
+# 
+# http://www.lanacion.com.ar/politica/nota.asp?nota_id=973996
+# 
+#
+# From Paul Eggert (2007-12-22):
+# For dates after mid-2008, the following rules are my guesses and
+# are quite possibly wrong, but are more likely than no DST at all.
+
+# From Alexander Krivenyshev (2008-09-05):
+# As per message from Carlos Alberto Fonseca Arauz (Nicaragua),
+# Argentina will start DST on Sunday October 19, 2008.
+#
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_argentina03.html
+# 
+# OR
+# 
+# http://www.impulsobaires.com.ar/nota.php?id=57832 (in spanish)
+# 
+
+# From Rodrigo Severo (2008-10-06):
+# Here is some info available at a Gentoo bug related to TZ on Argentina's DST:
+# ...
+# ------- Comment #1 from [jmdocile]  2008-10-06 16:28 0000 -------
+# Hi, there is a problem with timezone-data-2008e and maybe with
+# timezone-data-2008f
+# Argentinian law [Number] 25.155 is no longer valid.
+# 
+# http://www.infoleg.gov.ar/infolegInternet/anexos/60000-64999/60036/norma.htm
+# 
+# The new one is law [Number] 26.350
+# 
+# http://www.infoleg.gov.ar/infolegInternet/anexos/135000-139999/136191/norma.htm
+# 
+# So there is no summer time in Argentina for now.
+
+# From Mariano Absatz (2008-10-20):
+# Decree 1693/2008 applies Law 26.350 for the summer 2008/2009 establishing DST in Argentina
+# From 2008-10-19 until 2009-03-15
+# 
+# http://www.boletinoficial.gov.ar/Bora.Portal/CustomControls/PdfContent.aspx?fp=16102008&pi=3&pf=4&s=0&sec=01
+# 
+#
+# Decree 1705/2008 excepting 12 Provinces from applying DST in the summer 2008/2009:
+# Catamarca, La Rioja, Mendoza, Salta, San Juan, San Luis, La Pampa, Neuquen, Rio Negro, Chubut, Santa Cruz
+# and Tierra del Fuego
+# 
+# http://www.boletinoficial.gov.ar/Bora.Portal/CustomControls/PdfContent.aspx?fp=17102008&pi=1&pf=1&s=0&sec=01
+# 
+#
+# Press release 235 dated Saturday October 18th, from the Government of the Province of Jujuy saying
+# it will not apply DST either (even when it was not included in Decree 1705/2008)
+# 
+# http://www.jujuy.gov.ar/index2/partes_prensa/18_10_08/235-181008.doc
+# 
+
+# From fullinet (2009-10-18):
+# As announced in
+# 
+# http://www.argentina.gob.ar/argentina/portal/paginas.dhtml?pagina=356
+# 
+# (an official .gob.ar) under title: "Sin Cambio de Hora" (english: "No hour change")
+#
+# "Por el momento, el Gobierno Nacional resolvio no modificar la hora
+# oficial, decision que estaba en estudio para su implementacion el
+# domingo 18 de octubre. Desde el Ministerio de Planificacion se anuncio
+# que la Argentina hoy, en estas condiciones meteorologicas, no necesita
+# la modificacion del huso horario, ya que 2009 nos encuentra con
+# crecimiento en la produccion y distribucion energetica."
+
+Rule	Arg	2007	only	-	Dec	30	0:00	1:00	S
+Rule	Arg	2008	2009	-	Mar	Sun>=15	0:00	0	-
+Rule	Arg	2008	only	-	Oct	Sun>=15	0:00	1:00	S
+
+# From Mariano Absatz (2004-05-21):
+# Today it was officially published that the Province of Mendoza is changing
+# its timezone this winter... starting tomorrow night....
+# http://www.gobernac.mendoza.gov.ar/boletin/pdf/20040521-27158-normas.pdf
+# From Paul Eggert (2004-05-24):
+# It's Law No. 7,210.  This change is due to a public power emergency, so for
+# now we'll assume it's for this year only.
+#
+# From Paul Eggert (2006-03-22):
+# 
+# Hora de verano para la Republica Argentina (2003-06-08)
+#  says that standard time in Argentina from 1894-10-31
+# to 1920-05-01 was -4:16:48.25.  Go with this more-precise value
+# over Shanks & Pottenger.
+#
+# From Mariano Absatz (2004-06-05):
+# These media articles from a major newspaper mostly cover the current state:
+# http://www.lanacion.com.ar/04/05/27/de_604825.asp
+# http://www.lanacion.com.ar/04/05/28/de_605203.asp
+#
+# The following eight (8) provinces pulled clocks back to UTC-04:00 at
+# midnight Monday May 31st. (that is, the night between 05/31 and 06/01).
+# Apparently, all nine provinces would go back to UTC-03:00 at the same
+# time in October 17th.
+#
+# Catamarca, Chubut, La Rioja, San Juan, San Luis, Santa Cruz,
+# Tierra del Fuego, Tucuman.
+#
+# From Mariano Absatz (2004-06-14):
+# ... this weekend, the Province of Tucuman decided it'd go back to UTC-03:00
+# yesterday midnight (that is, at 24:00 Saturday 12th), since the people's
+# annoyance with the change is much higher than the power savings obtained....
+#
+# From Gwillim Law (2004-06-14):
+# http://www.lanacion.com.ar/04/06/10/de_609078.asp ...
+#     "The time change in Tierra del Fuego was a conflicted decision from
+#   the start.  The government had decreed that the measure would take
+#   effect on June 1, but a normative error forced the new time to begin
+#   three days earlier, from a Saturday to a Sunday....
+# Our understanding was that the change was originally scheduled to take place
+# on June 1 at 00:00 in Chubut, Santa Cruz, Tierra del Fuego (and some other
+# provinces).  Sunday was May 30, only two days earlier.  So the article
+# contains a contradiction.  I would give more credence to the Saturday/Sunday
+# date than the "three days earlier" phrase, and conclude that Tierra del
+# Fuego set its clocks back at 2004-05-30 00:00.
+#
+# From Steffen Thorsen (2004-10-05):
+# The previous law 7210 which changed the province of Mendoza's time zone
+# back in May have been modified slightly in a new law 7277, which set the
+# new end date to 2004-09-26 (original date was 2004-10-17).
+# http://www.gobernac.mendoza.gov.ar/boletin/pdf/20040924-27244-normas.pdf
+#
+# From Mariano Absatz (2004-10-05):
+# San Juan changed from UTC-03:00 to UTC-04:00 at midnight between
+# Sunday, May 30th and Monday, May 31st.  It changed back to UTC-03:00
+# at midnight between Saturday, July 24th and Sunday, July 25th....
+# http://www.sanjuan.gov.ar/prensa/archivo/000329.html
+# http://www.sanjuan.gov.ar/prensa/archivo/000426.html
+# http://www.sanjuan.gov.ar/prensa/archivo/000441.html
+
+# From Alex Krivenyshev (2008-01-17):
+# Here are articles that Argentina Province San Luis is planning to end DST
+# as earlier as upcoming Monday January 21, 2008 or February 2008:
+#
+# Provincia argentina retrasa reloj y marca diferencia con resto del pais
+# (Argentine Province delayed clock and mark difference with the rest of the
+# country)
+# 
+# http://cl.invertia.com/noticias/noticia.aspx?idNoticia=200801171849_EFE_ET4373&idtel
+# 
+#
+# Es inminente que en San Luis atrasen una hora los relojes
+# (It is imminent in San Luis clocks one hour delay)
+# 
+# http://www.lagaceta.com.ar/vernotae.asp?id_nota=253414
+# 
+#
+# 
+# http://www.worldtimezone.net/dst_news/dst_news_argentina02.html
+# 
+
+# From Jesper Norgaard Welen (2008-01-18):
+# The page of the San Luis provincial government
+# 
+# http://www.sanluis.gov.ar/notas.asp?idCanal=0&id=22812
+# 
+# confirms what Alex Krivenyshev has earlier sent to the tz
+# emailing list about that San Luis plans to return to standard
+# time much earlier than the rest of the country. It also
+# confirms that upon request the provinces San Juan and Mendoza
+# refused to follow San Luis in this change.
+#
+# The change is supposed to take place Monday the 21.st at 0:00
+# hours. As far as I understand it if this goes ahead, we need
+# a new timezone for San Luis (although there are also documented
+# independent changes in the southamerica file of San Luis in
+# 1990 and 1991 which has not been confirmed).
+
+# From Jesper Norgaard Welen (2008-01-25):
+# Unfortunately the below page has become defunct, about the San Luis
+# time change. Perhaps because it now is part of a group of pages "Most
+# important pages of 2008."
+#
+# You can use
+# 
+# http://www.sanluis.gov.ar/notas.asp?idCanal=8141&id=22834
+# 
+# instead it seems. Or use "Buscador" from the main page of the San Luis
+# government, and fill in "huso" and click OK, and you will get 3 pages
+# from which the first one is identical to the above.
+
+# From Mariano Absatz (2008-01-28):
+# I can confirm that the Province of San Luis (and so far only that
+# province) decided to go back to UTC-3 effective midnight Jan 20th 2008
+# (that is, Monday 21st at 0:00 is the time the clocks were delayed back
+# 1 hour), and they intend to keep UTC-3 as their timezone all year round
+# (that is, unless they change their mind any minute now).
+#
+# So we'll have to add yet another city to 'southamerica' (I think San
+# Luis city is the mos populated city in the Province, so it'd be
+# America/Argentina/San_Luis... of course I can't remember if San Luis's
+# history of particular changes goes along with Mendoza or San Juan :-(
+# (I only remember not being able to collect hard facts about San Luis
+# back in 2004, when these provinces changed to UTC-4 for a few days, I
+# mailed them personally and never got an answer).
+
+# From Paul Eggert (2008-06-30):
+# Unless otherwise specified, data are from Shanks & Pottenger through 1992,
+# from the IATA otherwise.  As noted below, Shanks & Pottenger say that
+# America/Cordoba split into 6 subregions during 1991/1992, one of which
+# was America/San_Luis, but we haven't verified this yet so for now we'll
+# keep America/Cordoba a single region rather than splitting it into the
+# other 5 subregions.
+
+# From Mariano Absatz (2009-03-13):
+# Yesterday (with our usual 2-day notice) the Province of San Luis
+# decided that next Sunday instead of "staying" @utc-03:00 they will go
+# to utc-04:00 until the second Saturday in October...
+#
+# The press release is at
+# 
+# http://www.sanluis.gov.ar/SL/Paginas/NoticiaDetalle.asp?TemaId=1&InfoPrensaId=3102
+# 
+# (I couldn't find the decree, but
+# 
+# www.sanluis.gov.ar
+# 
+# is the official page for the Province Government).
+#
+# There's also a note in only one of the major national papers (La Nacin) at
+# 
+# http://www.lanacion.com.ar/nota.asp?nota_id=1107912
+# 
+#
+# The press release says:
+#  (...) anunci que el prximo domingo a las 00:00 los puntanos debern
+# atrasar una hora sus relojes.
+#
+# A partir de entonces, San Luis establecer el huso horario propio de
+# la Provincia. De esta manera, durante el periodo del calendario anual
+# 2009, el cambio horario quedar comprendido entre las 00:00 del tercer
+# domingo de marzo y las 24:00 del segundo sbado de octubre.
+# Quick&dirty translation
+# (...) announced that next Sunday, at 00:00, Puntanos (the San Luis
+# inhabitants) will have to turn back one hour their clocks
+#
+# Since then, San Luis will establish its own Province timezone. Thus,
+# during 2009, this timezone change will run from 00:00 the third Sunday
+# in March until 24:00 of the second Saturday in October.
+
+# From Mariano Absatz (2009-10-16):
+# ...the Province of San Luis is a case in itself.
+#
+# The Law at
+# 
+# is ambiguous because establishes a calendar from the 2nd Sunday in
+# October at 0:00 thru the 2nd Saturday in March at 24:00 and the
+# complement of that starting on the 2nd Sunday of March at 0:00 and
+# ending on the 2nd Saturday of March at 24:00.
+#
+# This clearly breaks every time the 1st of March or October is a Sunday.
+#
+# IMHO, the "spirit of the Law" is to make the changes at 0:00 on the 2nd
+# Sunday of October and March.
+#
+# The problem is that the changes in the rest of the Provinces that did
+# change in 2007/2008, were made according to the Federal Law and Decrees
+# that did so on the 3rd Sunday of October and March.
+#
+# In fact, San Luis actually switched from UTC-4 to UTC-3 last Sunday
+# (October 11th) at 0:00.
+#
+# So I guess a new set of rules, besides "Arg", must be made and the last
+# America/Argentina/San_Luis entries should change to use these...
+#
+# I'm enclosing a patch that does what I say... regretfully, the San Luis
+# timezone must be called "WART/WARST" even when most of the time (like,
+# right now) WARST == ART... that is, since last Sunday, all the country
+# is using UTC-3, but in my patch, San Luis calls it "WARST" and the rest
+# of the country calls it "ART".
+# ...
+
+# From Alexander Krivenyshev (2010-04-09):
+# According to news reports from El Diario de la Republica Province San
+# Luis, Argentina (standard time UTC-04) will keep Daylight Saving Time
+# after April 11, 2010--will continue to have same time as rest of
+# Argentina (UTC-3) (no DST).
+#
+# Confirmaron la prórroga del huso horario de verano (Spanish)
+# 
+# http://www.eldiariodelarepublica.com/index.php?option=com_content&task=view&id=29383&Itemid=9
+# 
+# or (some English translation):
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_argentina08.html
+# 
+
+# From Mariano Absatz (2010-04-12):
+# yes...I can confirm this...and given that San Luis keeps calling
+# UTC-03:00 "summer time", we should't just let San Luis go back to "Arg"
+# rules...San Luis is still using "Western ARgentina Time" and it got
+# stuck on Summer daylight savings time even though the summer is over.
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+#
+# Buenos Aires (BA), Capital Federal (CF),
+Zone America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 Oct 31
+			-4:16:48 -	CMT	1920 May # Cordoba Mean Time
+			-4:00	-	ART	1930 Dec
+			-4:00	Arg	AR%sT	1969 Oct  5
+			-3:00	Arg	AR%sT	1999 Oct  3
+			-4:00	Arg	AR%sT	2000 Mar  3
+			-3:00	Arg	AR%sT
+#
+# Cordoba (CB), Santa Fe (SF), Entre Rios (ER), Corrientes (CN), Misiones (MN),
+# Chaco (CC), Formosa (FM), Santiago del Estero (SE)
+#
+# Shanks & Pottenger also make the following claims, which we haven't verified:
+# - Formosa switched to -3:00 on 1991-01-07.
+# - Misiones switched to -3:00 on 1990-12-29.
+# - Chaco switched to -3:00 on 1991-01-04.
+# - Santiago del Estero switched to -4:00 on 1991-04-01,
+#   then to -3:00 on 1991-04-26.
+#
+Zone America/Argentina/Cordoba -4:16:48 - LMT	1894 Oct 31
+			-4:16:48 -	CMT	1920 May
+			-4:00	-	ART	1930 Dec
+			-4:00	Arg	AR%sT	1969 Oct  5
+			-3:00	Arg	AR%sT	1991 Mar  3
+			-4:00	-	WART	1991 Oct 20
+			-3:00	Arg	AR%sT	1999 Oct  3
+			-4:00	Arg	AR%sT	2000 Mar  3
+			-3:00	Arg	AR%sT
+#
+# Salta (SA), La Pampa (LP), Neuquen (NQ), Rio Negro (RN)
+Zone America/Argentina/Salta -4:21:40 - LMT	1894 Oct 31
+			-4:16:48 -	CMT	1920 May
+			-4:00	-	ART	1930 Dec
+			-4:00	Arg	AR%sT	1969 Oct  5
+			-3:00	Arg	AR%sT	1991 Mar  3
+			-4:00	-	WART	1991 Oct 20
+			-3:00	Arg	AR%sT	1999 Oct  3
+			-4:00	Arg	AR%sT	2000 Mar  3
+			-3:00	Arg	AR%sT	2008 Oct 18
+			-3:00	-	ART
+#
+# Tucuman (TM)
+Zone America/Argentina/Tucuman -4:20:52 - LMT	1894 Oct 31
+			-4:16:48 -	CMT	1920 May
+			-4:00	-	ART	1930 Dec
+			-4:00	Arg	AR%sT	1969 Oct  5
+			-3:00	Arg	AR%sT	1991 Mar  3
+			-4:00	-	WART	1991 Oct 20
+			-3:00	Arg	AR%sT	1999 Oct  3
+			-4:00	Arg	AR%sT	2000 Mar  3
+			-3:00	-	ART	2004 Jun  1
+			-4:00	-	WART	2004 Jun 13
+			-3:00	Arg	AR%sT
+#
+# La Rioja (LR)
+Zone America/Argentina/La_Rioja -4:27:24 - LMT	1894 Oct 31
+			-4:16:48 -	CMT	1920 May
+			-4:00	-	ART	1930 Dec
+			-4:00	Arg	AR%sT	1969 Oct  5
+			-3:00	Arg	AR%sT	1991 Mar  1
+			-4:00	-	WART	1991 May  7
+			-3:00	Arg	AR%sT	1999 Oct  3
+			-4:00	Arg	AR%sT	2000 Mar  3
+			-3:00	-	ART	2004 Jun  1
+			-4:00	-	WART	2004 Jun 20
+			-3:00	Arg	AR%sT	2008 Oct 18
+			-3:00	-	ART
+#
+# San Juan (SJ)
+Zone America/Argentina/San_Juan -4:34:04 - LMT	1894 Oct 31
+			-4:16:48 -	CMT	1920 May
+			-4:00	-	ART	1930 Dec
+			-4:00	Arg	AR%sT	1969 Oct  5
+			-3:00	Arg	AR%sT	1991 Mar  1
+			-4:00	-	WART	1991 May  7
+			-3:00	Arg	AR%sT	1999 Oct  3
+			-4:00	Arg	AR%sT	2000 Mar  3
+			-3:00	-	ART	2004 May 31
+			-4:00	-	WART	2004 Jul 25
+			-3:00	Arg	AR%sT	2008 Oct 18
+			-3:00	-	ART
+#
+# Jujuy (JY)
+Zone America/Argentina/Jujuy -4:21:12 -	LMT	1894 Oct 31
+			-4:16:48 -	CMT	1920 May
+			-4:00	-	ART	1930 Dec
+			-4:00	Arg	AR%sT	1969 Oct  5
+			-3:00	Arg	AR%sT	1990 Mar  4
+			-4:00	-	WART	1990 Oct 28
+			-4:00	1:00	WARST	1991 Mar 17
+			-4:00	-	WART	1991 Oct  6
+			-3:00	1:00	ARST	1992
+			-3:00	Arg	AR%sT	1999 Oct  3
+			-4:00	Arg	AR%sT	2000 Mar  3
+			-3:00	Arg	AR%sT	2008 Oct 18
+			-3:00	-	ART
+#
+# Catamarca (CT), Chubut (CH)
+Zone America/Argentina/Catamarca -4:23:08 - LMT	1894 Oct 31
+			-4:16:48 -	CMT	1920 May
+			-4:00	-	ART	1930 Dec
+			-4:00	Arg	AR%sT	1969 Oct  5
+			-3:00	Arg	AR%sT	1991 Mar  3
+			-4:00	-	WART	1991 Oct 20
+			-3:00	Arg	AR%sT	1999 Oct  3
+			-4:00	Arg	AR%sT	2000 Mar  3
+			-3:00	-	ART	2004 Jun  1
+			-4:00	-	WART	2004 Jun 20
+			-3:00	Arg	AR%sT	2008 Oct 18
+			-3:00	-	ART
+#
+# Mendoza (MZ)
+Zone America/Argentina/Mendoza -4:35:16 - LMT	1894 Oct 31
+			-4:16:48 -	CMT	1920 May
+			-4:00	-	ART	1930 Dec
+			-4:00	Arg	AR%sT	1969 Oct  5
+			-3:00	Arg	AR%sT	1990 Mar  4
+			-4:00	-	WART	1990 Oct 15
+			-4:00	1:00	WARST	1991 Mar  1
+			-4:00	-	WART	1991 Oct 15
+			-4:00	1:00	WARST	1992 Mar  1
+			-4:00	-	WART	1992 Oct 18
+			-3:00	Arg	AR%sT	1999 Oct  3
+			-4:00	Arg	AR%sT	2000 Mar  3
+			-3:00	-	ART	2004 May 23
+			-4:00	-	WART	2004 Sep 26
+			-3:00	Arg	AR%sT	2008 Oct 18
+			-3:00	-	ART
+#
+# San Luis (SL)
+
+Rule	SanLuis	2008	2009	-	Mar	Sun>=8	0:00	0	-
+Rule	SanLuis	2007	2009	-	Oct	Sun>=8	0:00	1:00	S
+
+Zone America/Argentina/San_Luis -4:25:24 - LMT	1894 Oct 31
+			-4:16:48 -	CMT	1920 May
+			-4:00	-	ART	1930 Dec
+			-4:00	Arg	AR%sT	1969 Oct  5
+			-3:00	Arg	AR%sT	1990
+			-3:00	1:00	ARST	1990 Mar 14
+			-4:00	-	WART	1990 Oct 15
+			-4:00	1:00	WARST	1991 Mar  1
+			-4:00	-	WART	1991 Jun  1
+			-3:00	-	ART	1999 Oct  3
+			-4:00	1:00	WARST	2000 Mar  3
+			-3:00	-	ART	2004 May 31
+			-4:00	-	WART	2004 Jul 25
+			-3:00	Arg	AR%sT	2008 Jan 21
+			-4:00	SanLuis	WAR%sT
+#
+# Santa Cruz (SC)
+Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31
+			-4:16:48 -	CMT	1920 May # Cordoba Mean Time
+			-4:00	-	ART	1930 Dec
+			-4:00	Arg	AR%sT	1969 Oct  5
+			-3:00	Arg	AR%sT	1999 Oct  3
+			-4:00	Arg	AR%sT	2000 Mar  3
+			-3:00	-	ART	2004 Jun  1
+			-4:00	-	WART	2004 Jun 20
+			-3:00	Arg	AR%sT	2008 Oct 18
+			-3:00	-	ART
+#
+# Tierra del Fuego, Antartida e Islas del Atlantico Sur (TF)
+Zone America/Argentina/Ushuaia -4:33:12 - LMT 1894 Oct 31
+			-4:16:48 -	CMT	1920 May # Cordoba Mean Time
+			-4:00	-	ART	1930 Dec
+			-4:00	Arg	AR%sT	1969 Oct  5
+			-3:00	Arg	AR%sT	1999 Oct  3
+			-4:00	Arg	AR%sT	2000 Mar  3
+			-3:00	-	ART	2004 May 30
+			-4:00	-	WART	2004 Jun 20
+			-3:00	Arg	AR%sT	2008 Oct 18
+			-3:00	-	ART
+
+# Aruba
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	America/Aruba	-4:40:24 -	LMT	1912 Feb 12	# Oranjestad
+			-4:30	-	ANT	1965 # Netherlands Antilles Time
+			-4:00	-	AST
+
+# Bolivia
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	America/La_Paz	-4:32:36 -	LMT	1890
+			-4:32:36 -	CMT	1931 Oct 15 # Calamarca MT
+			-4:32:36 1:00	BOST	1932 Mar 21 # Bolivia ST
+			-4:00	-	BOT	# Bolivia Time
+
+# Brazil
+
+# From Paul Eggert (1993-11-18):
+# The mayor of Rio recently attempted to change the time zone rules
+# just in his city, in order to leave more summer time for the tourist trade.
+# The rule change lasted only part of the day;
+# the federal government refused to follow the city's rules, and business
+# was in a chaos, so the mayor backed down that afternoon.
+
+# From IATA SSIM (1996-02):
+# _Only_ the following states in BR1 observe DST: Rio Grande do Sul (RS),
+# Santa Catarina (SC), Parana (PR), Sao Paulo (SP), Rio de Janeiro (RJ),
+# Espirito Santo (ES), Minas Gerais (MG), Bahia (BA), Goias (GO),
+# Distrito Federal (DF), Tocantins (TO), Sergipe [SE] and Alagoas [AL].
+# [The last three states are new to this issue of the IATA SSIM.]
+
+# From Gwillim Law (1996-10-07):
+# Geography, history (Tocantins was part of Goias until 1989), and other
+# sources of time zone information lead me to believe that AL, SE, and TO were
+# always in BR1, and so the only change was whether or not they observed DST....
+# The earliest issue of the SSIM I have is 2/91.  Each issue from then until
+# 9/95 says that DST is observed only in the ten states I quoted from 9/95,
+# along with Mato Grosso (MT) and Mato Grosso do Sul (MS), which are in BR2
+# (UTC-4)....  The other two time zones given for Brazil are BR3, which is
+# UTC-5, no DST, and applies only in the state of Acre (AC); and BR4, which is
+# UTC-2, and applies to Fernando de Noronha (formerly FN, but I believe it's
+# become part of the state of Pernambuco).  The boundary between BR1 and BR2
+# has never been clearly stated.  They've simply been called East and West.
+# However, some conclusions can be drawn from another IATA manual: the Airline
+# Coding Directory, which lists close to 400 airports in Brazil.  For each
+# airport it gives a time zone which is coded to the SSIM.  From that
+# information, I'm led to conclude that the states of Amapa (AP), Ceara (CE),
+# Maranhao (MA), Paraiba (PR), Pernambuco (PE), Piaui (PI), and Rio Grande do
+# Norte (RN), and the eastern part of Para (PA) are all in BR1 without DST.
+
+# From Marcos Tadeu (1998-09-27):
+# 
+# Brazilian official page
+# 
+
+# From Jesper Norgaard (2000-11-03):
+# [For an official list of which regions in Brazil use which time zones, see:]
+# http://pcdsh01.on.br/Fusbr.htm
+# http://pcdsh01.on.br/Fusbrhv.htm
+
+# From Celso Doria via David Madeo (2002-10-09):
+# The reason for the delay this year has to do with elections in Brazil.
+#
+# Unlike in the United States, elections in Brazil are 100% computerized and
+# the results are known almost immediately.  Yesterday, it was the first
+# round of the elections when 115 million Brazilians voted for President,
+# Governor, Senators, Federal Deputies, and State Deputies.  Nobody is
+# counting (or re-counting) votes anymore and we know there will be a second
+# round for the Presidency and also for some Governors.  The 2nd round will
+# take place on October 27th.
+#
+# The reason why the DST will only begin November 3rd is that the thousands
+# of electoral machines used cannot have their time changed, and since the
+# Constitution says the elections must begin at 8:00 AM and end at 5:00 PM,
+# the Government decided to postpone DST, instead of changing the Constitution
+# (maybe, for the next elections, it will be possible to change the clock)...
+
+# From Rodrigo Severo (2004-10-04):
+# It's just the biannual change made necessary by the much hyped, supposedly
+# modern Brazilian eletronic voting machines which, apparently, can't deal
+# with a time change between the first and the second rounds of the elections.
+
+# From Steffen Thorsen (2007-09-20):
+# Brazil will start DST on 2007-10-14 00:00 and end on 2008-02-17 00:00:
+# http://www.mme.gov.br/site/news/detail.do;jsessionid=BBA06811AFCAAC28F0285210913513DA?newsId=13975
+
+# From Paul Schulze (2008-06-24):
+# ...by law number 11.662 of April 24, 2008 (published in the "Diario
+# Oficial da Uniao"...) in Brazil there are changes in the timezones,
+# effective today (00:00am at June 24, 2008) as follows:
+#
+# a) The timezone UTC+5 is e[x]tinguished, with all the Acre state and the
+# part of the Amazonas state that had this timezone now being put to the
+# timezone UTC+4
+# b) The whole Para state now is put at timezone UTC+3, instead of just
+# part of it, as was before.
+#
+# This change follows a proposal of senator Tiao Viana of Acre state, that
+# proposed it due to concerns about open television channels displaying
+# programs inappropriate to youths in the states that had the timezone
+# UTC+5 too early in the night. In the occasion, some more corrections
+# were proposed, trying to unify the timezones of any given state. This
+# change modifies timezone rules defined in decree 2.784 of 18 June,
+# 1913.
+
+# From Rodrigo Severo (2008-06-24):
+# Just correcting the URL:
+# 
+# https://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=do&secao=1&pagina=1&data=25/04/2008
+# 
+#
+# As a result of the above Decree I believe the America/Rio_Branco
+# timezone shall be modified from UTC-5 to UTC-4 and a new timezone shall
+# be created to represent the...west side of the Para State. I
+# suggest this new timezone be called Santarem as the most
+# important/populated city in the affected area.
+#
+# This new timezone would be the same as the Rio_Branco timezone up to
+# the 2008/06/24 change which would be to UTC-3 instead of UTC-4.
+
+# From Alex Krivenyshev (2008-06-24):
+# This is a quick reference page for New and Old Brazil Time Zones map.
+# 
+# http://www.worldtimezone.com/brazil-time-new-old.php
+# 
+#
+# - 4 time zones replaced by 3 time zones-eliminating time zone UTC- 05
+# (state Acre and the part of the Amazonas will be UTC/GMT- 04) - western
+# part of Par state is moving to one timezone UTC- 03 (from UTC -04).
+
+# From Paul Eggert (2002-10-10):
+# The official decrees referenced below are mostly taken from
+# 
+# Decretos sobre o Horario de Verao no Brasil
+# .
+
+# From Steffen Thorsen (2008-08-29):
+# As announced by the government and many newspapers in Brazil late
+# yesterday, Brazil will start DST on 2008-10-19 (need to change rule) and
+# it will end on 2009-02-15 (current rule for Brazil is fine). Based on
+# past years experience with the elections, there was a good chance that
+# the start was postponed to November, but it did not happen this year.
+#
+# It has not yet been posted to http://pcdsh01.on.br/DecHV.html
+#
+# An official page about it:
+# 
+# http://www.mme.gov.br/site/news/detail.do?newsId=16722
+# 
+# Note that this link does not always work directly, but must be accessed
+# by going to
+# 
+# http://www.mme.gov.br/first
+# 
+#
+# One example link that works directly:
+# 
+# http://jornale.com.br/index.php?option=com_content&task=view&id=13530&Itemid=54
+# (Portuguese)
+# 
+#
+# We have a written a short article about it as well:
+# 
+# http://www.timeanddate.com/news/time/brazil-dst-2008-2009.html
+# 
+#
+# From Alexander Krivenyshev (2011-10-04):
+# State Bahia will return to Daylight savings time this year after 8 years off.
+# The announcement was made by Governor Jaques Wagner in an interview to a
+# television station in Salvador.
+
+# In Portuguese:
+# 
+# http://g1.globo.com/bahia/noticia/2011/10/governador-jaques-wagner-confirma-horario-de-verao-na-bahia.html
+#  and
+# 
+# http://noticias.terra.com.br/brasil/noticias/0,,OI5390887-EI8139,00-Bahia+volta+a+ter+horario+de+verao+apos+oito+anos.html
+# 
+
+# From Guilherme Bernardes Rodrigues (2011-10-07):
+# There is news in the media, however there is still no decree about it.
+# I just send a e-mail to Zulmira Brando at
+# http://pcdsh01.on.br/ the
+# oficial agency about time in Brazil, and she confirmed that the old rule is
+# still in force.
+
+# From Guilherme Bernardes Rodrigues (2011-10-14)
+# It's official, the President signed a decree that includes Bahia in summer
+# time.
+#	 [ and in a second message (same day): ]
+# I found the decree.
+#
+# DECRETO No- 7.584, DE 13 DE OUTUBRO DE 2011
+# Link :
+# 
+# http://www.in.gov.br/visualiza/index.jsp?data=13/10/2011&jornal=1000&pagina=6&totalArquivos=6
+# 
+
+# From Kelley Cook (2012-10-16):
+# The governor of state of Bahia in Brazil announced on Thursday that
+# due to public pressure, he is reversing the DST policy they implemented
+# last year and will not be going to Summer Time on October 21st....
+# http://www.correio24horas.com.br/r/artigo/apos-pressoes-wagner-suspende-horario-de-verao-na-bahia
+
+# From Rodrigo Severo (2012-10-16):
+# Tocantins state will have DST.
+# http://noticias.terra.com.br/brasil/noticias/0,,OI6232536-EI306.html
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+# Decree 20,466 (1931-10-01)
+# Decree 21,896 (1932-01-10)
+Rule	Brazil	1931	only	-	Oct	 3	11:00	1:00	S
+Rule	Brazil	1932	1933	-	Apr	 1	 0:00	0	-
+Rule	Brazil	1932	only	-	Oct	 3	 0:00	1:00	S
+# Decree 23,195 (1933-10-10)
+# revoked DST.
+# Decree 27,496 (1949-11-24)
+# Decree 27,998 (1950-04-13)
+Rule	Brazil	1949	1952	-	Dec	 1	 0:00	1:00	S
+Rule	Brazil	1950	only	-	Apr	16	 1:00	0	-
+Rule	Brazil	1951	1952	-	Apr	 1	 0:00	0	-
+# Decree 32,308 (1953-02-24)
+Rule	Brazil	1953	only	-	Mar	 1	 0:00	0	-
+# Decree 34,724 (1953-11-30)
+# revoked DST.
+# Decree 52,700 (1963-10-18)
+# established DST from 1963-10-23 00:00 to 1964-02-29 00:00
+# in SP, RJ, GB, MG, ES, due to the prolongation of the drought.
+# Decree 53,071 (1963-12-03)
+# extended the above decree to all of the national territory on 12-09.
+Rule	Brazil	1963	only	-	Dec	 9	 0:00	1:00	S
+# Decree 53,604 (1964-02-25)
+# extended summer time by one day to 1964-03-01 00:00 (start of school).
+Rule	Brazil	1964	only	-	Mar	 1	 0:00	0	-
+# Decree 55,639 (1965-01-27)
+Rule	Brazil	1965	only	-	Jan	31	 0:00	1:00	S
+Rule	Brazil	1965	only	-	Mar	31	 0:00	0	-
+# Decree 57,303 (1965-11-22)
+Rule	Brazil	1965	only	-	Dec	 1	 0:00	1:00	S
+# Decree 57,843 (1966-02-18)
+Rule	Brazil	1966	1968	-	Mar	 1	 0:00	0	-
+Rule	Brazil	1966	1967	-	Nov	 1	 0:00	1:00	S
+# Decree 63,429 (1968-10-15)
+# revoked DST.
+# Decree 91,698 (1985-09-27)
+Rule	Brazil	1985	only	-	Nov	 2	 0:00	1:00	S
+# Decree 92,310 (1986-01-21)
+# Decree 92,463 (1986-03-13)
+Rule	Brazil	1986	only	-	Mar	15	 0:00	0	-
+# Decree 93,316 (1986-10-01)
+Rule	Brazil	1986	only	-	Oct	25	 0:00	1:00	S
+Rule	Brazil	1987	only	-	Feb	14	 0:00	0	-
+# Decree 94,922 (1987-09-22)
+Rule	Brazil	1987	only	-	Oct	25	 0:00	1:00	S
+Rule	Brazil	1988	only	-	Feb	 7	 0:00	0	-
+# Decree 96,676 (1988-09-12)
+# except for the states of AC, AM, PA, RR, RO, and AP (then a territory)
+Rule	Brazil	1988	only	-	Oct	16	 0:00	1:00	S
+Rule	Brazil	1989	only	-	Jan	29	 0:00	0	-
+# Decree 98,077 (1989-08-21)
+# with the same exceptions
+Rule	Brazil	1989	only	-	Oct	15	 0:00	1:00	S
+Rule	Brazil	1990	only	-	Feb	11	 0:00	0	-
+# Decree 99,530 (1990-09-17)
+# adopted by RS, SC, PR, SP, RJ, ES, MG, GO, MS, DF.
+# Decree 99,629 (1990-10-19) adds BA, MT.
+Rule	Brazil	1990	only	-	Oct	21	 0:00	1:00	S
+Rule	Brazil	1991	only	-	Feb	17	 0:00	0	-
+# Unnumbered decree (1991-09-25)
+# adopted by RS, SC, PR, SP, RJ, ES, MG, BA, GO, MT, MS, DF.
+Rule	Brazil	1991	only	-	Oct	20	 0:00	1:00	S
+Rule	Brazil	1992	only	-	Feb	 9	 0:00	0	-
+# Unnumbered decree (1992-10-16)
+# adopted by same states.
+Rule	Brazil	1992	only	-	Oct	25	 0:00	1:00	S
+Rule	Brazil	1993	only	-	Jan	31	 0:00	0	-
+# Decree 942 (1993-09-28)
+# adopted by same states, plus AM.
+# Decree 1,252 (1994-09-22;
+# web page corrected 2004-01-07) adopted by same states, minus AM.
+# Decree 1,636 (1995-09-14)
+# adopted by same states, plus MT and TO.
+# Decree 1,674 (1995-10-13)
+# adds AL, SE.
+Rule	Brazil	1993	1995	-	Oct	Sun>=11	 0:00	1:00	S
+Rule	Brazil	1994	1995	-	Feb	Sun>=15	 0:00	0	-
+Rule	Brazil	1996	only	-	Feb	11	 0:00	0	-
+# Decree 2,000 (1996-09-04)
+# adopted by same states, minus AL, SE.
+Rule	Brazil	1996	only	-	Oct	 6	 0:00	1:00	S
+Rule	Brazil	1997	only	-	Feb	16	 0:00	0	-
+# From Daniel C. Sobral (1998-02-12):
+# In 1997, the DS began on October 6. The stated reason was that
+# because international television networks ignored Brazil's policy on DS,
+# they bought the wrong times on satellite for coverage of Pope's visit.
+# This year, the ending date of DS was postponed to March 1
+# to help dealing with the shortages of electric power.
+#
+# Decree 2,317 (1997-09-04), adopted by same states.
+Rule	Brazil	1997	only	-	Oct	 6	 0:00	1:00	S
+# Decree 2,495
+# (1998-02-10)
+Rule	Brazil	1998	only	-	Mar	 1	 0:00	0	-
+# Decree 2,780 (1998-09-11)
+# adopted by the same states as before.
+Rule	Brazil	1998	only	-	Oct	11	 0:00	1:00	S
+Rule	Brazil	1999	only	-	Feb	21	 0:00	0	-
+# Decree 3,150
+# (1999-08-23) adopted by same states.
+# Decree 3,188 (1999-09-30)
+# adds SE, AL, PB, PE, RN, CE, PI, MA and RR.
+Rule	Brazil	1999	only	-	Oct	 3	 0:00	1:00	S
+Rule	Brazil	2000	only	-	Feb	27	 0:00	0	-
+# Decree 3,592 (2000-09-06)
+# adopted by the same states as before.
+# Decree 3,630 (2000-10-13)
+# repeals DST in PE and RR, effective 2000-10-15 00:00.
+# Decree 3,632 (2000-10-17)
+# repeals DST in SE, AL, PB, RN, CE, PI and MA, effective 2000-10-22 00:00.
+# Decree 3,916
+# (2001-09-13) reestablishes DST in AL, CE, MA, PB, PE, PI, RN, SE.
+Rule	Brazil	2000	2001	-	Oct	Sun>=8	 0:00	1:00	S
+Rule	Brazil	2001	2006	-	Feb	Sun>=15	 0:00	0	-
+# Decree 4,399 (2002-10-01) repeals DST in AL, CE, MA, PB, PE, PI, RN, SE.
+# 4,399
+Rule	Brazil	2002	only	-	Nov	 3	 0:00	1:00	S
+# Decree 4,844 (2003-09-24; corrected 2003-09-26) repeals DST in BA, MT, TO.
+# 4,844
+Rule	Brazil	2003	only	-	Oct	19	 0:00	1:00	S
+# Decree 5,223 (2004-10-01) reestablishes DST in MT.
+# 5,223
+Rule	Brazil	2004	only	-	Nov	 2	 0:00	1:00	S
+# Decree 5,539 (2005-09-19),
+# adopted by the same states as before.
+Rule	Brazil	2005	only	-	Oct	16	 0:00	1:00	S
+# Decree 5,920 (2006-10-03),
+# adopted by the same states as before.
+Rule	Brazil	2006	only	-	Nov	 5	 0:00	1:00	S
+Rule	Brazil	2007	only	-	Feb	25	 0:00	0	-
+# Decree 6,212 (2007-09-26),
+# adopted by the same states as before.
+Rule	Brazil	2007	only	-	Oct	Sun>=8	 0:00	1:00	S
+# From Frederico A. C. Neves (2008-09-10):
+# Acording to this decree
+# 
+# http://www.planalto.gov.br/ccivil_03/_Ato2007-2010/2008/Decreto/D6558.htm
+# 
+# [t]he DST period in Brazil now on will be from the 3rd Oct Sunday to the
+# 3rd Feb Sunday. There is an exception on the return date when this is
+# the Carnival Sunday then the return date will be the next Sunday...
+Rule	Brazil	2008	max	-	Oct	Sun>=15	0:00	1:00	S
+Rule	Brazil	2008	2011	-	Feb	Sun>=15	0:00	0	-
+Rule	Brazil	2012	only	-	Feb	Sun>=22	0:00	0	-
+Rule	Brazil	2013	2014	-	Feb	Sun>=15	0:00	0	-
+Rule	Brazil	2015	only	-	Feb	Sun>=22	0:00	0	-
+Rule	Brazil	2016	2022	-	Feb	Sun>=15	0:00	0	-
+Rule	Brazil	2023	only	-	Feb	Sun>=22	0:00	0	-
+Rule	Brazil	2024	2025	-	Feb	Sun>=15	0:00	0	-
+Rule	Brazil	2026	only	-	Feb	Sun>=22	0:00	0	-
+Rule	Brazil	2027	2033	-	Feb	Sun>=15	0:00	0	-
+Rule	Brazil	2034	only	-	Feb	Sun>=22	0:00	0	-
+Rule	Brazil	2035	2036	-	Feb	Sun>=15	0:00	0	-
+Rule	Brazil	2037	only	-	Feb	Sun>=22	0:00	0	-
+# From Arthur David Olson (2008-09-29):
+# The next is wrong in some years but is better than nothing.
+Rule	Brazil	2038	max	-	Feb	Sun>=15	0:00	0	-
+
+# The latest ruleset listed above says that the following states observe DST:
+# DF, ES, GO, MG, MS, MT, PR, RJ, RS, SC, SP.
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+#
+# Fernando de Noronha (administratively part of PE)
+Zone America/Noronha	-2:09:40 -	LMT	1914
+			-2:00	Brazil	FN%sT	1990 Sep 17
+			-2:00	-	FNT	1999 Sep 30
+			-2:00	Brazil	FN%sT	2000 Oct 15
+			-2:00	-	FNT	2001 Sep 13
+			-2:00	Brazil	FN%sT	2002 Oct  1
+			-2:00	-	FNT
+# Other Atlantic islands have no permanent settlement.
+# These include Trindade and Martin Vaz (administratively part of ES),
+# Atol das Rocas (RN), and Penedos de Sao Pedro e Sao Paulo (PE).
+# Fernando de Noronha was a separate territory from 1942-09-02 to 1989-01-01;
+# it also included the Penedos.
+#
+# Amapa (AP), east Para (PA)
+# East Para includes Belem, Maraba, Serra Norte, and Sao Felix do Xingu.
+# The division between east and west Para is the river Xingu.
+# In the north a very small part from the river Javary (now Jari I guess,
+# the border with Amapa) to the Amazon, then to the Xingu.
+Zone America/Belem	-3:13:56 -	LMT	1914
+			-3:00	Brazil	BR%sT	1988 Sep 12
+			-3:00	-	BRT
+#
+# west Para (PA)
+# West Para includes Altamira, Oribidos, Prainha, Oriximina, and Santarem.
+Zone America/Santarem	-3:38:48 -	LMT	1914
+			-4:00	Brazil	AM%sT	1988 Sep 12
+			-4:00	-	AMT	2008 Jun 24 00:00
+			-3:00	-	BRT
+#
+# Maranhao (MA), Piaui (PI), Ceara (CE), Rio Grande do Norte (RN),
+# Paraiba (PB)
+Zone America/Fortaleza	-2:34:00 -	LMT	1914
+			-3:00	Brazil	BR%sT	1990 Sep 17
+			-3:00	-	BRT	1999 Sep 30
+			-3:00	Brazil	BR%sT	2000 Oct 22
+			-3:00	-	BRT	2001 Sep 13
+			-3:00	Brazil	BR%sT	2002 Oct  1
+			-3:00	-	BRT
+#
+# Pernambuco (PE) (except Atlantic islands)
+Zone America/Recife	-2:19:36 -	LMT	1914
+			-3:00	Brazil	BR%sT	1990 Sep 17
+			-3:00	-	BRT	1999 Sep 30
+			-3:00	Brazil	BR%sT	2000 Oct 15
+			-3:00	-	BRT	2001 Sep 13
+			-3:00	Brazil	BR%sT	2002 Oct  1
+			-3:00	-	BRT
+#
+# Tocantins (TO)
+Zone America/Araguaina	-3:12:48 -	LMT	1914
+			-3:00	Brazil	BR%sT	1990 Sep 17
+			-3:00	-	BRT	1995 Sep 14
+			-3:00	Brazil	BR%sT	2003 Sep 24
+			-3:00	-	BRT	2012 Oct 21
+			-3:00	Brazil	BR%sT
+#
+# Alagoas (AL), Sergipe (SE)
+Zone America/Maceio	-2:22:52 -	LMT	1914
+			-3:00	Brazil	BR%sT	1990 Sep 17
+			-3:00	-	BRT	1995 Oct 13
+			-3:00	Brazil	BR%sT	1996 Sep  4
+			-3:00	-	BRT	1999 Sep 30
+			-3:00	Brazil	BR%sT	2000 Oct 22
+			-3:00	-	BRT	2001 Sep 13
+			-3:00	Brazil	BR%sT	2002 Oct  1
+			-3:00	-	BRT
+#
+# Bahia (BA)
+# There are too many Salvadors elsewhere, so use America/Bahia instead
+# of America/Salvador.
+Zone America/Bahia	-2:34:04 -	LMT	1914
+			-3:00	Brazil	BR%sT	2003 Sep 24
+			-3:00	-	BRT	2011 Oct 16
+			-3:00	Brazil	BR%sT	2012 Oct 21
+			-3:00	-	BRT
+#
+# Goias (GO), Distrito Federal (DF), Minas Gerais (MG),
+# Espirito Santo (ES), Rio de Janeiro (RJ), Sao Paulo (SP), Parana (PR),
+# Santa Catarina (SC), Rio Grande do Sul (RS)
+Zone America/Sao_Paulo	-3:06:28 -	LMT	1914
+			-3:00	Brazil	BR%sT	1963 Oct 23 00:00
+			-3:00	1:00	BRST	1964
+			-3:00	Brazil	BR%sT
+#
+# Mato Grosso do Sul (MS)
+Zone America/Campo_Grande -3:38:28 -	LMT	1914
+			-4:00	Brazil	AM%sT
+#
+# Mato Grosso (MT)
+Zone America/Cuiaba	-3:44:20 -	LMT	1914
+			-4:00	Brazil	AM%sT	2003 Sep 24
+			-4:00	-	AMT	2004 Oct  1
+			-4:00	Brazil	AM%sT
+#
+# Rondonia (RO)
+Zone America/Porto_Velho -4:15:36 -	LMT	1914
+			-4:00	Brazil	AM%sT	1988 Sep 12
+			-4:00	-	AMT
+#
+# Roraima (RR)
+Zone America/Boa_Vista	-4:02:40 -	LMT	1914
+			-4:00	Brazil	AM%sT	1988 Sep 12
+			-4:00	-	AMT	1999 Sep 30
+			-4:00	Brazil	AM%sT	2000 Oct 15
+			-4:00	-	AMT
+#
+# east Amazonas (AM): Boca do Acre, Jutai, Manaus, Floriano Peixoto
+# The great circle line from Tabatinga to Porto Acre divides
+# east from west Amazonas.
+Zone America/Manaus	-4:00:04 -	LMT	1914
+			-4:00	Brazil	AM%sT	1988 Sep 12
+			-4:00	-	AMT	1993 Sep 28
+			-4:00	Brazil	AM%sT	1994 Sep 22
+			-4:00	-	AMT
+#
+# west Amazonas (AM): Atalaia do Norte, Boca do Maoco, Benjamin Constant,
+#	Eirunepe, Envira, Ipixuna
+Zone America/Eirunepe	-4:39:28 -	LMT	1914
+			-5:00	Brazil	AC%sT	1988 Sep 12
+			-5:00	-	ACT	1993 Sep 28
+			-5:00	Brazil	AC%sT	1994 Sep 22
+			-5:00	-	ACT	2008 Jun 24 00:00
+			-4:00	-	AMT
+#
+# Acre (AC)
+Zone America/Rio_Branco	-4:31:12 -	LMT	1914
+			-5:00	Brazil	AC%sT	1988 Sep 12
+			-5:00	-	ACT	2008 Jun 24 00:00
+			-4:00	-	AMT
+
+# Chile
+
+# From Eduardo Krell (1995-10-19):
+# The law says to switch to DST at midnight [24:00] on the second SATURDAY
+# of October....  The law is the same for March and October.
+# (1998-09-29):
+# Because of the drought this year, the government decided to go into
+# DST earlier (saturday 9/26 at 24:00). This is a one-time change only ...
+# (unless there's another dry season next year, I guess).
+
+# From Julio I. Pacheco Troncoso (1999-03-18):
+# Because of the same drought, the government decided to end DST later,
+# on April 3, (one-time change).
+
+# From Oscar van Vlijmen (2006-10-08):
+# http://www.horaoficial.cl/cambio.htm
+
+# From Jesper Norgaard Welen (2006-10-08):
+# I think that there are some obvious mistakes in the suggested link
+# from Oscar van Vlijmen,... for instance entry 66 says that GMT-4
+# ended 1990-09-12 while entry 67 only begins GMT-3 at 1990-09-15
+# (they should have been 1990-09-15 and 1990-09-16 respectively), but
+# anyhow it clears up some doubts too.
+
+# From Paul Eggert (2006-12-27):
+# The following data for Chile and America/Santiago are from
+#  (2006-09-20), transcribed by
+# Jesper Norgaard Welen.  The data for Pacific/Easter are from Shanks
+# & Pottenger, except with DST transitions after 1932 cloned from
+# America/Santiago.  The pre-1980 Pacific/Easter data are dubious,
+# but we have no other source.
+
+# From German Poo-Caaman~o (2008-03-03):
+# Due to drought, Chile extends Daylight Time in three weeks.  This
+# is one-time change (Saturday 3/29 at 24:00 for America/Santiago
+# and Saturday 3/29 at 22:00 for Pacific/Easter)
+# The Supreme Decree is located at
+# 
+# http://www.shoa.cl/servicios/supremo316.pdf
+# 
+# and the instructions for 2008 are located in:
+# 
+# http://www.horaoficial.cl/cambio.htm
+# .
+
+# From Jose Miguel Garrido (2008-03-05):
+# ...
+# You could see the announces of the change on
+# 
+# http://www.shoa.cl/noticias/2008/04hora/hora.htm
+# .
+
+# From Angel Chiang (2010-03-04):
+# Subject: DST in Chile exceptionally extended to 3 April due to earthquake
+# 
+# http://www.gobiernodechile.cl/viewNoticia.aspx?idArticulo=30098
+# 
+# (in Spanish, last paragraph).
+#
+# This is breaking news. There should be more information available later.
+
+# From Arthur Daivd Olson (2010-03-06):
+# Angel Chiang's message confirmed by Julio Pacheco; Julio provided a patch.
+
+# From Glenn Eychaner (2011-03-02): [geychaner@mac.com]
+# It appears that the Chilean government has decided to postpone the
+# change from summer time to winter time again, by three weeks to April
+# 2nd:
+# 
+# http://www.emol.com/noticias/nacional/detalle/detallenoticias.asp?idnoticia=467651
+# 
+#
+# This is not yet reflected in the offical "cambio de hora" site, but
+# probably will be soon:
+# 
+# http://www.horaoficial.cl/cambio.htm
+# 
+
+# From Arthur David Olson (2011-03-02):
+# The emol.com article mentions a water shortage as the cause of the
+# postponement, which may mean that it's not a permanent change.
+
+# From Glenn Eychaner (2011-03-28):
+# The article:
+# 
+# http://diario.elmercurio.com/2011/03/28/_portada/_portada/noticias/7565897A-CA86-49E6-9E03-660B21A4883E.htm?id=3D{7565897A-CA86-49E6-9E03-660B21A4883E}
+# 
+#
+# In English:
+# Chile's clocks will go back an hour this year on the 7th of May instead
+# of this Saturday. They will go forward again the 3rd Saturday in
+# August, not in October as they have since 1968. This is a pilot plan
+# which will be reevaluated in 2012.
+
+# From Mauricio Parada (2012-02-22), translated by Glenn Eychaner (2012-02-23):
+# As stated in the website of the Chilean Energy Ministry
+# http://www.minenergia.cl/ministerio/noticias/generales/gobierno-anuncia-fechas-de-cambio-de.html
+# The Chilean Government has decided to postpone the entrance into winter time
+# (to leave DST) from March 11 2012 to April 28th 2012. The decision has not
+# been yet formalized but it will within the next days.
+# Quote from the website communication:
+#
+# 6. For the year 2012, the dates of entry into winter time will be as follows:
+# a. Saturday April 28, 2012, clocks should go back 60 minutes; that is, at
+# 23:59:59, instead of passing to 0:00, the time should be adjusted to be 23:00
+# of the same day.
+# b. Saturday, September 1, 2012, clocks should go forward 60 minutes; that is,
+# at 23:59:59, instead of passing to 0:00, the time should be adjusted to be
+# 01:00 on September 2.
+#
+# Note that...this is yet another "temporary" change that will be reevaluated
+# AGAIN in 2013.
+
+# NOTE: ChileAQ rules for Antarctic bases are stored separately in the
+# 'antarctica' file.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Chile	1927	1932	-	Sep	 1	0:00	1:00	S
+Rule	Chile	1928	1932	-	Apr	 1	0:00	0	-
+Rule	Chile	1942	only	-	Jun	 1	4:00u	0	-
+Rule	Chile	1942	only	-	Aug	 1	5:00u	1:00	S
+Rule	Chile	1946	only	-	Jul	15	4:00u	1:00	S
+Rule	Chile	1946	only	-	Sep	 1	3:00u	0:00	-
+Rule	Chile	1947	only	-	Apr	 1	4:00u	0	-
+Rule	Chile	1968	only	-	Nov	 3	4:00u	1:00	S
+Rule	Chile	1969	only	-	Mar	30	3:00u	0	-
+Rule	Chile	1969	only	-	Nov	23	4:00u	1:00	S
+Rule	Chile	1970	only	-	Mar	29	3:00u	0	-
+Rule	Chile	1971	only	-	Mar	14	3:00u	0	-
+Rule	Chile	1970	1972	-	Oct	Sun>=9	4:00u	1:00	S
+Rule	Chile	1972	1986	-	Mar	Sun>=9	3:00u	0	-
+Rule	Chile	1973	only	-	Sep	30	4:00u	1:00	S
+Rule	Chile	1974	1987	-	Oct	Sun>=9	4:00u	1:00	S
+Rule	Chile	1987	only	-	Apr	12	3:00u	0	-
+Rule	Chile	1988	1989	-	Mar	Sun>=9	3:00u	0	-
+Rule	Chile	1988	only	-	Oct	Sun>=1	4:00u	1:00	S
+Rule	Chile	1989	only	-	Oct	Sun>=9	4:00u	1:00	S
+Rule	Chile	1990	only	-	Mar	18	3:00u	0	-
+Rule	Chile	1990	only	-	Sep	16	4:00u	1:00	S
+Rule	Chile	1991	1996	-	Mar	Sun>=9	3:00u	0	-
+Rule	Chile	1991	1997	-	Oct	Sun>=9	4:00u	1:00	S
+Rule	Chile	1997	only	-	Mar	30	3:00u	0	-
+Rule	Chile	1998	only	-	Mar	Sun>=9	3:00u	0	-
+Rule	Chile	1998	only	-	Sep	27	4:00u	1:00	S
+Rule	Chile	1999	only	-	Apr	 4	3:00u	0	-
+Rule	Chile	1999	2010	-	Oct	Sun>=9	4:00u	1:00	S
+Rule	Chile	2000	2007	-	Mar	Sun>=9	3:00u	0	-
+# N.B.: the end of March 29 in Chile is March 30 in Universal time,
+# which is used below in specifying the transition.
+Rule	Chile	2008	only	-	Mar	30	3:00u	0	-
+Rule	Chile	2009	only	-	Mar	Sun>=9	3:00u	0	-
+Rule	Chile	2010	only	-	Apr	Sun>=1	3:00u	0	-
+Rule	Chile	2011	only	-	May	Sun>=2	3:00u	0	-
+Rule	Chile	2011	only	-	Aug	Sun>=16	4:00u	1:00	S
+Rule	Chile	2012	only	-	Apr	Sun>=23	3:00u	0	-
+Rule	Chile	2012	only	-	Sep	Sun>=2	4:00u	1:00	S
+Rule	Chile	2013	max	-	Mar	Sun>=9	3:00u	0	-
+Rule	Chile	2013	max	-	Oct	Sun>=9	4:00u	1:00	S
+# IATA SSIM anomalies: (1992-02) says 1992-03-14;
+# (1996-09) says 1998-03-08.  Ignore these.
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Santiago	-4:42:46 -	LMT	1890
+			-4:42:46 -	SMT	1910 	    # Santiago Mean Time
+			-5:00	-	CLT	1916 Jul  1 # Chile Time
+			-4:42:46 -	SMT	1918 Sep  1 # Santiago Mean Time
+			-4:00	-	CLT	1919 Jul  1 # Chile Time
+			-4:42:46 -	SMT	1927 Sep  1 # Santiago Mean Time
+			-5:00	Chile	CL%sT	1947 May 22 # Chile Time
+			-4:00	Chile	CL%sT
+Zone Pacific/Easter	-7:17:44 -	LMT	1890
+			-7:17:28 -	EMT	1932 Sep    # Easter Mean Time
+			-7:00	Chile	EAS%sT	1982 Mar 13 21:00 # Easter I Time
+			-6:00	Chile	EAS%sT
+#
+# Sala y Gomez Island is like Pacific/Easter.
+# Other Chilean locations, including Juan Fernandez Is, San Ambrosio,
+# San Felix, and Antarctic bases, are like America/Santiago.
+
+# Colombia
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	CO	1992	only	-	May	 3	0:00	1:00	S
+Rule	CO	1993	only	-	Apr	 4	0:00	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	America/Bogota	-4:56:20 -	LMT	1884 Mar 13
+			-4:56:20 -	BMT	1914 Nov 23 # Bogota Mean Time
+			-5:00	CO	CO%sT	# Colombia Time
+# Malpelo, Providencia, San Andres
+# no information; probably like America/Bogota
+
+# Curacao
+#
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger say that The Bottom and Philipsburg have been at
+# -4:00 since standard time was introduced on 1912-03-02; and that
+# Kralendijk and Rincon used Kralendijk Mean Time (-4:33:08) from
+# 1912-02-02 to 1965-01-01.  The former is dubious, since S&P also say
+# Saba Island has been like Curacao.
+# This all predates our 1970 cutoff, though.
+#
+# By July 2007 Curacao and St Maarten are planned to become
+# associated states within the Netherlands, much like Aruba;
+# Bonaire, Saba and St Eustatius would become directly part of the
+# Netherlands as Kingdom Islands.  This won't affect their time zones
+# though, as far as we know.
+#
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	America/Curacao	-4:35:44 -	LMT	1912 Feb 12	# Willemstad
+			-4:30	-	ANT	1965 # Netherlands Antilles Time
+			-4:00	-	AST
+
+# From Arthur David Olson (2011-06-15):
+# At least for now, use links for places with new iso3166 codes.
+# The name "Lower Prince's Quarter" is both longer than fourteen charaters
+# and contains an apostrophe; use "Lower_Princes" below.
+
+Link	America/Curacao	America/Lower_Princes # Sint Maarten
+Link	America/Curacao	America/Kralendijk # Bonaire, Sint Estatius and Saba
+
+# Ecuador
+#
+# From Paul Eggert (2007-03-04):
+# Apparently Ecuador had a failed experiment with DST in 1992.
+#  (2007-02-27) and
+#  (2006-11-06) both
+# talk about "hora Sixto".  Leave this alone for now, as we have no data.
+#
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Guayaquil	-5:19:20 -	LMT	1890
+			-5:14:00 -	QMT	1931 # Quito Mean Time
+			-5:00	-	ECT	     # Ecuador Time
+Zone Pacific/Galapagos	-5:58:24 -	LMT	1931 # Puerto Baquerizo Moreno
+			-5:00	-	ECT	1986
+			-6:00	-	GALT	     # Galapagos Time
+
+# Falklands
+
+# From Paul Eggert (2006-03-22):
+# Between 1990 and 2000 inclusive, Shanks & Pottenger and the IATA agree except
+# the IATA gives 1996-09-08.  Go with Shanks & Pottenger.
+
+# From Falkland Islands Government Office, London (2001-01-22)
+# via Jesper Norgaard:
+# ... the clocks revert back to Local Mean Time at 2 am on Sunday 15
+# April 2001 and advance one hour to summer time at 2 am on Sunday 2
+# September.  It is anticipated that the clocks will revert back at 2
+# am on Sunday 21 April 2002 and advance to summer time at 2 am on
+# Sunday 1 September.
+
+# From Rives McDow (2001-02-13):
+#
+# I have communicated several times with people there, and the last
+# time I had communications that was helpful was in 1998.  Here is
+# what was said then:
+#
+# "The general rule was that Stanley used daylight saving and the Camp
+# did not. However for various reasons many people in the Camp have
+# started to use daylight saving (known locally as 'Stanley Time')
+# There is no rule as to who uses daylight saving - it is a matter of
+# personal choice and so it is impossible to draw a map showing who
+# uses it and who does not. Any list would be out of date as soon as
+# it was produced. This year daylight saving ended on April 18/19th
+# and started again on September 12/13th.  I do not know what the rule
+# is, but can find out if you like.  We do not change at the same time
+# as UK or Chile."
+#
+# I did have in my notes that the rule was "Second Saturday in Sep at
+# 0:00 until third Saturday in Apr at 0:00".  I think that this does
+# not agree in some cases with Shanks; is this true?
+#
+# Also, there is no mention in the list that some areas in the
+# Falklands do not use DST.  I have found in my communications there
+# that these areas are on the western half of East Falkland and all of
+# West Falkland.  Stanley is the only place that consistently observes
+# DST.  Again, as in other places in the world, the farmers don't like
+# it.  West Falkland is almost entirely sheep farmers.
+#
+# I know one lady there that keeps a list of which farm keeps DST and
+# which doesn't each year.  She runs a shop in Stanley, and says that
+# the list changes each year.  She uses it to communicate to her
+# customers, catching them when they are home for lunch or dinner.
+
+# From Paul Eggert (2001-03-05):
+# For now, we'll just record the time in Stanley, since we have no
+# better info.
+
+# From Steffen Thorsen (2011-04-01):
+# The Falkland Islands will not turn back clocks this winter, but stay on
+# daylight saving time.
+#
+# One source:
+# 
+# http://www.falklandnews.com/public/story.cfm?get=5914&source=3
+# 
+#
+# We have gotten this confirmed by a clerk of the legislative assembly:
+# Normally the clocks revert to Local Mean Time (UTC/GMT -4 hours) on the
+# third Sunday of April at 0200hrs and advance to Summer Time (UTC/GMT -3
+# hours) on the first Sunday of September at 0200hrs.
+#
+# IMPORTANT NOTE: During 2011, on a trial basis, the Falkland Islands
+# will not revert to local mean time, but clocks will remain on Summer
+# time (UTC/GMT - 3 hours) throughout the whole of 2011.  Any long term
+# change to local time following the trial period will be notified.
+#
+# From Andrew Newman (2012-02-24)
+# A letter from Justin McPhee, Chief Executive,
+# Cable & Wireless Falkland Islands (dated 2012-02-22)
+# states...
+#   The current Atlantic/Stanley entry under South America expects the
+#   clocks to go back to standard Falklands Time (FKT) on the 15th April.
+#   The database entry states that in 2011 Stanley was staying on fixed
+#   summer time on a trial basis only.  FIG need to contact IANA and/or
+#   the maintainers of the database to inform them we're adopting
+#   the same policy this year and suggest recommendations for future years.
+#
+# For now we will assume permanent summer time for the Falklands
+# until advised differently (to apply for 2012 and beyond, after the 2011
+# experiment was apparently successful.)
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Falk	1937	1938	-	Sep	lastSun	0:00	1:00	S
+Rule	Falk	1938	1942	-	Mar	Sun>=19	0:00	0	-
+Rule	Falk	1939	only	-	Oct	1	0:00	1:00	S
+Rule	Falk	1940	1942	-	Sep	lastSun	0:00	1:00	S
+Rule	Falk	1943	only	-	Jan	1	0:00	0	-
+Rule	Falk	1983	only	-	Sep	lastSun	0:00	1:00	S
+Rule	Falk	1984	1985	-	Apr	lastSun	0:00	0	-
+Rule	Falk	1984	only	-	Sep	16	0:00	1:00	S
+Rule	Falk	1985	2000	-	Sep	Sun>=9	0:00	1:00	S
+Rule	Falk	1986	2000	-	Apr	Sun>=16	0:00	0	-
+Rule	Falk	2001	2010	-	Apr	Sun>=15	2:00	0	-
+Rule	Falk	2001	2010	-	Sep	Sun>=1	2:00	1:00	S
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Atlantic/Stanley	-3:51:24 -	LMT	1890
+			-3:51:24 -	SMT	1912 Mar 12  # Stanley Mean Time
+			-4:00	Falk	FK%sT	1983 May     # Falkland Is Time
+			-3:00	Falk	FK%sT	1985 Sep 15
+			-4:00	Falk	FK%sT	2010 Sep 5 02:00
+			-3:00	-	FKST
+
+# French Guiana
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Cayenne	-3:29:20 -	LMT	1911 Jul
+			-4:00	-	GFT	1967 Oct # French Guiana Time
+			-3:00	-	GFT
+
+# Guyana
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	America/Guyana	-3:52:40 -	LMT	1915 Mar	# Georgetown
+			-3:45	-	GBGT	1966 May 26 # Br Guiana Time
+			-3:45	-	GYT	1975 Jul 31 # Guyana Time
+			-3:00	-	GYT	1991
+# IATA SSIM (1996-06) says -4:00.  Assume a 1991 switch.
+			-4:00	-	GYT
+
+# Paraguay
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger say that spring transitions are from 01:00 -> 02:00,
+# and autumn transitions are from 00:00 -> 23:00.  Go with pre-1999
+# editions of Shanks, and with the IATA, who say transitions occur at 00:00.
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Para	1975	1988	-	Oct	 1	0:00	1:00	S
+Rule	Para	1975	1978	-	Mar	 1	0:00	0	-
+Rule	Para	1979	1991	-	Apr	 1	0:00	0	-
+Rule	Para	1989	only	-	Oct	22	0:00	1:00	S
+Rule	Para	1990	only	-	Oct	 1	0:00	1:00	S
+Rule	Para	1991	only	-	Oct	 6	0:00	1:00	S
+Rule	Para	1992	only	-	Mar	 1	0:00	0	-
+Rule	Para	1992	only	-	Oct	 5	0:00	1:00	S
+Rule	Para	1993	only	-	Mar	31	0:00	0	-
+Rule	Para	1993	1995	-	Oct	 1	0:00	1:00	S
+Rule	Para	1994	1995	-	Feb	lastSun	0:00	0	-
+Rule	Para	1996	only	-	Mar	 1	0:00	0	-
+# IATA SSIM (2000-02) says 1999-10-10; ignore this for now.
+# From Steffen Thorsen (2000-10-02):
+# I have three independent reports that Paraguay changed to DST this Sunday
+# (10-01).
+#
+# Translated by Gwillim Law (2001-02-27) from
+# 
+# Noticias, a daily paper in Asuncion, Paraguay (2000-10-01)
+# :
+# Starting at 0:00 today, the clock will be set forward 60 minutes, in
+# fulfillment of Decree No. 7,273 of the Executive Power....  The time change
+# system has been operating for several years.  Formerly there was a separate
+# decree each year; the new law has the same effect, but permanently.  Every
+# year, the time will change on the first Sunday of October; likewise, the
+# clock will be set back on the first Sunday of March.
+#
+Rule	Para	1996	2001	-	Oct	Sun>=1	0:00	1:00	S
+# IATA SSIM (1997-09) says Mar 1; go with Shanks & Pottenger.
+Rule	Para	1997	only	-	Feb	lastSun	0:00	0	-
+# Shanks & Pottenger say 1999-02-28; IATA SSIM (1999-02) says 1999-02-27, but
+# (1999-09) reports no date; go with above sources and Gerd Knops (2001-02-27).
+Rule	Para	1998	2001	-	Mar	Sun>=1	0:00	0	-
+# From Rives McDow (2002-02-28):
+# A decree was issued in Paraguay (no. 16350) on 2002-02-26 that changed the
+# dst method to be from the first Sunday in September to the first Sunday in
+# April.
+Rule	Para	2002	2004	-	Apr	Sun>=1	0:00	0	-
+Rule	Para	2002	2003	-	Sep	Sun>=1	0:00	1:00	S
+#
+# From Jesper Norgaard Welen (2005-01-02):
+# There are several sources that claim that Paraguay made
+# a timezone rule change in autumn 2004.
+# From Steffen Thorsen (2005-01-05):
+# Decree 1,867 (2004-03-05)
+# From Carlos Raul Perasso via Jesper Norgaard Welen (2006-10-13)
+# 
+Rule	Para	2004	2009	-	Oct	Sun>=15	0:00	1:00	S
+Rule	Para	2005	2009	-	Mar	Sun>=8	0:00	0	-
+# From Carlos Raul Perasso (2010-02-18):
+# By decree number 3958 issued yesterday (
+# 
+# http://www.presidencia.gov.py/v1/wp-content/uploads/2010/02/decreto3958.pdf
+# 
+# )
+# Paraguay changes its DST schedule, postponing the March rule to April and
+# modifying the October date. The decree reads:
+# ...
+# Art. 1. It is hereby established that from the second Sunday of the month of
+# April of this year (2010), the official time is to be set back 60 minutes,
+# and that on the first Sunday of the month of October, it is to be set
+# forward 60 minutes, in all the territory of the Paraguayan Republic.
+# ...
+Rule	Para	2010	max	-	Oct	Sun>=1	0:00	1:00	S
+Rule	Para	2010	max	-	Apr	Sun>=8	0:00	0	-
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Asuncion	-3:50:40 -	LMT	1890
+			-3:50:40 -	AMT	1931 Oct 10 # Asuncion Mean Time
+			-4:00	-	PYT	1972 Oct # Paraguay Time
+			-3:00	-	PYT	1974 Apr
+			-4:00	Para	PY%sT
+
+# Peru
+#
+# 
+# From Evelyn C. Leeper via Mark Brader (2003-10-26):
+# When we were in Peru in 1985-1986, they apparently switched over
+# sometime between December 29 and January 3 while we were on the Amazon.
+#
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger don't have this transition.  Assume 1986 was like 1987.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Peru	1938	only	-	Jan	 1	0:00	1:00	S
+Rule	Peru	1938	only	-	Apr	 1	0:00	0	-
+Rule	Peru	1938	1939	-	Sep	lastSun	0:00	1:00	S
+Rule	Peru	1939	1940	-	Mar	Sun>=24	0:00	0	-
+Rule	Peru	1986	1987	-	Jan	 1	0:00	1:00	S
+Rule	Peru	1986	1987	-	Apr	 1	0:00	0	-
+Rule	Peru	1990	only	-	Jan	 1	0:00	1:00	S
+Rule	Peru	1990	only	-	Apr	 1	0:00	0	-
+# IATA is ambiguous for 1993/1995; go with Shanks & Pottenger.
+Rule	Peru	1994	only	-	Jan	 1	0:00	1:00	S
+Rule	Peru	1994	only	-	Apr	 1	0:00	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	America/Lima	-5:08:12 -	LMT	1890
+			-5:08:36 -	LMT	1908 Jul 28 # Lima Mean Time?
+			-5:00	Peru	PE%sT	# Peru Time
+
+# South Georgia
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Atlantic/South_Georgia -2:26:08 -	LMT	1890		# Grytviken
+			-2:00	-	GST	# South Georgia Time
+
+# South Sandwich Is
+# uninhabited; scientific personnel have wintered
+
+# Suriname
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Paramaribo	-3:40:40 -	LMT	1911
+			-3:40:52 -	PMT	1935     # Paramaribo Mean Time
+			-3:40:36 -	PMT	1945 Oct # The capital moved?
+			-3:30	-	NEGT	1975 Nov 20 # Dutch Guiana Time
+			-3:30	-	SRT	1984 Oct # Suriname Time
+			-3:00	-	SRT
+
+# Trinidad and Tobago
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Port_of_Spain -4:06:04 -	LMT	1912 Mar 2
+			-4:00	-	AST
+
+# Uruguay
+# From Paul Eggert (1993-11-18):
+# Uruguay wins the prize for the strangest peacetime manipulation of the rules.
+# From Shanks & Pottenger:
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+# Whitman gives 1923 Oct 1; go with Shanks & Pottenger.
+Rule	Uruguay	1923	only	-	Oct	 2	 0:00	0:30	HS
+Rule	Uruguay	1924	1926	-	Apr	 1	 0:00	0	-
+Rule	Uruguay	1924	1925	-	Oct	 1	 0:00	0:30	HS
+Rule	Uruguay	1933	1935	-	Oct	lastSun	 0:00	0:30	HS
+# Shanks & Pottenger give 1935 Apr 1 0:00 & 1936 Mar 30 0:00; go with Whitman.
+Rule	Uruguay	1934	1936	-	Mar	Sat>=25	23:30s	0	-
+Rule	Uruguay	1936	only	-	Nov	 1	 0:00	0:30	HS
+Rule	Uruguay	1937	1941	-	Mar	lastSun	 0:00	0	-
+# Whitman gives 1937 Oct 3; go with Shanks & Pottenger.
+Rule	Uruguay	1937	1940	-	Oct	lastSun	 0:00	0:30	HS
+# Whitman gives 1941 Oct 24 - 1942 Mar 27, 1942 Dec 14 - 1943 Apr 13,
+# and 1943 Apr 13 ``to present time''; go with Shanks & Pottenger.
+Rule	Uruguay	1941	only	-	Aug	 1	 0:00	0:30	HS
+Rule	Uruguay	1942	only	-	Jan	 1	 0:00	0	-
+Rule	Uruguay	1942	only	-	Dec	14	 0:00	1:00	S
+Rule	Uruguay	1943	only	-	Mar	14	 0:00	0	-
+Rule	Uruguay	1959	only	-	May	24	 0:00	1:00	S
+Rule	Uruguay	1959	only	-	Nov	15	 0:00	0	-
+Rule	Uruguay	1960	only	-	Jan	17	 0:00	1:00	S
+Rule	Uruguay	1960	only	-	Mar	 6	 0:00	0	-
+Rule	Uruguay	1965	1967	-	Apr	Sun>=1	 0:00	1:00	S
+Rule	Uruguay	1965	only	-	Sep	26	 0:00	0	-
+Rule	Uruguay	1966	1967	-	Oct	31	 0:00	0	-
+Rule	Uruguay	1968	1970	-	May	27	 0:00	0:30	HS
+Rule	Uruguay	1968	1970	-	Dec	 2	 0:00	0	-
+Rule	Uruguay	1972	only	-	Apr	24	 0:00	1:00	S
+Rule	Uruguay	1972	only	-	Aug	15	 0:00	0	-
+Rule	Uruguay	1974	only	-	Mar	10	 0:00	0:30	HS
+Rule	Uruguay	1974	only	-	Dec	22	 0:00	1:00	S
+Rule	Uruguay	1976	only	-	Oct	 1	 0:00	0	-
+Rule	Uruguay	1977	only	-	Dec	 4	 0:00	1:00	S
+Rule	Uruguay	1978	only	-	Apr	 1	 0:00	0	-
+Rule	Uruguay	1979	only	-	Oct	 1	 0:00	1:00	S
+Rule	Uruguay	1980	only	-	May	 1	 0:00	0	-
+Rule	Uruguay	1987	only	-	Dec	14	 0:00	1:00	S
+Rule	Uruguay	1988	only	-	Mar	14	 0:00	0	-
+Rule	Uruguay	1988	only	-	Dec	11	 0:00	1:00	S
+Rule	Uruguay	1989	only	-	Mar	12	 0:00	0	-
+Rule	Uruguay	1989	only	-	Oct	29	 0:00	1:00	S
+# Shanks & Pottenger say no DST was observed in 1990/1 and 1991/2,
+# and that 1992/3's DST was from 10-25 to 03-01.  Go with IATA.
+Rule	Uruguay	1990	1992	-	Mar	Sun>=1	 0:00	0	-
+Rule	Uruguay	1990	1991	-	Oct	Sun>=21	 0:00	1:00	S
+Rule	Uruguay	1992	only	-	Oct	18	 0:00	1:00	S
+Rule	Uruguay	1993	only	-	Feb	28	 0:00	0	-
+# From Eduardo Cota (2004-09-20):
+# The uruguayan government has decreed a change in the local time....
+# http://www.presidencia.gub.uy/decretos/2004091502.htm
+Rule	Uruguay	2004	only	-	Sep	19	 0:00	1:00	S
+# From Steffen Thorsen (2005-03-11):
+# Uruguay's DST was scheduled to end on Sunday, 2005-03-13, but in order to
+# save energy ... it was postponed two weeks....
+# http://www.presidencia.gub.uy/_Web/noticias/2005/03/2005031005.htm
+Rule	Uruguay	2005	only	-	Mar	27	 2:00	0	-
+# From Eduardo Cota (2005-09-27):
+# http://www.presidencia.gub.uy/_Web/decretos/2005/09/CM%20119_09%2009%202005_00001.PDF
+# This means that from 2005-10-09 at 02:00 local time, until 2006-03-12 at
+# 02:00 local time, official time in Uruguay will be at GMT -2.
+Rule	Uruguay	2005	only	-	Oct	 9	 2:00	1:00	S
+Rule	Uruguay	2006	only	-	Mar	12	 2:00	0	-
+# From Jesper Norgaard Welen (2006-09-06):
+# http://www.presidencia.gub.uy/_web/decretos/2006/09/CM%20210_08%2006%202006_00001.PDF
+Rule	Uruguay	2006	max	-	Oct	Sun>=1	 2:00	1:00	S
+Rule	Uruguay	2007	max	-	Mar	Sun>=8	 2:00	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone America/Montevideo	-3:44:44 -	LMT	1898 Jun 28
+			-3:44:44 -	MMT	1920 May  1	# Montevideo MT
+			-3:30	Uruguay	UY%sT	1942 Dec 14	# Uruguay Time
+			-3:00	Uruguay	UY%sT
+
+# Venezuela
+#
+# From John Stainforth (2007-11-28):
+# ... the change for Venezuela originally expected for 2007-12-31 has
+# been brought forward to 2007-12-09.  The official announcement was
+# published today in the "Gaceta Oficial de la Republica Bolivariana
+# de Venezuela, numero 38.819" (official document for all laws or
+# resolution publication)
+# http://www.globovision.com/news.php?nid=72208
+
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone	America/Caracas	-4:27:44 -	LMT	1890
+			-4:27:40 -	CMT	1912 Feb 12 # Caracas Mean Time?
+			-4:30	-	VET	1965	     # Venezuela Time
+			-4:00	-	VET	2007 Dec  9 03:00
+			-4:30	-	VET
diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/systemv b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/systemv
new file mode 100644
index 0000000..8236a16
--- /dev/null
+++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/systemv
@@ -0,0 +1,38 @@
+# 
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
+
+# Old rules, should the need arise.
+# No attempt is made to handle Newfoundland, since it cannot be expressed
+# using the System V "TZ" scheme (half-hour offset), or anything outside
+# North America (no support for non-standard DST start/end dates), nor
+# the changes in the DST rules in the US after 1976 (which occurred after
+# the old rules were written).
+#
+# If you need the old rules, uncomment ## lines.
+# Compile this *without* leap second correction for true conformance.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	SystemV	min	1973	-	Apr	lastSun	2:00	1:00	D
+Rule	SystemV	min	1973	-	Oct	lastSun	2:00	0	S
+Rule	SystemV	1974	only	-	Jan	6	2:00	1:00	D
+Rule	SystemV	1974	only	-	Nov	lastSun	2:00	0	S
+Rule	SystemV	1975	only	-	Feb	23	2:00	1:00	D
+Rule	SystemV	1975	only	-	Oct	lastSun	2:00	0	S
+Rule	SystemV	1976	max	-	Apr	lastSun	2:00	1:00	D
+Rule	SystemV	1976	max	-	Oct	lastSun	2:00	0	S
+
+# Zone	NAME		GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
+## Zone	SystemV/AST4ADT	-4:00	SystemV		A%sT
+## Zone	SystemV/EST5EDT	-5:00	SystemV		E%sT
+## Zone	SystemV/CST6CDT	-6:00	SystemV		C%sT
+## Zone	SystemV/MST7MDT	-7:00	SystemV		M%sT
+## Zone	SystemV/PST8PDT	-8:00	SystemV		P%sT
+## Zone	SystemV/YST9YDT	-9:00	SystemV		Y%sT
+## Zone	SystemV/AST4	-4:00	-		AST
+## Zone	SystemV/EST5	-5:00	-		EST
+## Zone	SystemV/CST6	-6:00	-		CST
+## Zone	SystemV/MST7	-7:00	-		MST
+## Zone	SystemV/PST8	-8:00	-		PST
+## Zone	SystemV/YST9	-9:00	-		YST
+## Zone	SystemV/HST10	-10:00	-		HST
diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/yearistype.sh b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/yearistype.sh
new file mode 100644
index 0000000..b6963f2
--- /dev/null
+++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/yearistype.sh
@@ -0,0 +1,38 @@
+#! /bin/sh
+
+: 'This file is in the public domain, so clarified as of'
+: '2006-07-17 by Arthur David Olson.'
+
+case $#-$1 in
+	2-|2-0*|2-*[!0-9]*)
+		echo "$0: wild year - $1" >&2
+		exit 1 ;;
+esac
+
+case $#-$2 in
+	2-even)
+		case $1 in
+			*[24680])			exit 0 ;;
+			*)				exit 1 ;;
+		esac ;;
+	2-nonpres|2-nonuspres)
+		case $1 in
+			*[02468][048]|*[13579][26])	exit 1 ;;
+			*)				exit 0 ;;
+		esac ;;
+	2-odd)
+		case $1 in
+			*[13579])			exit 0 ;;
+			*)				exit 1 ;;
+		esac ;;
+	2-uspres)
+		case $1 in
+			*[02468][048]|*[13579][26])	exit 0 ;;
+			*)				exit 1 ;;
+		esac ;;
+	2-*)
+		echo "$0: wild type - $2" >&2 ;;
+esac
+
+echo "$0: usage is $0 year even|odd|uspres|nonpres|nonuspres" >&2
+exit 1
diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/zone.tab b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/zone.tab
new file mode 100644
index 0000000..0b2f870
--- /dev/null
+++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time-zones/tz/zone.tab
@@ -0,0 +1,441 @@
+# 
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
+#
+# TZ zone descriptions
+#
+# From Paul Eggert (1996-08-05):
+#
+# This file contains a table with the following columns:
+# 1.  ISO 3166 2-character country code.  See the file `iso3166.tab'.
+# 2.  Latitude and longitude of the zone's principal location
+#     in ISO 6709 sign-degrees-minutes-seconds format,
+#     either +-DDMM+-DDDMM or +-DDMMSS+-DDDMMSS,
+#     first latitude (+ is north), then longitude (+ is east).
+# 3.  Zone name used in value of TZ environment variable.
+# 4.  Comments; present if and only if the country has multiple rows.
+#
+# Columns are separated by a single tab.
+# The table is sorted first by country, then an order within the country that
+# (1) makes some geographical sense, and
+# (2) puts the most populous zones first, where that does not contradict (1).
+#
+# Lines beginning with `#' are comments.
+#
+#country-
+#code	coordinates	TZ			comments
+AD	+4230+00131	Europe/Andorra
+AE	+2518+05518	Asia/Dubai
+AF	+3431+06912	Asia/Kabul
+AG	+1703-06148	America/Antigua
+AI	+1812-06304	America/Anguilla
+AL	+4120+01950	Europe/Tirane
+AM	+4011+04430	Asia/Yerevan
+AO	-0848+01314	Africa/Luanda
+AQ	-7750+16636	Antarctica/McMurdo	McMurdo Station, Ross Island
+AQ	-9000+00000	Antarctica/South_Pole	Amundsen-Scott Station, South Pole
+AQ	-6734-06808	Antarctica/Rothera	Rothera Station, Adelaide Island
+AQ	-6448-06406	Antarctica/Palmer	Palmer Station, Anvers Island
+AQ	-6736+06253	Antarctica/Mawson	Mawson Station, Holme Bay
+AQ	-6835+07758	Antarctica/Davis	Davis Station, Vestfold Hills
+AQ	-6617+11031	Antarctica/Casey	Casey Station, Bailey Peninsula
+AQ	-7824+10654	Antarctica/Vostok	Vostok Station, Lake Vostok
+AQ	-6640+14001	Antarctica/DumontDUrville	Dumont-d'Urville Station, Terre Adelie
+AQ	-690022+0393524	Antarctica/Syowa	Syowa Station, E Ongul I
+AQ	-5430+15857	Antarctica/Macquarie	Macquarie Island Station, Macquarie Island
+AR	-3436-05827	America/Argentina/Buenos_Aires	Buenos Aires (BA, CF)
+AR	-3124-06411	America/Argentina/Cordoba	most locations (CB, CC, CN, ER, FM, MN, SE, SF)
+AR	-2447-06525	America/Argentina/Salta	(SA, LP, NQ, RN)
+AR	-2411-06518	America/Argentina/Jujuy	Jujuy (JY)
+AR	-2649-06513	America/Argentina/Tucuman	Tucuman (TM)
+AR	-2828-06547	America/Argentina/Catamarca	Catamarca (CT), Chubut (CH)
+AR	-2926-06651	America/Argentina/La_Rioja	La Rioja (LR)
+AR	-3132-06831	America/Argentina/San_Juan	San Juan (SJ)
+AR	-3253-06849	America/Argentina/Mendoza	Mendoza (MZ)
+AR	-3319-06621	America/Argentina/San_Luis	San Luis (SL)
+AR	-5138-06913	America/Argentina/Rio_Gallegos	Santa Cruz (SC)
+AR	-5448-06818	America/Argentina/Ushuaia	Tierra del Fuego (TF)
+AS	-1416-17042	Pacific/Pago_Pago
+AT	+4813+01620	Europe/Vienna
+AU	-3133+15905	Australia/Lord_Howe	Lord Howe Island
+AU	-4253+14719	Australia/Hobart	Tasmania - most locations
+AU	-3956+14352	Australia/Currie	Tasmania - King Island
+AU	-3749+14458	Australia/Melbourne	Victoria
+AU	-3352+15113	Australia/Sydney	New South Wales - most locations
+AU	-3157+14127	Australia/Broken_Hill	New South Wales - Yancowinna
+AU	-2728+15302	Australia/Brisbane	Queensland - most locations
+AU	-2016+14900	Australia/Lindeman	Queensland - Holiday Islands
+AU	-3455+13835	Australia/Adelaide	South Australia
+AU	-1228+13050	Australia/Darwin	Northern Territory
+AU	-3157+11551	Australia/Perth	Western Australia - most locations
+AU	-3143+12852	Australia/Eucla	Western Australia - Eucla area
+AW	+1230-06958	America/Aruba
+AX	+6006+01957	Europe/Mariehamn
+AZ	+4023+04951	Asia/Baku
+BA	+4352+01825	Europe/Sarajevo
+BB	+1306-05937	America/Barbados
+BD	+2343+09025	Asia/Dhaka
+BE	+5050+00420	Europe/Brussels
+BF	+1222-00131	Africa/Ouagadougou
+BG	+4241+02319	Europe/Sofia
+BH	+2623+05035	Asia/Bahrain
+BI	-0323+02922	Africa/Bujumbura
+BJ	+0629+00237	Africa/Porto-Novo
+BL	+1753-06251	America/St_Barthelemy
+BM	+3217-06446	Atlantic/Bermuda
+BN	+0456+11455	Asia/Brunei
+BO	-1630-06809	America/La_Paz
+BQ	+120903-0681636	America/Kralendijk
+BR	-0351-03225	America/Noronha	Atlantic islands
+BR	-0127-04829	America/Belem	Amapa, E Para
+BR	-0343-03830	America/Fortaleza	NE Brazil (MA, PI, CE, RN, PB)
+BR	-0803-03454	America/Recife	Pernambuco
+BR	-0712-04812	America/Araguaina	Tocantins
+BR	-0940-03543	America/Maceio	Alagoas, Sergipe
+BR	-1259-03831	America/Bahia	Bahia
+BR	-2332-04637	America/Sao_Paulo	S & SE Brazil (GO, DF, MG, ES, RJ, SP, PR, SC, RS)
+BR	-2027-05437	America/Campo_Grande	Mato Grosso do Sul
+BR	-1535-05605	America/Cuiaba	Mato Grosso
+BR	-0226-05452	America/Santarem	W Para
+BR	-0846-06354	America/Porto_Velho	Rondonia
+BR	+0249-06040	America/Boa_Vista	Roraima
+BR	-0308-06001	America/Manaus	E Amazonas
+BR	-0640-06952	America/Eirunepe	W Amazonas
+BR	-0958-06748	America/Rio_Branco	Acre
+BS	+2505-07721	America/Nassau
+BT	+2728+08939	Asia/Thimphu
+BW	-2439+02555	Africa/Gaborone
+BY	+5354+02734	Europe/Minsk
+BZ	+1730-08812	America/Belize
+CA	+4734-05243	America/St_Johns	Newfoundland Time, including SE Labrador
+CA	+4439-06336	America/Halifax	Atlantic Time - Nova Scotia (most places), PEI
+CA	+4612-05957	America/Glace_Bay	Atlantic Time - Nova Scotia - places that did not observe DST 1966-1971
+CA	+4606-06447	America/Moncton	Atlantic Time - New Brunswick
+CA	+5320-06025	America/Goose_Bay	Atlantic Time - Labrador - most locations
+CA	+5125-05707	America/Blanc-Sablon	Atlantic Standard Time - Quebec - Lower North Shore
+CA	+4531-07334	America/Montreal	Eastern Time - Quebec - most locations
+CA	+4339-07923	America/Toronto	Eastern Time - Ontario - most locations
+CA	+4901-08816	America/Nipigon	Eastern Time - Ontario & Quebec - places that did not observe DST 1967-1973
+CA	+4823-08915	America/Thunder_Bay	Eastern Time - Thunder Bay, Ontario
+CA	+6344-06828	America/Iqaluit	Eastern Time - east Nunavut - most locations
+CA	+6608-06544	America/Pangnirtung	Eastern Time - Pangnirtung, Nunavut
+CA	+744144-0944945	America/Resolute	Central Standard Time - Resolute, Nunavut
+CA	+484531-0913718	America/Atikokan	Eastern Standard Time - Atikokan, Ontario and Southampton I, Nunavut
+CA	+624900-0920459	America/Rankin_Inlet	Central Time - central Nunavut
+CA	+4953-09709	America/Winnipeg	Central Time - Manitoba & west Ontario
+CA	+4843-09434	America/Rainy_River	Central Time - Rainy River & Fort Frances, Ontario
+CA	+5024-10439	America/Regina	Central Standard Time - Saskatchewan - most locations
+CA	+5017-10750	America/Swift_Current	Central Standard Time - Saskatchewan - midwest
+CA	+5333-11328	America/Edmonton	Mountain Time - Alberta, east British Columbia & west Saskatchewan
+CA	+690650-1050310	America/Cambridge_Bay	Mountain Time - west Nunavut
+CA	+6227-11421	America/Yellowknife	Mountain Time - central Northwest Territories
+CA	+682059-1334300	America/Inuvik	Mountain Time - west Northwest Territories
+CA	+4906-11631	America/Creston	Mountain Standard Time - Creston, British Columbia
+CA	+5946-12014	America/Dawson_Creek	Mountain Standard Time - Dawson Creek & Fort Saint John, British Columbia
+CA	+4916-12307	America/Vancouver	Pacific Time - west British Columbia
+CA	+6043-13503	America/Whitehorse	Pacific Time - south Yukon
+CA	+6404-13925	America/Dawson	Pacific Time - north Yukon
+CC	-1210+09655	Indian/Cocos
+CD	-0418+01518	Africa/Kinshasa	west Dem. Rep. of Congo
+CD	-1140+02728	Africa/Lubumbashi	east Dem. Rep. of Congo
+CF	+0422+01835	Africa/Bangui
+CG	-0416+01517	Africa/Brazzaville
+CH	+4723+00832	Europe/Zurich
+CI	+0519-00402	Africa/Abidjan
+CK	-2114-15946	Pacific/Rarotonga
+CL	-3327-07040	America/Santiago	most locations
+CL	-2709-10926	Pacific/Easter	Easter Island & Sala y Gomez
+CM	+0403+00942	Africa/Douala
+CN	+3114+12128	Asia/Shanghai	east China - Beijing, Guangdong, Shanghai, etc.
+CN	+4545+12641	Asia/Harbin	Heilongjiang (except Mohe), Jilin
+CN	+2934+10635	Asia/Chongqing	central China - Sichuan, Yunnan, Guangxi, Shaanxi, Guizhou, etc.
+CN	+4348+08735	Asia/Urumqi	most of Tibet & Xinjiang
+CN	+3929+07559	Asia/Kashgar	west Tibet & Xinjiang
+CO	+0436-07405	America/Bogota
+CR	+0956-08405	America/Costa_Rica
+CU	+2308-08222	America/Havana
+CV	+1455-02331	Atlantic/Cape_Verde
+CW	+1211-06900	America/Curacao
+CX	-1025+10543	Indian/Christmas
+CY	+3510+03322	Asia/Nicosia
+CZ	+5005+01426	Europe/Prague
+DE	+5230+01322	Europe/Berlin
+DJ	+1136+04309	Africa/Djibouti
+DK	+5540+01235	Europe/Copenhagen
+DM	+1518-06124	America/Dominica
+DO	+1828-06954	America/Santo_Domingo
+DZ	+3647+00303	Africa/Algiers
+EC	-0210-07950	America/Guayaquil	mainland
+EC	-0054-08936	Pacific/Galapagos	Galapagos Islands
+EE	+5925+02445	Europe/Tallinn
+EG	+3003+03115	Africa/Cairo
+EH	+2709-01312	Africa/El_Aaiun
+ER	+1520+03853	Africa/Asmara
+ES	+4024-00341	Europe/Madrid	mainland
+ES	+3553-00519	Africa/Ceuta	Ceuta & Melilla
+ES	+2806-01524	Atlantic/Canary	Canary Islands
+ET	+0902+03842	Africa/Addis_Ababa
+FI	+6010+02458	Europe/Helsinki
+FJ	-1808+17825	Pacific/Fiji
+FK	-5142-05751	Atlantic/Stanley
+FM	+0725+15147	Pacific/Chuuk	Chuuk (Truk) and Yap
+FM	+0658+15813	Pacific/Pohnpei	Pohnpei (Ponape)
+FM	+0519+16259	Pacific/Kosrae	Kosrae
+FO	+6201-00646	Atlantic/Faroe
+FR	+4852+00220	Europe/Paris
+GA	+0023+00927	Africa/Libreville
+GB	+513030-0000731	Europe/London
+GD	+1203-06145	America/Grenada
+GE	+4143+04449	Asia/Tbilisi
+GF	+0456-05220	America/Cayenne
+GG	+4927-00232	Europe/Guernsey
+GH	+0533-00013	Africa/Accra
+GI	+3608-00521	Europe/Gibraltar
+GL	+6411-05144	America/Godthab	most locations
+GL	+7646-01840	America/Danmarkshavn	east coast, north of Scoresbysund
+GL	+7029-02158	America/Scoresbysund	Scoresbysund / Ittoqqortoormiit
+GL	+7634-06847	America/Thule	Thule / Pituffik
+GM	+1328-01639	Africa/Banjul
+GN	+0931-01343	Africa/Conakry
+GP	+1614-06132	America/Guadeloupe
+GQ	+0345+00847	Africa/Malabo
+GR	+3758+02343	Europe/Athens
+GS	-5416-03632	Atlantic/South_Georgia
+GT	+1438-09031	America/Guatemala
+GU	+1328+14445	Pacific/Guam
+GW	+1151-01535	Africa/Bissau
+GY	+0648-05810	America/Guyana
+HK	+2217+11409	Asia/Hong_Kong
+HN	+1406-08713	America/Tegucigalpa
+HR	+4548+01558	Europe/Zagreb
+HT	+1832-07220	America/Port-au-Prince
+HU	+4730+01905	Europe/Budapest
+ID	-0610+10648	Asia/Jakarta	Java & Sumatra
+ID	-0002+10920	Asia/Pontianak	west & central Borneo
+ID	-0507+11924	Asia/Makassar	east & south Borneo, Sulawesi (Celebes), Bali, Nusa Tengarra, west Timor
+ID	-0232+14042	Asia/Jayapura	west New Guinea (Irian Jaya) & Malukus (Moluccas)
+IE	+5320-00615	Europe/Dublin
+IL	+3146+03514	Asia/Jerusalem
+IM	+5409-00428	Europe/Isle_of_Man
+IN	+2232+08822	Asia/Kolkata
+IO	-0720+07225	Indian/Chagos
+IQ	+3321+04425	Asia/Baghdad
+IR	+3540+05126	Asia/Tehran
+IS	+6409-02151	Atlantic/Reykjavik
+IT	+4154+01229	Europe/Rome
+JE	+4912-00207	Europe/Jersey
+JM	+1800-07648	America/Jamaica
+JO	+3157+03556	Asia/Amman
+JP	+353916+1394441	Asia/Tokyo
+KE	-0117+03649	Africa/Nairobi
+KG	+4254+07436	Asia/Bishkek
+KH	+1133+10455	Asia/Phnom_Penh
+KI	+0125+17300	Pacific/Tarawa	Gilbert Islands
+KI	-0308-17105	Pacific/Enderbury	Phoenix Islands
+KI	+0152-15720	Pacific/Kiritimati	Line Islands
+KM	-1141+04316	Indian/Comoro
+KN	+1718-06243	America/St_Kitts
+KP	+3901+12545	Asia/Pyongyang
+KR	+3733+12658	Asia/Seoul
+KW	+2920+04759	Asia/Kuwait
+KY	+1918-08123	America/Cayman
+KZ	+4315+07657	Asia/Almaty	most locations
+KZ	+4448+06528	Asia/Qyzylorda	Qyzylorda (Kyzylorda, Kzyl-Orda)
+KZ	+5017+05710	Asia/Aqtobe	Aqtobe (Aktobe)
+KZ	+4431+05016	Asia/Aqtau	Atyrau (Atirau, Gur'yev), Mangghystau (Mankistau)
+KZ	+5113+05121	Asia/Oral	West Kazakhstan
+LA	+1758+10236	Asia/Vientiane
+LB	+3353+03530	Asia/Beirut
+LC	+1401-06100	America/St_Lucia
+LI	+4709+00931	Europe/Vaduz
+LK	+0656+07951	Asia/Colombo
+LR	+0618-01047	Africa/Monrovia
+LS	-2928+02730	Africa/Maseru
+LT	+5441+02519	Europe/Vilnius
+LU	+4936+00609	Europe/Luxembourg
+LV	+5657+02406	Europe/Riga
+LY	+3254+01311	Africa/Tripoli
+MA	+3339-00735	Africa/Casablanca
+MC	+4342+00723	Europe/Monaco
+MD	+4700+02850	Europe/Chisinau
+ME	+4226+01916	Europe/Podgorica
+MF	+1804-06305	America/Marigot
+MG	-1855+04731	Indian/Antananarivo
+MH	+0709+17112	Pacific/Majuro	most locations
+MH	+0905+16720	Pacific/Kwajalein	Kwajalein
+MK	+4159+02126	Europe/Skopje
+ML	+1239-00800	Africa/Bamako
+MM	+1647+09610	Asia/Rangoon
+MN	+4755+10653	Asia/Ulaanbaatar	most locations
+MN	+4801+09139	Asia/Hovd	Bayan-Olgiy, Govi-Altai, Hovd, Uvs, Zavkhan
+MN	+4804+11430	Asia/Choibalsan	Dornod, Sukhbaatar
+MO	+2214+11335	Asia/Macau
+MP	+1512+14545	Pacific/Saipan
+MQ	+1436-06105	America/Martinique
+MR	+1806-01557	Africa/Nouakchott
+MS	+1643-06213	America/Montserrat
+MT	+3554+01431	Europe/Malta
+MU	-2010+05730	Indian/Mauritius
+MV	+0410+07330	Indian/Maldives
+MW	-1547+03500	Africa/Blantyre
+MX	+1924-09909	America/Mexico_City	Central Time - most locations
+MX	+2105-08646	America/Cancun	Central Time - Quintana Roo
+MX	+2058-08937	America/Merida	Central Time - Campeche, Yucatan
+MX	+2540-10019	America/Monterrey	Mexican Central Time - Coahuila, Durango, Nuevo Leon, Tamaulipas away from US border
+MX	+2550-09730	America/Matamoros	US Central Time - Coahuila, Durango, Nuevo Leon, Tamaulipas near US border
+MX	+2313-10625	America/Mazatlan	Mountain Time - S Baja, Nayarit, Sinaloa
+MX	+2838-10605	America/Chihuahua	Mexican Mountain Time - Chihuahua away from US border
+MX	+2934-10425	America/Ojinaga	US Mountain Time - Chihuahua near US border
+MX	+2904-11058	America/Hermosillo	Mountain Standard Time - Sonora
+MX	+3232-11701	America/Tijuana	US Pacific Time - Baja California near US border
+MX	+3018-11452	America/Santa_Isabel	Mexican Pacific Time - Baja California away from US border
+MX	+2048-10515	America/Bahia_Banderas	Mexican Central Time - Bahia de Banderas
+MY	+0310+10142	Asia/Kuala_Lumpur	peninsular Malaysia
+MY	+0133+11020	Asia/Kuching	Sabah & Sarawak
+MZ	-2558+03235	Africa/Maputo
+NA	-2234+01706	Africa/Windhoek
+NC	-2216+16627	Pacific/Noumea
+NE	+1331+00207	Africa/Niamey
+NF	-2903+16758	Pacific/Norfolk
+NG	+0627+00324	Africa/Lagos
+NI	+1209-08617	America/Managua
+NL	+5222+00454	Europe/Amsterdam
+NO	+5955+01045	Europe/Oslo
+NP	+2743+08519	Asia/Kathmandu
+NR	-0031+16655	Pacific/Nauru
+NU	-1901-16955	Pacific/Niue
+NZ	-3652+17446	Pacific/Auckland	most locations
+NZ	-4357-17633	Pacific/Chatham	Chatham Islands
+OM	+2336+05835	Asia/Muscat
+PA	+0858-07932	America/Panama
+PE	-1203-07703	America/Lima
+PF	-1732-14934	Pacific/Tahiti	Society Islands
+PF	-0900-13930	Pacific/Marquesas	Marquesas Islands
+PF	-2308-13457	Pacific/Gambier	Gambier Islands
+PG	-0930+14710	Pacific/Port_Moresby
+PH	+1435+12100	Asia/Manila
+PK	+2452+06703	Asia/Karachi
+PL	+5215+02100	Europe/Warsaw
+PM	+4703-05620	America/Miquelon
+PN	-2504-13005	Pacific/Pitcairn
+PR	+182806-0660622	America/Puerto_Rico
+PS	+3130+03428	Asia/Gaza	Gaza Strip
+PS	+313200+0350542	Asia/Hebron	West Bank
+PT	+3843-00908	Europe/Lisbon	mainland
+PT	+3238-01654	Atlantic/Madeira	Madeira Islands
+PT	+3744-02540	Atlantic/Azores	Azores
+PW	+0720+13429	Pacific/Palau
+PY	-2516-05740	America/Asuncion
+QA	+2517+05132	Asia/Qatar
+RE	-2052+05528	Indian/Reunion
+RO	+4426+02606	Europe/Bucharest
+RS	+4450+02030	Europe/Belgrade
+RU	+5443+02030	Europe/Kaliningrad	Moscow-01 - Kaliningrad
+RU	+5545+03735	Europe/Moscow	Moscow+00 - west Russia
+RU	+4844+04425	Europe/Volgograd	Moscow+00 - Caspian Sea
+RU	+5312+05009	Europe/Samara	Moscow+00 - Samara, Udmurtia
+RU	+5651+06036	Asia/Yekaterinburg	Moscow+02 - Urals
+RU	+5500+07324	Asia/Omsk	Moscow+03 - west Siberia
+RU	+5502+08255	Asia/Novosibirsk	Moscow+03 - Novosibirsk
+RU	+5345+08707	Asia/Novokuznetsk	Moscow+03 - Novokuznetsk
+RU	+5601+09250	Asia/Krasnoyarsk	Moscow+04 - Yenisei River
+RU	+5216+10420	Asia/Irkutsk	Moscow+05 - Lake Baikal
+RU	+6200+12940	Asia/Yakutsk	Moscow+06 - Lena River
+RU	+4310+13156	Asia/Vladivostok	Moscow+07 - Amur River
+RU	+4658+14242	Asia/Sakhalin	Moscow+07 - Sakhalin Island
+RU	+5934+15048	Asia/Magadan	Moscow+08 - Magadan
+RU	+5301+15839	Asia/Kamchatka	Moscow+08 - Kamchatka
+RU	+6445+17729	Asia/Anadyr	Moscow+08 - Bering Sea
+RW	-0157+03004	Africa/Kigali
+SA	+2438+04643	Asia/Riyadh
+SB	-0932+16012	Pacific/Guadalcanal
+SC	-0440+05528	Indian/Mahe
+SD	+1536+03232	Africa/Khartoum
+SE	+5920+01803	Europe/Stockholm
+SG	+0117+10351	Asia/Singapore
+SH	-1555-00542	Atlantic/St_Helena
+SI	+4603+01431	Europe/Ljubljana
+SJ	+7800+01600	Arctic/Longyearbyen
+SK	+4809+01707	Europe/Bratislava
+SL	+0830-01315	Africa/Freetown
+SM	+4355+01228	Europe/San_Marino
+SN	+1440-01726	Africa/Dakar
+SO	+0204+04522	Africa/Mogadishu
+SR	+0550-05510	America/Paramaribo
+SS	+0451+03136	Africa/Juba
+ST	+0020+00644	Africa/Sao_Tome
+SV	+1342-08912	America/El_Salvador
+SX	+180305-0630250	America/Lower_Princes
+SY	+3330+03618	Asia/Damascus
+SZ	-2618+03106	Africa/Mbabane
+TC	+2128-07108	America/Grand_Turk
+TD	+1207+01503	Africa/Ndjamena
+TF	-492110+0701303	Indian/Kerguelen
+TG	+0608+00113	Africa/Lome
+TH	+1345+10031	Asia/Bangkok
+TJ	+3835+06848	Asia/Dushanbe
+TK	-0922-17114	Pacific/Fakaofo
+TL	-0833+12535	Asia/Dili
+TM	+3757+05823	Asia/Ashgabat
+TN	+3648+01011	Africa/Tunis
+TO	-2110-17510	Pacific/Tongatapu
+TR	+4101+02858	Europe/Istanbul
+TT	+1039-06131	America/Port_of_Spain
+TV	-0831+17913	Pacific/Funafuti
+TW	+2503+12130	Asia/Taipei
+TZ	-0648+03917	Africa/Dar_es_Salaam
+UA	+5026+03031	Europe/Kiev	most locations
+UA	+4837+02218	Europe/Uzhgorod	Ruthenia
+UA	+4750+03510	Europe/Zaporozhye	Zaporozh'ye, E Lugansk / Zaporizhia, E Luhansk
+UA	+4457+03406	Europe/Simferopol	central Crimea
+UG	+0019+03225	Africa/Kampala
+UM	+1645-16931	Pacific/Johnston	Johnston Atoll
+UM	+2813-17722	Pacific/Midway	Midway Islands
+UM	+1917+16637	Pacific/Wake	Wake Island
+US	+404251-0740023	America/New_York	Eastern Time
+US	+421953-0830245	America/Detroit	Eastern Time - Michigan - most locations
+US	+381515-0854534	America/Kentucky/Louisville	Eastern Time - Kentucky - Louisville area
+US	+364947-0845057	America/Kentucky/Monticello	Eastern Time - Kentucky - Wayne County
+US	+394606-0860929	America/Indiana/Indianapolis	Eastern Time - Indiana - most locations
+US	+384038-0873143	America/Indiana/Vincennes	Eastern Time - Indiana - Daviess, Dubois, Knox & Martin Counties
+US	+410305-0863611	America/Indiana/Winamac	Eastern Time - Indiana - Pulaski County
+US	+382232-0862041	America/Indiana/Marengo	Eastern Time - Indiana - Crawford County
+US	+382931-0871643	America/Indiana/Petersburg	Eastern Time - Indiana - Pike County
+US	+384452-0850402	America/Indiana/Vevay	Eastern Time - Indiana - Switzerland County
+US	+415100-0873900	America/Chicago	Central Time
+US	+375711-0864541	America/Indiana/Tell_City	Central Time - Indiana - Perry County
+US	+411745-0863730	America/Indiana/Knox	Central Time - Indiana - Starke County
+US	+450628-0873651	America/Menominee	Central Time - Michigan - Dickinson, Gogebic, Iron & Menominee Counties
+US	+470659-1011757	America/North_Dakota/Center	Central Time - North Dakota - Oliver County
+US	+465042-1012439	America/North_Dakota/New_Salem	Central Time - North Dakota - Morton County (except Mandan area)
+US	+471551-1014640	America/North_Dakota/Beulah	Central Time - North Dakota - Mercer County
+US	+394421-1045903	America/Denver	Mountain Time
+US	+433649-1161209	America/Boise	Mountain Time - south Idaho & east Oregon
+US	+364708-1084111	America/Shiprock	Mountain Time - Navajo
+US	+332654-1120424	America/Phoenix	Mountain Standard Time - Arizona
+US	+340308-1181434	America/Los_Angeles	Pacific Time
+US	+611305-1495401	America/Anchorage	Alaska Time
+US	+581807-1342511	America/Juneau	Alaska Time - Alaska panhandle
+US	+571035-1351807	America/Sitka	Alaska Time - southeast Alaska panhandle
+US	+593249-1394338	America/Yakutat	Alaska Time - Alaska panhandle neck
+US	+643004-1652423	America/Nome	Alaska Time - west Alaska
+US	+515248-1763929	America/Adak	Aleutian Islands
+US	+550737-1313435	America/Metlakatla	Metlakatla Time - Annette Island
+US	+211825-1575130	Pacific/Honolulu	Hawaii
+UY	-3453-05611	America/Montevideo
+UZ	+3940+06648	Asia/Samarkand	west Uzbekistan
+UZ	+4120+06918	Asia/Tashkent	east Uzbekistan
+VA	+415408+0122711	Europe/Vatican
+VC	+1309-06114	America/St_Vincent
+VE	+1030-06656	America/Caracas
+VG	+1827-06437	America/Tortola
+VI	+1821-06456	America/St_Thomas
+VN	+1045+10640	Asia/Ho_Chi_Minh
+VU	-1740+16825	Pacific/Efate
+WF	-1318-17610	Pacific/Wallis
+WS	-1350-17144	Pacific/Apia
+YE	+1245+04512	Asia/Aden
+YT	-1247+04514	Indian/Mayotte
+ZA	-2615+02800	Africa/Johannesburg
+ZM	-1525+02817	Africa/Lusaka
+ZW	-1750+03103	Africa/Harare
diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time/index.html
new file mode 100644
index 0000000..3b3efa1
--- /dev/null
+++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/axes-time/index.html
@@ -0,0 +1,137 @@
+
+
+
+	
+	Flot Examples: Time Axes
+	
+	
+	
+	
+	
+	
+
+
+
+	
+
+	
+ +
+
+
+ +

Monthly mean atmospheric CO2 in PPM at Mauna Loa, Hawaii (source: NOAA/ESRL).

+ +

If you tell Flot that an axis represents time, the data will be interpreted as timestamps and the ticks adjusted and formatted accordingly.

+ +

Zoom to: + +

+ +

Zoom to: + + +

+ +

The timestamps must be specified as Javascript timestamps, as milliseconds since January 1, 1970 00:00. This is like Unix timestamps, but in milliseconds instead of seconds (remember to multiply with 1000!).

+ +

As an extra caveat, the timestamps are interpreted according to UTC and, by default, displayed as such. You can set the axis "timezone" option to "browser" to display the timestamps in the user's timezone, or, if you use timezoneJS, you can specify a time zone.

+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/background.png b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/background.png new file mode 100644 index 0000000000000000000000000000000000000000..47a4a4c51463b82c4da5b54c2ad8acf0b78d2b59 GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^j6gh%g9%7Z5Ghp!QY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%ReHKOhE&{|5*W?bV8D@G{=fOx zbHP_}8XDfujyo-2-4)aq%<7O>tDAK!F8Qpf!N-Rwf973&C{_9T_>p)2js?$=uevMu zCZTxR!=hh}^2J}T%=oZr*4LDK3B~&}mp$&hczpZwlHVs+-2FZ2<^MZ*3xikNr*7X| e&HqmI0K@!DMXgQ~-?u + + + + Flot Examples: Basic Options + + + + + + + + + + +
+ +
+
+
+ +

There are plenty of options you can set to control the precise looks of your plot. You can control the ticks on the axes, the legend, the graph type, etc.

+ +

Flot goes to great lengths to provide sensible defaults so that you don't have to customize much for a good-looking result.

+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/basic-usage/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/basic-usage/index.html new file mode 100644 index 0000000..7a73663 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/basic-usage/index.html @@ -0,0 +1,57 @@ + + + + + Flot Examples: Basic Usage + + + + + + + + + + +
+ +
+
+
+ +

You don't have to do much to get an attractive plot. Create a placeholder, make sure it has dimensions (so Flot knows at what size to draw the plot), then call the plot function with your data.

+ +

The axes are automatically scaled.

+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/canvas/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/canvas/index.html new file mode 100644 index 0000000..fe48de5 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/canvas/index.html @@ -0,0 +1,75 @@ + + + + + Flot Examples: Canvas text + + + + + + + + + + + + +
+ +
+
+
+ +

This example uses the same dataset (raw oil price in US $/barrel of crude oil vs. the exchange rate from US $ to €) as the multiple-axes example, but uses the canvas plugin to render axis tick labels using canvas text.

+ +

Enable canvas text

+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/categories/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/categories/index.html new file mode 100644 index 0000000..2ca8bf2 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/categories/index.html @@ -0,0 +1,64 @@ + + + + + Flot Examples: Categories + + + + + + + + + + + +
+ +
+
+
+ +

With the categories plugin you can plot categories/textual data easily.

+ +
+ + + + + + + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/examples.css b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/examples.css new file mode 100644 index 0000000..514e2e1 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/examples.css @@ -0,0 +1,97 @@ +* { padding: 0; margin: 0; vertical-align: top; } + +body { + background: url(background.png) repeat-x; + font: 18px/1.5em "proxima-nova", Helvetica, Arial, sans-serif; +} + +a { color: #069; } +a:hover { color: #28b; } + +h2 { + margin-top: 15px; + font: normal 32px "omnes-pro", Helvetica, Arial, sans-serif; +} + +h3 { + margin-left: 30px; + font: normal 26px "omnes-pro", Helvetica, Arial, sans-serif; + color: #666; +} + +p { + margin-top: 10px; +} + +button { + font-size: 18px; + padding: 1px 7px; +} + +input { + font-size: 18px; +} + +input[type=checkbox] { + margin: 7px; +} + +#header { + position: relative; + width: 900px; + margin: auto; +} + +#header h2 { + margin-left: 10px; + vertical-align: middle; + font-size: 42px; + font-weight: bold; + text-decoration: none; + color: #000; +} + +#content { + width: 880px; + margin: 0 auto; + padding: 10px; +} + +#footer { + margin-top: 25px; + margin-bottom: 10px; + text-align: center; + font-size: 12px; + color: #999; +} + +.demo-container { + box-sizing: border-box; + width: 850px; + height: 450px; + padding: 20px 15px 15px 15px; + margin: 15px auto 30px auto; + border: 1px solid #ddd; + background: #fff; + background: linear-gradient(#f6f6f6 0, #fff 50px); + background: -o-linear-gradient(#f6f6f6 0, #fff 50px); + background: -ms-linear-gradient(#f6f6f6 0, #fff 50px); + background: -moz-linear-gradient(#f6f6f6 0, #fff 50px); + background: -webkit-linear-gradient(#f6f6f6 0, #fff 50px); + box-shadow: 0 3px 10px rgba(0,0,0,0.15); + -o-box-shadow: 0 3px 10px rgba(0,0,0,0.1); + -ms-box-shadow: 0 3px 10px rgba(0,0,0,0.1); + -moz-box-shadow: 0 3px 10px rgba(0,0,0,0.1); + -webkit-box-shadow: 0 3px 10px rgba(0,0,0,0.1); +} + +.demo-placeholder { + width: 100%; + height: 100%; + font-size: 14px; + line-height: 1.2em; +} + +.legend table { + border-spacing: 5px; +} \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/image/hs-2004-27-a-large-web.jpg b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/image/hs-2004-27-a-large-web.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a1d5c05837576a37a8a7631d8549472154a74807 GIT binary patch literal 34489 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 K0Y!iSAOG38#4Yy# literal 0 HcmV?d00001 diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/image/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/image/index.html new file mode 100644 index 0000000..c7a6fac --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/image/index.html @@ -0,0 +1,69 @@ + + + + + Flot Examples: Image Plots + + + + + + + + + + + +
+ +
+
+
+ +

The Cat's Eye Nebula (picture from Hubble).

+ +

With the image plugin, you can plot static images against a set of axes. This is for useful for adding ticks to complex prerendered visualizations. Instead of inputting data points, you specify the images and where their two opposite corners are supposed to be in plot space.

+ +

Images represent a little further complication because you need to make sure they are loaded before you can use them (Flot skips incomplete images). The plugin comes with a couple of helpers for doing that.

+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/index.html new file mode 100644 index 0000000..db1ef32 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/index.html @@ -0,0 +1,80 @@ + + + + + Flot Examples + + + + + + + + + + +
+ +

Here are some examples for Flot, the Javascript charting library for jQuery:

+ +

Basic Usage

+ + + +

Interactivity

+ + + +

Additional Features

+ + + +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/interacting/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/interacting/index.html new file mode 100644 index 0000000..2bc9d0f --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/interacting/index.html @@ -0,0 +1,118 @@ + + + + + Flot Examples: Interactivity + + + + + + + + + +
+ +
+
+
+ +

One of the goals of Flot is to support user interactions. Try pointing and clicking on the points.

+ +

+ + + +

+ +

A tooltip is easy to build with a bit of jQuery code and the data returned from the plot.

+ +

+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/navigate/arrow-down.gif b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/navigate/arrow-down.gif new file mode 100644 index 0000000000000000000000000000000000000000..e239d11aa65b7f9e65978ea1306ee0d8562ff66e GIT binary patch literal 916 zcmV;F18e+8Nk%w1VG{ro0Ouh9000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LW3IP8AEC2ui022Tc000Pa0RIUbNU)&6fAjPm6sT|B!A!#L6}%@b z(?VdGGWn8t&sRoZ3)f}LNNZ%KbqoKEGC6Wo%74sQW@PrVp3F@3UjA#vvX#z%*jQrw q$&V$!pZ{)+yoK~%xRK$S{@avklhl70K}r>g@~Y3P2*K(M2mm{w^}*Nx literal 0 HcmV?d00001 diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/navigate/arrow-left.gif b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/navigate/arrow-left.gif new file mode 100644 index 0000000000000000000000000000000000000000..93ffd5a9e0ddd08a790c3da95a228b2235aae7f7 GIT binary patch literal 891 zcmV->1BCoXNk%w1VG{ro0Ow}_000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LW3IP8AEC2ui022Tc000PB0RIUbNU)&6g9sBUT!?TU!-4C7Wzxs6 z96ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LW3IP8AEC2ui022Tc000PH0RIUbNU)&6g9sBU95`>`L4BEkt#e3F zSf)&)nAM|r@1n<6*!V5<<+0?ga0xq>EV)VIL0T(gwrV&~Wz0-1Cl(|b^CUu>7eR_l XXc41EhY(#-{6}-C)2C1s1_S^*=cTQ_ literal 0 HcmV?d00001 diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/navigate/arrow-up.gif b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/navigate/arrow-up.gif new file mode 100644 index 0000000000000000000000000000000000000000..7d196267ebff0e127db6ad9a4fc42a75ff7a348e GIT binary patch literal 916 zcmV;F18e+8Nk%w1VG{ro0Ox@K000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LW3IP8AEC2ui022Tc000Pa0RIUbNU)&6gYyn59N221!gZO}IW!0? z6R?Q|H)Yy{abUPiAj5V1cMD{uTOIkC1j!F0ww0N%VQdAnp~HGGLDqA~EN3QW4oCSM qwGg67S}P?UteDByy?^(7fxLJyldz`*?+MF + + + + Flot Examples: Navigation + + + + + + + + + + + + +
+ +
+
+
+ +

+ +

With the navigate plugin it is easy to add panning and zooming. Drag to pan, double click to zoom (or use the mouse scrollwheel).

+ +

The plugin fires events (useful for synchronizing several plots) and adds a couple of public methods so you can easily build a little user interface around it, like the little buttons at the top right in the plot.

+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/percentiles/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/percentiles/index.html new file mode 100644 index 0000000..480035b --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/percentiles/index.html @@ -0,0 +1,79 @@ + + + + + Flot Examples: Percentiles + + + + + + + + + + + +
+ +
+
+
+ +

Height in centimeters of individuals from the US (2003-2006) as function of age in years (source: CDC). The 15%-85%, 25%-75% and 50% percentiles are indicated.

+ +

For each point of a filled curve, you can specify an arbitrary bottom. As this example illustrates, this can be useful for plotting percentiles. If you have the data sets available without appropriate fill bottoms, you can use the fillbetween plugin to compute the data point bottoms automatically.

+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/realtime/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/realtime/index.html new file mode 100644 index 0000000..0a632dd --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/realtime/index.html @@ -0,0 +1,122 @@ + + + + + Flot Examples: Real-time updates + + + + + + + + + + +
+ +
+
+
+ +

You can update a chart periodically to get a real-time effect by using a timer to insert the new data in the plot and redraw it.

+ +

Time between updates: milliseconds

+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/resize/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/resize/index.html new file mode 100644 index 0000000..20b119c --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/resize/index.html @@ -0,0 +1,76 @@ + + + + + Flot Examples: Resizing + + + + + + + + + + + + + +
+ +
+
+
+ +

+ +

Sometimes it makes more sense to just let the plot take up the available space. In that case, we need to redraw the plot each time the placeholder changes its size. If you include the resize plugin, this is handled automatically.

+ +

Drag the bottom and right sides of the plot to resize it.

+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/selection/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/selection/index.html new file mode 100644 index 0000000..14e9714 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/selection/index.html @@ -0,0 +1,152 @@ + + + + + Flot Examples: Selection + + + + + + + + + + + +
+ +
+
+
+ +

1000 kg. CO2 emissions per year per capita for various countries (source: Wikipedia).

+ +

Flot supports selections through the selection plugin. You can enable rectangular selection or one-dimensional selection if the user should only be able to select on one axis. Try left-click and drag on the plot above where selection on the x axis is enabled.

+ +

You selected:

+ +

The plot command returns a plot object you can use to control the selection. Click the buttons below.

+ +

+ + +

+ +

Selections are really useful for zooming. Just replot the chart with min and max values for the axes set to the values in the "plotselected" event triggered. Enable the checkbox below and select a region again.

+ +

+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/series-errorbars/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/series-errorbars/index.html new file mode 100644 index 0000000..8e1f449 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/series-errorbars/index.html @@ -0,0 +1,150 @@ + + + + + Flot Examples: Error Bars + + + + + + + + + + + + +
+ +
+
+
+ +

With the errorbars plugin you can plot error bars to show standard deviation and other useful statistical properties.

+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/series-pie/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/series-pie/index.html new file mode 100644 index 0000000..7b14271 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/series-pie/index.html @@ -0,0 +1,818 @@ + + + + + Flot Examples: Pie Charts + + + + + + + + + + + + +
+ +

+
+
+ +
+ +

+ +

Source Code

+
+ +
+ +

Pie Options

+ +
    +
  • option: default value - Description of option
  • +
  • show: false - Enable the plugin and draw as a pie.
  • +
  • radius: 'auto' - Sets the radius of the pie. If value is between 0 and 1 (inclusive) then it will use that as a percentage of the available space (size of the container), otherwise it will use the value as a direct pixel length. If set to 'auto', it will be set to 1 if the legend is enabled and 3/4 if not.
  • +
  • innerRadius: 0 - Sets the radius of the donut hole. If value is between 0 and 1 (inclusive) then it will use that as a percentage of the radius, otherwise it will use the value as a direct pixel length.
  • +
  • startAngle: 3/2 - Factor of PI used for the starting angle (in radians) It can range between 0 and 2 (where 0 and 2 have the same result).
  • +
  • tilt: 1 - Percentage of tilt ranging from 0 and 1, where 1 has no change (fully vertical) and 0 is completely flat (fully horizontal -- in which case nothing actually gets drawn).
  • +
  • shadow:
      +
    • top: 5 - Vertical distance in pixel of the tilted pie shadow.
    • +
    • left: 15 - Horizontal distance in pixel of the tilted pie shadow.
    • +
    • alpha: 0.02 - Alpha value of the tilted pie shadow.
    • +
    +
  • offset:
      +
    • top: 0 - Pixel distance to move the pie up and down (relative to the center).
    • +
    • left: 'auto' - Pixel distance to move the pie left and right (relative to the center).
    • +
    +
  • stroke:
      +
    • color: '#FFF' - Color of the border of each slice. Hexadecimal color definitions are prefered (other formats may or may not work).
    • +
    • width: 1 - Pixel width of the border of each slice.
    • +
    +
  • label:
      +
    • show: 'auto' - Enable/Disable the labels. This can be set to true, false, or 'auto'. When set to 'auto', it will be set to false if the legend is enabled and true if not.
    • +
    • radius: 1 - Sets the radius at which to place the labels. If value is between 0 and 1 (inclusive) then it will use that as a percentage of the available space (size of the container), otherwise it will use the value as a direct pixel length.
    • +
    • threshold: 0 - Hides the labels of any pie slice that is smaller than the specified percentage (ranging from 0 to 1) i.e. a value of '0.03' will hide all slices 3% or less of the total.
    • +
    • formatter: [function] - This function specifies how the positioned labels should be formatted, and is applied after the legend's labelFormatter function. The labels can also still be styled using the class "pieLabel" (i.e. ".pieLabel" or "#graph1 .pieLabel").
    • +
    • radius: 1 - Sets the radius at which to place the labels. If value is between 0 and 1 (inclusive) then it will use that as a percentage of the available space (size of the container), otherwise it will use the value as a direct pixel length.
    • +
    • background:
        +
      • color: null - Backgound color of the positioned labels. If null, the plugin will automatically use the color of the slice.
      • +
      • opacity: 0 - Opacity of the background for the positioned labels. Acceptable values range from 0 to 1, where 0 is completely transparent and 1 is completely opaque.
      • +
      +
    +
  • combine:
      +
    • threshold: 0 - Combines all slices that are smaller than the specified percentage (ranging from 0 to 1) i.e. a value of '0.03' will combine all slices 3% or less into one slice).
    • +
    • color: null - Backgound color of the positioned labels. If null, the plugin will automatically use the color of the first slice to be combined.
    • +
    • label: 'Other' - Label text for the combined slice.
    • +
    +
  • highlight:
      +
    • opacity: 0.5 - Opacity of the highlight overlay on top of the current pie slice. Currently this just uses a white overlay, but support for changing the color of the overlay will also be added at a later date. +
    +
+ +

Changes/Features

+
    +
  • v1.0 - November 20th, 2009 - Brian Medendorp
  • +
  • The pie plug-in is now part of the Flot repository! This should make it a lot easier to deal with.
  • +
  • Added a new option (innerRadius) to add a "donut hole" to the center of the pie, based on comtributions from Anthony Aragues. I was a little reluctant to add this feature because it doesn't work very well with the shadow created for the tilted pie, but figured it was worthwhile for non-tilted pies. Also, excanvas apparently doesn't support compositing, so it will fall back to using the stroke color to fill in the center (but I recommend setting the stroke color to the background color anyway).
  • +
  • Changed the lineJoin for the border of the pie slices to use the 'round' option. This should make the center of the pie look better, particularly when there are numerous thin slices.
  • +
  • Included a bug fix submitted by btburnett3 to display a slightly smaller slice in the event that the slice is 100% and being rendered with Internet Explorer. I haven't experienced this bug myself, but it doesn't seem to hurt anything so I've included it.
  • +
  • The tilt value is now used when calculating the maximum radius of the pie in relation to the height of the container. This should prevent the pie from being smaller than it needed to in some cases, as well as reducing the amount of extra white space generated above and below the pie.
  • +
  • Hover and Click functionality are now availabe!
      +
    • Thanks to btburnett3 for the original hover functionality and Anthony Aragues for the modification that makes it compatable with excanvas, this was a huge help!
    • +
    • Added a new option (highlight opacity) to modify the highlight created when mousing over a slice. Currently this just uses a white overlay, but an option to change the hightlight color will be added when the appropriate functionality becomes available. +
    • I had a major setback that required me to practically rebuild the hover/click events from scratch one piece at a time (I discovered that it only worked with a single pie on a page at a time), but the end result ended up being virtually identical to the original, so I'm not quite sure what exactly made it work.
    • +
    • Warning: There are some minor issues with using this functionality in conjuction with some of the other more advanced features (tilt and donut). When using a donut hole, the inner portion still triggers the events even though that portion of the pie is no longer visible. When tilted, the interactive portions still use the original, untilted version of the pie when determining mouse position (this is because the isPointInPath function apparently doesn't work with transformations), however hover and click both work this way, so the appropriate slice is still highlighted when clicking, and it isn't as noticable of a problem.
    • +
  • +
  • Included a bug fix submitted by Xavi Ivars to fix array issues when other javascript libraries are included in addition to jQuery
  • +
    +
  • v0.4 - July 1st, 2009 - Brian Medendorp
  • +
  • Each series will now be shown in the legend, even if it's value is zero. The series will not get a positioned label because it will overlap with the other labels present and often makes them unreadable.
  • +
  • Data can now be passed in using the standard Flot method using an array of datapoints, the pie plugin will simply use the first y-value that it finds for each series in this case. The plugin uses this datastructure internally, but you can still use the old method of passing in a single numerical value for each series (the plugin will convert it as necessary). This should make it easier to transition from other types of graphs (such as a stacked bar graph) to a pie.
  • +
  • The pie can now be tilted at an angle with a new "tilt" option. Acceptable values range from 0-1, where 1 has no change (fully vertical) and 0 is completely flat (fully horizontal -- in which case nothing actually gets drawn). If the plugin determines that it will fit within the canvas, a drop shadow will be drawn under the tilted pie (this also requires a tilt value of 0.8 or less).
  • +
    +
  • v0.3.2 - June 25th, 2009 - Brian Medendorp
  • +
  • Fixed a bug that was causing the pie to be shifted too far left or right when the legend is showing in some cases.
  • +
    +
  • v0.3.1 - June 24th, 2009 - Brian Medendorp
  • +
  • Fixed a bug that was causing nothing to be drawn and generating a javascript error if any of the data values were set to zero.
  • +
    +
  • v0.3 - June 23rd, 2009 - Brian Medendorp
  • +
  • The legend now works without any modifications! Because of changes made to flot and the plugin system (thanks Ole Laursen!) I was able to simplify a number of things and am now able to use the legend without the direct access hack that was required in the previous version.
  • +
    +
  • v0.2 - June 22nd, 2009 - Brian Medendorp
  • +
  • The legend now works but only if you make the necessary changes to jquery.flot.js. Because of this, I changed the default values for pie.radius and pie.label.show to new 'auto' settings that change the default behavior of the size and labels depending on whether the legend functionality is available or not.
  • +
    +
  • v0.1 - June 18th, 2009 - Brian Medendorp
  • +
  • Rewrote the entire pie code into a flot plugin (since that is now an option), so it should be much easier to use and the code is cleaned up a bit. However, the (standard flot) legend is no longer available because the only way to prevent the grid lines from being displayed also prevents the legend from being displayed. Hopefully this can be fixed at a later date.
  • +
  • Restructured and combined some of the options. It should be much easier to deal with now.
  • +
  • Added the ability to change the starting point of the pie (still defaults to the top).
  • +
  • Modified the default options to show the labels to compensate for the lack of a legend.
  • +
  • Modified this page to use a random dataset. Note: you may need to refresh the page to see the effects of some of the examples.
  • +
    +
  • May 21st, 2009 - Brian Medendorp
  • +
  • Merged original pie modifications by Sergey Nosenko into the latest SVN version (as of May 15th, 2009) so that it will work with ie8.
  • +
  • Pie graph will now be centered in the canvas unless moved because of the legend or manually via the options. Additionally it prevents the pie from being moved beyond the edge of the canvas.
  • +
  • Modified the code related to the labelFormatter option to apply flot's legend labelFormatter first. This is so that the labels will be consistent, but still provide extra formatting for the positioned labels (such as adding the percentage value).
  • +
  • Positioned labels now have their backgrounds applied as a seperate element (much like the legend background) so that the opacity value can be set independently from the label itself (foreground). Additionally, the background color defaults to that of the matching slice.
  • +
  • As long as the labelOffset and radiusLimit are not set to hard values, the pie will be shrunk if the labels will extend outside the edge of the canvas
  • +
  • Added new options "radiusLimitFactor" and "radiusLimit" which limits how large the (visual) radius of the pie is in relation to the full radius (as calculated from the canvas dimensions) or a hard-pixel value (respectively). This allows for pushing the labels "outside" the pie.
  • +
  • Added a new option "labelHidePercent" that does not show the positioned labels of slices smaller than the specified percentage. This is to help prevent a bunch of overlapping labels from small slices.
  • +
  • Added a new option "sliceCombinePercent" that combines all slices smaller than the specified percentage into one larger slice. This is to help make the pie more attractive when there are a number of tiny slices. The options "sliceCombineColor" and "sliceCombineLabel" have also been added to change the color and name of the new slice if desired.
  • +
  • Tested in Firefox (3.0.10, 3.5b4), Internet Explorer (6.0.2900, 7.0.5730, 8.0.6001), Chrome (1.0.154), Opera (9.64), and Safari (3.1.1, 4 beta 5528.16). +
+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/series-toggle/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/series-toggle/index.html new file mode 100644 index 0000000..913a9d1 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/series-toggle/index.html @@ -0,0 +1,121 @@ + + + + + Flot Examples: Toggling Series + + + + + + + + + + +
+ +
+
+

+
+ +

This example shows military budgets for various countries in constant (2005) million US dollars (source: SIPRI).

+ +

Since all data is available client-side, it's pretty easy to make the plot interactive. Try turning countries on and off with the checkboxes next to the plot.

+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/series-types/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/series-types/index.html new file mode 100644 index 0000000..44f9ab5 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/series-types/index.html @@ -0,0 +1,90 @@ + + + + + Flot Examples: Series Types + + + + + + + + + + +
+ +
+
+
+ +

Flot supports lines, points, filled areas, bars and any combinations of these, in the same plot and even on the same data series.

+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/shared/jquery-ui/jquery-ui.min.css b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/shared/jquery-ui/jquery-ui.min.css new file mode 100644 index 0000000..52752d9 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/shared/jquery-ui/jquery-ui.min.css @@ -0,0 +1,6 @@ +/*! jQuery UI - v1.10.0 - 2013-01-26 +* http://jqueryui.com +* Includes: jquery.ui.core.css, jquery.ui.resizable.css +* Copyright (c) 2013 jQuery Foundation and other contributors Licensed MIT */ + +.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px} \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/stacking/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/stacking/index.html new file mode 100644 index 0000000..5475265 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/stacking/index.html @@ -0,0 +1,107 @@ + + + + + Flot Examples: Stacking + + + + + + + + + + + +
+ +
+
+
+ +

With the stack plugin, you can have Flot stack the series. This is useful if you wish to display both a total and the constituents it is made of. The only requirement is that you provide the input sorted on x.

+ +

+ + +

+ +

+ + + +

+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/symbols/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/symbols/index.html new file mode 100644 index 0000000..58720c7 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/symbols/index.html @@ -0,0 +1,76 @@ + + + + + Flot Examples: Symbols + + + + + + + + + + + +
+ +
+
+
+ +

Points can be marked in several ways, with circles being the built-in default. For other point types, you can define a callback function to draw the symbol. Some common symbols are available in the symbol plugin.

+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/threshold/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/threshold/index.html new file mode 100644 index 0000000..1e7f5a4 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/threshold/index.html @@ -0,0 +1,76 @@ + + + + + Flot Examples: Thresholds + + + + + + + + + + + +
+ +
+
+
+ +

With the threshold plugin, you can apply a specific color to the part of a data series below a threshold. This is can be useful for highlighting negative values, e.g. when displaying net results or what's in stock.

+ +

+ + + +

+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/tracking/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/tracking/index.html new file mode 100644 index 0000000..59bc3c5 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/tracking/index.html @@ -0,0 +1,135 @@ + + + + + Flot Examples: Tracking + + + + + + + + + + + +
+ +
+
+
+ +

You can add crosshairs that'll track the mouse position, either on both axes or as here on only one.

+ +

If you combine it with listening on hover events, you can use it to track the intersection on the curves by interpolating the data points (look at the legend).

+ +

+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/visitors/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/visitors/index.html new file mode 100644 index 0000000..75e2ce0 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/visitors/index.html @@ -0,0 +1,147 @@ + + + + + Flot Examples: Visitors + + + + + + + + + + + + +
+ +
+
+
+ +
+
+
+ +

This plot shows visitors per day to the Flot homepage, with weekends colored.

+ +

The smaller plot is linked to the main plot, so it acts as an overview. Try dragging a selection on either plot, and watch the behavior of the other.

+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/zooming/index.html b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/zooming/index.html new file mode 100644 index 0000000..a822281 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/examples/zooming/index.html @@ -0,0 +1,144 @@ + + + + + Flot Examples: Selection and zooming + + + + + + + + + + + +
+ +
+
+
+
+ +

Selection support makes it easy to construct flexible zooming schemes. With a few lines of code, the small overview plot to the right has been connected to the large plot. Try selecting a rectangle on either of them.

+ +
+ + + + + diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/excanvas.js b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/excanvas.js new file mode 100644 index 0000000..d423cbf --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/excanvas.js @@ -0,0 +1,1428 @@ +// Copyright 2006 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +// Known Issues: +// +// * Patterns only support repeat. +// * Radial gradient are not implemented. The VML version of these look very +// different from the canvas one. +// * Clipping paths are not implemented. +// * Coordsize. The width and height attribute have higher priority than the +// width and height style values which isn't correct. +// * Painting mode isn't implemented. +// * Canvas width/height should is using content-box by default. IE in +// Quirks mode will draw the canvas using border-box. Either change your +// doctype to HTML5 +// (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype) +// or use Box Sizing Behavior from WebFX +// (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html) +// * Non uniform scaling does not correctly scale strokes. +// * Filling very large shapes (above 5000 points) is buggy. +// * Optimize. There is always room for speed improvements. + +// Only add this code if we do not already have a canvas implementation +if (!document.createElement('canvas').getContext) { + +(function() { + + // alias some functions to make (compiled) code shorter + var m = Math; + var mr = m.round; + var ms = m.sin; + var mc = m.cos; + var abs = m.abs; + var sqrt = m.sqrt; + + // this is used for sub pixel precision + var Z = 10; + var Z2 = Z / 2; + + var IE_VERSION = +navigator.userAgent.match(/MSIE ([\d.]+)?/)[1]; + + /** + * This funtion is assigned to the elements as element.getContext(). + * @this {HTMLElement} + * @return {CanvasRenderingContext2D_} + */ + function getContext() { + return this.context_ || + (this.context_ = new CanvasRenderingContext2D_(this)); + } + + var slice = Array.prototype.slice; + + /** + * Binds a function to an object. The returned function will always use the + * passed in {@code obj} as {@code this}. + * + * Example: + * + * g = bind(f, obj, a, b) + * g(c, d) // will do f.call(obj, a, b, c, d) + * + * @param {Function} f The function to bind the object to + * @param {Object} obj The object that should act as this when the function + * is called + * @param {*} var_args Rest arguments that will be used as the initial + * arguments when the function is called + * @return {Function} A new function that has bound this + */ + function bind(f, obj, var_args) { + var a = slice.call(arguments, 2); + return function() { + return f.apply(obj, a.concat(slice.call(arguments))); + }; + } + + function encodeHtmlAttribute(s) { + return String(s).replace(/&/g, '&').replace(/"/g, '"'); + } + + function addNamespace(doc, prefix, urn) { + if (!doc.namespaces[prefix]) { + doc.namespaces.add(prefix, urn, '#default#VML'); + } + } + + function addNamespacesAndStylesheet(doc) { + addNamespace(doc, 'g_vml_', 'urn:schemas-microsoft-com:vml'); + addNamespace(doc, 'g_o_', 'urn:schemas-microsoft-com:office:office'); + + // Setup default CSS. Only add one style sheet per document + if (!doc.styleSheets['ex_canvas_']) { + var ss = doc.createStyleSheet(); + ss.owningElement.id = 'ex_canvas_'; + ss.cssText = 'canvas{display:inline-block;overflow:hidden;' + + // default size is 300x150 in Gecko and Opera + 'text-align:left;width:300px;height:150px}'; + } + } + + // Add namespaces and stylesheet at startup. + addNamespacesAndStylesheet(document); + + var G_vmlCanvasManager_ = { + init: function(opt_doc) { + var doc = opt_doc || document; + // Create a dummy element so that IE will allow canvas elements to be + // recognized. + doc.createElement('canvas'); + doc.attachEvent('onreadystatechange', bind(this.init_, this, doc)); + }, + + init_: function(doc) { + // find all canvas elements + var els = doc.getElementsByTagName('canvas'); + for (var i = 0; i < els.length; i++) { + this.initElement(els[i]); + } + }, + + /** + * Public initializes a canvas element so that it can be used as canvas + * element from now on. This is called automatically before the page is + * loaded but if you are creating elements using createElement you need to + * make sure this is called on the element. + * @param {HTMLElement} el The canvas element to initialize. + * @return {HTMLElement} the element that was created. + */ + initElement: function(el) { + if (!el.getContext) { + el.getContext = getContext; + + // Add namespaces and stylesheet to document of the element. + addNamespacesAndStylesheet(el.ownerDocument); + + // Remove fallback content. There is no way to hide text nodes so we + // just remove all childNodes. We could hide all elements and remove + // text nodes but who really cares about the fallback content. + el.innerHTML = ''; + + // do not use inline function because that will leak memory + el.attachEvent('onpropertychange', onPropertyChange); + el.attachEvent('onresize', onResize); + + var attrs = el.attributes; + if (attrs.width && attrs.width.specified) { + // TODO: use runtimeStyle and coordsize + // el.getContext().setWidth_(attrs.width.nodeValue); + el.style.width = attrs.width.nodeValue + 'px'; + } else { + el.width = el.clientWidth; + } + if (attrs.height && attrs.height.specified) { + // TODO: use runtimeStyle and coordsize + // el.getContext().setHeight_(attrs.height.nodeValue); + el.style.height = attrs.height.nodeValue + 'px'; + } else { + el.height = el.clientHeight; + } + //el.getContext().setCoordsize_() + } + return el; + } + }; + + function onPropertyChange(e) { + var el = e.srcElement; + + switch (e.propertyName) { + case 'width': + el.getContext().clearRect(); + el.style.width = el.attributes.width.nodeValue + 'px'; + // In IE8 this does not trigger onresize. + el.firstChild.style.width = el.clientWidth + 'px'; + break; + case 'height': + el.getContext().clearRect(); + el.style.height = el.attributes.height.nodeValue + 'px'; + el.firstChild.style.height = el.clientHeight + 'px'; + break; + } + } + + function onResize(e) { + var el = e.srcElement; + if (el.firstChild) { + el.firstChild.style.width = el.clientWidth + 'px'; + el.firstChild.style.height = el.clientHeight + 'px'; + } + } + + G_vmlCanvasManager_.init(); + + // precompute "00" to "FF" + var decToHex = []; + for (var i = 0; i < 16; i++) { + for (var j = 0; j < 16; j++) { + decToHex[i * 16 + j] = i.toString(16) + j.toString(16); + } + } + + function createMatrixIdentity() { + return [ + [1, 0, 0], + [0, 1, 0], + [0, 0, 1] + ]; + } + + function matrixMultiply(m1, m2) { + var result = createMatrixIdentity(); + + for (var x = 0; x < 3; x++) { + for (var y = 0; y < 3; y++) { + var sum = 0; + + for (var z = 0; z < 3; z++) { + sum += m1[x][z] * m2[z][y]; + } + + result[x][y] = sum; + } + } + return result; + } + + function copyState(o1, o2) { + o2.fillStyle = o1.fillStyle; + o2.lineCap = o1.lineCap; + o2.lineJoin = o1.lineJoin; + o2.lineWidth = o1.lineWidth; + o2.miterLimit = o1.miterLimit; + o2.shadowBlur = o1.shadowBlur; + o2.shadowColor = o1.shadowColor; + o2.shadowOffsetX = o1.shadowOffsetX; + o2.shadowOffsetY = o1.shadowOffsetY; + o2.strokeStyle = o1.strokeStyle; + o2.globalAlpha = o1.globalAlpha; + o2.font = o1.font; + o2.textAlign = o1.textAlign; + o2.textBaseline = o1.textBaseline; + o2.arcScaleX_ = o1.arcScaleX_; + o2.arcScaleY_ = o1.arcScaleY_; + o2.lineScale_ = o1.lineScale_; + } + + var colorData = { + aliceblue: '#F0F8FF', + antiquewhite: '#FAEBD7', + aquamarine: '#7FFFD4', + azure: '#F0FFFF', + beige: '#F5F5DC', + bisque: '#FFE4C4', + black: '#000000', + blanchedalmond: '#FFEBCD', + blueviolet: '#8A2BE2', + brown: '#A52A2A', + burlywood: '#DEB887', + cadetblue: '#5F9EA0', + chartreuse: '#7FFF00', + chocolate: '#D2691E', + coral: '#FF7F50', + cornflowerblue: '#6495ED', + cornsilk: '#FFF8DC', + crimson: '#DC143C', + cyan: '#00FFFF', + darkblue: '#00008B', + darkcyan: '#008B8B', + darkgoldenrod: '#B8860B', + darkgray: '#A9A9A9', + darkgreen: '#006400', + darkgrey: '#A9A9A9', + darkkhaki: '#BDB76B', + darkmagenta: '#8B008B', + darkolivegreen: '#556B2F', + darkorange: '#FF8C00', + darkorchid: '#9932CC', + darkred: '#8B0000', + darksalmon: '#E9967A', + darkseagreen: '#8FBC8F', + darkslateblue: '#483D8B', + darkslategray: '#2F4F4F', + darkslategrey: '#2F4F4F', + darkturquoise: '#00CED1', + darkviolet: '#9400D3', + deeppink: '#FF1493', + deepskyblue: '#00BFFF', + dimgray: '#696969', + dimgrey: '#696969', + dodgerblue: '#1E90FF', + firebrick: '#B22222', + floralwhite: '#FFFAF0', + forestgreen: '#228B22', + gainsboro: '#DCDCDC', + ghostwhite: '#F8F8FF', + gold: '#FFD700', + goldenrod: '#DAA520', + grey: '#808080', + greenyellow: '#ADFF2F', + honeydew: '#F0FFF0', + hotpink: '#FF69B4', + indianred: '#CD5C5C', + indigo: '#4B0082', + ivory: '#FFFFF0', + khaki: '#F0E68C', + lavender: '#E6E6FA', + lavenderblush: '#FFF0F5', + lawngreen: '#7CFC00', + lemonchiffon: '#FFFACD', + lightblue: '#ADD8E6', + lightcoral: '#F08080', + lightcyan: '#E0FFFF', + lightgoldenrodyellow: '#FAFAD2', + lightgreen: '#90EE90', + lightgrey: '#D3D3D3', + lightpink: '#FFB6C1', + lightsalmon: '#FFA07A', + lightseagreen: '#20B2AA', + lightskyblue: '#87CEFA', + lightslategray: '#778899', + lightslategrey: '#778899', + lightsteelblue: '#B0C4DE', + lightyellow: '#FFFFE0', + limegreen: '#32CD32', + linen: '#FAF0E6', + magenta: '#FF00FF', + mediumaquamarine: '#66CDAA', + mediumblue: '#0000CD', + mediumorchid: '#BA55D3', + mediumpurple: '#9370DB', + mediumseagreen: '#3CB371', + mediumslateblue: '#7B68EE', + mediumspringgreen: '#00FA9A', + mediumturquoise: '#48D1CC', + mediumvioletred: '#C71585', + midnightblue: '#191970', + mintcream: '#F5FFFA', + mistyrose: '#FFE4E1', + moccasin: '#FFE4B5', + navajowhite: '#FFDEAD', + oldlace: '#FDF5E6', + olivedrab: '#6B8E23', + orange: '#FFA500', + orangered: '#FF4500', + orchid: '#DA70D6', + palegoldenrod: '#EEE8AA', + palegreen: '#98FB98', + paleturquoise: '#AFEEEE', + palevioletred: '#DB7093', + papayawhip: '#FFEFD5', + peachpuff: '#FFDAB9', + peru: '#CD853F', + pink: '#FFC0CB', + plum: '#DDA0DD', + powderblue: '#B0E0E6', + rosybrown: '#BC8F8F', + royalblue: '#4169E1', + saddlebrown: '#8B4513', + salmon: '#FA8072', + sandybrown: '#F4A460', + seagreen: '#2E8B57', + seashell: '#FFF5EE', + sienna: '#A0522D', + skyblue: '#87CEEB', + slateblue: '#6A5ACD', + slategray: '#708090', + slategrey: '#708090', + snow: '#FFFAFA', + springgreen: '#00FF7F', + steelblue: '#4682B4', + tan: '#D2B48C', + thistle: '#D8BFD8', + tomato: '#FF6347', + turquoise: '#40E0D0', + violet: '#EE82EE', + wheat: '#F5DEB3', + whitesmoke: '#F5F5F5', + yellowgreen: '#9ACD32' + }; + + + function getRgbHslContent(styleString) { + var start = styleString.indexOf('(', 3); + var end = styleString.indexOf(')', start + 1); + var parts = styleString.substring(start + 1, end).split(','); + // add alpha if needed + if (parts.length != 4 || styleString.charAt(3) != 'a') { + parts[3] = 1; + } + return parts; + } + + function percent(s) { + return parseFloat(s) / 100; + } + + function clamp(v, min, max) { + return Math.min(max, Math.max(min, v)); + } + + function hslToRgb(parts){ + var r, g, b, h, s, l; + h = parseFloat(parts[0]) / 360 % 360; + if (h < 0) + h++; + s = clamp(percent(parts[1]), 0, 1); + l = clamp(percent(parts[2]), 0, 1); + if (s == 0) { + r = g = b = l; // achromatic + } else { + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = hueToRgb(p, q, h + 1 / 3); + g = hueToRgb(p, q, h); + b = hueToRgb(p, q, h - 1 / 3); + } + + return '#' + decToHex[Math.floor(r * 255)] + + decToHex[Math.floor(g * 255)] + + decToHex[Math.floor(b * 255)]; + } + + function hueToRgb(m1, m2, h) { + if (h < 0) + h++; + if (h > 1) + h--; + + if (6 * h < 1) + return m1 + (m2 - m1) * 6 * h; + else if (2 * h < 1) + return m2; + else if (3 * h < 2) + return m1 + (m2 - m1) * (2 / 3 - h) * 6; + else + return m1; + } + + var processStyleCache = {}; + + function processStyle(styleString) { + if (styleString in processStyleCache) { + return processStyleCache[styleString]; + } + + var str, alpha = 1; + + styleString = String(styleString); + if (styleString.charAt(0) == '#') { + str = styleString; + } else if (/^rgb/.test(styleString)) { + var parts = getRgbHslContent(styleString); + var str = '#', n; + for (var i = 0; i < 3; i++) { + if (parts[i].indexOf('%') != -1) { + n = Math.floor(percent(parts[i]) * 255); + } else { + n = +parts[i]; + } + str += decToHex[clamp(n, 0, 255)]; + } + alpha = +parts[3]; + } else if (/^hsl/.test(styleString)) { + var parts = getRgbHslContent(styleString); + str = hslToRgb(parts); + alpha = parts[3]; + } else { + str = colorData[styleString] || styleString; + } + return processStyleCache[styleString] = {color: str, alpha: alpha}; + } + + var DEFAULT_STYLE = { + style: 'normal', + variant: 'normal', + weight: 'normal', + size: 10, + family: 'sans-serif' + }; + + // Internal text style cache + var fontStyleCache = {}; + + function processFontStyle(styleString) { + if (fontStyleCache[styleString]) { + return fontStyleCache[styleString]; + } + + var el = document.createElement('div'); + var style = el.style; + try { + style.font = styleString; + } catch (ex) { + // Ignore failures to set to invalid font. + } + + return fontStyleCache[styleString] = { + style: style.fontStyle || DEFAULT_STYLE.style, + variant: style.fontVariant || DEFAULT_STYLE.variant, + weight: style.fontWeight || DEFAULT_STYLE.weight, + size: style.fontSize || DEFAULT_STYLE.size, + family: style.fontFamily || DEFAULT_STYLE.family + }; + } + + function getComputedStyle(style, element) { + var computedStyle = {}; + + for (var p in style) { + computedStyle[p] = style[p]; + } + + // Compute the size + var canvasFontSize = parseFloat(element.currentStyle.fontSize), + fontSize = parseFloat(style.size); + + if (typeof style.size == 'number') { + computedStyle.size = style.size; + } else if (style.size.indexOf('px') != -1) { + computedStyle.size = fontSize; + } else if (style.size.indexOf('em') != -1) { + computedStyle.size = canvasFontSize * fontSize; + } else if(style.size.indexOf('%') != -1) { + computedStyle.size = (canvasFontSize / 100) * fontSize; + } else if (style.size.indexOf('pt') != -1) { + computedStyle.size = fontSize / .75; + } else { + computedStyle.size = canvasFontSize; + } + + // Different scaling between normal text and VML text. This was found using + // trial and error to get the same size as non VML text. + computedStyle.size *= 0.981; + + return computedStyle; + } + + function buildStyle(style) { + return style.style + ' ' + style.variant + ' ' + style.weight + ' ' + + style.size + 'px ' + style.family; + } + + var lineCapMap = { + 'butt': 'flat', + 'round': 'round' + }; + + function processLineCap(lineCap) { + return lineCapMap[lineCap] || 'square'; + } + + /** + * This class implements CanvasRenderingContext2D interface as described by + * the WHATWG. + * @param {HTMLElement} canvasElement The element that the 2D context should + * be associated with + */ + function CanvasRenderingContext2D_(canvasElement) { + this.m_ = createMatrixIdentity(); + + this.mStack_ = []; + this.aStack_ = []; + this.currentPath_ = []; + + // Canvas context properties + this.strokeStyle = '#000'; + this.fillStyle = '#000'; + + this.lineWidth = 1; + this.lineJoin = 'miter'; + this.lineCap = 'butt'; + this.miterLimit = Z * 1; + this.globalAlpha = 1; + this.font = '10px sans-serif'; + this.textAlign = 'left'; + this.textBaseline = 'alphabetic'; + this.canvas = canvasElement; + + var cssText = 'width:' + canvasElement.clientWidth + 'px;height:' + + canvasElement.clientHeight + 'px;overflow:hidden;position:absolute'; + var el = canvasElement.ownerDocument.createElement('div'); + el.style.cssText = cssText; + canvasElement.appendChild(el); + + var overlayEl = el.cloneNode(false); + // Use a non transparent background. + overlayEl.style.backgroundColor = 'red'; + overlayEl.style.filter = 'alpha(opacity=0)'; + canvasElement.appendChild(overlayEl); + + this.element_ = el; + this.arcScaleX_ = 1; + this.arcScaleY_ = 1; + this.lineScale_ = 1; + } + + var contextPrototype = CanvasRenderingContext2D_.prototype; + contextPrototype.clearRect = function() { + if (this.textMeasureEl_) { + this.textMeasureEl_.removeNode(true); + this.textMeasureEl_ = null; + } + this.element_.innerHTML = ''; + }; + + contextPrototype.beginPath = function() { + // TODO: Branch current matrix so that save/restore has no effect + // as per safari docs. + this.currentPath_ = []; + }; + + contextPrototype.moveTo = function(aX, aY) { + var p = getCoords(this, aX, aY); + this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y}); + this.currentX_ = p.x; + this.currentY_ = p.y; + }; + + contextPrototype.lineTo = function(aX, aY) { + var p = getCoords(this, aX, aY); + this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y}); + + this.currentX_ = p.x; + this.currentY_ = p.y; + }; + + contextPrototype.bezierCurveTo = function(aCP1x, aCP1y, + aCP2x, aCP2y, + aX, aY) { + var p = getCoords(this, aX, aY); + var cp1 = getCoords(this, aCP1x, aCP1y); + var cp2 = getCoords(this, aCP2x, aCP2y); + bezierCurveTo(this, cp1, cp2, p); + }; + + // Helper function that takes the already fixed cordinates. + function bezierCurveTo(self, cp1, cp2, p) { + self.currentPath_.push({ + type: 'bezierCurveTo', + cp1x: cp1.x, + cp1y: cp1.y, + cp2x: cp2.x, + cp2y: cp2.y, + x: p.x, + y: p.y + }); + self.currentX_ = p.x; + self.currentY_ = p.y; + } + + contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) { + // the following is lifted almost directly from + // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes + + var cp = getCoords(this, aCPx, aCPy); + var p = getCoords(this, aX, aY); + + var cp1 = { + x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_), + y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_) + }; + var cp2 = { + x: cp1.x + (p.x - this.currentX_) / 3.0, + y: cp1.y + (p.y - this.currentY_) / 3.0 + }; + + bezierCurveTo(this, cp1, cp2, p); + }; + + contextPrototype.arc = function(aX, aY, aRadius, + aStartAngle, aEndAngle, aClockwise) { + aRadius *= Z; + var arcType = aClockwise ? 'at' : 'wa'; + + var xStart = aX + mc(aStartAngle) * aRadius - Z2; + var yStart = aY + ms(aStartAngle) * aRadius - Z2; + + var xEnd = aX + mc(aEndAngle) * aRadius - Z2; + var yEnd = aY + ms(aEndAngle) * aRadius - Z2; + + // IE won't render arches drawn counter clockwise if xStart == xEnd. + if (xStart == xEnd && !aClockwise) { + xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something + // that can be represented in binary + } + + var p = getCoords(this, aX, aY); + var pStart = getCoords(this, xStart, yStart); + var pEnd = getCoords(this, xEnd, yEnd); + + this.currentPath_.push({type: arcType, + x: p.x, + y: p.y, + radius: aRadius, + xStart: pStart.x, + yStart: pStart.y, + xEnd: pEnd.x, + yEnd: pEnd.y}); + + }; + + contextPrototype.rect = function(aX, aY, aWidth, aHeight) { + this.moveTo(aX, aY); + this.lineTo(aX + aWidth, aY); + this.lineTo(aX + aWidth, aY + aHeight); + this.lineTo(aX, aY + aHeight); + this.closePath(); + }; + + contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) { + var oldPath = this.currentPath_; + this.beginPath(); + + this.moveTo(aX, aY); + this.lineTo(aX + aWidth, aY); + this.lineTo(aX + aWidth, aY + aHeight); + this.lineTo(aX, aY + aHeight); + this.closePath(); + this.stroke(); + + this.currentPath_ = oldPath; + }; + + contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) { + var oldPath = this.currentPath_; + this.beginPath(); + + this.moveTo(aX, aY); + this.lineTo(aX + aWidth, aY); + this.lineTo(aX + aWidth, aY + aHeight); + this.lineTo(aX, aY + aHeight); + this.closePath(); + this.fill(); + + this.currentPath_ = oldPath; + }; + + contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) { + var gradient = new CanvasGradient_('gradient'); + gradient.x0_ = aX0; + gradient.y0_ = aY0; + gradient.x1_ = aX1; + gradient.y1_ = aY1; + return gradient; + }; + + contextPrototype.createRadialGradient = function(aX0, aY0, aR0, + aX1, aY1, aR1) { + var gradient = new CanvasGradient_('gradientradial'); + gradient.x0_ = aX0; + gradient.y0_ = aY0; + gradient.r0_ = aR0; + gradient.x1_ = aX1; + gradient.y1_ = aY1; + gradient.r1_ = aR1; + return gradient; + }; + + contextPrototype.drawImage = function(image, var_args) { + var dx, dy, dw, dh, sx, sy, sw, sh; + + // to find the original width we overide the width and height + var oldRuntimeWidth = image.runtimeStyle.width; + var oldRuntimeHeight = image.runtimeStyle.height; + image.runtimeStyle.width = 'auto'; + image.runtimeStyle.height = 'auto'; + + // get the original size + var w = image.width; + var h = image.height; + + // and remove overides + image.runtimeStyle.width = oldRuntimeWidth; + image.runtimeStyle.height = oldRuntimeHeight; + + if (arguments.length == 3) { + dx = arguments[1]; + dy = arguments[2]; + sx = sy = 0; + sw = dw = w; + sh = dh = h; + } else if (arguments.length == 5) { + dx = arguments[1]; + dy = arguments[2]; + dw = arguments[3]; + dh = arguments[4]; + sx = sy = 0; + sw = w; + sh = h; + } else if (arguments.length == 9) { + sx = arguments[1]; + sy = arguments[2]; + sw = arguments[3]; + sh = arguments[4]; + dx = arguments[5]; + dy = arguments[6]; + dw = arguments[7]; + dh = arguments[8]; + } else { + throw Error('Invalid number of arguments'); + } + + var d = getCoords(this, dx, dy); + + var w2 = sw / 2; + var h2 = sh / 2; + + var vmlStr = []; + + var W = 10; + var H = 10; + + // For some reason that I've now forgotten, using divs didn't work + vmlStr.push(' ' , + '', + ''); + + this.element_.insertAdjacentHTML('BeforeEnd', vmlStr.join('')); + }; + + contextPrototype.stroke = function(aFill) { + var W = 10; + var H = 10; + // Divide the shape into chunks if it's too long because IE has a limit + // somewhere for how long a VML shape can be. This simple division does + // not work with fills, only strokes, unfortunately. + var chunkSize = 5000; + + var min = {x: null, y: null}; + var max = {x: null, y: null}; + + for (var j = 0; j < this.currentPath_.length; j += chunkSize) { + var lineStr = []; + var lineOpen = false; + + lineStr.push(''); + + if (!aFill) { + appendStroke(this, lineStr); + } else { + appendFill(this, lineStr, min, max); + } + + lineStr.push(''); + + this.element_.insertAdjacentHTML('beforeEnd', lineStr.join('')); + } + }; + + function appendStroke(ctx, lineStr) { + var a = processStyle(ctx.strokeStyle); + var color = a.color; + var opacity = a.alpha * ctx.globalAlpha; + var lineWidth = ctx.lineScale_ * ctx.lineWidth; + + // VML cannot correctly render a line if the width is less than 1px. + // In that case, we dilute the color to make the line look thinner. + if (lineWidth < 1) { + opacity *= lineWidth; + } + + lineStr.push( + '' + ); + } + + function appendFill(ctx, lineStr, min, max) { + var fillStyle = ctx.fillStyle; + var arcScaleX = ctx.arcScaleX_; + var arcScaleY = ctx.arcScaleY_; + var width = max.x - min.x; + var height = max.y - min.y; + if (fillStyle instanceof CanvasGradient_) { + // TODO: Gradients transformed with the transformation matrix. + var angle = 0; + var focus = {x: 0, y: 0}; + + // additional offset + var shift = 0; + // scale factor for offset + var expansion = 1; + + if (fillStyle.type_ == 'gradient') { + var x0 = fillStyle.x0_ / arcScaleX; + var y0 = fillStyle.y0_ / arcScaleY; + var x1 = fillStyle.x1_ / arcScaleX; + var y1 = fillStyle.y1_ / arcScaleY; + var p0 = getCoords(ctx, x0, y0); + var p1 = getCoords(ctx, x1, y1); + var dx = p1.x - p0.x; + var dy = p1.y - p0.y; + angle = Math.atan2(dx, dy) * 180 / Math.PI; + + // The angle should be a non-negative number. + if (angle < 0) { + angle += 360; + } + + // Very small angles produce an unexpected result because they are + // converted to a scientific notation string. + if (angle < 1e-6) { + angle = 0; + } + } else { + var p0 = getCoords(ctx, fillStyle.x0_, fillStyle.y0_); + focus = { + x: (p0.x - min.x) / width, + y: (p0.y - min.y) / height + }; + + width /= arcScaleX * Z; + height /= arcScaleY * Z; + var dimension = m.max(width, height); + shift = 2 * fillStyle.r0_ / dimension; + expansion = 2 * fillStyle.r1_ / dimension - shift; + } + + // We need to sort the color stops in ascending order by offset, + // otherwise IE won't interpret it correctly. + var stops = fillStyle.colors_; + stops.sort(function(cs1, cs2) { + return cs1.offset - cs2.offset; + }); + + var length = stops.length; + var color1 = stops[0].color; + var color2 = stops[length - 1].color; + var opacity1 = stops[0].alpha * ctx.globalAlpha; + var opacity2 = stops[length - 1].alpha * ctx.globalAlpha; + + var colors = []; + for (var i = 0; i < length; i++) { + var stop = stops[i]; + colors.push(stop.offset * expansion + shift + ' ' + stop.color); + } + + // When colors attribute is used, the meanings of opacity and o:opacity2 + // are reversed. + lineStr.push(''); + } else if (fillStyle instanceof CanvasPattern_) { + if (width && height) { + var deltaLeft = -min.x; + var deltaTop = -min.y; + lineStr.push(''); + } + } else { + var a = processStyle(ctx.fillStyle); + var color = a.color; + var opacity = a.alpha * ctx.globalAlpha; + lineStr.push(''); + } + } + + contextPrototype.fill = function() { + this.stroke(true); + }; + + contextPrototype.closePath = function() { + this.currentPath_.push({type: 'close'}); + }; + + function getCoords(ctx, aX, aY) { + var m = ctx.m_; + return { + x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2, + y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2 + }; + }; + + contextPrototype.save = function() { + var o = {}; + copyState(this, o); + this.aStack_.push(o); + this.mStack_.push(this.m_); + this.m_ = matrixMultiply(createMatrixIdentity(), this.m_); + }; + + contextPrototype.restore = function() { + if (this.aStack_.length) { + copyState(this.aStack_.pop(), this); + this.m_ = this.mStack_.pop(); + } + }; + + function matrixIsFinite(m) { + return isFinite(m[0][0]) && isFinite(m[0][1]) && + isFinite(m[1][0]) && isFinite(m[1][1]) && + isFinite(m[2][0]) && isFinite(m[2][1]); + } + + function setM(ctx, m, updateLineScale) { + if (!matrixIsFinite(m)) { + return; + } + ctx.m_ = m; + + if (updateLineScale) { + // Get the line scale. + // Determinant of this.m_ means how much the area is enlarged by the + // transformation. So its square root can be used as a scale factor + // for width. + var det = m[0][0] * m[1][1] - m[0][1] * m[1][0]; + ctx.lineScale_ = sqrt(abs(det)); + } + } + + contextPrototype.translate = function(aX, aY) { + var m1 = [ + [1, 0, 0], + [0, 1, 0], + [aX, aY, 1] + ]; + + setM(this, matrixMultiply(m1, this.m_), false); + }; + + contextPrototype.rotate = function(aRot) { + var c = mc(aRot); + var s = ms(aRot); + + var m1 = [ + [c, s, 0], + [-s, c, 0], + [0, 0, 1] + ]; + + setM(this, matrixMultiply(m1, this.m_), false); + }; + + contextPrototype.scale = function(aX, aY) { + this.arcScaleX_ *= aX; + this.arcScaleY_ *= aY; + var m1 = [ + [aX, 0, 0], + [0, aY, 0], + [0, 0, 1] + ]; + + setM(this, matrixMultiply(m1, this.m_), true); + }; + + contextPrototype.transform = function(m11, m12, m21, m22, dx, dy) { + var m1 = [ + [m11, m12, 0], + [m21, m22, 0], + [dx, dy, 1] + ]; + + setM(this, matrixMultiply(m1, this.m_), true); + }; + + contextPrototype.setTransform = function(m11, m12, m21, m22, dx, dy) { + var m = [ + [m11, m12, 0], + [m21, m22, 0], + [dx, dy, 1] + ]; + + setM(this, m, true); + }; + + /** + * The text drawing function. + * The maxWidth argument isn't taken in account, since no browser supports + * it yet. + */ + contextPrototype.drawText_ = function(text, x, y, maxWidth, stroke) { + var m = this.m_, + delta = 1000, + left = 0, + right = delta, + offset = {x: 0, y: 0}, + lineStr = []; + + var fontStyle = getComputedStyle(processFontStyle(this.font), + this.element_); + + var fontStyleString = buildStyle(fontStyle); + + var elementStyle = this.element_.currentStyle; + var textAlign = this.textAlign.toLowerCase(); + switch (textAlign) { + case 'left': + case 'center': + case 'right': + break; + case 'end': + textAlign = elementStyle.direction == 'ltr' ? 'right' : 'left'; + break; + case 'start': + textAlign = elementStyle.direction == 'rtl' ? 'right' : 'left'; + break; + default: + textAlign = 'left'; + } + + // 1.75 is an arbitrary number, as there is no info about the text baseline + switch (this.textBaseline) { + case 'hanging': + case 'top': + offset.y = fontStyle.size / 1.75; + break; + case 'middle': + break; + default: + case null: + case 'alphabetic': + case 'ideographic': + case 'bottom': + offset.y = -fontStyle.size / 2.25; + break; + } + + switch(textAlign) { + case 'right': + left = delta; + right = 0.05; + break; + case 'center': + left = right = delta / 2; + break; + } + + var d = getCoords(this, x + offset.x, y + offset.y); + + lineStr.push(''); + + if (stroke) { + appendStroke(this, lineStr); + } else { + // TODO: Fix the min and max params. + appendFill(this, lineStr, {x: -left, y: 0}, + {x: right, y: fontStyle.size}); + } + + var skewM = m[0][0].toFixed(3) + ',' + m[1][0].toFixed(3) + ',' + + m[0][1].toFixed(3) + ',' + m[1][1].toFixed(3) + ',0,0'; + + var skewOffset = mr(d.x / Z) + ',' + mr(d.y / Z); + + lineStr.push('', + '', + ''); + + this.element_.insertAdjacentHTML('beforeEnd', lineStr.join('')); + }; + + contextPrototype.fillText = function(text, x, y, maxWidth) { + this.drawText_(text, x, y, maxWidth, false); + }; + + contextPrototype.strokeText = function(text, x, y, maxWidth) { + this.drawText_(text, x, y, maxWidth, true); + }; + + contextPrototype.measureText = function(text) { + if (!this.textMeasureEl_) { + var s = ''; + this.element_.insertAdjacentHTML('beforeEnd', s); + this.textMeasureEl_ = this.element_.lastChild; + } + var doc = this.element_.ownerDocument; + this.textMeasureEl_.innerHTML = ''; + this.textMeasureEl_.style.font = this.font; + // Don't use innerHTML or innerText because they allow markup/whitespace. + this.textMeasureEl_.appendChild(doc.createTextNode(text)); + return {width: this.textMeasureEl_.offsetWidth}; + }; + + /******** STUBS ********/ + contextPrototype.clip = function() { + // TODO: Implement + }; + + contextPrototype.arcTo = function() { + // TODO: Implement + }; + + contextPrototype.createPattern = function(image, repetition) { + return new CanvasPattern_(image, repetition); + }; + + // Gradient / Pattern Stubs + function CanvasGradient_(aType) { + this.type_ = aType; + this.x0_ = 0; + this.y0_ = 0; + this.r0_ = 0; + this.x1_ = 0; + this.y1_ = 0; + this.r1_ = 0; + this.colors_ = []; + } + + CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) { + aColor = processStyle(aColor); + this.colors_.push({offset: aOffset, + color: aColor.color, + alpha: aColor.alpha}); + }; + + function CanvasPattern_(image, repetition) { + assertImageIsValid(image); + switch (repetition) { + case 'repeat': + case null: + case '': + this.repetition_ = 'repeat'; + break + case 'repeat-x': + case 'repeat-y': + case 'no-repeat': + this.repetition_ = repetition; + break; + default: + throwException('SYNTAX_ERR'); + } + + this.src_ = image.src; + this.width_ = image.width; + this.height_ = image.height; + } + + function throwException(s) { + throw new DOMException_(s); + } + + function assertImageIsValid(img) { + if (!img || img.nodeType != 1 || img.tagName != 'IMG') { + throwException('TYPE_MISMATCH_ERR'); + } + if (img.readyState != 'complete') { + throwException('INVALID_STATE_ERR'); + } + } + + function DOMException_(s) { + this.code = this[s]; + this.message = s +': DOM Exception ' + this.code; + } + var p = DOMException_.prototype = new Error; + p.INDEX_SIZE_ERR = 1; + p.DOMSTRING_SIZE_ERR = 2; + p.HIERARCHY_REQUEST_ERR = 3; + p.WRONG_DOCUMENT_ERR = 4; + p.INVALID_CHARACTER_ERR = 5; + p.NO_DATA_ALLOWED_ERR = 6; + p.NO_MODIFICATION_ALLOWED_ERR = 7; + p.NOT_FOUND_ERR = 8; + p.NOT_SUPPORTED_ERR = 9; + p.INUSE_ATTRIBUTE_ERR = 10; + p.INVALID_STATE_ERR = 11; + p.SYNTAX_ERR = 12; + p.INVALID_MODIFICATION_ERR = 13; + p.NAMESPACE_ERR = 14; + p.INVALID_ACCESS_ERR = 15; + p.VALIDATION_ERR = 16; + p.TYPE_MISMATCH_ERR = 17; + + // set up externs + G_vmlCanvasManager = G_vmlCanvasManager_; + CanvasRenderingContext2D = CanvasRenderingContext2D_; + CanvasGradient = CanvasGradient_; + CanvasPattern = CanvasPattern_; + DOMException = DOMException_; +})(); + +} // if diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/excanvas.min.js b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/excanvas.min.js new file mode 100644 index 0000000..fcf876c --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/excanvas.min.js @@ -0,0 +1 @@ +if(!document.createElement("canvas").getContext){(function(){var ab=Math;var n=ab.round;var l=ab.sin;var A=ab.cos;var H=ab.abs;var N=ab.sqrt;var d=10;var f=d/2;var z=+navigator.userAgent.match(/MSIE ([\d.]+)?/)[1];function y(){return this.context_||(this.context_=new D(this))}var t=Array.prototype.slice;function g(j,m,p){var i=t.call(arguments,2);return function(){return j.apply(m,i.concat(t.call(arguments)))}}function af(i){return String(i).replace(/&/g,"&").replace(/"/g,""")}function Y(m,j,i){if(!m.namespaces[j]){m.namespaces.add(j,i,"#default#VML")}}function R(j){Y(j,"g_vml_","urn:schemas-microsoft-com:vml");Y(j,"g_o_","urn:schemas-microsoft-com:office:office");if(!j.styleSheets.ex_canvas_){var i=j.createStyleSheet();i.owningElement.id="ex_canvas_";i.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}"}}R(document);var e={init:function(i){var j=i||document;j.createElement("canvas");j.attachEvent("onreadystatechange",g(this.init_,this,j))},init_:function(p){var m=p.getElementsByTagName("canvas");for(var j=0;j1){m--}if(6*m<1){return j+(i-j)*6*m}else{if(2*m<1){return i}else{if(3*m<2){return j+(i-j)*(2/3-m)*6}else{return j}}}}var C={};function F(j){if(j in C){return C[j]}var ag,Z=1;j=String(j);if(j.charAt(0)=="#"){ag=j}else{if(/^rgb/.test(j)){var p=M(j);var ag="#",ah;for(var m=0;m<3;m++){if(p[m].indexOf("%")!=-1){ah=Math.floor(c(p[m])*255)}else{ah=+p[m]}ag+=k[r(ah,0,255)]}Z=+p[3]}else{if(/^hsl/.test(j)){var p=M(j);ag=I(p);Z=p[3]}else{ag=b[j]||j}}}return C[j]={color:ag,alpha:Z}}var o={style:"normal",variant:"normal",weight:"normal",size:10,family:"sans-serif"};var L={};function E(i){if(L[i]){return L[i]}var p=document.createElement("div");var m=p.style;try{m.font=i}catch(j){}return L[i]={style:m.fontStyle||o.style,variant:m.fontVariant||o.variant,weight:m.fontWeight||o.weight,size:m.fontSize||o.size,family:m.fontFamily||o.family}}function u(m,j){var i={};for(var ah in m){i[ah]=m[ah]}var ag=parseFloat(j.currentStyle.fontSize),Z=parseFloat(m.size);if(typeof m.size=="number"){i.size=m.size}else{if(m.size.indexOf("px")!=-1){i.size=Z}else{if(m.size.indexOf("em")!=-1){i.size=ag*Z}else{if(m.size.indexOf("%")!=-1){i.size=(ag/100)*Z}else{if(m.size.indexOf("pt")!=-1){i.size=Z/0.75}else{i.size=ag}}}}}i.size*=0.981;return i}function ac(i){return i.style+" "+i.variant+" "+i.weight+" "+i.size+"px "+i.family}var s={butt:"flat",round:"round"};function S(i){return s[i]||"square"}function D(i){this.m_=B();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.strokeStyle="#000";this.fillStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=d*1;this.globalAlpha=1;this.font="10px sans-serif";this.textAlign="left";this.textBaseline="alphabetic";this.canvas=i;var m="width:"+i.clientWidth+"px;height:"+i.clientHeight+"px;overflow:hidden;position:absolute";var j=i.ownerDocument.createElement("div");j.style.cssText=m;i.appendChild(j);var p=j.cloneNode(false);p.style.backgroundColor="red";p.style.filter="alpha(opacity=0)";i.appendChild(p);this.element_=j;this.arcScaleX_=1;this.arcScaleY_=1;this.lineScale_=1}var q=D.prototype;q.clearRect=function(){if(this.textMeasureEl_){this.textMeasureEl_.removeNode(true);this.textMeasureEl_=null}this.element_.innerHTML=""};q.beginPath=function(){this.currentPath_=[]};q.moveTo=function(j,i){var m=V(this,j,i);this.currentPath_.push({type:"moveTo",x:m.x,y:m.y});this.currentX_=m.x;this.currentY_=m.y};q.lineTo=function(j,i){var m=V(this,j,i);this.currentPath_.push({type:"lineTo",x:m.x,y:m.y});this.currentX_=m.x;this.currentY_=m.y};q.bezierCurveTo=function(m,j,ak,aj,ai,ag){var i=V(this,ai,ag);var ah=V(this,m,j);var Z=V(this,ak,aj);K(this,ah,Z,i)};function K(i,Z,m,j){i.currentPath_.push({type:"bezierCurveTo",cp1x:Z.x,cp1y:Z.y,cp2x:m.x,cp2y:m.y,x:j.x,y:j.y});i.currentX_=j.x;i.currentY_=j.y}q.quadraticCurveTo=function(ai,m,j,i){var ah=V(this,ai,m);var ag=V(this,j,i);var aj={x:this.currentX_+2/3*(ah.x-this.currentX_),y:this.currentY_+2/3*(ah.y-this.currentY_)};var Z={x:aj.x+(ag.x-this.currentX_)/3,y:aj.y+(ag.y-this.currentY_)/3};K(this,aj,Z,ag)};q.arc=function(al,aj,ak,ag,j,m){ak*=d;var ap=m?"at":"wa";var am=al+A(ag)*ak-f;var ao=aj+l(ag)*ak-f;var i=al+A(j)*ak-f;var an=aj+l(j)*ak-f;if(am==i&&!m){am+=0.125}var Z=V(this,al,aj);var ai=V(this,am,ao);var ah=V(this,i,an);this.currentPath_.push({type:ap,x:Z.x,y:Z.y,radius:ak,xStart:ai.x,yStart:ai.y,xEnd:ah.x,yEnd:ah.y})};q.rect=function(m,j,i,p){this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath()};q.strokeRect=function(m,j,i,p){var Z=this.currentPath_;this.beginPath();this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath();this.stroke();this.currentPath_=Z};q.fillRect=function(m,j,i,p){var Z=this.currentPath_;this.beginPath();this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath();this.fill();this.currentPath_=Z};q.createLinearGradient=function(j,p,i,m){var Z=new U("gradient");Z.x0_=j;Z.y0_=p;Z.x1_=i;Z.y1_=m;return Z};q.createRadialGradient=function(p,ag,m,j,Z,i){var ah=new U("gradientradial");ah.x0_=p;ah.y0_=ag;ah.r0_=m;ah.x1_=j;ah.y1_=Z;ah.r1_=i;return ah};q.drawImage=function(aq,m){var aj,ah,al,ay,ao,am,at,aA;var ak=aq.runtimeStyle.width;var ap=aq.runtimeStyle.height;aq.runtimeStyle.width="auto";aq.runtimeStyle.height="auto";var ai=aq.width;var aw=aq.height;aq.runtimeStyle.width=ak;aq.runtimeStyle.height=ap;if(arguments.length==3){aj=arguments[1];ah=arguments[2];ao=am=0;at=al=ai;aA=ay=aw}else{if(arguments.length==5){aj=arguments[1];ah=arguments[2];al=arguments[3];ay=arguments[4];ao=am=0;at=ai;aA=aw}else{if(arguments.length==9){ao=arguments[1];am=arguments[2];at=arguments[3];aA=arguments[4];aj=arguments[5];ah=arguments[6];al=arguments[7];ay=arguments[8]}else{throw Error("Invalid number of arguments")}}}var az=V(this,aj,ah);var p=at/2;var j=aA/2;var ax=[];var i=10;var ag=10;ax.push(" ','","");this.element_.insertAdjacentHTML("BeforeEnd",ax.join(""))};q.stroke=function(ao){var Z=10;var ap=10;var ag=5000;var ai={x:null,y:null};var an={x:null,y:null};for(var aj=0;ajan.x){an.x=m.x}if(ai.y==null||m.yan.y){an.y=m.y}}}am.push(' ">');if(!ao){w(this,am)}else{G(this,am,ai,an)}am.push("");this.element_.insertAdjacentHTML("beforeEnd",am.join(""))}};function w(m,ag){var j=F(m.strokeStyle);var p=j.color;var Z=j.alpha*m.globalAlpha;var i=m.lineScale_*m.lineWidth;if(i<1){Z*=i}ag.push("')}function G(aq,ai,aK,ar){var aj=aq.fillStyle;var aB=aq.arcScaleX_;var aA=aq.arcScaleY_;var j=ar.x-aK.x;var p=ar.y-aK.y;if(aj instanceof U){var an=0;var aF={x:0,y:0};var ax=0;var am=1;if(aj.type_=="gradient"){var al=aj.x0_/aB;var m=aj.y0_/aA;var ak=aj.x1_/aB;var aM=aj.y1_/aA;var aJ=V(aq,al,m);var aI=V(aq,ak,aM);var ag=aI.x-aJ.x;var Z=aI.y-aJ.y;an=Math.atan2(ag,Z)*180/Math.PI;if(an<0){an+=360}if(an<0.000001){an=0}}else{var aJ=V(aq,aj.x0_,aj.y0_);aF={x:(aJ.x-aK.x)/j,y:(aJ.y-aK.y)/p};j/=aB*d;p/=aA*d;var aD=ab.max(j,p);ax=2*aj.r0_/aD;am=2*aj.r1_/aD-ax}var av=aj.colors_;av.sort(function(aN,i){return aN.offset-i.offset});var ap=av.length;var au=av[0].color;var at=av[ap-1].color;var az=av[0].alpha*aq.globalAlpha;var ay=av[ap-1].alpha*aq.globalAlpha;var aE=[];for(var aH=0;aH')}else{if(aj instanceof T){if(j&&p){var ah=-aK.x;var aC=-aK.y;ai.push("')}}else{var aL=F(aq.fillStyle);var aw=aL.color;var aG=aL.alpha*aq.globalAlpha;ai.push('')}}}q.fill=function(){this.stroke(true)};q.closePath=function(){this.currentPath_.push({type:"close"})};function V(j,Z,p){var i=j.m_;return{x:d*(Z*i[0][0]+p*i[1][0]+i[2][0])-f,y:d*(Z*i[0][1]+p*i[1][1]+i[2][1])-f}}q.save=function(){var i={};v(this,i);this.aStack_.push(i);this.mStack_.push(this.m_);this.m_=J(B(),this.m_)};q.restore=function(){if(this.aStack_.length){v(this.aStack_.pop(),this);this.m_=this.mStack_.pop()}};function h(i){return isFinite(i[0][0])&&isFinite(i[0][1])&&isFinite(i[1][0])&&isFinite(i[1][1])&&isFinite(i[2][0])&&isFinite(i[2][1])}function aa(j,i,p){if(!h(i)){return}j.m_=i;if(p){var Z=i[0][0]*i[1][1]-i[0][1]*i[1][0];j.lineScale_=N(H(Z))}}q.translate=function(m,j){var i=[[1,0,0],[0,1,0],[m,j,1]];aa(this,J(i,this.m_),false)};q.rotate=function(j){var p=A(j);var m=l(j);var i=[[p,m,0],[-m,p,0],[0,0,1]];aa(this,J(i,this.m_),false)};q.scale=function(m,j){this.arcScaleX_*=m;this.arcScaleY_*=j;var i=[[m,0,0],[0,j,0],[0,0,1]];aa(this,J(i,this.m_),true)};q.transform=function(Z,p,ah,ag,j,i){var m=[[Z,p,0],[ah,ag,0],[j,i,1]];aa(this,J(m,this.m_),true)};q.setTransform=function(ag,Z,ai,ah,p,j){var i=[[ag,Z,0],[ai,ah,0],[p,j,1]];aa(this,i,true)};q.drawText_=function(am,ak,aj,ap,ai){var ao=this.m_,at=1000,j=0,ar=at,ah={x:0,y:0},ag=[];var i=u(E(this.font),this.element_);var p=ac(i);var au=this.element_.currentStyle;var Z=this.textAlign.toLowerCase();switch(Z){case"left":case"center":case"right":break;case"end":Z=au.direction=="ltr"?"right":"left";break;case"start":Z=au.direction=="rtl"?"right":"left";break;default:Z="left"}switch(this.textBaseline){case"hanging":case"top":ah.y=i.size/1.75;break;case"middle":break;default:case null:case"alphabetic":case"ideographic":case"bottom":ah.y=-i.size/2.25;break}switch(Z){case"right":j=at;ar=0.05;break;case"center":j=ar=at/2;break}var aq=V(this,ak+ah.x,aj+ah.y);ag.push('');if(ai){w(this,ag)}else{G(this,ag,{x:-j,y:0},{x:ar,y:i.size})}var an=ao[0][0].toFixed(3)+","+ao[1][0].toFixed(3)+","+ao[0][1].toFixed(3)+","+ao[1][1].toFixed(3)+",0,0";var al=n(aq.x/d)+","+n(aq.y/d);ag.push('','','');this.element_.insertAdjacentHTML("beforeEnd",ag.join(""))};q.fillText=function(m,i,p,j){this.drawText_(m,i,p,j,false)};q.strokeText=function(m,i,p,j){this.drawText_(m,i,p,j,true)};q.measureText=function(m){if(!this.textMeasureEl_){var i='';this.element_.insertAdjacentHTML("beforeEnd",i);this.textMeasureEl_=this.element_.lastChild}var j=this.element_.ownerDocument;this.textMeasureEl_.innerHTML="";this.textMeasureEl_.style.font=this.font;this.textMeasureEl_.appendChild(j.createTextNode(m));return{width:this.textMeasureEl_.offsetWidth}};q.clip=function(){};q.arcTo=function(){};q.createPattern=function(j,i){return new T(j,i)};function U(i){this.type_=i;this.x0_=0;this.y0_=0;this.r0_=0;this.x1_=0;this.y1_=0;this.r1_=0;this.colors_=[]}U.prototype.addColorStop=function(j,i){i=F(i);this.colors_.push({offset:j,color:i.color,alpha:i.alpha})};function T(j,i){Q(j);switch(i){case"repeat":case null:case"":this.repetition_="repeat";break;case"repeat-x":case"repeat-y":case"no-repeat":this.repetition_=i;break;default:O("SYNTAX_ERR")}this.src_=j.src;this.width_=j.width;this.height_=j.height}function O(i){throw new P(i)}function Q(i){if(!i||i.nodeType!=1||i.tagName!="IMG"){O("TYPE_MISMATCH_ERR")}if(i.readyState!="complete"){O("INVALID_STATE_ERR")}}function P(i){this.code=this[i];this.message=i+": DOM Exception "+this.code}var X=P.prototype=new Error;X.INDEX_SIZE_ERR=1;X.DOMSTRING_SIZE_ERR=2;X.HIERARCHY_REQUEST_ERR=3;X.WRONG_DOCUMENT_ERR=4;X.INVALID_CHARACTER_ERR=5;X.NO_DATA_ALLOWED_ERR=6;X.NO_MODIFICATION_ALLOWED_ERR=7;X.NOT_FOUND_ERR=8;X.NOT_SUPPORTED_ERR=9;X.INUSE_ATTRIBUTE_ERR=10;X.INVALID_STATE_ERR=11;X.SYNTAX_ERR=12;X.INVALID_MODIFICATION_ERR=13;X.NAMESPACE_ERR=14;X.INVALID_ACCESS_ERR=15;X.VALIDATION_ERR=16;X.TYPE_MISMATCH_ERR=17;G_vmlCanvasManager=e;CanvasRenderingContext2D=D;CanvasGradient=U;CanvasPattern=T;DOMException=P})()}; \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/flot.jquery.json b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/flot.jquery.json new file mode 100644 index 0000000..934e44f --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/flot.jquery.json @@ -0,0 +1,27 @@ +{ + "name": "flot", + "version": "0.8.3", + "title": "Flot", + "author": { + "name": "Ole Laursen", + "url": "https://github.com/OleLaursen" + }, + "licenses": [{ + "type": "MIT", + "url": "http://github.com/flot/flot/blob/master/LICENSE.txt" + }], + "dependencies": { + "jquery": ">=1.2.6" + }, + "description": "Flot is a pure JavaScript plotting library for jQuery, with a focus on simple usage, attractive looks and interactive features.", + "keywords": ["plot", "chart", "graph", "visualization", "canvas", "graphics"], + "homepage": "http://www.flotcharts.org", + "docs": "http://github.com/flot/flot/blob/master/API.md", + "demo": "http://www.flotcharts.org/flot/examples/", + "bugs": "http://github.com/flot/flot/issues", + "maintainers": [{ + "name": "David Schnur", + "email": "dnschnur@gmail.com", + "url": "http://github.com/dnschnur" + }] +} diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.colorhelpers.js b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.colorhelpers.js new file mode 100644 index 0000000..409d295 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.colorhelpers.js @@ -0,0 +1,180 @@ +/* Plugin for jQuery for working with colors. + * + * Version 1.1. + * + * Inspiration from jQuery color animation plugin by John Resig. + * + * Released under the MIT license by Ole Laursen, October 2009. + * + * Examples: + * + * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() + * var c = $.color.extract($("#mydiv"), 'background-color'); + * console.log(c.r, c.g, c.b, c.a); + * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" + * + * Note that .scale() and .add() return the same modified object + * instead of making a new one. + * + * V. 1.1: Fix error handling so e.g. parsing an empty string does + * produce a color rather than just crashing. + */ + +(function($) { + $.color = {}; + + // construct color object with some convenient chainable helpers + $.color.make = function (r, g, b, a) { + var o = {}; + o.r = r || 0; + o.g = g || 0; + o.b = b || 0; + o.a = a != null ? a : 1; + + o.add = function (c, d) { + for (var i = 0; i < c.length; ++i) + o[c.charAt(i)] += d; + return o.normalize(); + }; + + o.scale = function (c, f) { + for (var i = 0; i < c.length; ++i) + o[c.charAt(i)] *= f; + return o.normalize(); + }; + + o.toString = function () { + if (o.a >= 1.0) { + return "rgb("+[o.r, o.g, o.b].join(",")+")"; + } else { + return "rgba("+[o.r, o.g, o.b, o.a].join(",")+")"; + } + }; + + o.normalize = function () { + function clamp(min, value, max) { + return value < min ? min: (value > max ? max: value); + } + + o.r = clamp(0, parseInt(o.r), 255); + o.g = clamp(0, parseInt(o.g), 255); + o.b = clamp(0, parseInt(o.b), 255); + o.a = clamp(0, o.a, 1); + return o; + }; + + o.clone = function () { + return $.color.make(o.r, o.b, o.g, o.a); + }; + + return o.normalize(); + } + + // extract CSS color property from element, going up in the DOM + // if it's "transparent" + $.color.extract = function (elem, css) { + var c; + + do { + c = elem.css(css).toLowerCase(); + // keep going until we find an element that has color, or + // we hit the body or root (have no parent) + if (c != '' && c != 'transparent') + break; + elem = elem.parent(); + } while (elem.length && !$.nodeName(elem.get(0), "body")); + + // catch Safari's way of signalling transparent + if (c == "rgba(0, 0, 0, 0)") + c = "transparent"; + + return $.color.parse(c); + } + + // parse CSS color string (like "rgb(10, 32, 43)" or "#fff"), + // returns color object, if parsing failed, you get black (0, 0, + // 0) out + $.color.parse = function (str) { + var res, m = $.color.make; + + // Look for rgb(num,num,num) + if (res = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str)) + return m(parseInt(res[1], 10), parseInt(res[2], 10), parseInt(res[3], 10)); + + // Look for rgba(num,num,num,num) + if (res = /rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str)) + return m(parseInt(res[1], 10), parseInt(res[2], 10), parseInt(res[3], 10), parseFloat(res[4])); + + // Look for rgb(num%,num%,num%) + if (res = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str)) + return m(parseFloat(res[1])*2.55, parseFloat(res[2])*2.55, parseFloat(res[3])*2.55); + + // Look for rgba(num%,num%,num%,num) + if (res = /rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str)) + return m(parseFloat(res[1])*2.55, parseFloat(res[2])*2.55, parseFloat(res[3])*2.55, parseFloat(res[4])); + + // Look for #a0b1c2 + if (res = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str)) + return m(parseInt(res[1], 16), parseInt(res[2], 16), parseInt(res[3], 16)); + + // Look for #fff + if (res = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str)) + return m(parseInt(res[1]+res[1], 16), parseInt(res[2]+res[2], 16), parseInt(res[3]+res[3], 16)); + + // Otherwise, we're most likely dealing with a named color + var name = $.trim(str).toLowerCase(); + if (name == "transparent") + return m(255, 255, 255, 0); + else { + // default to black + res = lookupColors[name] || [0, 0, 0]; + return m(res[0], res[1], res[2]); + } + } + + var lookupColors = { + aqua:[0,255,255], + azure:[240,255,255], + beige:[245,245,220], + black:[0,0,0], + blue:[0,0,255], + brown:[165,42,42], + cyan:[0,255,255], + darkblue:[0,0,139], + darkcyan:[0,139,139], + darkgrey:[169,169,169], + darkgreen:[0,100,0], + darkkhaki:[189,183,107], + darkmagenta:[139,0,139], + darkolivegreen:[85,107,47], + darkorange:[255,140,0], + darkorchid:[153,50,204], + darkred:[139,0,0], + darksalmon:[233,150,122], + darkviolet:[148,0,211], + fuchsia:[255,0,255], + gold:[255,215,0], + green:[0,128,0], + indigo:[75,0,130], + khaki:[240,230,140], + lightblue:[173,216,230], + lightcyan:[224,255,255], + lightgreen:[144,238,144], + lightgrey:[211,211,211], + lightpink:[255,182,193], + lightyellow:[255,255,224], + lime:[0,255,0], + magenta:[255,0,255], + maroon:[128,0,0], + navy:[0,0,128], + olive:[128,128,0], + orange:[255,165,0], + pink:[255,192,203], + purple:[128,0,128], + violet:[128,0,128], + red:[255,0,0], + silver:[192,192,192], + white:[255,255,255], + yellow:[255,255,0] + }; +})(jQuery); diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.canvas.js b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.canvas.js new file mode 100644 index 0000000..bcbc00f --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.canvas.js @@ -0,0 +1,345 @@ +/* Flot plugin for drawing all elements of a plot on the canvas. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +Flot normally produces certain elements, like axis labels and the legend, using +HTML elements. This permits greater interactivity and customization, and often +looks better, due to cross-browser canvas text inconsistencies and limitations. + +It can also be desirable to render the plot entirely in canvas, particularly +if the goal is to save it as an image, or if Flot is being used in a context +where the HTML DOM does not exist, as is the case within Node.js. This plugin +switches out Flot's standard drawing operations for canvas-only replacements. + +Currently the plugin supports only axis labels, but it will eventually allow +every element of the plot to be rendered directly to canvas. + +The plugin supports these options: + +{ + canvas: boolean +} + +The "canvas" option controls whether full canvas drawing is enabled, making it +possible to toggle on and off. This is useful when a plot uses HTML text in the +browser, but needs to redraw with canvas text when exporting as an image. + +*/ + +(function($) { + + var options = { + canvas: true + }; + + var render, getTextInfo, addText; + + // Cache the prototype hasOwnProperty for faster access + + var hasOwnProperty = Object.prototype.hasOwnProperty; + + function init(plot, classes) { + + var Canvas = classes.Canvas; + + // We only want to replace the functions once; the second time around + // we would just get our new function back. This whole replacing of + // prototype functions is a disaster, and needs to be changed ASAP. + + if (render == null) { + getTextInfo = Canvas.prototype.getTextInfo, + addText = Canvas.prototype.addText, + render = Canvas.prototype.render; + } + + // Finishes rendering the canvas, including overlaid text + + Canvas.prototype.render = function() { + + if (!plot.getOptions().canvas) { + return render.call(this); + } + + var context = this.context, + cache = this._textCache; + + // For each text layer, render elements marked as active + + context.save(); + context.textBaseline = "middle"; + + for (var layerKey in cache) { + if (hasOwnProperty.call(cache, layerKey)) { + var layerCache = cache[layerKey]; + for (var styleKey in layerCache) { + if (hasOwnProperty.call(layerCache, styleKey)) { + var styleCache = layerCache[styleKey], + updateStyles = true; + for (var key in styleCache) { + if (hasOwnProperty.call(styleCache, key)) { + + var info = styleCache[key], + positions = info.positions, + lines = info.lines; + + // Since every element at this level of the cache have the + // same font and fill styles, we can just change them once + // using the values from the first element. + + if (updateStyles) { + context.fillStyle = info.font.color; + context.font = info.font.definition; + updateStyles = false; + } + + for (var i = 0, position; position = positions[i]; i++) { + if (position.active) { + for (var j = 0, line; line = position.lines[j]; j++) { + context.fillText(lines[j].text, line[0], line[1]); + } + } else { + positions.splice(i--, 1); + } + } + + if (positions.length == 0) { + delete styleCache[key]; + } + } + } + } + } + } + } + + context.restore(); + }; + + // Creates (if necessary) and returns a text info object. + // + // When the canvas option is set, the object looks like this: + // + // { + // width: Width of the text's bounding box. + // height: Height of the text's bounding box. + // positions: Array of positions at which this text is drawn. + // lines: [{ + // height: Height of this line. + // widths: Width of this line. + // text: Text on this line. + // }], + // font: { + // definition: Canvas font property string. + // color: Color of the text. + // }, + // } + // + // The positions array contains objects that look like this: + // + // { + // active: Flag indicating whether the text should be visible. + // lines: Array of [x, y] coordinates at which to draw the line. + // x: X coordinate at which to draw the text. + // y: Y coordinate at which to draw the text. + // } + + Canvas.prototype.getTextInfo = function(layer, text, font, angle, width) { + + if (!plot.getOptions().canvas) { + return getTextInfo.call(this, layer, text, font, angle, width); + } + + var textStyle, layerCache, styleCache, info; + + // Cast the value to a string, in case we were given a number + + text = "" + text; + + // If the font is a font-spec object, generate a CSS definition + + if (typeof font === "object") { + textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px " + font.family; + } else { + textStyle = font; + } + + // Retrieve (or create) the cache for the text's layer and styles + + layerCache = this._textCache[layer]; + + if (layerCache == null) { + layerCache = this._textCache[layer] = {}; + } + + styleCache = layerCache[textStyle]; + + if (styleCache == null) { + styleCache = layerCache[textStyle] = {}; + } + + info = styleCache[text]; + + if (info == null) { + + var context = this.context; + + // If the font was provided as CSS, create a div with those + // classes and examine it to generate a canvas font spec. + + if (typeof font !== "object") { + + var element = $("
 
") + .css("position", "absolute") + .addClass(typeof font === "string" ? font : null) + .appendTo(this.getTextLayer(layer)); + + font = { + lineHeight: element.height(), + style: element.css("font-style"), + variant: element.css("font-variant"), + weight: element.css("font-weight"), + family: element.css("font-family"), + color: element.css("color") + }; + + // Setting line-height to 1, without units, sets it equal + // to the font-size, even if the font-size is abstract, + // like 'smaller'. This enables us to read the real size + // via the element's height, working around browsers that + // return the literal 'smaller' value. + + font.size = element.css("line-height", 1).height(); + + element.remove(); + } + + textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px " + font.family; + + // Create a new info object, initializing the dimensions to + // zero so we can count them up line-by-line. + + info = styleCache[text] = { + width: 0, + height: 0, + positions: [], + lines: [], + font: { + definition: textStyle, + color: font.color + } + }; + + context.save(); + context.font = textStyle; + + // Canvas can't handle multi-line strings; break on various + // newlines, including HTML brs, to build a list of lines. + // Note that we could split directly on regexps, but IE < 9 is + // broken; revisit when we drop IE 7/8 support. + + var lines = (text + "").replace(/
|\r\n|\r/g, "\n").split("\n"); + + for (var i = 0; i < lines.length; ++i) { + + var lineText = lines[i], + measured = context.measureText(lineText); + + info.width = Math.max(measured.width, info.width); + info.height += font.lineHeight; + + info.lines.push({ + text: lineText, + width: measured.width, + height: font.lineHeight + }); + } + + context.restore(); + } + + return info; + }; + + // Adds a text string to the canvas text overlay. + + Canvas.prototype.addText = function(layer, x, y, text, font, angle, width, halign, valign) { + + if (!plot.getOptions().canvas) { + return addText.call(this, layer, x, y, text, font, angle, width, halign, valign); + } + + var info = this.getTextInfo(layer, text, font, angle, width), + positions = info.positions, + lines = info.lines; + + // Text is drawn with baseline 'middle', which we need to account + // for by adding half a line's height to the y position. + + y += info.height / lines.length / 2; + + // Tweak the initial y-position to match vertical alignment + + if (valign == "middle") { + y = Math.round(y - info.height / 2); + } else if (valign == "bottom") { + y = Math.round(y - info.height); + } else { + y = Math.round(y); + } + + // FIXME: LEGACY BROWSER FIX + // AFFECTS: Opera < 12.00 + + // Offset the y coordinate, since Opera is off pretty + // consistently compared to the other browsers. + + if (!!(window.opera && window.opera.version().split(".")[0] < 12)) { + y -= 2; + } + + // Determine whether this text already exists at this position. + // If so, mark it for inclusion in the next render pass. + + for (var i = 0, position; position = positions[i]; i++) { + if (position.x == x && position.y == y) { + position.active = true; + return; + } + } + + // If the text doesn't exist at this position, create a new entry + + position = { + active: true, + lines: [], + x: x, + y: y + }; + + positions.push(position); + + // Fill in the x & y positions of each line, adjusting them + // individually for horizontal alignment. + + for (var i = 0, line; line = lines[i]; i++) { + if (halign == "center") { + position.lines.push([Math.round(x - line.width / 2), y]); + } else if (halign == "right") { + position.lines.push([Math.round(x - line.width), y]); + } else { + position.lines.push([Math.round(x), y]); + } + y += line.height; + } + }; + } + + $.plot.plugins.push({ + init: init, + options: options, + name: "canvas", + version: "1.0" + }); + +})(jQuery); diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.categories.js b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.categories.js new file mode 100644 index 0000000..11263cb --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.categories.js @@ -0,0 +1,190 @@ +/* Flot plugin for plotting textual data or categories. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +Consider a dataset like [["February", 34], ["March", 20], ...]. This plugin +allows you to plot such a dataset directly. + +To enable it, you must specify mode: "categories" on the axis with the textual +labels, e.g. + + $.plot("#placeholder", data, { xaxis: { mode: "categories" } }); + +By default, the labels are ordered as they are met in the data series. If you +need a different ordering, you can specify "categories" on the axis options +and list the categories there: + + xaxis: { + mode: "categories", + categories: ["February", "March", "April"] + } + +If you need to customize the distances between the categories, you can specify +"categories" as an object mapping labels to values + + xaxis: { + mode: "categories", + categories: { "February": 1, "March": 3, "April": 4 } + } + +If you don't specify all categories, the remaining categories will be numbered +from the max value plus 1 (with a spacing of 1 between each). + +Internally, the plugin works by transforming the input data through an auto- +generated mapping where the first category becomes 0, the second 1, etc. +Hence, a point like ["February", 34] becomes [0, 34] internally in Flot (this +is visible in hover and click events that return numbers rather than the +category labels). The plugin also overrides the tick generator to spit out the +categories as ticks instead of the values. + +If you need to map a value back to its label, the mapping is always accessible +as "categories" on the axis object, e.g. plot.getAxes().xaxis.categories. + +*/ + +(function ($) { + var options = { + xaxis: { + categories: null + }, + yaxis: { + categories: null + } + }; + + function processRawData(plot, series, data, datapoints) { + // if categories are enabled, we need to disable + // auto-transformation to numbers so the strings are intact + // for later processing + + var xCategories = series.xaxis.options.mode == "categories", + yCategories = series.yaxis.options.mode == "categories"; + + if (!(xCategories || yCategories)) + return; + + var format = datapoints.format; + + if (!format) { + // FIXME: auto-detection should really not be defined here + var s = series; + format = []; + format.push({ x: true, number: true, required: true }); + format.push({ y: true, number: true, required: true }); + + if (s.bars.show || (s.lines.show && s.lines.fill)) { + var autoscale = !!((s.bars.show && s.bars.zero) || (s.lines.show && s.lines.zero)); + format.push({ y: true, number: true, required: false, defaultValue: 0, autoscale: autoscale }); + if (s.bars.horizontal) { + delete format[format.length - 1].y; + format[format.length - 1].x = true; + } + } + + datapoints.format = format; + } + + for (var m = 0; m < format.length; ++m) { + if (format[m].x && xCategories) + format[m].number = false; + + if (format[m].y && yCategories) + format[m].number = false; + } + } + + function getNextIndex(categories) { + var index = -1; + + for (var v in categories) + if (categories[v] > index) + index = categories[v]; + + return index + 1; + } + + function categoriesTickGenerator(axis) { + var res = []; + for (var label in axis.categories) { + var v = axis.categories[label]; + if (v >= axis.min && v <= axis.max) + res.push([v, label]); + } + + res.sort(function (a, b) { return a[0] - b[0]; }); + + return res; + } + + function setupCategoriesForAxis(series, axis, datapoints) { + if (series[axis].options.mode != "categories") + return; + + if (!series[axis].categories) { + // parse options + var c = {}, o = series[axis].options.categories || {}; + if ($.isArray(o)) { + for (var i = 0; i < o.length; ++i) + c[o[i]] = i; + } + else { + for (var v in o) + c[v] = o[v]; + } + + series[axis].categories = c; + } + + // fix ticks + if (!series[axis].options.ticks) + series[axis].options.ticks = categoriesTickGenerator; + + transformPointsOnAxis(datapoints, axis, series[axis].categories); + } + + function transformPointsOnAxis(datapoints, axis, categories) { + // go through the points, transforming them + var points = datapoints.points, + ps = datapoints.pointsize, + format = datapoints.format, + formatColumn = axis.charAt(0), + index = getNextIndex(categories); + + for (var i = 0; i < points.length; i += ps) { + if (points[i] == null) + continue; + + for (var m = 0; m < ps; ++m) { + var val = points[i + m]; + + if (val == null || !format[m][formatColumn]) + continue; + + if (!(val in categories)) { + categories[val] = index; + ++index; + } + + points[i + m] = categories[val]; + } + } + } + + function processDatapoints(plot, series, datapoints) { + setupCategoriesForAxis(series, "xaxis", datapoints); + setupCategoriesForAxis(series, "yaxis", datapoints); + } + + function init(plot) { + plot.hooks.processRawData.push(processRawData); + plot.hooks.processDatapoints.push(processDatapoints); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'categories', + version: '1.0' + }); +})(jQuery); diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.crosshair.js b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.crosshair.js new file mode 100644 index 0000000..247210c --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.crosshair.js @@ -0,0 +1,176 @@ +/* Flot plugin for showing crosshairs when the mouse hovers over the plot. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +The plugin supports these options: + + crosshair: { + mode: null or "x" or "y" or "xy" + color: color + lineWidth: number + } + +Set the mode to one of "x", "y" or "xy". The "x" mode enables a vertical +crosshair that lets you trace the values on the x axis, "y" enables a +horizontal crosshair and "xy" enables them both. "color" is the color of the +crosshair (default is "rgba(170, 0, 0, 0.80)"), "lineWidth" is the width of +the drawn lines (default is 1). + +The plugin also adds four public methods: + + - setCrosshair( pos ) + + Set the position of the crosshair. Note that this is cleared if the user + moves the mouse. "pos" is in coordinates of the plot and should be on the + form { x: xpos, y: ypos } (you can use x2/x3/... if you're using multiple + axes), which is coincidentally the same format as what you get from a + "plothover" event. If "pos" is null, the crosshair is cleared. + + - clearCrosshair() + + Clear the crosshair. + + - lockCrosshair(pos) + + Cause the crosshair to lock to the current location, no longer updating if + the user moves the mouse. Optionally supply a position (passed on to + setCrosshair()) to move it to. + + Example usage: + + var myFlot = $.plot( $("#graph"), ..., { crosshair: { mode: "x" } } }; + $("#graph").bind( "plothover", function ( evt, position, item ) { + if ( item ) { + // Lock the crosshair to the data point being hovered + myFlot.lockCrosshair({ + x: item.datapoint[ 0 ], + y: item.datapoint[ 1 ] + }); + } else { + // Return normal crosshair operation + myFlot.unlockCrosshair(); + } + }); + + - unlockCrosshair() + + Free the crosshair to move again after locking it. +*/ + +(function ($) { + var options = { + crosshair: { + mode: null, // one of null, "x", "y" or "xy", + color: "rgba(170, 0, 0, 0.80)", + lineWidth: 1 + } + }; + + function init(plot) { + // position of crosshair in pixels + var crosshair = { x: -1, y: -1, locked: false }; + + plot.setCrosshair = function setCrosshair(pos) { + if (!pos) + crosshair.x = -1; + else { + var o = plot.p2c(pos); + crosshair.x = Math.max(0, Math.min(o.left, plot.width())); + crosshair.y = Math.max(0, Math.min(o.top, plot.height())); + } + + plot.triggerRedrawOverlay(); + }; + + plot.clearCrosshair = plot.setCrosshair; // passes null for pos + + plot.lockCrosshair = function lockCrosshair(pos) { + if (pos) + plot.setCrosshair(pos); + crosshair.locked = true; + }; + + plot.unlockCrosshair = function unlockCrosshair() { + crosshair.locked = false; + }; + + function onMouseOut(e) { + if (crosshair.locked) + return; + + if (crosshair.x != -1) { + crosshair.x = -1; + plot.triggerRedrawOverlay(); + } + } + + function onMouseMove(e) { + if (crosshair.locked) + return; + + if (plot.getSelection && plot.getSelection()) { + crosshair.x = -1; // hide the crosshair while selecting + return; + } + + var offset = plot.offset(); + crosshair.x = Math.max(0, Math.min(e.pageX - offset.left, plot.width())); + crosshair.y = Math.max(0, Math.min(e.pageY - offset.top, plot.height())); + plot.triggerRedrawOverlay(); + } + + plot.hooks.bindEvents.push(function (plot, eventHolder) { + if (!plot.getOptions().crosshair.mode) + return; + + eventHolder.mouseout(onMouseOut); + eventHolder.mousemove(onMouseMove); + }); + + plot.hooks.drawOverlay.push(function (plot, ctx) { + var c = plot.getOptions().crosshair; + if (!c.mode) + return; + + var plotOffset = plot.getPlotOffset(); + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + if (crosshair.x != -1) { + var adj = plot.getOptions().crosshair.lineWidth % 2 ? 0.5 : 0; + + ctx.strokeStyle = c.color; + ctx.lineWidth = c.lineWidth; + ctx.lineJoin = "round"; + + ctx.beginPath(); + if (c.mode.indexOf("x") != -1) { + var drawX = Math.floor(crosshair.x) + adj; + ctx.moveTo(drawX, 0); + ctx.lineTo(drawX, plot.height()); + } + if (c.mode.indexOf("y") != -1) { + var drawY = Math.floor(crosshair.y) + adj; + ctx.moveTo(0, drawY); + ctx.lineTo(plot.width(), drawY); + } + ctx.stroke(); + } + ctx.restore(); + }); + + plot.hooks.shutdown.push(function (plot, eventHolder) { + eventHolder.unbind("mouseout", onMouseOut); + eventHolder.unbind("mousemove", onMouseMove); + }); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'crosshair', + version: '1.0' + }); +})(jQuery); diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.errorbars.js b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.errorbars.js new file mode 100644 index 0000000..b0f7c9a --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.errorbars.js @@ -0,0 +1,353 @@ +/* Flot plugin for plotting error bars. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +Error bars are used to show standard deviation and other statistical +properties in a plot. + +* Created by Rui Pereira - rui (dot) pereira (at) gmail (dot) com + +This plugin allows you to plot error-bars over points. Set "errorbars" inside +the points series to the axis name over which there will be error values in +your data array (*even* if you do not intend to plot them later, by setting +"show: null" on xerr/yerr). + +The plugin supports these options: + + series: { + points: { + errorbars: "x" or "y" or "xy", + xerr: { + show: null/false or true, + asymmetric: null/false or true, + upperCap: null or "-" or function, + lowerCap: null or "-" or function, + color: null or color, + radius: null or number + }, + yerr: { same options as xerr } + } + } + +Each data point array is expected to be of the type: + + "x" [ x, y, xerr ] + "y" [ x, y, yerr ] + "xy" [ x, y, xerr, yerr ] + +Where xerr becomes xerr_lower,xerr_upper for the asymmetric error case, and +equivalently for yerr. Eg., a datapoint for the "xy" case with symmetric +error-bars on X and asymmetric on Y would be: + + [ x, y, xerr, yerr_lower, yerr_upper ] + +By default no end caps are drawn. Setting upperCap and/or lowerCap to "-" will +draw a small cap perpendicular to the error bar. They can also be set to a +user-defined drawing function, with (ctx, x, y, radius) as parameters, as eg. + + function drawSemiCircle( ctx, x, y, radius ) { + ctx.beginPath(); + ctx.arc( x, y, radius, 0, Math.PI, false ); + ctx.moveTo( x - radius, y ); + ctx.lineTo( x + radius, y ); + ctx.stroke(); + } + +Color and radius both default to the same ones of the points series if not +set. The independent radius parameter on xerr/yerr is useful for the case when +we may want to add error-bars to a line, without showing the interconnecting +points (with radius: 0), and still showing end caps on the error-bars. +shadowSize and lineWidth are derived as well from the points series. + +*/ + +(function ($) { + var options = { + series: { + points: { + errorbars: null, //should be 'x', 'y' or 'xy' + xerr: { err: 'x', show: null, asymmetric: null, upperCap: null, lowerCap: null, color: null, radius: null}, + yerr: { err: 'y', show: null, asymmetric: null, upperCap: null, lowerCap: null, color: null, radius: null} + } + } + }; + + function processRawData(plot, series, data, datapoints){ + if (!series.points.errorbars) + return; + + // x,y values + var format = [ + { x: true, number: true, required: true }, + { y: true, number: true, required: true } + ]; + + var errors = series.points.errorbars; + // error bars - first X then Y + if (errors == 'x' || errors == 'xy') { + // lower / upper error + if (series.points.xerr.asymmetric) { + format.push({ x: true, number: true, required: true }); + format.push({ x: true, number: true, required: true }); + } else + format.push({ x: true, number: true, required: true }); + } + if (errors == 'y' || errors == 'xy') { + // lower / upper error + if (series.points.yerr.asymmetric) { + format.push({ y: true, number: true, required: true }); + format.push({ y: true, number: true, required: true }); + } else + format.push({ y: true, number: true, required: true }); + } + datapoints.format = format; + } + + function parseErrors(series, i){ + + var points = series.datapoints.points; + + // read errors from points array + var exl = null, + exu = null, + eyl = null, + eyu = null; + var xerr = series.points.xerr, + yerr = series.points.yerr; + + var eb = series.points.errorbars; + // error bars - first X + if (eb == 'x' || eb == 'xy') { + if (xerr.asymmetric) { + exl = points[i + 2]; + exu = points[i + 3]; + if (eb == 'xy') + if (yerr.asymmetric){ + eyl = points[i + 4]; + eyu = points[i + 5]; + } else eyl = points[i + 4]; + } else { + exl = points[i + 2]; + if (eb == 'xy') + if (yerr.asymmetric) { + eyl = points[i + 3]; + eyu = points[i + 4]; + } else eyl = points[i + 3]; + } + // only Y + } else if (eb == 'y') + if (yerr.asymmetric) { + eyl = points[i + 2]; + eyu = points[i + 3]; + } else eyl = points[i + 2]; + + // symmetric errors? + if (exu == null) exu = exl; + if (eyu == null) eyu = eyl; + + var errRanges = [exl, exu, eyl, eyu]; + // nullify if not showing + if (!xerr.show){ + errRanges[0] = null; + errRanges[1] = null; + } + if (!yerr.show){ + errRanges[2] = null; + errRanges[3] = null; + } + return errRanges; + } + + function drawSeriesErrors(plot, ctx, s){ + + var points = s.datapoints.points, + ps = s.datapoints.pointsize, + ax = [s.xaxis, s.yaxis], + radius = s.points.radius, + err = [s.points.xerr, s.points.yerr]; + + //sanity check, in case some inverted axis hack is applied to flot + var invertX = false; + if (ax[0].p2c(ax[0].max) < ax[0].p2c(ax[0].min)) { + invertX = true; + var tmp = err[0].lowerCap; + err[0].lowerCap = err[0].upperCap; + err[0].upperCap = tmp; + } + + var invertY = false; + if (ax[1].p2c(ax[1].min) < ax[1].p2c(ax[1].max)) { + invertY = true; + var tmp = err[1].lowerCap; + err[1].lowerCap = err[1].upperCap; + err[1].upperCap = tmp; + } + + for (var i = 0; i < s.datapoints.points.length; i += ps) { + + //parse + var errRanges = parseErrors(s, i); + + //cycle xerr & yerr + for (var e = 0; e < err.length; e++){ + + var minmax = [ax[e].min, ax[e].max]; + + //draw this error? + if (errRanges[e * err.length]){ + + //data coordinates + var x = points[i], + y = points[i + 1]; + + //errorbar ranges + var upper = [x, y][e] + errRanges[e * err.length + 1], + lower = [x, y][e] - errRanges[e * err.length]; + + //points outside of the canvas + if (err[e].err == 'x') + if (y > ax[1].max || y < ax[1].min || upper < ax[0].min || lower > ax[0].max) + continue; + if (err[e].err == 'y') + if (x > ax[0].max || x < ax[0].min || upper < ax[1].min || lower > ax[1].max) + continue; + + // prevent errorbars getting out of the canvas + var drawUpper = true, + drawLower = true; + + if (upper > minmax[1]) { + drawUpper = false; + upper = minmax[1]; + } + if (lower < minmax[0]) { + drawLower = false; + lower = minmax[0]; + } + + //sanity check, in case some inverted axis hack is applied to flot + if ((err[e].err == 'x' && invertX) || (err[e].err == 'y' && invertY)) { + //swap coordinates + var tmp = lower; + lower = upper; + upper = tmp; + tmp = drawLower; + drawLower = drawUpper; + drawUpper = tmp; + tmp = minmax[0]; + minmax[0] = minmax[1]; + minmax[1] = tmp; + } + + // convert to pixels + x = ax[0].p2c(x), + y = ax[1].p2c(y), + upper = ax[e].p2c(upper); + lower = ax[e].p2c(lower); + minmax[0] = ax[e].p2c(minmax[0]); + minmax[1] = ax[e].p2c(minmax[1]); + + //same style as points by default + var lw = err[e].lineWidth ? err[e].lineWidth : s.points.lineWidth, + sw = s.points.shadowSize != null ? s.points.shadowSize : s.shadowSize; + + //shadow as for points + if (lw > 0 && sw > 0) { + var w = sw / 2; + ctx.lineWidth = w; + ctx.strokeStyle = "rgba(0,0,0,0.1)"; + drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, w + w/2, minmax); + + ctx.strokeStyle = "rgba(0,0,0,0.2)"; + drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, w/2, minmax); + } + + ctx.strokeStyle = err[e].color? err[e].color: s.color; + ctx.lineWidth = lw; + //draw it + drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, 0, minmax); + } + } + } + } + + function drawError(ctx,err,x,y,upper,lower,drawUpper,drawLower,radius,offset,minmax){ + + //shadow offset + y += offset; + upper += offset; + lower += offset; + + // error bar - avoid plotting over circles + if (err.err == 'x'){ + if (upper > x + radius) drawPath(ctx, [[upper,y],[Math.max(x + radius,minmax[0]),y]]); + else drawUpper = false; + if (lower < x - radius) drawPath(ctx, [[Math.min(x - radius,minmax[1]),y],[lower,y]] ); + else drawLower = false; + } + else { + if (upper < y - radius) drawPath(ctx, [[x,upper],[x,Math.min(y - radius,minmax[0])]] ); + else drawUpper = false; + if (lower > y + radius) drawPath(ctx, [[x,Math.max(y + radius,minmax[1])],[x,lower]] ); + else drawLower = false; + } + + //internal radius value in errorbar, allows to plot radius 0 points and still keep proper sized caps + //this is a way to get errorbars on lines without visible connecting dots + radius = err.radius != null? err.radius: radius; + + // upper cap + if (drawUpper) { + if (err.upperCap == '-'){ + if (err.err=='x') drawPath(ctx, [[upper,y - radius],[upper,y + radius]] ); + else drawPath(ctx, [[x - radius,upper],[x + radius,upper]] ); + } else if ($.isFunction(err.upperCap)){ + if (err.err=='x') err.upperCap(ctx, upper, y, radius); + else err.upperCap(ctx, x, upper, radius); + } + } + // lower cap + if (drawLower) { + if (err.lowerCap == '-'){ + if (err.err=='x') drawPath(ctx, [[lower,y - radius],[lower,y + radius]] ); + else drawPath(ctx, [[x - radius,lower],[x + radius,lower]] ); + } else if ($.isFunction(err.lowerCap)){ + if (err.err=='x') err.lowerCap(ctx, lower, y, radius); + else err.lowerCap(ctx, x, lower, radius); + } + } + } + + function drawPath(ctx, pts){ + ctx.beginPath(); + ctx.moveTo(pts[0][0], pts[0][1]); + for (var p=1; p < pts.length; p++) + ctx.lineTo(pts[p][0], pts[p][1]); + ctx.stroke(); + } + + function draw(plot, ctx){ + var plotOffset = plot.getPlotOffset(); + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + $.each(plot.getData(), function (i, s) { + if (s.points.errorbars && (s.points.xerr.show || s.points.yerr.show)) + drawSeriesErrors(plot, ctx, s); + }); + ctx.restore(); + } + + function init(plot) { + plot.hooks.processRawData.push(processRawData); + plot.hooks.draw.push(draw); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'errorbars', + version: '1.0' + }); +})(jQuery); diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.fillbetween.js b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.fillbetween.js new file mode 100644 index 0000000..c9b1fa8 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.fillbetween.js @@ -0,0 +1,226 @@ +/* Flot plugin for computing bottoms for filled line and bar charts. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +The case: you've got two series that you want to fill the area between. In Flot +terms, you need to use one as the fill bottom of the other. You can specify the +bottom of each data point as the third coordinate manually, or you can use this +plugin to compute it for you. + +In order to name the other series, you need to give it an id, like this: + + var dataset = [ + { data: [ ... ], id: "foo" } , // use default bottom + { data: [ ... ], fillBetween: "foo" }, // use first dataset as bottom + ]; + + $.plot($("#placeholder"), dataset, { lines: { show: true, fill: true }}); + +As a convenience, if the id given is a number that doesn't appear as an id in +the series, it is interpreted as the index in the array instead (so fillBetween: +0 can also mean the first series). + +Internally, the plugin modifies the datapoints in each series. For line series, +extra data points might be inserted through interpolation. Note that at points +where the bottom line is not defined (due to a null point or start/end of line), +the current line will show a gap too. The algorithm comes from the +jquery.flot.stack.js plugin, possibly some code could be shared. + +*/ + +(function ( $ ) { + + var options = { + series: { + fillBetween: null // or number + } + }; + + function init( plot ) { + + function findBottomSeries( s, allseries ) { + + var i; + + for ( i = 0; i < allseries.length; ++i ) { + if ( allseries[ i ].id === s.fillBetween ) { + return allseries[ i ]; + } + } + + if ( typeof s.fillBetween === "number" ) { + if ( s.fillBetween < 0 || s.fillBetween >= allseries.length ) { + return null; + } + return allseries[ s.fillBetween ]; + } + + return null; + } + + function computeFillBottoms( plot, s, datapoints ) { + + if ( s.fillBetween == null ) { + return; + } + + var other = findBottomSeries( s, plot.getData() ); + + if ( !other ) { + return; + } + + var ps = datapoints.pointsize, + points = datapoints.points, + otherps = other.datapoints.pointsize, + otherpoints = other.datapoints.points, + newpoints = [], + px, py, intery, qx, qy, bottom, + withlines = s.lines.show, + withbottom = ps > 2 && datapoints.format[2].y, + withsteps = withlines && s.lines.steps, + fromgap = true, + i = 0, + j = 0, + l, m; + + while ( true ) { + + if ( i >= points.length ) { + break; + } + + l = newpoints.length; + + if ( points[ i ] == null ) { + + // copy gaps + + for ( m = 0; m < ps; ++m ) { + newpoints.push( points[ i + m ] ); + } + + i += ps; + + } else if ( j >= otherpoints.length ) { + + // for lines, we can't use the rest of the points + + if ( !withlines ) { + for ( m = 0; m < ps; ++m ) { + newpoints.push( points[ i + m ] ); + } + } + + i += ps; + + } else if ( otherpoints[ j ] == null ) { + + // oops, got a gap + + for ( m = 0; m < ps; ++m ) { + newpoints.push( null ); + } + + fromgap = true; + j += otherps; + + } else { + + // cases where we actually got two points + + px = points[ i ]; + py = points[ i + 1 ]; + qx = otherpoints[ j ]; + qy = otherpoints[ j + 1 ]; + bottom = 0; + + if ( px === qx ) { + + for ( m = 0; m < ps; ++m ) { + newpoints.push( points[ i + m ] ); + } + + //newpoints[ l + 1 ] += qy; + bottom = qy; + + i += ps; + j += otherps; + + } else if ( px > qx ) { + + // we got past point below, might need to + // insert interpolated extra point + + if ( withlines && i > 0 && points[ i - ps ] != null ) { + intery = py + ( points[ i - ps + 1 ] - py ) * ( qx - px ) / ( points[ i - ps ] - px ); + newpoints.push( qx ); + newpoints.push( intery ); + for ( m = 2; m < ps; ++m ) { + newpoints.push( points[ i + m ] ); + } + bottom = qy; + } + + j += otherps; + + } else { // px < qx + + // if we come from a gap, we just skip this point + + if ( fromgap && withlines ) { + i += ps; + continue; + } + + for ( m = 0; m < ps; ++m ) { + newpoints.push( points[ i + m ] ); + } + + // we might be able to interpolate a point below, + // this can give us a better y + + if ( withlines && j > 0 && otherpoints[ j - otherps ] != null ) { + bottom = qy + ( otherpoints[ j - otherps + 1 ] - qy ) * ( px - qx ) / ( otherpoints[ j - otherps ] - qx ); + } + + //newpoints[l + 1] += bottom; + + i += ps; + } + + fromgap = false; + + if ( l !== newpoints.length && withbottom ) { + newpoints[ l + 2 ] = bottom; + } + } + + // maintain the line steps invariant + + if ( withsteps && l !== newpoints.length && l > 0 && + newpoints[ l ] !== null && + newpoints[ l ] !== newpoints[ l - ps ] && + newpoints[ l + 1 ] !== newpoints[ l - ps + 1 ] ) { + for (m = 0; m < ps; ++m) { + newpoints[ l + ps + m ] = newpoints[ l + m ]; + } + newpoints[ l + 1 ] = newpoints[ l - ps + 1 ]; + } + } + + datapoints.points = newpoints; + } + + plot.hooks.processDatapoints.push( computeFillBottoms ); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: "fillbetween", + version: "1.0" + }); + +})(jQuery); diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.image.js b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.image.js new file mode 100644 index 0000000..32099d4 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.image.js @@ -0,0 +1,241 @@ +/* Flot plugin for plotting images. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +The data syntax is [ [ image, x1, y1, x2, y2 ], ... ] where (x1, y1) and +(x2, y2) are where you intend the two opposite corners of the image to end up +in the plot. Image must be a fully loaded Javascript image (you can make one +with new Image()). If the image is not complete, it's skipped when plotting. + +There are two helpers included for retrieving images. The easiest work the way +that you put in URLs instead of images in the data, like this: + + [ "myimage.png", 0, 0, 10, 10 ] + +Then call $.plot.image.loadData( data, options, callback ) where data and +options are the same as you pass in to $.plot. This loads the images, replaces +the URLs in the data with the corresponding images and calls "callback" when +all images are loaded (or failed loading). In the callback, you can then call +$.plot with the data set. See the included example. + +A more low-level helper, $.plot.image.load(urls, callback) is also included. +Given a list of URLs, it calls callback with an object mapping from URL to +Image object when all images are loaded or have failed loading. + +The plugin supports these options: + + series: { + images: { + show: boolean + anchor: "corner" or "center" + alpha: [ 0, 1 ] + } + } + +They can be specified for a specific series: + + $.plot( $("#placeholder"), [{ + data: [ ... ], + images: { ... } + ]) + +Note that because the data format is different from usual data points, you +can't use images with anything else in a specific data series. + +Setting "anchor" to "center" causes the pixels in the image to be anchored at +the corner pixel centers inside of at the pixel corners, effectively letting +half a pixel stick out to each side in the plot. + +A possible future direction could be support for tiling for large images (like +Google Maps). + +*/ + +(function ($) { + var options = { + series: { + images: { + show: false, + alpha: 1, + anchor: "corner" // or "center" + } + } + }; + + $.plot.image = {}; + + $.plot.image.loadDataImages = function (series, options, callback) { + var urls = [], points = []; + + var defaultShow = options.series.images.show; + + $.each(series, function (i, s) { + if (!(defaultShow || s.images.show)) + return; + + if (s.data) + s = s.data; + + $.each(s, function (i, p) { + if (typeof p[0] == "string") { + urls.push(p[0]); + points.push(p); + } + }); + }); + + $.plot.image.load(urls, function (loadedImages) { + $.each(points, function (i, p) { + var url = p[0]; + if (loadedImages[url]) + p[0] = loadedImages[url]; + }); + + callback(); + }); + } + + $.plot.image.load = function (urls, callback) { + var missing = urls.length, loaded = {}; + if (missing == 0) + callback({}); + + $.each(urls, function (i, url) { + var handler = function () { + --missing; + + loaded[url] = this; + + if (missing == 0) + callback(loaded); + }; + + $('').load(handler).error(handler).attr('src', url); + }); + }; + + function drawSeries(plot, ctx, series) { + var plotOffset = plot.getPlotOffset(); + + if (!series.images || !series.images.show) + return; + + var points = series.datapoints.points, + ps = series.datapoints.pointsize; + + for (var i = 0; i < points.length; i += ps) { + var img = points[i], + x1 = points[i + 1], y1 = points[i + 2], + x2 = points[i + 3], y2 = points[i + 4], + xaxis = series.xaxis, yaxis = series.yaxis, + tmp; + + // actually we should check img.complete, but it + // appears to be a somewhat unreliable indicator in + // IE6 (false even after load event) + if (!img || img.width <= 0 || img.height <= 0) + continue; + + if (x1 > x2) { + tmp = x2; + x2 = x1; + x1 = tmp; + } + if (y1 > y2) { + tmp = y2; + y2 = y1; + y1 = tmp; + } + + // if the anchor is at the center of the pixel, expand the + // image by 1/2 pixel in each direction + if (series.images.anchor == "center") { + tmp = 0.5 * (x2-x1) / (img.width - 1); + x1 -= tmp; + x2 += tmp; + tmp = 0.5 * (y2-y1) / (img.height - 1); + y1 -= tmp; + y2 += tmp; + } + + // clip + if (x1 == x2 || y1 == y2 || + x1 >= xaxis.max || x2 <= xaxis.min || + y1 >= yaxis.max || y2 <= yaxis.min) + continue; + + var sx1 = 0, sy1 = 0, sx2 = img.width, sy2 = img.height; + if (x1 < xaxis.min) { + sx1 += (sx2 - sx1) * (xaxis.min - x1) / (x2 - x1); + x1 = xaxis.min; + } + + if (x2 > xaxis.max) { + sx2 += (sx2 - sx1) * (xaxis.max - x2) / (x2 - x1); + x2 = xaxis.max; + } + + if (y1 < yaxis.min) { + sy2 += (sy1 - sy2) * (yaxis.min - y1) / (y2 - y1); + y1 = yaxis.min; + } + + if (y2 > yaxis.max) { + sy1 += (sy1 - sy2) * (yaxis.max - y2) / (y2 - y1); + y2 = yaxis.max; + } + + x1 = xaxis.p2c(x1); + x2 = xaxis.p2c(x2); + y1 = yaxis.p2c(y1); + y2 = yaxis.p2c(y2); + + // the transformation may have swapped us + if (x1 > x2) { + tmp = x2; + x2 = x1; + x1 = tmp; + } + if (y1 > y2) { + tmp = y2; + y2 = y1; + y1 = tmp; + } + + tmp = ctx.globalAlpha; + ctx.globalAlpha *= series.images.alpha; + ctx.drawImage(img, + sx1, sy1, sx2 - sx1, sy2 - sy1, + x1 + plotOffset.left, y1 + plotOffset.top, + x2 - x1, y2 - y1); + ctx.globalAlpha = tmp; + } + } + + function processRawData(plot, series, data, datapoints) { + if (!series.images.show) + return; + + // format is Image, x1, y1, x2, y2 (opposite corners) + datapoints.format = [ + { required: true }, + { x: true, number: true, required: true }, + { y: true, number: true, required: true }, + { x: true, number: true, required: true }, + { y: true, number: true, required: true } + ]; + } + + function init(plot) { + plot.hooks.processRawData.push(processRawData); + plot.hooks.drawSeries.push(drawSeries); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'image', + version: '1.1' + }); +})(jQuery); diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.js b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.js new file mode 100644 index 0000000..dd20ad6 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.js @@ -0,0 +1,3168 @@ +/* Javascript plotting library for jQuery, version 0.8.3. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +*/ + +// first an inline dependency, jquery.colorhelpers.js, we inline it here +// for convenience + +/* Plugin for jQuery for working with colors. + * + * Version 1.1. + * + * Inspiration from jQuery color animation plugin by John Resig. + * + * Released under the MIT license by Ole Laursen, October 2009. + * + * Examples: + * + * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() + * var c = $.color.extract($("#mydiv"), 'background-color'); + * console.log(c.r, c.g, c.b, c.a); + * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" + * + * Note that .scale() and .add() return the same modified object + * instead of making a new one. + * + * V. 1.1: Fix error handling so e.g. parsing an empty string does + * produce a color rather than just crashing. + */ +(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return valuemax?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery); + +// the actual Flot code +(function($) { + + // Cache the prototype hasOwnProperty for faster access + + var hasOwnProperty = Object.prototype.hasOwnProperty; + + // A shim to provide 'detach' to jQuery versions prior to 1.4. Using a DOM + // operation produces the same effect as detach, i.e. removing the element + // without touching its jQuery data. + + // Do not merge this into Flot 0.9, since it requires jQuery 1.4.4+. + + if (!$.fn.detach) { + $.fn.detach = function() { + return this.each(function() { + if (this.parentNode) { + this.parentNode.removeChild( this ); + } + }); + }; + } + + /////////////////////////////////////////////////////////////////////////// + // The Canvas object is a wrapper around an HTML5 tag. + // + // @constructor + // @param {string} cls List of classes to apply to the canvas. + // @param {element} container Element onto which to append the canvas. + // + // Requiring a container is a little iffy, but unfortunately canvas + // operations don't work unless the canvas is attached to the DOM. + + function Canvas(cls, container) { + + var element = container.children("." + cls)[0]; + + if (element == null) { + + element = document.createElement("canvas"); + element.className = cls; + + $(element).css({ direction: "ltr", position: "absolute", left: 0, top: 0 }) + .appendTo(container); + + // If HTML5 Canvas isn't available, fall back to [Ex|Flash]canvas + + if (!element.getContext) { + if (window.G_vmlCanvasManager) { + element = window.G_vmlCanvasManager.initElement(element); + } else { + throw new Error("Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode."); + } + } + } + + this.element = element; + + var context = this.context = element.getContext("2d"); + + // Determine the screen's ratio of physical to device-independent + // pixels. This is the ratio between the canvas width that the browser + // advertises and the number of pixels actually present in that space. + + // The iPhone 4, for example, has a device-independent width of 320px, + // but its screen is actually 640px wide. It therefore has a pixel + // ratio of 2, while most normal devices have a ratio of 1. + + var devicePixelRatio = window.devicePixelRatio || 1, + backingStoreRatio = + context.webkitBackingStorePixelRatio || + context.mozBackingStorePixelRatio || + context.msBackingStorePixelRatio || + context.oBackingStorePixelRatio || + context.backingStorePixelRatio || 1; + + this.pixelRatio = devicePixelRatio / backingStoreRatio; + + // Size the canvas to match the internal dimensions of its container + + this.resize(container.width(), container.height()); + + // Collection of HTML div layers for text overlaid onto the canvas + + this.textContainer = null; + this.text = {}; + + // Cache of text fragments and metrics, so we can avoid expensively + // re-calculating them when the plot is re-rendered in a loop. + + this._textCache = {}; + } + + // Resizes the canvas to the given dimensions. + // + // @param {number} width New width of the canvas, in pixels. + // @param {number} width New height of the canvas, in pixels. + + Canvas.prototype.resize = function(width, height) { + + if (width <= 0 || height <= 0) { + throw new Error("Invalid dimensions for plot, width = " + width + ", height = " + height); + } + + var element = this.element, + context = this.context, + pixelRatio = this.pixelRatio; + + // Resize the canvas, increasing its density based on the display's + // pixel ratio; basically giving it more pixels without increasing the + // size of its element, to take advantage of the fact that retina + // displays have that many more pixels in the same advertised space. + + // Resizing should reset the state (excanvas seems to be buggy though) + + if (this.width != width) { + element.width = width * pixelRatio; + element.style.width = width + "px"; + this.width = width; + } + + if (this.height != height) { + element.height = height * pixelRatio; + element.style.height = height + "px"; + this.height = height; + } + + // Save the context, so we can reset in case we get replotted. The + // restore ensure that we're really back at the initial state, and + // should be safe even if we haven't saved the initial state yet. + + context.restore(); + context.save(); + + // Scale the coordinate space to match the display density; so even though we + // may have twice as many pixels, we still want lines and other drawing to + // appear at the same size; the extra pixels will just make them crisper. + + context.scale(pixelRatio, pixelRatio); + }; + + // Clears the entire canvas area, not including any overlaid HTML text + + Canvas.prototype.clear = function() { + this.context.clearRect(0, 0, this.width, this.height); + }; + + // Finishes rendering the canvas, including managing the text overlay. + + Canvas.prototype.render = function() { + + var cache = this._textCache; + + // For each text layer, add elements marked as active that haven't + // already been rendered, and remove those that are no longer active. + + for (var layerKey in cache) { + if (hasOwnProperty.call(cache, layerKey)) { + + var layer = this.getTextLayer(layerKey), + layerCache = cache[layerKey]; + + layer.hide(); + + for (var styleKey in layerCache) { + if (hasOwnProperty.call(layerCache, styleKey)) { + var styleCache = layerCache[styleKey]; + for (var key in styleCache) { + if (hasOwnProperty.call(styleCache, key)) { + + var positions = styleCache[key].positions; + + for (var i = 0, position; position = positions[i]; i++) { + if (position.active) { + if (!position.rendered) { + layer.append(position.element); + position.rendered = true; + } + } else { + positions.splice(i--, 1); + if (position.rendered) { + position.element.detach(); + } + } + } + + if (positions.length == 0) { + delete styleCache[key]; + } + } + } + } + } + + layer.show(); + } + } + }; + + // Creates (if necessary) and returns the text overlay container. + // + // @param {string} classes String of space-separated CSS classes used to + // uniquely identify the text layer. + // @return {object} The jQuery-wrapped text-layer div. + + Canvas.prototype.getTextLayer = function(classes) { + + var layer = this.text[classes]; + + // Create the text layer if it doesn't exist + + if (layer == null) { + + // Create the text layer container, if it doesn't exist + + if (this.textContainer == null) { + this.textContainer = $("
") + .css({ + position: "absolute", + top: 0, + left: 0, + bottom: 0, + right: 0, + 'font-size': "smaller", + color: "#545454" + }) + .insertAfter(this.element); + } + + layer = this.text[classes] = $("
") + .addClass(classes) + .css({ + position: "absolute", + top: 0, + left: 0, + bottom: 0, + right: 0 + }) + .appendTo(this.textContainer); + } + + return layer; + }; + + // Creates (if necessary) and returns a text info object. + // + // The object looks like this: + // + // { + // width: Width of the text's wrapper div. + // height: Height of the text's wrapper div. + // element: The jQuery-wrapped HTML div containing the text. + // positions: Array of positions at which this text is drawn. + // } + // + // The positions array contains objects that look like this: + // + // { + // active: Flag indicating whether the text should be visible. + // rendered: Flag indicating whether the text is currently visible. + // element: The jQuery-wrapped HTML div containing the text. + // x: X coordinate at which to draw the text. + // y: Y coordinate at which to draw the text. + // } + // + // Each position after the first receives a clone of the original element. + // + // The idea is that that the width, height, and general 'identity' of the + // text is constant no matter where it is placed; the placements are a + // secondary property. + // + // Canvas maintains a cache of recently-used text info objects; getTextInfo + // either returns the cached element or creates a new entry. + // + // @param {string} layer A string of space-separated CSS classes uniquely + // identifying the layer containing this text. + // @param {string} text Text string to retrieve info for. + // @param {(string|object)=} font Either a string of space-separated CSS + // classes or a font-spec object, defining the text's font and style. + // @param {number=} angle Angle at which to rotate the text, in degrees. + // Angle is currently unused, it will be implemented in the future. + // @param {number=} width Maximum width of the text before it wraps. + // @return {object} a text info object. + + Canvas.prototype.getTextInfo = function(layer, text, font, angle, width) { + + var textStyle, layerCache, styleCache, info; + + // Cast the value to a string, in case we were given a number or such + + text = "" + text; + + // If the font is a font-spec object, generate a CSS font definition + + if (typeof font === "object") { + textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px/" + font.lineHeight + "px " + font.family; + } else { + textStyle = font; + } + + // Retrieve (or create) the cache for the text's layer and styles + + layerCache = this._textCache[layer]; + + if (layerCache == null) { + layerCache = this._textCache[layer] = {}; + } + + styleCache = layerCache[textStyle]; + + if (styleCache == null) { + styleCache = layerCache[textStyle] = {}; + } + + info = styleCache[text]; + + // If we can't find a matching element in our cache, create a new one + + if (info == null) { + + var element = $("
").html(text) + .css({ + position: "absolute", + 'max-width': width, + top: -9999 + }) + .appendTo(this.getTextLayer(layer)); + + if (typeof font === "object") { + element.css({ + font: textStyle, + color: font.color + }); + } else if (typeof font === "string") { + element.addClass(font); + } + + info = styleCache[text] = { + width: element.outerWidth(true), + height: element.outerHeight(true), + element: element, + positions: [] + }; + + element.detach(); + } + + return info; + }; + + // Adds a text string to the canvas text overlay. + // + // The text isn't drawn immediately; it is marked as rendering, which will + // result in its addition to the canvas on the next render pass. + // + // @param {string} layer A string of space-separated CSS classes uniquely + // identifying the layer containing this text. + // @param {number} x X coordinate at which to draw the text. + // @param {number} y Y coordinate at which to draw the text. + // @param {string} text Text string to draw. + // @param {(string|object)=} font Either a string of space-separated CSS + // classes or a font-spec object, defining the text's font and style. + // @param {number=} angle Angle at which to rotate the text, in degrees. + // Angle is currently unused, it will be implemented in the future. + // @param {number=} width Maximum width of the text before it wraps. + // @param {string=} halign Horizontal alignment of the text; either "left", + // "center" or "right". + // @param {string=} valign Vertical alignment of the text; either "top", + // "middle" or "bottom". + + Canvas.prototype.addText = function(layer, x, y, text, font, angle, width, halign, valign) { + + var info = this.getTextInfo(layer, text, font, angle, width), + positions = info.positions; + + // Tweak the div's position to match the text's alignment + + if (halign == "center") { + x -= info.width / 2; + } else if (halign == "right") { + x -= info.width; + } + + if (valign == "middle") { + y -= info.height / 2; + } else if (valign == "bottom") { + y -= info.height; + } + + // Determine whether this text already exists at this position. + // If so, mark it for inclusion in the next render pass. + + for (var i = 0, position; position = positions[i]; i++) { + if (position.x == x && position.y == y) { + position.active = true; + return; + } + } + + // If the text doesn't exist at this position, create a new entry + + // For the very first position we'll re-use the original element, + // while for subsequent ones we'll clone it. + + position = { + active: true, + rendered: false, + element: positions.length ? info.element.clone() : info.element, + x: x, + y: y + }; + + positions.push(position); + + // Move the element to its final position within the container + + position.element.css({ + top: Math.round(y), + left: Math.round(x), + 'text-align': halign // In case the text wraps + }); + }; + + // Removes one or more text strings from the canvas text overlay. + // + // If no parameters are given, all text within the layer is removed. + // + // Note that the text is not immediately removed; it is simply marked as + // inactive, which will result in its removal on the next render pass. + // This avoids the performance penalty for 'clear and redraw' behavior, + // where we potentially get rid of all text on a layer, but will likely + // add back most or all of it later, as when redrawing axes, for example. + // + // @param {string} layer A string of space-separated CSS classes uniquely + // identifying the layer containing this text. + // @param {number=} x X coordinate of the text. + // @param {number=} y Y coordinate of the text. + // @param {string=} text Text string to remove. + // @param {(string|object)=} font Either a string of space-separated CSS + // classes or a font-spec object, defining the text's font and style. + // @param {number=} angle Angle at which the text is rotated, in degrees. + // Angle is currently unused, it will be implemented in the future. + + Canvas.prototype.removeText = function(layer, x, y, text, font, angle) { + if (text == null) { + var layerCache = this._textCache[layer]; + if (layerCache != null) { + for (var styleKey in layerCache) { + if (hasOwnProperty.call(layerCache, styleKey)) { + var styleCache = layerCache[styleKey]; + for (var key in styleCache) { + if (hasOwnProperty.call(styleCache, key)) { + var positions = styleCache[key].positions; + for (var i = 0, position; position = positions[i]; i++) { + position.active = false; + } + } + } + } + } + } + } else { + var positions = this.getTextInfo(layer, text, font, angle).positions; + for (var i = 0, position; position = positions[i]; i++) { + if (position.x == x && position.y == y) { + position.active = false; + } + } + } + }; + + /////////////////////////////////////////////////////////////////////////// + // The top-level container for the entire plot. + + function Plot(placeholder, data_, options_, plugins) { + // data is on the form: + // [ series1, series2 ... ] + // where series is either just the data as [ [x1, y1], [x2, y2], ... ] + // or { data: [ [x1, y1], [x2, y2], ... ], label: "some label", ... } + + var series = [], + options = { + // the color theme used for graphs + colors: ["#edc240", "#afd8f8", "#cb4b4b", "#4da74d", "#9440ed"], + legend: { + show: true, + noColumns: 1, // number of colums in legend table + labelFormatter: null, // fn: string -> string + labelBoxBorderColor: "#ccc", // border color for the little label boxes + container: null, // container (as jQuery object) to put legend in, null means default on top of graph + position: "ne", // position of default legend container within plot + margin: 5, // distance from grid edge to default legend container within plot + backgroundColor: null, // null means auto-detect + backgroundOpacity: 0.85, // set to 0 to avoid background + sorted: null // default to no legend sorting + }, + xaxis: { + show: null, // null = auto-detect, true = always, false = never + position: "bottom", // or "top" + mode: null, // null or "time" + font: null, // null (derived from CSS in placeholder) or object like { size: 11, lineHeight: 13, style: "italic", weight: "bold", family: "sans-serif", variant: "small-caps" } + color: null, // base color, labels, ticks + tickColor: null, // possibly different color of ticks, e.g. "rgba(0,0,0,0.15)" + transform: null, // null or f: number -> number to transform axis + inverseTransform: null, // if transform is set, this should be the inverse function + min: null, // min. value to show, null means set automatically + max: null, // max. value to show, null means set automatically + autoscaleMargin: null, // margin in % to add if auto-setting min/max + ticks: null, // either [1, 3] or [[1, "a"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks + tickFormatter: null, // fn: number -> string + labelWidth: null, // size of tick labels in pixels + labelHeight: null, + reserveSpace: null, // whether to reserve space even if axis isn't shown + tickLength: null, // size in pixels of ticks, or "full" for whole line + alignTicksWithAxis: null, // axis number or null for no sync + tickDecimals: null, // no. of decimals, null means auto + tickSize: null, // number or [number, "unit"] + minTickSize: null // number or [number, "unit"] + }, + yaxis: { + autoscaleMargin: 0.02, + position: "left" // or "right" + }, + xaxes: [], + yaxes: [], + series: { + points: { + show: false, + radius: 3, + lineWidth: 2, // in pixels + fill: true, + fillColor: "#ffffff", + symbol: "circle" // or callback + }, + lines: { + // we don't put in show: false so we can see + // whether lines were actively disabled + lineWidth: 2, // in pixels + fill: false, + fillColor: null, + steps: false + // Omit 'zero', so we can later default its value to + // match that of the 'fill' option. + }, + bars: { + show: false, + lineWidth: 2, // in pixels + barWidth: 1, // in units of the x axis + fill: true, + fillColor: null, + align: "left", // "left", "right", or "center" + horizontal: false, + zero: true + }, + shadowSize: 3, + highlightColor: null + }, + grid: { + show: true, + aboveData: false, + color: "#545454", // primary color used for outline and labels + backgroundColor: null, // null for transparent, else color + borderColor: null, // set if different from the grid color + tickColor: null, // color for the ticks, e.g. "rgba(0,0,0,0.15)" + margin: 0, // distance from the canvas edge to the grid + labelMargin: 5, // in pixels + axisMargin: 8, // in pixels + borderWidth: 2, // in pixels + minBorderMargin: null, // in pixels, null means taken from points radius + markings: null, // array of ranges or fn: axes -> array of ranges + markingsColor: "#f4f4f4", + markingsLineWidth: 2, + // interactive stuff + clickable: false, + hoverable: false, + autoHighlight: true, // highlight in case mouse is near + mouseActiveRadius: 10 // how far the mouse can be away to activate an item + }, + interaction: { + redrawOverlayInterval: 1000/60 // time between updates, -1 means in same flow + }, + hooks: {} + }, + surface = null, // the canvas for the plot itself + overlay = null, // canvas for interactive stuff on top of plot + eventHolder = null, // jQuery object that events should be bound to + ctx = null, octx = null, + xaxes = [], yaxes = [], + plotOffset = { left: 0, right: 0, top: 0, bottom: 0}, + plotWidth = 0, plotHeight = 0, + hooks = { + processOptions: [], + processRawData: [], + processDatapoints: [], + processOffset: [], + drawBackground: [], + drawSeries: [], + draw: [], + bindEvents: [], + drawOverlay: [], + shutdown: [] + }, + plot = this; + + // public functions + plot.setData = setData; + plot.setupGrid = setupGrid; + plot.draw = draw; + plot.getPlaceholder = function() { return placeholder; }; + plot.getCanvas = function() { return surface.element; }; + plot.getPlotOffset = function() { return plotOffset; }; + plot.width = function () { return plotWidth; }; + plot.height = function () { return plotHeight; }; + plot.offset = function () { + var o = eventHolder.offset(); + o.left += plotOffset.left; + o.top += plotOffset.top; + return o; + }; + plot.getData = function () { return series; }; + plot.getAxes = function () { + var res = {}, i; + $.each(xaxes.concat(yaxes), function (_, axis) { + if (axis) + res[axis.direction + (axis.n != 1 ? axis.n : "") + "axis"] = axis; + }); + return res; + }; + plot.getXAxes = function () { return xaxes; }; + plot.getYAxes = function () { return yaxes; }; + plot.c2p = canvasToAxisCoords; + plot.p2c = axisToCanvasCoords; + plot.getOptions = function () { return options; }; + plot.highlight = highlight; + plot.unhighlight = unhighlight; + plot.triggerRedrawOverlay = triggerRedrawOverlay; + plot.pointOffset = function(point) { + return { + left: parseInt(xaxes[axisNumber(point, "x") - 1].p2c(+point.x) + plotOffset.left, 10), + top: parseInt(yaxes[axisNumber(point, "y") - 1].p2c(+point.y) + plotOffset.top, 10) + }; + }; + plot.shutdown = shutdown; + plot.destroy = function () { + shutdown(); + placeholder.removeData("plot").empty(); + + series = []; + options = null; + surface = null; + overlay = null; + eventHolder = null; + ctx = null; + octx = null; + xaxes = []; + yaxes = []; + hooks = null; + highlights = []; + plot = null; + }; + plot.resize = function () { + var width = placeholder.width(), + height = placeholder.height(); + surface.resize(width, height); + overlay.resize(width, height); + }; + + // public attributes + plot.hooks = hooks; + + // initialize + initPlugins(plot); + parseOptions(options_); + setupCanvases(); + setData(data_); + setupGrid(); + draw(); + bindEvents(); + + + function executeHooks(hook, args) { + args = [plot].concat(args); + for (var i = 0; i < hook.length; ++i) + hook[i].apply(this, args); + } + + function initPlugins() { + + // References to key classes, allowing plugins to modify them + + var classes = { + Canvas: Canvas + }; + + for (var i = 0; i < plugins.length; ++i) { + var p = plugins[i]; + p.init(plot, classes); + if (p.options) + $.extend(true, options, p.options); + } + } + + function parseOptions(opts) { + + $.extend(true, options, opts); + + // $.extend merges arrays, rather than replacing them. When less + // colors are provided than the size of the default palette, we + // end up with those colors plus the remaining defaults, which is + // not expected behavior; avoid it by replacing them here. + + if (opts && opts.colors) { + options.colors = opts.colors; + } + + if (options.xaxis.color == null) + options.xaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString(); + if (options.yaxis.color == null) + options.yaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString(); + + if (options.xaxis.tickColor == null) // grid.tickColor for back-compatibility + options.xaxis.tickColor = options.grid.tickColor || options.xaxis.color; + if (options.yaxis.tickColor == null) // grid.tickColor for back-compatibility + options.yaxis.tickColor = options.grid.tickColor || options.yaxis.color; + + if (options.grid.borderColor == null) + options.grid.borderColor = options.grid.color; + if (options.grid.tickColor == null) + options.grid.tickColor = $.color.parse(options.grid.color).scale('a', 0.22).toString(); + + // Fill in defaults for axis options, including any unspecified + // font-spec fields, if a font-spec was provided. + + // If no x/y axis options were provided, create one of each anyway, + // since the rest of the code assumes that they exist. + + var i, axisOptions, axisCount, + fontSize = placeholder.css("font-size"), + fontSizeDefault = fontSize ? +fontSize.replace("px", "") : 13, + fontDefaults = { + style: placeholder.css("font-style"), + size: Math.round(0.8 * fontSizeDefault), + variant: placeholder.css("font-variant"), + weight: placeholder.css("font-weight"), + family: placeholder.css("font-family") + }; + + axisCount = options.xaxes.length || 1; + for (i = 0; i < axisCount; ++i) { + + axisOptions = options.xaxes[i]; + if (axisOptions && !axisOptions.tickColor) { + axisOptions.tickColor = axisOptions.color; + } + + axisOptions = $.extend(true, {}, options.xaxis, axisOptions); + options.xaxes[i] = axisOptions; + + if (axisOptions.font) { + axisOptions.font = $.extend({}, fontDefaults, axisOptions.font); + if (!axisOptions.font.color) { + axisOptions.font.color = axisOptions.color; + } + if (!axisOptions.font.lineHeight) { + axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15); + } + } + } + + axisCount = options.yaxes.length || 1; + for (i = 0; i < axisCount; ++i) { + + axisOptions = options.yaxes[i]; + if (axisOptions && !axisOptions.tickColor) { + axisOptions.tickColor = axisOptions.color; + } + + axisOptions = $.extend(true, {}, options.yaxis, axisOptions); + options.yaxes[i] = axisOptions; + + if (axisOptions.font) { + axisOptions.font = $.extend({}, fontDefaults, axisOptions.font); + if (!axisOptions.font.color) { + axisOptions.font.color = axisOptions.color; + } + if (!axisOptions.font.lineHeight) { + axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15); + } + } + } + + // backwards compatibility, to be removed in future + if (options.xaxis.noTicks && options.xaxis.ticks == null) + options.xaxis.ticks = options.xaxis.noTicks; + if (options.yaxis.noTicks && options.yaxis.ticks == null) + options.yaxis.ticks = options.yaxis.noTicks; + if (options.x2axis) { + options.xaxes[1] = $.extend(true, {}, options.xaxis, options.x2axis); + options.xaxes[1].position = "top"; + // Override the inherit to allow the axis to auto-scale + if (options.x2axis.min == null) { + options.xaxes[1].min = null; + } + if (options.x2axis.max == null) { + options.xaxes[1].max = null; + } + } + if (options.y2axis) { + options.yaxes[1] = $.extend(true, {}, options.yaxis, options.y2axis); + options.yaxes[1].position = "right"; + // Override the inherit to allow the axis to auto-scale + if (options.y2axis.min == null) { + options.yaxes[1].min = null; + } + if (options.y2axis.max == null) { + options.yaxes[1].max = null; + } + } + if (options.grid.coloredAreas) + options.grid.markings = options.grid.coloredAreas; + if (options.grid.coloredAreasColor) + options.grid.markingsColor = options.grid.coloredAreasColor; + if (options.lines) + $.extend(true, options.series.lines, options.lines); + if (options.points) + $.extend(true, options.series.points, options.points); + if (options.bars) + $.extend(true, options.series.bars, options.bars); + if (options.shadowSize != null) + options.series.shadowSize = options.shadowSize; + if (options.highlightColor != null) + options.series.highlightColor = options.highlightColor; + + // save options on axes for future reference + for (i = 0; i < options.xaxes.length; ++i) + getOrCreateAxis(xaxes, i + 1).options = options.xaxes[i]; + for (i = 0; i < options.yaxes.length; ++i) + getOrCreateAxis(yaxes, i + 1).options = options.yaxes[i]; + + // add hooks from options + for (var n in hooks) + if (options.hooks[n] && options.hooks[n].length) + hooks[n] = hooks[n].concat(options.hooks[n]); + + executeHooks(hooks.processOptions, [options]); + } + + function setData(d) { + series = parseData(d); + fillInSeriesOptions(); + processData(); + } + + function parseData(d) { + var res = []; + for (var i = 0; i < d.length; ++i) { + var s = $.extend(true, {}, options.series); + + if (d[i].data != null) { + s.data = d[i].data; // move the data instead of deep-copy + delete d[i].data; + + $.extend(true, s, d[i]); + + d[i].data = s.data; + } + else + s.data = d[i]; + res.push(s); + } + + return res; + } + + function axisNumber(obj, coord) { + var a = obj[coord + "axis"]; + if (typeof a == "object") // if we got a real axis, extract number + a = a.n; + if (typeof a != "number") + a = 1; // default to first axis + return a; + } + + function allAxes() { + // return flat array without annoying null entries + return $.grep(xaxes.concat(yaxes), function (a) { return a; }); + } + + function canvasToAxisCoords(pos) { + // return an object with x/y corresponding to all used axes + var res = {}, i, axis; + for (i = 0; i < xaxes.length; ++i) { + axis = xaxes[i]; + if (axis && axis.used) + res["x" + axis.n] = axis.c2p(pos.left); + } + + for (i = 0; i < yaxes.length; ++i) { + axis = yaxes[i]; + if (axis && axis.used) + res["y" + axis.n] = axis.c2p(pos.top); + } + + if (res.x1 !== undefined) + res.x = res.x1; + if (res.y1 !== undefined) + res.y = res.y1; + + return res; + } + + function axisToCanvasCoords(pos) { + // get canvas coords from the first pair of x/y found in pos + var res = {}, i, axis, key; + + for (i = 0; i < xaxes.length; ++i) { + axis = xaxes[i]; + if (axis && axis.used) { + key = "x" + axis.n; + if (pos[key] == null && axis.n == 1) + key = "x"; + + if (pos[key] != null) { + res.left = axis.p2c(pos[key]); + break; + } + } + } + + for (i = 0; i < yaxes.length; ++i) { + axis = yaxes[i]; + if (axis && axis.used) { + key = "y" + axis.n; + if (pos[key] == null && axis.n == 1) + key = "y"; + + if (pos[key] != null) { + res.top = axis.p2c(pos[key]); + break; + } + } + } + + return res; + } + + function getOrCreateAxis(axes, number) { + if (!axes[number - 1]) + axes[number - 1] = { + n: number, // save the number for future reference + direction: axes == xaxes ? "x" : "y", + options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis) + }; + + return axes[number - 1]; + } + + function fillInSeriesOptions() { + + var neededColors = series.length, maxIndex = -1, i; + + // Subtract the number of series that already have fixed colors or + // color indexes from the number that we still need to generate. + + for (i = 0; i < series.length; ++i) { + var sc = series[i].color; + if (sc != null) { + neededColors--; + if (typeof sc == "number" && sc > maxIndex) { + maxIndex = sc; + } + } + } + + // If any of the series have fixed color indexes, then we need to + // generate at least as many colors as the highest index. + + if (neededColors <= maxIndex) { + neededColors = maxIndex + 1; + } + + // Generate all the colors, using first the option colors and then + // variations on those colors once they're exhausted. + + var c, colors = [], colorPool = options.colors, + colorPoolSize = colorPool.length, variation = 0; + + for (i = 0; i < neededColors; i++) { + + c = $.color.parse(colorPool[i % colorPoolSize] || "#666"); + + // Each time we exhaust the colors in the pool we adjust + // a scaling factor used to produce more variations on + // those colors. The factor alternates negative/positive + // to produce lighter/darker colors. + + // Reset the variation after every few cycles, or else + // it will end up producing only white or black colors. + + if (i % colorPoolSize == 0 && i) { + if (variation >= 0) { + if (variation < 0.5) { + variation = -variation - 0.2; + } else variation = 0; + } else variation = -variation; + } + + colors[i] = c.scale('rgb', 1 + variation); + } + + // Finalize the series options, filling in their colors + + var colori = 0, s; + for (i = 0; i < series.length; ++i) { + s = series[i]; + + // assign colors + if (s.color == null) { + s.color = colors[colori].toString(); + ++colori; + } + else if (typeof s.color == "number") + s.color = colors[s.color].toString(); + + // turn on lines automatically in case nothing is set + if (s.lines.show == null) { + var v, show = true; + for (v in s) + if (s[v] && s[v].show) { + show = false; + break; + } + if (show) + s.lines.show = true; + } + + // If nothing was provided for lines.zero, default it to match + // lines.fill, since areas by default should extend to zero. + + if (s.lines.zero == null) { + s.lines.zero = !!s.lines.fill; + } + + // setup axes + s.xaxis = getOrCreateAxis(xaxes, axisNumber(s, "x")); + s.yaxis = getOrCreateAxis(yaxes, axisNumber(s, "y")); + } + } + + function processData() { + var topSentry = Number.POSITIVE_INFINITY, + bottomSentry = Number.NEGATIVE_INFINITY, + fakeInfinity = Number.MAX_VALUE, + i, j, k, m, length, + s, points, ps, x, y, axis, val, f, p, + data, format; + + function updateAxis(axis, min, max) { + if (min < axis.datamin && min != -fakeInfinity) + axis.datamin = min; + if (max > axis.datamax && max != fakeInfinity) + axis.datamax = max; + } + + $.each(allAxes(), function (_, axis) { + // init axis + axis.datamin = topSentry; + axis.datamax = bottomSentry; + axis.used = false; + }); + + for (i = 0; i < series.length; ++i) { + s = series[i]; + s.datapoints = { points: [] }; + + executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]); + } + + // first pass: clean and copy data + for (i = 0; i < series.length; ++i) { + s = series[i]; + + data = s.data; + format = s.datapoints.format; + + if (!format) { + format = []; + // find out how to copy + format.push({ x: true, number: true, required: true }); + format.push({ y: true, number: true, required: true }); + + if (s.bars.show || (s.lines.show && s.lines.fill)) { + var autoscale = !!((s.bars.show && s.bars.zero) || (s.lines.show && s.lines.zero)); + format.push({ y: true, number: true, required: false, defaultValue: 0, autoscale: autoscale }); + if (s.bars.horizontal) { + delete format[format.length - 1].y; + format[format.length - 1].x = true; + } + } + + s.datapoints.format = format; + } + + if (s.datapoints.pointsize != null) + continue; // already filled in + + s.datapoints.pointsize = format.length; + + ps = s.datapoints.pointsize; + points = s.datapoints.points; + + var insertSteps = s.lines.show && s.lines.steps; + s.xaxis.used = s.yaxis.used = true; + + for (j = k = 0; j < data.length; ++j, k += ps) { + p = data[j]; + + var nullify = p == null; + if (!nullify) { + for (m = 0; m < ps; ++m) { + val = p[m]; + f = format[m]; + + if (f) { + if (f.number && val != null) { + val = +val; // convert to number + if (isNaN(val)) + val = null; + else if (val == Infinity) + val = fakeInfinity; + else if (val == -Infinity) + val = -fakeInfinity; + } + + if (val == null) { + if (f.required) + nullify = true; + + if (f.defaultValue != null) + val = f.defaultValue; + } + } + + points[k + m] = val; + } + } + + if (nullify) { + for (m = 0; m < ps; ++m) { + val = points[k + m]; + if (val != null) { + f = format[m]; + // extract min/max info + if (f.autoscale !== false) { + if (f.x) { + updateAxis(s.xaxis, val, val); + } + if (f.y) { + updateAxis(s.yaxis, val, val); + } + } + } + points[k + m] = null; + } + } + else { + // a little bit of line specific stuff that + // perhaps shouldn't be here, but lacking + // better means... + if (insertSteps && k > 0 + && points[k - ps] != null + && points[k - ps] != points[k] + && points[k - ps + 1] != points[k + 1]) { + // copy the point to make room for a middle point + for (m = 0; m < ps; ++m) + points[k + ps + m] = points[k + m]; + + // middle point has same y + points[k + 1] = points[k - ps + 1]; + + // we've added a point, better reflect that + k += ps; + } + } + } + } + + // give the hooks a chance to run + for (i = 0; i < series.length; ++i) { + s = series[i]; + + executeHooks(hooks.processDatapoints, [ s, s.datapoints]); + } + + // second pass: find datamax/datamin for auto-scaling + for (i = 0; i < series.length; ++i) { + s = series[i]; + points = s.datapoints.points; + ps = s.datapoints.pointsize; + format = s.datapoints.format; + + var xmin = topSentry, ymin = topSentry, + xmax = bottomSentry, ymax = bottomSentry; + + for (j = 0; j < points.length; j += ps) { + if (points[j] == null) + continue; + + for (m = 0; m < ps; ++m) { + val = points[j + m]; + f = format[m]; + if (!f || f.autoscale === false || val == fakeInfinity || val == -fakeInfinity) + continue; + + if (f.x) { + if (val < xmin) + xmin = val; + if (val > xmax) + xmax = val; + } + if (f.y) { + if (val < ymin) + ymin = val; + if (val > ymax) + ymax = val; + } + } + } + + if (s.bars.show) { + // make sure we got room for the bar on the dancing floor + var delta; + + switch (s.bars.align) { + case "left": + delta = 0; + break; + case "right": + delta = -s.bars.barWidth; + break; + default: + delta = -s.bars.barWidth / 2; + } + + if (s.bars.horizontal) { + ymin += delta; + ymax += delta + s.bars.barWidth; + } + else { + xmin += delta; + xmax += delta + s.bars.barWidth; + } + } + + updateAxis(s.xaxis, xmin, xmax); + updateAxis(s.yaxis, ymin, ymax); + } + + $.each(allAxes(), function (_, axis) { + if (axis.datamin == topSentry) + axis.datamin = null; + if (axis.datamax == bottomSentry) + axis.datamax = null; + }); + } + + function setupCanvases() { + + // Make sure the placeholder is clear of everything except canvases + // from a previous plot in this container that we'll try to re-use. + + placeholder.css("padding", 0) // padding messes up the positioning + .children().filter(function(){ + return !$(this).hasClass("flot-overlay") && !$(this).hasClass('flot-base'); + }).remove(); + + if (placeholder.css("position") == 'static') + placeholder.css("position", "relative"); // for positioning labels and overlay + + surface = new Canvas("flot-base", placeholder); + overlay = new Canvas("flot-overlay", placeholder); // overlay canvas for interactive features + + ctx = surface.context; + octx = overlay.context; + + // define which element we're listening for events on + eventHolder = $(overlay.element).unbind(); + + // If we're re-using a plot object, shut down the old one + + var existing = placeholder.data("plot"); + + if (existing) { + existing.shutdown(); + overlay.clear(); + } + + // save in case we get replotted + placeholder.data("plot", plot); + } + + function bindEvents() { + // bind events + if (options.grid.hoverable) { + eventHolder.mousemove(onMouseMove); + + // Use bind, rather than .mouseleave, because we officially + // still support jQuery 1.2.6, which doesn't define a shortcut + // for mouseenter or mouseleave. This was a bug/oversight that + // was fixed somewhere around 1.3.x. We can return to using + // .mouseleave when we drop support for 1.2.6. + + eventHolder.bind("mouseleave", onMouseLeave); + } + + if (options.grid.clickable) + eventHolder.click(onClick); + + executeHooks(hooks.bindEvents, [eventHolder]); + } + + function shutdown() { + if (redrawTimeout) + clearTimeout(redrawTimeout); + + eventHolder.unbind("mousemove", onMouseMove); + eventHolder.unbind("mouseleave", onMouseLeave); + eventHolder.unbind("click", onClick); + + executeHooks(hooks.shutdown, [eventHolder]); + } + + function setTransformationHelpers(axis) { + // set helper functions on the axis, assumes plot area + // has been computed already + + function identity(x) { return x; } + + var s, m, t = axis.options.transform || identity, + it = axis.options.inverseTransform; + + // precompute how much the axis is scaling a point + // in canvas space + if (axis.direction == "x") { + s = axis.scale = plotWidth / Math.abs(t(axis.max) - t(axis.min)); + m = Math.min(t(axis.max), t(axis.min)); + } + else { + s = axis.scale = plotHeight / Math.abs(t(axis.max) - t(axis.min)); + s = -s; + m = Math.max(t(axis.max), t(axis.min)); + } + + // data point to canvas coordinate + if (t == identity) // slight optimization + axis.p2c = function (p) { return (p - m) * s; }; + else + axis.p2c = function (p) { return (t(p) - m) * s; }; + // canvas coordinate to data point + if (!it) + axis.c2p = function (c) { return m + c / s; }; + else + axis.c2p = function (c) { return it(m + c / s); }; + } + + function measureTickLabels(axis) { + + var opts = axis.options, + ticks = axis.ticks || [], + labelWidth = opts.labelWidth || 0, + labelHeight = opts.labelHeight || 0, + maxWidth = labelWidth || (axis.direction == "x" ? Math.floor(surface.width / (ticks.length || 1)) : null), + legacyStyles = axis.direction + "Axis " + axis.direction + axis.n + "Axis", + layer = "flot-" + axis.direction + "-axis flot-" + axis.direction + axis.n + "-axis " + legacyStyles, + font = opts.font || "flot-tick-label tickLabel"; + + for (var i = 0; i < ticks.length; ++i) { + + var t = ticks[i]; + + if (!t.label) + continue; + + var info = surface.getTextInfo(layer, t.label, font, null, maxWidth); + + labelWidth = Math.max(labelWidth, info.width); + labelHeight = Math.max(labelHeight, info.height); + } + + axis.labelWidth = opts.labelWidth || labelWidth; + axis.labelHeight = opts.labelHeight || labelHeight; + } + + function allocateAxisBoxFirstPhase(axis) { + // find the bounding box of the axis by looking at label + // widths/heights and ticks, make room by diminishing the + // plotOffset; this first phase only looks at one + // dimension per axis, the other dimension depends on the + // other axes so will have to wait + + var lw = axis.labelWidth, + lh = axis.labelHeight, + pos = axis.options.position, + isXAxis = axis.direction === "x", + tickLength = axis.options.tickLength, + axisMargin = options.grid.axisMargin, + padding = options.grid.labelMargin, + innermost = true, + outermost = true, + first = true, + found = false; + + // Determine the axis's position in its direction and on its side + + $.each(isXAxis ? xaxes : yaxes, function(i, a) { + if (a && (a.show || a.reserveSpace)) { + if (a === axis) { + found = true; + } else if (a.options.position === pos) { + if (found) { + outermost = false; + } else { + innermost = false; + } + } + if (!found) { + first = false; + } + } + }); + + // The outermost axis on each side has no margin + + if (outermost) { + axisMargin = 0; + } + + // The ticks for the first axis in each direction stretch across + + if (tickLength == null) { + tickLength = first ? "full" : 5; + } + + if (!isNaN(+tickLength)) + padding += +tickLength; + + if (isXAxis) { + lh += padding; + + if (pos == "bottom") { + plotOffset.bottom += lh + axisMargin; + axis.box = { top: surface.height - plotOffset.bottom, height: lh }; + } + else { + axis.box = { top: plotOffset.top + axisMargin, height: lh }; + plotOffset.top += lh + axisMargin; + } + } + else { + lw += padding; + + if (pos == "left") { + axis.box = { left: plotOffset.left + axisMargin, width: lw }; + plotOffset.left += lw + axisMargin; + } + else { + plotOffset.right += lw + axisMargin; + axis.box = { left: surface.width - plotOffset.right, width: lw }; + } + } + + // save for future reference + axis.position = pos; + axis.tickLength = tickLength; + axis.box.padding = padding; + axis.innermost = innermost; + } + + function allocateAxisBoxSecondPhase(axis) { + // now that all axis boxes have been placed in one + // dimension, we can set the remaining dimension coordinates + if (axis.direction == "x") { + axis.box.left = plotOffset.left - axis.labelWidth / 2; + axis.box.width = surface.width - plotOffset.left - plotOffset.right + axis.labelWidth; + } + else { + axis.box.top = plotOffset.top - axis.labelHeight / 2; + axis.box.height = surface.height - plotOffset.bottom - plotOffset.top + axis.labelHeight; + } + } + + function adjustLayoutForThingsStickingOut() { + // possibly adjust plot offset to ensure everything stays + // inside the canvas and isn't clipped off + + var minMargin = options.grid.minBorderMargin, + axis, i; + + // check stuff from the plot (FIXME: this should just read + // a value from the series, otherwise it's impossible to + // customize) + if (minMargin == null) { + minMargin = 0; + for (i = 0; i < series.length; ++i) + minMargin = Math.max(minMargin, 2 * (series[i].points.radius + series[i].points.lineWidth/2)); + } + + var margins = { + left: minMargin, + right: minMargin, + top: minMargin, + bottom: minMargin + }; + + // check axis labels, note we don't check the actual + // labels but instead use the overall width/height to not + // jump as much around with replots + $.each(allAxes(), function (_, axis) { + if (axis.reserveSpace && axis.ticks && axis.ticks.length) { + if (axis.direction === "x") { + margins.left = Math.max(margins.left, axis.labelWidth / 2); + margins.right = Math.max(margins.right, axis.labelWidth / 2); + } else { + margins.bottom = Math.max(margins.bottom, axis.labelHeight / 2); + margins.top = Math.max(margins.top, axis.labelHeight / 2); + } + } + }); + + plotOffset.left = Math.ceil(Math.max(margins.left, plotOffset.left)); + plotOffset.right = Math.ceil(Math.max(margins.right, plotOffset.right)); + plotOffset.top = Math.ceil(Math.max(margins.top, plotOffset.top)); + plotOffset.bottom = Math.ceil(Math.max(margins.bottom, plotOffset.bottom)); + } + + function setupGrid() { + var i, axes = allAxes(), showGrid = options.grid.show; + + // Initialize the plot's offset from the edge of the canvas + + for (var a in plotOffset) { + var margin = options.grid.margin || 0; + plotOffset[a] = typeof margin == "number" ? margin : margin[a] || 0; + } + + executeHooks(hooks.processOffset, [plotOffset]); + + // If the grid is visible, add its border width to the offset + + for (var a in plotOffset) { + if(typeof(options.grid.borderWidth) == "object") { + plotOffset[a] += showGrid ? options.grid.borderWidth[a] : 0; + } + else { + plotOffset[a] += showGrid ? options.grid.borderWidth : 0; + } + } + + $.each(axes, function (_, axis) { + var axisOpts = axis.options; + axis.show = axisOpts.show == null ? axis.used : axisOpts.show; + axis.reserveSpace = axisOpts.reserveSpace == null ? axis.show : axisOpts.reserveSpace; + setRange(axis); + }); + + if (showGrid) { + + var allocatedAxes = $.grep(axes, function (axis) { + return axis.show || axis.reserveSpace; + }); + + $.each(allocatedAxes, function (_, axis) { + // make the ticks + setupTickGeneration(axis); + setTicks(axis); + snapRangeToTicks(axis, axis.ticks); + // find labelWidth/Height for axis + measureTickLabels(axis); + }); + + // with all dimensions calculated, we can compute the + // axis bounding boxes, start from the outside + // (reverse order) + for (i = allocatedAxes.length - 1; i >= 0; --i) + allocateAxisBoxFirstPhase(allocatedAxes[i]); + + // make sure we've got enough space for things that + // might stick out + adjustLayoutForThingsStickingOut(); + + $.each(allocatedAxes, function (_, axis) { + allocateAxisBoxSecondPhase(axis); + }); + } + + plotWidth = surface.width - plotOffset.left - plotOffset.right; + plotHeight = surface.height - plotOffset.bottom - plotOffset.top; + + // now we got the proper plot dimensions, we can compute the scaling + $.each(axes, function (_, axis) { + setTransformationHelpers(axis); + }); + + if (showGrid) { + drawAxisLabels(); + } + + insertLegend(); + } + + function setRange(axis) { + var opts = axis.options, + min = +(opts.min != null ? opts.min : axis.datamin), + max = +(opts.max != null ? opts.max : axis.datamax), + delta = max - min; + + if (delta == 0.0) { + // degenerate case + var widen = max == 0 ? 1 : 0.01; + + if (opts.min == null) + min -= widen; + // always widen max if we couldn't widen min to ensure we + // don't fall into min == max which doesn't work + if (opts.max == null || opts.min != null) + max += widen; + } + else { + // consider autoscaling + var margin = opts.autoscaleMargin; + if (margin != null) { + if (opts.min == null) { + min -= delta * margin; + // make sure we don't go below zero if all values + // are positive + if (min < 0 && axis.datamin != null && axis.datamin >= 0) + min = 0; + } + if (opts.max == null) { + max += delta * margin; + if (max > 0 && axis.datamax != null && axis.datamax <= 0) + max = 0; + } + } + } + axis.min = min; + axis.max = max; + } + + function setupTickGeneration(axis) { + var opts = axis.options; + + // estimate number of ticks + var noTicks; + if (typeof opts.ticks == "number" && opts.ticks > 0) + noTicks = opts.ticks; + else + // heuristic based on the model a*sqrt(x) fitted to + // some data points that seemed reasonable + noTicks = 0.3 * Math.sqrt(axis.direction == "x" ? surface.width : surface.height); + + var delta = (axis.max - axis.min) / noTicks, + dec = -Math.floor(Math.log(delta) / Math.LN10), + maxDec = opts.tickDecimals; + + if (maxDec != null && dec > maxDec) { + dec = maxDec; + } + + var magn = Math.pow(10, -dec), + norm = delta / magn, // norm is between 1.0 and 10.0 + size; + + if (norm < 1.5) { + size = 1; + } else if (norm < 3) { + size = 2; + // special case for 2.5, requires an extra decimal + if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) { + size = 2.5; + ++dec; + } + } else if (norm < 7.5) { + size = 5; + } else { + size = 10; + } + + size *= magn; + + if (opts.minTickSize != null && size < opts.minTickSize) { + size = opts.minTickSize; + } + + axis.delta = delta; + axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec); + axis.tickSize = opts.tickSize || size; + + // Time mode was moved to a plug-in in 0.8, and since so many people use it + // we'll add an especially friendly reminder to make sure they included it. + + if (opts.mode == "time" && !axis.tickGenerator) { + throw new Error("Time mode requires the flot.time plugin."); + } + + // Flot supports base-10 axes; any other mode else is handled by a plug-in, + // like flot.time.js. + + if (!axis.tickGenerator) { + + axis.tickGenerator = function (axis) { + + var ticks = [], + start = floorInBase(axis.min, axis.tickSize), + i = 0, + v = Number.NaN, + prev; + + do { + prev = v; + v = start + i * axis.tickSize; + ticks.push(v); + ++i; + } while (v < axis.max && v != prev); + return ticks; + }; + + axis.tickFormatter = function (value, axis) { + + var factor = axis.tickDecimals ? Math.pow(10, axis.tickDecimals) : 1; + var formatted = "" + Math.round(value * factor) / factor; + + // If tickDecimals was specified, ensure that we have exactly that + // much precision; otherwise default to the value's own precision. + + if (axis.tickDecimals != null) { + var decimal = formatted.indexOf("."); + var precision = decimal == -1 ? 0 : formatted.length - decimal - 1; + if (precision < axis.tickDecimals) { + return (precision ? formatted : formatted + ".") + ("" + factor).substr(1, axis.tickDecimals - precision); + } + } + + return formatted; + }; + } + + if ($.isFunction(opts.tickFormatter)) + axis.tickFormatter = function (v, axis) { return "" + opts.tickFormatter(v, axis); }; + + if (opts.alignTicksWithAxis != null) { + var otherAxis = (axis.direction == "x" ? xaxes : yaxes)[opts.alignTicksWithAxis - 1]; + if (otherAxis && otherAxis.used && otherAxis != axis) { + // consider snapping min/max to outermost nice ticks + var niceTicks = axis.tickGenerator(axis); + if (niceTicks.length > 0) { + if (opts.min == null) + axis.min = Math.min(axis.min, niceTicks[0]); + if (opts.max == null && niceTicks.length > 1) + axis.max = Math.max(axis.max, niceTicks[niceTicks.length - 1]); + } + + axis.tickGenerator = function (axis) { + // copy ticks, scaled to this axis + var ticks = [], v, i; + for (i = 0; i < otherAxis.ticks.length; ++i) { + v = (otherAxis.ticks[i].v - otherAxis.min) / (otherAxis.max - otherAxis.min); + v = axis.min + v * (axis.max - axis.min); + ticks.push(v); + } + return ticks; + }; + + // we might need an extra decimal since forced + // ticks don't necessarily fit naturally + if (!axis.mode && opts.tickDecimals == null) { + var extraDec = Math.max(0, -Math.floor(Math.log(axis.delta) / Math.LN10) + 1), + ts = axis.tickGenerator(axis); + + // only proceed if the tick interval rounded + // with an extra decimal doesn't give us a + // zero at end + if (!(ts.length > 1 && /\..*0$/.test((ts[1] - ts[0]).toFixed(extraDec)))) + axis.tickDecimals = extraDec; + } + } + } + } + + function setTicks(axis) { + var oticks = axis.options.ticks, ticks = []; + if (oticks == null || (typeof oticks == "number" && oticks > 0)) + ticks = axis.tickGenerator(axis); + else if (oticks) { + if ($.isFunction(oticks)) + // generate the ticks + ticks = oticks(axis); + else + ticks = oticks; + } + + // clean up/labelify the supplied ticks, copy them over + var i, v; + axis.ticks = []; + for (i = 0; i < ticks.length; ++i) { + var label = null; + var t = ticks[i]; + if (typeof t == "object") { + v = +t[0]; + if (t.length > 1) + label = t[1]; + } + else + v = +t; + if (label == null) + label = axis.tickFormatter(v, axis); + if (!isNaN(v)) + axis.ticks.push({ v: v, label: label }); + } + } + + function snapRangeToTicks(axis, ticks) { + if (axis.options.autoscaleMargin && ticks.length > 0) { + // snap to ticks + if (axis.options.min == null) + axis.min = Math.min(axis.min, ticks[0].v); + if (axis.options.max == null && ticks.length > 1) + axis.max = Math.max(axis.max, ticks[ticks.length - 1].v); + } + } + + function draw() { + + surface.clear(); + + executeHooks(hooks.drawBackground, [ctx]); + + var grid = options.grid; + + // draw background, if any + if (grid.show && grid.backgroundColor) + drawBackground(); + + if (grid.show && !grid.aboveData) { + drawGrid(); + } + + for (var i = 0; i < series.length; ++i) { + executeHooks(hooks.drawSeries, [ctx, series[i]]); + drawSeries(series[i]); + } + + executeHooks(hooks.draw, [ctx]); + + if (grid.show && grid.aboveData) { + drawGrid(); + } + + surface.render(); + + // A draw implies that either the axes or data have changed, so we + // should probably update the overlay highlights as well. + + triggerRedrawOverlay(); + } + + function extractRange(ranges, coord) { + var axis, from, to, key, axes = allAxes(); + + for (var i = 0; i < axes.length; ++i) { + axis = axes[i]; + if (axis.direction == coord) { + key = coord + axis.n + "axis"; + if (!ranges[key] && axis.n == 1) + key = coord + "axis"; // support x1axis as xaxis + if (ranges[key]) { + from = ranges[key].from; + to = ranges[key].to; + break; + } + } + } + + // backwards-compat stuff - to be removed in future + if (!ranges[key]) { + axis = coord == "x" ? xaxes[0] : yaxes[0]; + from = ranges[coord + "1"]; + to = ranges[coord + "2"]; + } + + // auto-reverse as an added bonus + if (from != null && to != null && from > to) { + var tmp = from; + from = to; + to = tmp; + } + + return { from: from, to: to, axis: axis }; + } + + function drawBackground() { + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, "rgba(255, 255, 255, 0)"); + ctx.fillRect(0, 0, plotWidth, plotHeight); + ctx.restore(); + } + + function drawGrid() { + var i, axes, bw, bc; + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + // draw markings + var markings = options.grid.markings; + if (markings) { + if ($.isFunction(markings)) { + axes = plot.getAxes(); + // xmin etc. is backwards compatibility, to be + // removed in the future + axes.xmin = axes.xaxis.min; + axes.xmax = axes.xaxis.max; + axes.ymin = axes.yaxis.min; + axes.ymax = axes.yaxis.max; + + markings = markings(axes); + } + + for (i = 0; i < markings.length; ++i) { + var m = markings[i], + xrange = extractRange(m, "x"), + yrange = extractRange(m, "y"); + + // fill in missing + if (xrange.from == null) + xrange.from = xrange.axis.min; + if (xrange.to == null) + xrange.to = xrange.axis.max; + if (yrange.from == null) + yrange.from = yrange.axis.min; + if (yrange.to == null) + yrange.to = yrange.axis.max; + + // clip + if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max || + yrange.to < yrange.axis.min || yrange.from > yrange.axis.max) + continue; + + xrange.from = Math.max(xrange.from, xrange.axis.min); + xrange.to = Math.min(xrange.to, xrange.axis.max); + yrange.from = Math.max(yrange.from, yrange.axis.min); + yrange.to = Math.min(yrange.to, yrange.axis.max); + + var xequal = xrange.from === xrange.to, + yequal = yrange.from === yrange.to; + + if (xequal && yequal) { + continue; + } + + // then draw + xrange.from = Math.floor(xrange.axis.p2c(xrange.from)); + xrange.to = Math.floor(xrange.axis.p2c(xrange.to)); + yrange.from = Math.floor(yrange.axis.p2c(yrange.from)); + yrange.to = Math.floor(yrange.axis.p2c(yrange.to)); + + if (xequal || yequal) { + var lineWidth = m.lineWidth || options.grid.markingsLineWidth, + subPixel = lineWidth % 2 ? 0.5 : 0; + ctx.beginPath(); + ctx.strokeStyle = m.color || options.grid.markingsColor; + ctx.lineWidth = lineWidth; + if (xequal) { + ctx.moveTo(xrange.to + subPixel, yrange.from); + ctx.lineTo(xrange.to + subPixel, yrange.to); + } else { + ctx.moveTo(xrange.from, yrange.to + subPixel); + ctx.lineTo(xrange.to, yrange.to + subPixel); + } + ctx.stroke(); + } else { + ctx.fillStyle = m.color || options.grid.markingsColor; + ctx.fillRect(xrange.from, yrange.to, + xrange.to - xrange.from, + yrange.from - yrange.to); + } + } + } + + // draw the ticks + axes = allAxes(); + bw = options.grid.borderWidth; + + for (var j = 0; j < axes.length; ++j) { + var axis = axes[j], box = axis.box, + t = axis.tickLength, x, y, xoff, yoff; + if (!axis.show || axis.ticks.length == 0) + continue; + + ctx.lineWidth = 1; + + // find the edges + if (axis.direction == "x") { + x = 0; + if (t == "full") + y = (axis.position == "top" ? 0 : plotHeight); + else + y = box.top - plotOffset.top + (axis.position == "top" ? box.height : 0); + } + else { + y = 0; + if (t == "full") + x = (axis.position == "left" ? 0 : plotWidth); + else + x = box.left - plotOffset.left + (axis.position == "left" ? box.width : 0); + } + + // draw tick bar + if (!axis.innermost) { + ctx.strokeStyle = axis.options.color; + ctx.beginPath(); + xoff = yoff = 0; + if (axis.direction == "x") + xoff = plotWidth + 1; + else + yoff = plotHeight + 1; + + if (ctx.lineWidth == 1) { + if (axis.direction == "x") { + y = Math.floor(y) + 0.5; + } else { + x = Math.floor(x) + 0.5; + } + } + + ctx.moveTo(x, y); + ctx.lineTo(x + xoff, y + yoff); + ctx.stroke(); + } + + // draw ticks + + ctx.strokeStyle = axis.options.tickColor; + + ctx.beginPath(); + for (i = 0; i < axis.ticks.length; ++i) { + var v = axis.ticks[i].v; + + xoff = yoff = 0; + + if (isNaN(v) || v < axis.min || v > axis.max + // skip those lying on the axes if we got a border + || (t == "full" + && ((typeof bw == "object" && bw[axis.position] > 0) || bw > 0) + && (v == axis.min || v == axis.max))) + continue; + + if (axis.direction == "x") { + x = axis.p2c(v); + yoff = t == "full" ? -plotHeight : t; + + if (axis.position == "top") + yoff = -yoff; + } + else { + y = axis.p2c(v); + xoff = t == "full" ? -plotWidth : t; + + if (axis.position == "left") + xoff = -xoff; + } + + if (ctx.lineWidth == 1) { + if (axis.direction == "x") + x = Math.floor(x) + 0.5; + else + y = Math.floor(y) + 0.5; + } + + ctx.moveTo(x, y); + ctx.lineTo(x + xoff, y + yoff); + } + + ctx.stroke(); + } + + + // draw border + if (bw) { + // If either borderWidth or borderColor is an object, then draw the border + // line by line instead of as one rectangle + bc = options.grid.borderColor; + if(typeof bw == "object" || typeof bc == "object") { + if (typeof bw !== "object") { + bw = {top: bw, right: bw, bottom: bw, left: bw}; + } + if (typeof bc !== "object") { + bc = {top: bc, right: bc, bottom: bc, left: bc}; + } + + if (bw.top > 0) { + ctx.strokeStyle = bc.top; + ctx.lineWidth = bw.top; + ctx.beginPath(); + ctx.moveTo(0 - bw.left, 0 - bw.top/2); + ctx.lineTo(plotWidth, 0 - bw.top/2); + ctx.stroke(); + } + + if (bw.right > 0) { + ctx.strokeStyle = bc.right; + ctx.lineWidth = bw.right; + ctx.beginPath(); + ctx.moveTo(plotWidth + bw.right / 2, 0 - bw.top); + ctx.lineTo(plotWidth + bw.right / 2, plotHeight); + ctx.stroke(); + } + + if (bw.bottom > 0) { + ctx.strokeStyle = bc.bottom; + ctx.lineWidth = bw.bottom; + ctx.beginPath(); + ctx.moveTo(plotWidth + bw.right, plotHeight + bw.bottom / 2); + ctx.lineTo(0, plotHeight + bw.bottom / 2); + ctx.stroke(); + } + + if (bw.left > 0) { + ctx.strokeStyle = bc.left; + ctx.lineWidth = bw.left; + ctx.beginPath(); + ctx.moveTo(0 - bw.left/2, plotHeight + bw.bottom); + ctx.lineTo(0- bw.left/2, 0); + ctx.stroke(); + } + } + else { + ctx.lineWidth = bw; + ctx.strokeStyle = options.grid.borderColor; + ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw); + } + } + + ctx.restore(); + } + + function drawAxisLabels() { + + $.each(allAxes(), function (_, axis) { + var box = axis.box, + legacyStyles = axis.direction + "Axis " + axis.direction + axis.n + "Axis", + layer = "flot-" + axis.direction + "-axis flot-" + axis.direction + axis.n + "-axis " + legacyStyles, + font = axis.options.font || "flot-tick-label tickLabel", + tick, x, y, halign, valign; + + // Remove text before checking for axis.show and ticks.length; + // otherwise plugins, like flot-tickrotor, that draw their own + // tick labels will end up with both theirs and the defaults. + + surface.removeText(layer); + + if (!axis.show || axis.ticks.length == 0) + return; + + for (var i = 0; i < axis.ticks.length; ++i) { + + tick = axis.ticks[i]; + if (!tick.label || tick.v < axis.min || tick.v > axis.max) + continue; + + if (axis.direction == "x") { + halign = "center"; + x = plotOffset.left + axis.p2c(tick.v); + if (axis.position == "bottom") { + y = box.top + box.padding; + } else { + y = box.top + box.height - box.padding; + valign = "bottom"; + } + } else { + valign = "middle"; + y = plotOffset.top + axis.p2c(tick.v); + if (axis.position == "left") { + x = box.left + box.width - box.padding; + halign = "right"; + } else { + x = box.left + box.padding; + } + } + + surface.addText(layer, x, y, tick.label, font, null, null, halign, valign); + } + }); + } + + function drawSeries(series) { + if (series.lines.show) + drawSeriesLines(series); + if (series.bars.show) + drawSeriesBars(series); + if (series.points.show) + drawSeriesPoints(series); + } + + function drawSeriesLines(series) { + function plotLine(datapoints, xoffset, yoffset, axisx, axisy) { + var points = datapoints.points, + ps = datapoints.pointsize, + prevx = null, prevy = null; + + ctx.beginPath(); + for (var i = ps; i < points.length; i += ps) { + var x1 = points[i - ps], y1 = points[i - ps + 1], + x2 = points[i], y2 = points[i + 1]; + + if (x1 == null || x2 == null) + continue; + + // clip with ymin + if (y1 <= y2 && y1 < axisy.min) { + if (y2 < axisy.min) + continue; // line segment is outside + // compute new intersection point + x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.min; + } + else if (y2 <= y1 && y2 < axisy.min) { + if (y1 < axisy.min) + continue; + x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.min; + } + + // clip with ymax + if (y1 >= y2 && y1 > axisy.max) { + if (y2 > axisy.max) + continue; + x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.max; + } + else if (y2 >= y1 && y2 > axisy.max) { + if (y1 > axisy.max) + continue; + x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.max; + } + + // clip with xmin + if (x1 <= x2 && x1 < axisx.min) { + if (x2 < axisx.min) + continue; + y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.min; + } + else if (x2 <= x1 && x2 < axisx.min) { + if (x1 < axisx.min) + continue; + y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.min; + } + + // clip with xmax + if (x1 >= x2 && x1 > axisx.max) { + if (x2 > axisx.max) + continue; + y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.max; + } + else if (x2 >= x1 && x2 > axisx.max) { + if (x1 > axisx.max) + continue; + y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.max; + } + + if (x1 != prevx || y1 != prevy) + ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset); + + prevx = x2; + prevy = y2; + ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset); + } + ctx.stroke(); + } + + function plotLineArea(datapoints, axisx, axisy) { + var points = datapoints.points, + ps = datapoints.pointsize, + bottom = Math.min(Math.max(0, axisy.min), axisy.max), + i = 0, top, areaOpen = false, + ypos = 1, segmentStart = 0, segmentEnd = 0; + + // we process each segment in two turns, first forward + // direction to sketch out top, then once we hit the + // end we go backwards to sketch the bottom + while (true) { + if (ps > 0 && i > points.length + ps) + break; + + i += ps; // ps is negative if going backwards + + var x1 = points[i - ps], + y1 = points[i - ps + ypos], + x2 = points[i], y2 = points[i + ypos]; + + if (areaOpen) { + if (ps > 0 && x1 != null && x2 == null) { + // at turning point + segmentEnd = i; + ps = -ps; + ypos = 2; + continue; + } + + if (ps < 0 && i == segmentStart + ps) { + // done with the reverse sweep + ctx.fill(); + areaOpen = false; + ps = -ps; + ypos = 1; + i = segmentStart = segmentEnd + ps; + continue; + } + } + + if (x1 == null || x2 == null) + continue; + + // clip x values + + // clip with xmin + if (x1 <= x2 && x1 < axisx.min) { + if (x2 < axisx.min) + continue; + y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.min; + } + else if (x2 <= x1 && x2 < axisx.min) { + if (x1 < axisx.min) + continue; + y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.min; + } + + // clip with xmax + if (x1 >= x2 && x1 > axisx.max) { + if (x2 > axisx.max) + continue; + y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.max; + } + else if (x2 >= x1 && x2 > axisx.max) { + if (x1 > axisx.max) + continue; + y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.max; + } + + if (!areaOpen) { + // open area + ctx.beginPath(); + ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom)); + areaOpen = true; + } + + // now first check the case where both is outside + if (y1 >= axisy.max && y2 >= axisy.max) { + ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max)); + continue; + } + else if (y1 <= axisy.min && y2 <= axisy.min) { + ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min)); + continue; + } + + // else it's a bit more complicated, there might + // be a flat maxed out rectangle first, then a + // triangular cutout or reverse; to find these + // keep track of the current x values + var x1old = x1, x2old = x2; + + // clip the y values, without shortcutting, we + // go through all cases in turn + + // clip with ymin + if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) { + x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.min; + } + else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) { + x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.min; + } + + // clip with ymax + if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) { + x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.max; + } + else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) { + x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.max; + } + + // if the x value was changed we got a rectangle + // to fill + if (x1 != x1old) { + ctx.lineTo(axisx.p2c(x1old), axisy.p2c(y1)); + // it goes to (x1, y1), but we fill that below + } + + // fill triangular section, this sometimes result + // in redundant points if (x1, y1) hasn't changed + // from previous line to, but we just ignore that + ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); + + // fill the other rectangle if it's there + if (x2 != x2old) { + ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); + ctx.lineTo(axisx.p2c(x2old), axisy.p2c(y2)); + } + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + ctx.lineJoin = "round"; + + var lw = series.lines.lineWidth, + sw = series.shadowSize; + // FIXME: consider another form of shadow when filling is turned on + if (lw > 0 && sw > 0) { + // draw shadow as a thick and thin line with transparency + ctx.lineWidth = sw; + ctx.strokeStyle = "rgba(0,0,0,0.1)"; + // position shadow at angle from the mid of line + var angle = Math.PI/18; + plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis); + ctx.lineWidth = sw/2; + plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis); + } + + ctx.lineWidth = lw; + ctx.strokeStyle = series.color; + var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight); + if (fillStyle) { + ctx.fillStyle = fillStyle; + plotLineArea(series.datapoints, series.xaxis, series.yaxis); + } + + if (lw > 0) + plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis); + ctx.restore(); + } + + function drawSeriesPoints(series) { + function plotPoints(datapoints, radius, fillStyle, offset, shadow, axisx, axisy, symbol) { + var points = datapoints.points, ps = datapoints.pointsize; + + for (var i = 0; i < points.length; i += ps) { + var x = points[i], y = points[i + 1]; + if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) + continue; + + ctx.beginPath(); + x = axisx.p2c(x); + y = axisy.p2c(y) + offset; + if (symbol == "circle") + ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false); + else + symbol(ctx, x, y, radius, shadow); + ctx.closePath(); + + if (fillStyle) { + ctx.fillStyle = fillStyle; + ctx.fill(); + } + ctx.stroke(); + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + var lw = series.points.lineWidth, + sw = series.shadowSize, + radius = series.points.radius, + symbol = series.points.symbol; + + // If the user sets the line width to 0, we change it to a very + // small value. A line width of 0 seems to force the default of 1. + // Doing the conditional here allows the shadow setting to still be + // optional even with a lineWidth of 0. + + if( lw == 0 ) + lw = 0.0001; + + if (lw > 0 && sw > 0) { + // draw shadow in two steps + var w = sw / 2; + ctx.lineWidth = w; + ctx.strokeStyle = "rgba(0,0,0,0.1)"; + plotPoints(series.datapoints, radius, null, w + w/2, true, + series.xaxis, series.yaxis, symbol); + + ctx.strokeStyle = "rgba(0,0,0,0.2)"; + plotPoints(series.datapoints, radius, null, w/2, true, + series.xaxis, series.yaxis, symbol); + } + + ctx.lineWidth = lw; + ctx.strokeStyle = series.color; + plotPoints(series.datapoints, radius, + getFillStyle(series.points, series.color), 0, false, + series.xaxis, series.yaxis, symbol); + ctx.restore(); + } + + function drawBar(x, y, b, barLeft, barRight, fillStyleCallback, axisx, axisy, c, horizontal, lineWidth) { + var left, right, bottom, top, + drawLeft, drawRight, drawTop, drawBottom, + tmp; + + // in horizontal mode, we start the bar from the left + // instead of from the bottom so it appears to be + // horizontal rather than vertical + if (horizontal) { + drawBottom = drawRight = drawTop = true; + drawLeft = false; + left = b; + right = x; + top = y + barLeft; + bottom = y + barRight; + + // account for negative bars + if (right < left) { + tmp = right; + right = left; + left = tmp; + drawLeft = true; + drawRight = false; + } + } + else { + drawLeft = drawRight = drawTop = true; + drawBottom = false; + left = x + barLeft; + right = x + barRight; + bottom = b; + top = y; + + // account for negative bars + if (top < bottom) { + tmp = top; + top = bottom; + bottom = tmp; + drawBottom = true; + drawTop = false; + } + } + + // clip + if (right < axisx.min || left > axisx.max || + top < axisy.min || bottom > axisy.max) + return; + + if (left < axisx.min) { + left = axisx.min; + drawLeft = false; + } + + if (right > axisx.max) { + right = axisx.max; + drawRight = false; + } + + if (bottom < axisy.min) { + bottom = axisy.min; + drawBottom = false; + } + + if (top > axisy.max) { + top = axisy.max; + drawTop = false; + } + + left = axisx.p2c(left); + bottom = axisy.p2c(bottom); + right = axisx.p2c(right); + top = axisy.p2c(top); + + // fill the bar + if (fillStyleCallback) { + c.fillStyle = fillStyleCallback(bottom, top); + c.fillRect(left, top, right - left, bottom - top) + } + + // draw outline + if (lineWidth > 0 && (drawLeft || drawRight || drawTop || drawBottom)) { + c.beginPath(); + + // FIXME: inline moveTo is buggy with excanvas + c.moveTo(left, bottom); + if (drawLeft) + c.lineTo(left, top); + else + c.moveTo(left, top); + if (drawTop) + c.lineTo(right, top); + else + c.moveTo(right, top); + if (drawRight) + c.lineTo(right, bottom); + else + c.moveTo(right, bottom); + if (drawBottom) + c.lineTo(left, bottom); + else + c.moveTo(left, bottom); + c.stroke(); + } + } + + function drawSeriesBars(series) { + function plotBars(datapoints, barLeft, barRight, fillStyleCallback, axisx, axisy) { + var points = datapoints.points, ps = datapoints.pointsize; + + for (var i = 0; i < points.length; i += ps) { + if (points[i] == null) + continue; + drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal, series.bars.lineWidth); + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + // FIXME: figure out a way to add shadows (for instance along the right edge) + ctx.lineWidth = series.bars.lineWidth; + ctx.strokeStyle = series.color; + + var barLeft; + + switch (series.bars.align) { + case "left": + barLeft = 0; + break; + case "right": + barLeft = -series.bars.barWidth; + break; + default: + barLeft = -series.bars.barWidth / 2; + } + + var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null; + plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, fillStyleCallback, series.xaxis, series.yaxis); + ctx.restore(); + } + + function getFillStyle(filloptions, seriesColor, bottom, top) { + var fill = filloptions.fill; + if (!fill) + return null; + + if (filloptions.fillColor) + return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor); + + var c = $.color.parse(seriesColor); + c.a = typeof fill == "number" ? fill : 0.4; + c.normalize(); + return c.toString(); + } + + function insertLegend() { + + if (options.legend.container != null) { + $(options.legend.container).html(""); + } else { + placeholder.find(".legend").remove(); + } + + if (!options.legend.show) { + return; + } + + var fragments = [], entries = [], rowStarted = false, + lf = options.legend.labelFormatter, s, label; + + // Build a list of legend entries, with each having a label and a color + + for (var i = 0; i < series.length; ++i) { + s = series[i]; + if (s.label) { + label = lf ? lf(s.label, s) : s.label; + if (label) { + entries.push({ + label: label, + color: s.color + }); + } + } + } + + // Sort the legend using either the default or a custom comparator + + if (options.legend.sorted) { + if ($.isFunction(options.legend.sorted)) { + entries.sort(options.legend.sorted); + } else if (options.legend.sorted == "reverse") { + entries.reverse(); + } else { + var ascending = options.legend.sorted != "descending"; + entries.sort(function(a, b) { + return a.label == b.label ? 0 : ( + (a.label < b.label) != ascending ? 1 : -1 // Logical XOR + ); + }); + } + } + + // Generate markup for the list of entries, in their final order + + for (var i = 0; i < entries.length; ++i) { + + var entry = entries[i]; + + if (i % options.legend.noColumns == 0) { + if (rowStarted) + fragments.push(''); + fragments.push(''); + rowStarted = true; + } + + fragments.push( + '
' + + '' + entry.label + '' + ); + } + + if (rowStarted) + fragments.push(''); + + if (fragments.length == 0) + return; + + var table = '' + fragments.join("") + '
'; + if (options.legend.container != null) + $(options.legend.container).html(table); + else { + var pos = "", + p = options.legend.position, + m = options.legend.margin; + if (m[0] == null) + m = [m, m]; + if (p.charAt(0) == "n") + pos += 'top:' + (m[1] + plotOffset.top) + 'px;'; + else if (p.charAt(0) == "s") + pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;'; + if (p.charAt(1) == "e") + pos += 'right:' + (m[0] + plotOffset.right) + 'px;'; + else if (p.charAt(1) == "w") + pos += 'left:' + (m[0] + plotOffset.left) + 'px;'; + var legend = $('
' + table.replace('style="', 'style="position:absolute;' + pos +';') + '
').appendTo(placeholder); + if (options.legend.backgroundOpacity != 0.0) { + // put in the transparent background + // separately to avoid blended labels and + // label boxes + var c = options.legend.backgroundColor; + if (c == null) { + c = options.grid.backgroundColor; + if (c && typeof c == "string") + c = $.color.parse(c); + else + c = $.color.extract(legend, 'background-color'); + c.a = 1; + c = c.toString(); + } + var div = legend.children(); + $('
').prependTo(legend).css('opacity', options.legend.backgroundOpacity); + } + } + } + + + // interactive features + + var highlights = [], + redrawTimeout = null; + + // returns the data item the mouse is over, or null if none is found + function findNearbyItem(mouseX, mouseY, seriesFilter) { + var maxDistance = options.grid.mouseActiveRadius, + smallestDistance = maxDistance * maxDistance + 1, + item = null, foundPoint = false, i, j, ps; + + for (i = series.length - 1; i >= 0; --i) { + if (!seriesFilter(series[i])) + continue; + + var s = series[i], + axisx = s.xaxis, + axisy = s.yaxis, + points = s.datapoints.points, + mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster + my = axisy.c2p(mouseY), + maxx = maxDistance / axisx.scale, + maxy = maxDistance / axisy.scale; + + ps = s.datapoints.pointsize; + // with inverse transforms, we can't use the maxx/maxy + // optimization, sadly + if (axisx.options.inverseTransform) + maxx = Number.MAX_VALUE; + if (axisy.options.inverseTransform) + maxy = Number.MAX_VALUE; + + if (s.lines.show || s.points.show) { + for (j = 0; j < points.length; j += ps) { + var x = points[j], y = points[j + 1]; + if (x == null) + continue; + + // For points and lines, the cursor must be within a + // certain distance to the data point + if (x - mx > maxx || x - mx < -maxx || + y - my > maxy || y - my < -maxy) + continue; + + // We have to calculate distances in pixels, not in + // data units, because the scales of the axes may be different + var dx = Math.abs(axisx.p2c(x) - mouseX), + dy = Math.abs(axisy.p2c(y) - mouseY), + dist = dx * dx + dy * dy; // we save the sqrt + + // use <= to ensure last point takes precedence + // (last generally means on top of) + if (dist < smallestDistance) { + smallestDistance = dist; + item = [i, j / ps]; + } + } + } + + if (s.bars.show && !item) { // no other point can be nearby + + var barLeft, barRight; + + switch (s.bars.align) { + case "left": + barLeft = 0; + break; + case "right": + barLeft = -s.bars.barWidth; + break; + default: + barLeft = -s.bars.barWidth / 2; + } + + barRight = barLeft + s.bars.barWidth; + + for (j = 0; j < points.length; j += ps) { + var x = points[j], y = points[j + 1], b = points[j + 2]; + if (x == null) + continue; + + // for a bar graph, the cursor must be inside the bar + if (series[i].bars.horizontal ? + (mx <= Math.max(b, x) && mx >= Math.min(b, x) && + my >= y + barLeft && my <= y + barRight) : + (mx >= x + barLeft && mx <= x + barRight && + my >= Math.min(b, y) && my <= Math.max(b, y))) + item = [i, j / ps]; + } + } + } + + if (item) { + i = item[0]; + j = item[1]; + ps = series[i].datapoints.pointsize; + + return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps), + dataIndex: j, + series: series[i], + seriesIndex: i }; + } + + return null; + } + + function onMouseMove(e) { + if (options.grid.hoverable) + triggerClickHoverEvent("plothover", e, + function (s) { return s["hoverable"] != false; }); + } + + function onMouseLeave(e) { + if (options.grid.hoverable) + triggerClickHoverEvent("plothover", e, + function (s) { return false; }); + } + + function onClick(e) { + triggerClickHoverEvent("plotclick", e, + function (s) { return s["clickable"] != false; }); + } + + // trigger click or hover event (they send the same parameters + // so we share their code) + function triggerClickHoverEvent(eventname, event, seriesFilter) { + var offset = eventHolder.offset(), + canvasX = event.pageX - offset.left - plotOffset.left, + canvasY = event.pageY - offset.top - plotOffset.top, + pos = canvasToAxisCoords({ left: canvasX, top: canvasY }); + + pos.pageX = event.pageX; + pos.pageY = event.pageY; + + var item = findNearbyItem(canvasX, canvasY, seriesFilter); + + if (item) { + // fill in mouse pos for any listeners out there + item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left, 10); + item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top, 10); + } + + if (options.grid.autoHighlight) { + // clear auto-highlights + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.auto == eventname && + !(item && h.series == item.series && + h.point[0] == item.datapoint[0] && + h.point[1] == item.datapoint[1])) + unhighlight(h.series, h.point); + } + + if (item) + highlight(item.series, item.datapoint, eventname); + } + + placeholder.trigger(eventname, [ pos, item ]); + } + + function triggerRedrawOverlay() { + var t = options.interaction.redrawOverlayInterval; + if (t == -1) { // skip event queue + drawOverlay(); + return; + } + + if (!redrawTimeout) + redrawTimeout = setTimeout(drawOverlay, t); + } + + function drawOverlay() { + redrawTimeout = null; + + // draw highlights + octx.save(); + overlay.clear(); + octx.translate(plotOffset.left, plotOffset.top); + + var i, hi; + for (i = 0; i < highlights.length; ++i) { + hi = highlights[i]; + + if (hi.series.bars.show) + drawBarHighlight(hi.series, hi.point); + else + drawPointHighlight(hi.series, hi.point); + } + octx.restore(); + + executeHooks(hooks.drawOverlay, [octx]); + } + + function highlight(s, point, auto) { + if (typeof s == "number") + s = series[s]; + + if (typeof point == "number") { + var ps = s.datapoints.pointsize; + point = s.datapoints.points.slice(ps * point, ps * (point + 1)); + } + + var i = indexOfHighlight(s, point); + if (i == -1) { + highlights.push({ series: s, point: point, auto: auto }); + + triggerRedrawOverlay(); + } + else if (!auto) + highlights[i].auto = false; + } + + function unhighlight(s, point) { + if (s == null && point == null) { + highlights = []; + triggerRedrawOverlay(); + return; + } + + if (typeof s == "number") + s = series[s]; + + if (typeof point == "number") { + var ps = s.datapoints.pointsize; + point = s.datapoints.points.slice(ps * point, ps * (point + 1)); + } + + var i = indexOfHighlight(s, point); + if (i != -1) { + highlights.splice(i, 1); + + triggerRedrawOverlay(); + } + } + + function indexOfHighlight(s, p) { + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.series == s && h.point[0] == p[0] + && h.point[1] == p[1]) + return i; + } + return -1; + } + + function drawPointHighlight(series, point) { + var x = point[0], y = point[1], + axisx = series.xaxis, axisy = series.yaxis, + highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(); + + if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) + return; + + var pointRadius = series.points.radius + series.points.lineWidth / 2; + octx.lineWidth = pointRadius; + octx.strokeStyle = highlightColor; + var radius = 1.5 * pointRadius; + x = axisx.p2c(x); + y = axisy.p2c(y); + + octx.beginPath(); + if (series.points.symbol == "circle") + octx.arc(x, y, radius, 0, 2 * Math.PI, false); + else + series.points.symbol(octx, x, y, radius, false); + octx.closePath(); + octx.stroke(); + } + + function drawBarHighlight(series, point) { + var highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(), + fillStyle = highlightColor, + barLeft; + + switch (series.bars.align) { + case "left": + barLeft = 0; + break; + case "right": + barLeft = -series.bars.barWidth; + break; + default: + barLeft = -series.bars.barWidth / 2; + } + + octx.lineWidth = series.bars.lineWidth; + octx.strokeStyle = highlightColor; + + drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth, + function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth); + } + + function getColorOrGradient(spec, bottom, top, defaultColor) { + if (typeof spec == "string") + return spec; + else { + // assume this is a gradient spec; IE currently only + // supports a simple vertical gradient properly, so that's + // what we support too + var gradient = ctx.createLinearGradient(0, top, 0, bottom); + + for (var i = 0, l = spec.colors.length; i < l; ++i) { + var c = spec.colors[i]; + if (typeof c != "string") { + var co = $.color.parse(defaultColor); + if (c.brightness != null) + co = co.scale('rgb', c.brightness); + if (c.opacity != null) + co.a *= c.opacity; + c = co.toString(); + } + gradient.addColorStop(i / (l - 1), c); + } + + return gradient; + } + } + } + + // Add the plot function to the top level of the jQuery object + + $.plot = function(placeholder, data, options) { + //var t0 = new Date(); + var plot = new Plot($(placeholder), data, options, $.plot.plugins); + //(window.console ? console.log : alert)("time used (msecs): " + ((new Date()).getTime() - t0.getTime())); + return plot; + }; + + $.plot.version = "0.8.3"; + + $.plot.plugins = []; + + // Also add the plot function as a chainable property + + $.fn.plot = function(data, options) { + return this.each(function() { + $.plot(this, data, options); + }); + }; + + // round to nearby lower multiple of base + function floorInBase(n, base) { + return base * Math.floor(n / base); + } + +})(jQuery); diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.navigate.js b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.navigate.js new file mode 100644 index 0000000..b8bfdd5 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.navigate.js @@ -0,0 +1,346 @@ +/* Flot plugin for adding the ability to pan and zoom the plot. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +The default behaviour is double click and scrollwheel up/down to zoom in, drag +to pan. The plugin defines plot.zoom({ center }), plot.zoomOut() and +plot.pan( offset ) so you easily can add custom controls. It also fires +"plotpan" and "plotzoom" events, useful for synchronizing plots. + +The plugin supports these options: + + zoom: { + interactive: false + trigger: "dblclick" // or "click" for single click + amount: 1.5 // 2 = 200% (zoom in), 0.5 = 50% (zoom out) + } + + pan: { + interactive: false + cursor: "move" // CSS mouse cursor value used when dragging, e.g. "pointer" + frameRate: 20 + } + + xaxis, yaxis, x2axis, y2axis: { + zoomRange: null // or [ number, number ] (min range, max range) or false + panRange: null // or [ number, number ] (min, max) or false + } + +"interactive" enables the built-in drag/click behaviour. If you enable +interactive for pan, then you'll have a basic plot that supports moving +around; the same for zoom. + +"amount" specifies the default amount to zoom in (so 1.5 = 150%) relative to +the current viewport. + +"cursor" is a standard CSS mouse cursor string used for visual feedback to the +user when dragging. + +"frameRate" specifies the maximum number of times per second the plot will +update itself while the user is panning around on it (set to null to disable +intermediate pans, the plot will then not update until the mouse button is +released). + +"zoomRange" is the interval in which zooming can happen, e.g. with zoomRange: +[1, 100] the zoom will never scale the axis so that the difference between min +and max is smaller than 1 or larger than 100. You can set either end to null +to ignore, e.g. [1, null]. If you set zoomRange to false, zooming on that axis +will be disabled. + +"panRange" confines the panning to stay within a range, e.g. with panRange: +[-10, 20] panning stops at -10 in one end and at 20 in the other. Either can +be null, e.g. [-10, null]. If you set panRange to false, panning on that axis +will be disabled. + +Example API usage: + + plot = $.plot(...); + + // zoom default amount in on the pixel ( 10, 20 ) + plot.zoom({ center: { left: 10, top: 20 } }); + + // zoom out again + plot.zoomOut({ center: { left: 10, top: 20 } }); + + // zoom 200% in on the pixel (10, 20) + plot.zoom({ amount: 2, center: { left: 10, top: 20 } }); + + // pan 100 pixels to the left and 20 down + plot.pan({ left: -100, top: 20 }) + +Here, "center" specifies where the center of the zooming should happen. Note +that this is defined in pixel space, not the space of the data points (you can +use the p2c helpers on the axes in Flot to help you convert between these). + +"amount" is the amount to zoom the viewport relative to the current range, so +1 is 100% (i.e. no change), 1.5 is 150% (zoom in), 0.7 is 70% (zoom out). You +can set the default in the options. + +*/ + +// First two dependencies, jquery.event.drag.js and +// jquery.mousewheel.js, we put them inline here to save people the +// effort of downloading them. + +/* +jquery.event.drag.js ~ v1.5 ~ Copyright (c) 2008, Three Dub Media (http://threedubmedia.com) +Licensed under the MIT License ~ http://threedubmedia.googlecode.com/files/MIT-LICENSE.txt +*/ +(function(a){function e(h){var k,j=this,l=h.data||{};if(l.elem)j=h.dragTarget=l.elem,h.dragProxy=d.proxy||j,h.cursorOffsetX=l.pageX-l.left,h.cursorOffsetY=l.pageY-l.top,h.offsetX=h.pageX-h.cursorOffsetX,h.offsetY=h.pageY-h.cursorOffsetY;else if(d.dragging||l.which>0&&h.which!=l.which||a(h.target).is(l.not))return;switch(h.type){case"mousedown":return a.extend(l,a(j).offset(),{elem:j,target:h.target,pageX:h.pageX,pageY:h.pageY}),b.add(document,"mousemove mouseup",e,l),i(j,!1),d.dragging=null,!1;case!d.dragging&&"mousemove":if(g(h.pageX-l.pageX)+g(h.pageY-l.pageY) max) { + // make sure min < max + var tmp = min; + min = max; + max = tmp; + } + + //Check that we are in panRange + if (pr) { + if (pr[0] != null && min < pr[0]) { + min = pr[0]; + } + if (pr[1] != null && max > pr[1]) { + max = pr[1]; + } + } + + var range = max - min; + if (zr && + ((zr[0] != null && range < zr[0] && amount >1) || + (zr[1] != null && range > zr[1] && amount <1))) + return; + + opts.min = min; + opts.max = max; + }); + + plot.setupGrid(); + plot.draw(); + + if (!args.preventEvent) + plot.getPlaceholder().trigger("plotzoom", [ plot, args ]); + }; + + plot.pan = function (args) { + var delta = { + x: +args.left, + y: +args.top + }; + + if (isNaN(delta.x)) + delta.x = 0; + if (isNaN(delta.y)) + delta.y = 0; + + $.each(plot.getAxes(), function (_, axis) { + var opts = axis.options, + min, max, d = delta[axis.direction]; + + min = axis.c2p(axis.p2c(axis.min) + d), + max = axis.c2p(axis.p2c(axis.max) + d); + + var pr = opts.panRange; + if (pr === false) // no panning on this axis + return; + + if (pr) { + // check whether we hit the wall + if (pr[0] != null && pr[0] > min) { + d = pr[0] - min; + min += d; + max += d; + } + + if (pr[1] != null && pr[1] < max) { + d = pr[1] - max; + min += d; + max += d; + } + } + + opts.min = min; + opts.max = max; + }); + + plot.setupGrid(); + plot.draw(); + + if (!args.preventEvent) + plot.getPlaceholder().trigger("plotpan", [ plot, args ]); + }; + + function shutdown(plot, eventHolder) { + eventHolder.unbind(plot.getOptions().zoom.trigger, onZoomClick); + eventHolder.unbind("mousewheel", onMouseWheel); + eventHolder.unbind("dragstart", onDragStart); + eventHolder.unbind("drag", onDrag); + eventHolder.unbind("dragend", onDragEnd); + if (panTimeout) + clearTimeout(panTimeout); + } + + plot.hooks.bindEvents.push(bindEvents); + plot.hooks.shutdown.push(shutdown); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'navigate', + version: '1.3' + }); +})(jQuery); diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.pie.js b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.pie.js new file mode 100644 index 0000000..524ee72 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.pie.js @@ -0,0 +1,820 @@ +/* Flot plugin for rendering pie charts. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +The plugin assumes that each series has a single data value, and that each +value is a positive integer or zero. Negative numbers don't make sense for a +pie chart, and have unpredictable results. The values do NOT need to be +passed in as percentages; the plugin will calculate the total and per-slice +percentages internally. + +* Created by Brian Medendorp + +* Updated with contributions from btburnett3, Anthony Aragues and Xavi Ivars + +The plugin supports these options: + + series: { + pie: { + show: true/false + radius: 0-1 for percentage of fullsize, or a specified pixel length, or 'auto' + innerRadius: 0-1 for percentage of fullsize or a specified pixel length, for creating a donut effect + startAngle: 0-2 factor of PI used for starting angle (in radians) i.e 3/2 starts at the top, 0 and 2 have the same result + tilt: 0-1 for percentage to tilt the pie, where 1 is no tilt, and 0 is completely flat (nothing will show) + offset: { + top: integer value to move the pie up or down + left: integer value to move the pie left or right, or 'auto' + }, + stroke: { + color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#FFF') + width: integer pixel width of the stroke + }, + label: { + show: true/false, or 'auto' + formatter: a user-defined function that modifies the text/style of the label text + radius: 0-1 for percentage of fullsize, or a specified pixel length + background: { + color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#000') + opacity: 0-1 + }, + threshold: 0-1 for the percentage value at which to hide labels (if they're too small) + }, + combine: { + threshold: 0-1 for the percentage value at which to combine slices (if they're too small) + color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#CCC'), if null, the plugin will automatically use the color of the first slice to be combined + label: any text value of what the combined slice should be labeled + } + highlight: { + opacity: 0-1 + } + } + } + +More detail and specific examples can be found in the included HTML file. + +*/ + +(function($) { + + // Maximum redraw attempts when fitting labels within the plot + + var REDRAW_ATTEMPTS = 10; + + // Factor by which to shrink the pie when fitting labels within the plot + + var REDRAW_SHRINK = 0.95; + + function init(plot) { + + var canvas = null, + target = null, + options = null, + maxRadius = null, + centerLeft = null, + centerTop = null, + processed = false, + ctx = null; + + // interactive variables + + var highlights = []; + + // add hook to determine if pie plugin in enabled, and then perform necessary operations + + plot.hooks.processOptions.push(function(plot, options) { + if (options.series.pie.show) { + + options.grid.show = false; + + // set labels.show + + if (options.series.pie.label.show == "auto") { + if (options.legend.show) { + options.series.pie.label.show = false; + } else { + options.series.pie.label.show = true; + } + } + + // set radius + + if (options.series.pie.radius == "auto") { + if (options.series.pie.label.show) { + options.series.pie.radius = 3/4; + } else { + options.series.pie.radius = 1; + } + } + + // ensure sane tilt + + if (options.series.pie.tilt > 1) { + options.series.pie.tilt = 1; + } else if (options.series.pie.tilt < 0) { + options.series.pie.tilt = 0; + } + } + }); + + plot.hooks.bindEvents.push(function(plot, eventHolder) { + var options = plot.getOptions(); + if (options.series.pie.show) { + if (options.grid.hoverable) { + eventHolder.unbind("mousemove").mousemove(onMouseMove); + } + if (options.grid.clickable) { + eventHolder.unbind("click").click(onClick); + } + } + }); + + plot.hooks.processDatapoints.push(function(plot, series, data, datapoints) { + var options = plot.getOptions(); + if (options.series.pie.show) { + processDatapoints(plot, series, data, datapoints); + } + }); + + plot.hooks.drawOverlay.push(function(plot, octx) { + var options = plot.getOptions(); + if (options.series.pie.show) { + drawOverlay(plot, octx); + } + }); + + plot.hooks.draw.push(function(plot, newCtx) { + var options = plot.getOptions(); + if (options.series.pie.show) { + draw(plot, newCtx); + } + }); + + function processDatapoints(plot, series, datapoints) { + if (!processed) { + processed = true; + canvas = plot.getCanvas(); + target = $(canvas).parent(); + options = plot.getOptions(); + plot.setData(combine(plot.getData())); + } + } + + function combine(data) { + + var total = 0, + combined = 0, + numCombined = 0, + color = options.series.pie.combine.color, + newdata = []; + + // Fix up the raw data from Flot, ensuring the data is numeric + + for (var i = 0; i < data.length; ++i) { + + var value = data[i].data; + + // If the data is an array, we'll assume that it's a standard + // Flot x-y pair, and are concerned only with the second value. + + // Note how we use the original array, rather than creating a + // new one; this is more efficient and preserves any extra data + // that the user may have stored in higher indexes. + + if ($.isArray(value) && value.length == 1) { + value = value[0]; + } + + if ($.isArray(value)) { + // Equivalent to $.isNumeric() but compatible with jQuery < 1.7 + if (!isNaN(parseFloat(value[1])) && isFinite(value[1])) { + value[1] = +value[1]; + } else { + value[1] = 0; + } + } else if (!isNaN(parseFloat(value)) && isFinite(value)) { + value = [1, +value]; + } else { + value = [1, 0]; + } + + data[i].data = [value]; + } + + // Sum up all the slices, so we can calculate percentages for each + + for (var i = 0; i < data.length; ++i) { + total += data[i].data[0][1]; + } + + // Count the number of slices with percentages below the combine + // threshold; if it turns out to be just one, we won't combine. + + for (var i = 0; i < data.length; ++i) { + var value = data[i].data[0][1]; + if (value / total <= options.series.pie.combine.threshold) { + combined += value; + numCombined++; + if (!color) { + color = data[i].color; + } + } + } + + for (var i = 0; i < data.length; ++i) { + var value = data[i].data[0][1]; + if (numCombined < 2 || value / total > options.series.pie.combine.threshold) { + newdata.push( + $.extend(data[i], { /* extend to allow keeping all other original data values + and using them e.g. in labelFormatter. */ + data: [[1, value]], + color: data[i].color, + label: data[i].label, + angle: value * Math.PI * 2 / total, + percent: value / (total / 100) + }) + ); + } + } + + if (numCombined > 1) { + newdata.push({ + data: [[1, combined]], + color: color, + label: options.series.pie.combine.label, + angle: combined * Math.PI * 2 / total, + percent: combined / (total / 100) + }); + } + + return newdata; + } + + function draw(plot, newCtx) { + + if (!target) { + return; // if no series were passed + } + + var canvasWidth = plot.getPlaceholder().width(), + canvasHeight = plot.getPlaceholder().height(), + legendWidth = target.children().filter(".legend").children().width() || 0; + + ctx = newCtx; + + // WARNING: HACK! REWRITE THIS CODE AS SOON AS POSSIBLE! + + // When combining smaller slices into an 'other' slice, we need to + // add a new series. Since Flot gives plugins no way to modify the + // list of series, the pie plugin uses a hack where the first call + // to processDatapoints results in a call to setData with the new + // list of series, then subsequent processDatapoints do nothing. + + // The plugin-global 'processed' flag is used to control this hack; + // it starts out false, and is set to true after the first call to + // processDatapoints. + + // Unfortunately this turns future setData calls into no-ops; they + // call processDatapoints, the flag is true, and nothing happens. + + // To fix this we'll set the flag back to false here in draw, when + // all series have been processed, so the next sequence of calls to + // processDatapoints once again starts out with a slice-combine. + // This is really a hack; in 0.9 we need to give plugins a proper + // way to modify series before any processing begins. + + processed = false; + + // calculate maximum radius and center point + + maxRadius = Math.min(canvasWidth, canvasHeight / options.series.pie.tilt) / 2; + centerTop = canvasHeight / 2 + options.series.pie.offset.top; + centerLeft = canvasWidth / 2; + + if (options.series.pie.offset.left == "auto") { + if (options.legend.position.match("w")) { + centerLeft += legendWidth / 2; + } else { + centerLeft -= legendWidth / 2; + } + if (centerLeft < maxRadius) { + centerLeft = maxRadius; + } else if (centerLeft > canvasWidth - maxRadius) { + centerLeft = canvasWidth - maxRadius; + } + } else { + centerLeft += options.series.pie.offset.left; + } + + var slices = plot.getData(), + attempts = 0; + + // Keep shrinking the pie's radius until drawPie returns true, + // indicating that all the labels fit, or we try too many times. + + do { + if (attempts > 0) { + maxRadius *= REDRAW_SHRINK; + } + attempts += 1; + clear(); + if (options.series.pie.tilt <= 0.8) { + drawShadow(); + } + } while (!drawPie() && attempts < REDRAW_ATTEMPTS) + + if (attempts >= REDRAW_ATTEMPTS) { + clear(); + target.prepend("
Could not draw pie with labels contained inside canvas
"); + } + + if (plot.setSeries && plot.insertLegend) { + plot.setSeries(slices); + plot.insertLegend(); + } + + // we're actually done at this point, just defining internal functions at this point + + function clear() { + ctx.clearRect(0, 0, canvasWidth, canvasHeight); + target.children().filter(".pieLabel, .pieLabelBackground").remove(); + } + + function drawShadow() { + + var shadowLeft = options.series.pie.shadow.left; + var shadowTop = options.series.pie.shadow.top; + var edge = 10; + var alpha = options.series.pie.shadow.alpha; + var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; + + if (radius >= canvasWidth / 2 - shadowLeft || radius * options.series.pie.tilt >= canvasHeight / 2 - shadowTop || radius <= edge) { + return; // shadow would be outside canvas, so don't draw it + } + + ctx.save(); + ctx.translate(shadowLeft,shadowTop); + ctx.globalAlpha = alpha; + ctx.fillStyle = "#000"; + + // center and rotate to starting position + + ctx.translate(centerLeft,centerTop); + ctx.scale(1, options.series.pie.tilt); + + //radius -= edge; + + for (var i = 1; i <= edge; i++) { + ctx.beginPath(); + ctx.arc(0, 0, radius, 0, Math.PI * 2, false); + ctx.fill(); + radius -= i; + } + + ctx.restore(); + } + + function drawPie() { + + var startAngle = Math.PI * options.series.pie.startAngle; + var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; + + // center and rotate to starting position + + ctx.save(); + ctx.translate(centerLeft,centerTop); + ctx.scale(1, options.series.pie.tilt); + //ctx.rotate(startAngle); // start at top; -- This doesn't work properly in Opera + + // draw slices + + ctx.save(); + var currentAngle = startAngle; + for (var i = 0; i < slices.length; ++i) { + slices[i].startAngle = currentAngle; + drawSlice(slices[i].angle, slices[i].color, true); + } + ctx.restore(); + + // draw slice outlines + + if (options.series.pie.stroke.width > 0) { + ctx.save(); + ctx.lineWidth = options.series.pie.stroke.width; + currentAngle = startAngle; + for (var i = 0; i < slices.length; ++i) { + drawSlice(slices[i].angle, options.series.pie.stroke.color, false); + } + ctx.restore(); + } + + // draw donut hole + + drawDonutHole(ctx); + + ctx.restore(); + + // Draw the labels, returning true if they fit within the plot + + if (options.series.pie.label.show) { + return drawLabels(); + } else return true; + + function drawSlice(angle, color, fill) { + + if (angle <= 0 || isNaN(angle)) { + return; + } + + if (fill) { + ctx.fillStyle = color; + } else { + ctx.strokeStyle = color; + ctx.lineJoin = "round"; + } + + ctx.beginPath(); + if (Math.abs(angle - Math.PI * 2) > 0.000000001) { + ctx.moveTo(0, 0); // Center of the pie + } + + //ctx.arc(0, 0, radius, 0, angle, false); // This doesn't work properly in Opera + ctx.arc(0, 0, radius,currentAngle, currentAngle + angle / 2, false); + ctx.arc(0, 0, radius,currentAngle + angle / 2, currentAngle + angle, false); + ctx.closePath(); + //ctx.rotate(angle); // This doesn't work properly in Opera + currentAngle += angle; + + if (fill) { + ctx.fill(); + } else { + ctx.stroke(); + } + } + + function drawLabels() { + + var currentAngle = startAngle; + var radius = options.series.pie.label.radius > 1 ? options.series.pie.label.radius : maxRadius * options.series.pie.label.radius; + + for (var i = 0; i < slices.length; ++i) { + if (slices[i].percent >= options.series.pie.label.threshold * 100) { + if (!drawLabel(slices[i], currentAngle, i)) { + return false; + } + } + currentAngle += slices[i].angle; + } + + return true; + + function drawLabel(slice, startAngle, index) { + + if (slice.data[0][1] == 0) { + return true; + } + + // format label text + + var lf = options.legend.labelFormatter, text, plf = options.series.pie.label.formatter; + + if (lf) { + text = lf(slice.label, slice); + } else { + text = slice.label; + } + + if (plf) { + text = plf(text, slice); + } + + var halfAngle = ((startAngle + slice.angle) + startAngle) / 2; + var x = centerLeft + Math.round(Math.cos(halfAngle) * radius); + var y = centerTop + Math.round(Math.sin(halfAngle) * radius) * options.series.pie.tilt; + + var html = "" + text + ""; + target.append(html); + + var label = target.children("#pieLabel" + index); + var labelTop = (y - label.height() / 2); + var labelLeft = (x - label.width() / 2); + + label.css("top", labelTop); + label.css("left", labelLeft); + + // check to make sure that the label is not outside the canvas + + if (0 - labelTop > 0 || 0 - labelLeft > 0 || canvasHeight - (labelTop + label.height()) < 0 || canvasWidth - (labelLeft + label.width()) < 0) { + return false; + } + + if (options.series.pie.label.background.opacity != 0) { + + // put in the transparent background separately to avoid blended labels and label boxes + + var c = options.series.pie.label.background.color; + + if (c == null) { + c = slice.color; + } + + var pos = "top:" + labelTop + "px;left:" + labelLeft + "px;"; + $("
") + .css("opacity", options.series.pie.label.background.opacity) + .insertBefore(label); + } + + return true; + } // end individual label function + } // end drawLabels function + } // end drawPie function + } // end draw function + + // Placed here because it needs to be accessed from multiple locations + + function drawDonutHole(layer) { + if (options.series.pie.innerRadius > 0) { + + // subtract the center + + layer.save(); + var innerRadius = options.series.pie.innerRadius > 1 ? options.series.pie.innerRadius : maxRadius * options.series.pie.innerRadius; + layer.globalCompositeOperation = "destination-out"; // this does not work with excanvas, but it will fall back to using the stroke color + layer.beginPath(); + layer.fillStyle = options.series.pie.stroke.color; + layer.arc(0, 0, innerRadius, 0, Math.PI * 2, false); + layer.fill(); + layer.closePath(); + layer.restore(); + + // add inner stroke + + layer.save(); + layer.beginPath(); + layer.strokeStyle = options.series.pie.stroke.color; + layer.arc(0, 0, innerRadius, 0, Math.PI * 2, false); + layer.stroke(); + layer.closePath(); + layer.restore(); + + // TODO: add extra shadow inside hole (with a mask) if the pie is tilted. + } + } + + //-- Additional Interactive related functions -- + + function isPointInPoly(poly, pt) { + for(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i) + ((poly[i][1] <= pt[1] && pt[1] < poly[j][1]) || (poly[j][1] <= pt[1] && pt[1]< poly[i][1])) + && (pt[0] < (poly[j][0] - poly[i][0]) * (pt[1] - poly[i][1]) / (poly[j][1] - poly[i][1]) + poly[i][0]) + && (c = !c); + return c; + } + + function findNearbySlice(mouseX, mouseY) { + + var slices = plot.getData(), + options = plot.getOptions(), + radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius, + x, y; + + for (var i = 0; i < slices.length; ++i) { + + var s = slices[i]; + + if (s.pie.show) { + + ctx.save(); + ctx.beginPath(); + ctx.moveTo(0, 0); // Center of the pie + //ctx.scale(1, options.series.pie.tilt); // this actually seems to break everything when here. + ctx.arc(0, 0, radius, s.startAngle, s.startAngle + s.angle / 2, false); + ctx.arc(0, 0, radius, s.startAngle + s.angle / 2, s.startAngle + s.angle, false); + ctx.closePath(); + x = mouseX - centerLeft; + y = mouseY - centerTop; + + if (ctx.isPointInPath) { + if (ctx.isPointInPath(mouseX - centerLeft, mouseY - centerTop)) { + ctx.restore(); + return { + datapoint: [s.percent, s.data], + dataIndex: 0, + series: s, + seriesIndex: i + }; + } + } else { + + // excanvas for IE doesn;t support isPointInPath, this is a workaround. + + var p1X = radius * Math.cos(s.startAngle), + p1Y = radius * Math.sin(s.startAngle), + p2X = radius * Math.cos(s.startAngle + s.angle / 4), + p2Y = radius * Math.sin(s.startAngle + s.angle / 4), + p3X = radius * Math.cos(s.startAngle + s.angle / 2), + p3Y = radius * Math.sin(s.startAngle + s.angle / 2), + p4X = radius * Math.cos(s.startAngle + s.angle / 1.5), + p4Y = radius * Math.sin(s.startAngle + s.angle / 1.5), + p5X = radius * Math.cos(s.startAngle + s.angle), + p5Y = radius * Math.sin(s.startAngle + s.angle), + arrPoly = [[0, 0], [p1X, p1Y], [p2X, p2Y], [p3X, p3Y], [p4X, p4Y], [p5X, p5Y]], + arrPoint = [x, y]; + + // TODO: perhaps do some mathmatical trickery here with the Y-coordinate to compensate for pie tilt? + + if (isPointInPoly(arrPoly, arrPoint)) { + ctx.restore(); + return { + datapoint: [s.percent, s.data], + dataIndex: 0, + series: s, + seriesIndex: i + }; + } + } + + ctx.restore(); + } + } + + return null; + } + + function onMouseMove(e) { + triggerClickHoverEvent("plothover", e); + } + + function onClick(e) { + triggerClickHoverEvent("plotclick", e); + } + + // trigger click or hover event (they send the same parameters so we share their code) + + function triggerClickHoverEvent(eventname, e) { + + var offset = plot.offset(); + var canvasX = parseInt(e.pageX - offset.left); + var canvasY = parseInt(e.pageY - offset.top); + var item = findNearbySlice(canvasX, canvasY); + + if (options.grid.autoHighlight) { + + // clear auto-highlights + + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.auto == eventname && !(item && h.series == item.series)) { + unhighlight(h.series); + } + } + } + + // highlight the slice + + if (item) { + highlight(item.series, eventname); + } + + // trigger any hover bind events + + var pos = { pageX: e.pageX, pageY: e.pageY }; + target.trigger(eventname, [pos, item]); + } + + function highlight(s, auto) { + //if (typeof s == "number") { + // s = series[s]; + //} + + var i = indexOfHighlight(s); + + if (i == -1) { + highlights.push({ series: s, auto: auto }); + plot.triggerRedrawOverlay(); + } else if (!auto) { + highlights[i].auto = false; + } + } + + function unhighlight(s) { + if (s == null) { + highlights = []; + plot.triggerRedrawOverlay(); + } + + //if (typeof s == "number") { + // s = series[s]; + //} + + var i = indexOfHighlight(s); + + if (i != -1) { + highlights.splice(i, 1); + plot.triggerRedrawOverlay(); + } + } + + function indexOfHighlight(s) { + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.series == s) + return i; + } + return -1; + } + + function drawOverlay(plot, octx) { + + var options = plot.getOptions(); + + var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; + + octx.save(); + octx.translate(centerLeft, centerTop); + octx.scale(1, options.series.pie.tilt); + + for (var i = 0; i < highlights.length; ++i) { + drawHighlight(highlights[i].series); + } + + drawDonutHole(octx); + + octx.restore(); + + function drawHighlight(series) { + + if (series.angle <= 0 || isNaN(series.angle)) { + return; + } + + //octx.fillStyle = parseColor(options.series.pie.highlight.color).scale(null, null, null, options.series.pie.highlight.opacity).toString(); + octx.fillStyle = "rgba(255, 255, 255, " + options.series.pie.highlight.opacity + ")"; // this is temporary until we have access to parseColor + octx.beginPath(); + if (Math.abs(series.angle - Math.PI * 2) > 0.000000001) { + octx.moveTo(0, 0); // Center of the pie + } + octx.arc(0, 0, radius, series.startAngle, series.startAngle + series.angle / 2, false); + octx.arc(0, 0, radius, series.startAngle + series.angle / 2, series.startAngle + series.angle, false); + octx.closePath(); + octx.fill(); + } + } + } // end init (plugin body) + + // define pie specific options and their default values + + var options = { + series: { + pie: { + show: false, + radius: "auto", // actual radius of the visible pie (based on full calculated radius if <=1, or hard pixel value) + innerRadius: 0, /* for donut */ + startAngle: 3/2, + tilt: 1, + shadow: { + left: 5, // shadow left offset + top: 15, // shadow top offset + alpha: 0.02 // shadow alpha + }, + offset: { + top: 0, + left: "auto" + }, + stroke: { + color: "#fff", + width: 1 + }, + label: { + show: "auto", + formatter: function(label, slice) { + return "
" + label + "
" + Math.round(slice.percent) + "%
"; + }, // formatter function + radius: 1, // radius at which to place the labels (based on full calculated radius if <=1, or hard pixel value) + background: { + color: null, + opacity: 0 + }, + threshold: 0 // percentage at which to hide the label (i.e. the slice is too narrow) + }, + combine: { + threshold: -1, // percentage at which to combine little slices into one larger slice + color: null, // color to give the new slice (auto-generated if null) + label: "Other" // label to give the new slice + }, + highlight: { + //color: "#fff", // will add this functionality once parseColor is available + opacity: 0.5 + } + } + } + }; + + $.plot.plugins.push({ + init: init, + options: options, + name: "pie", + version: "1.1" + }); + +})(jQuery); diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.resize.js b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.resize.js new file mode 100644 index 0000000..a1a6894 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.resize.js @@ -0,0 +1,59 @@ +/* Flot plugin for automatically redrawing plots as the placeholder resizes. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +It works by listening for changes on the placeholder div (through the jQuery +resize event plugin) - if the size changes, it will redraw the plot. + +There are no options. If you need to disable the plugin for some plots, you +can just fix the size of their placeholders. + +*/ + +/* Inline dependency: + * jQuery resize event - v1.1 - 3/14/2010 + * http://benalman.com/projects/jquery-resize-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,t){"$:nomunge";var i=[],n=$.resize=$.extend($.resize,{}),a,r=false,s="setTimeout",u="resize",m=u+"-special-event",o="pendingDelay",l="activeDelay",f="throttleWindow";n[o]=200;n[l]=20;n[f]=true;$.event.special[u]={setup:function(){if(!n[f]&&this[s]){return false}var e=$(this);i.push(this);e.data(m,{w:e.width(),h:e.height()});if(i.length===1){a=t;h()}},teardown:function(){if(!n[f]&&this[s]){return false}var e=$(this);for(var t=i.length-1;t>=0;t--){if(i[t]==this){i.splice(t,1);break}}e.removeData(m);if(!i.length){if(r){cancelAnimationFrame(a)}else{clearTimeout(a)}a=null}},add:function(e){if(!n[f]&&this[s]){return false}var i;function a(e,n,a){var r=$(this),s=r.data(m)||{};s.w=n!==t?n:r.width();s.h=a!==t?a:r.height();i.apply(this,arguments)}if($.isFunction(e)){i=e;return a}else{i=e.handler;e.handler=a}}};function h(t){if(r===true){r=t||1}for(var s=i.length-1;s>=0;s--){var l=$(i[s]);if(l[0]==e||l.is(":visible")){var f=l.width(),c=l.height(),d=l.data(m);if(d&&(f!==d.w||c!==d.h)){l.trigger(u,[d.w=f,d.h=c]);r=t||true}}else{d=l.data(m);d.w=0;d.h=0}}if(a!==null){if(r&&(t==null||t-r<1e3)){a=e.requestAnimationFrame(h)}else{a=setTimeout(h,n[o]);r=false}}}if(!e.requestAnimationFrame){e.requestAnimationFrame=function(){return e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t,i){return e.setTimeout(function(){t((new Date).getTime())},n[l])}}()}if(!e.cancelAnimationFrame){e.cancelAnimationFrame=function(){return e.webkitCancelRequestAnimationFrame||e.mozCancelRequestAnimationFrame||e.oCancelRequestAnimationFrame||e.msCancelRequestAnimationFrame||clearTimeout}()}})(jQuery,this); + +(function ($) { + var options = { }; // no options + + function init(plot) { + function onResize() { + var placeholder = plot.getPlaceholder(); + + // somebody might have hidden us and we can't plot + // when we don't have the dimensions + if (placeholder.width() == 0 || placeholder.height() == 0) + return; + + plot.resize(); + plot.setupGrid(); + plot.draw(); + } + + function bindEvents(plot, eventHolder) { + plot.getPlaceholder().resize(onResize); + } + + function shutdown(plot, eventHolder) { + plot.getPlaceholder().unbind("resize", onResize); + } + + plot.hooks.bindEvents.push(bindEvents); + plot.hooks.shutdown.push(shutdown); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'resize', + version: '1.0' + }); +})(jQuery); diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.selection.js b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.selection.js new file mode 100644 index 0000000..6608b54 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.selection.js @@ -0,0 +1,360 @@ +/* Flot plugin for selecting regions of a plot. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +The plugin supports these options: + +selection: { + mode: null or "x" or "y" or "xy", + color: color, + shape: "round" or "miter" or "bevel", + minSize: number of pixels +} + +Selection support is enabled by setting the mode to one of "x", "y" or "xy". +In "x" mode, the user will only be able to specify the x range, similarly for +"y" mode. For "xy", the selection becomes a rectangle where both ranges can be +specified. "color" is color of the selection (if you need to change the color +later on, you can get to it with plot.getOptions().selection.color). "shape" +is the shape of the corners of the selection. + +"minSize" is the minimum size a selection can be in pixels. This value can +be customized to determine the smallest size a selection can be and still +have the selection rectangle be displayed. When customizing this value, the +fact that it refers to pixels, not axis units must be taken into account. +Thus, for example, if there is a bar graph in time mode with BarWidth set to 1 +minute, setting "minSize" to 1 will not make the minimum selection size 1 +minute, but rather 1 pixel. Note also that setting "minSize" to 0 will prevent +"plotunselected" events from being fired when the user clicks the mouse without +dragging. + +When selection support is enabled, a "plotselected" event will be emitted on +the DOM element you passed into the plot function. The event handler gets a +parameter with the ranges selected on the axes, like this: + + placeholder.bind( "plotselected", function( event, ranges ) { + alert("You selected " + ranges.xaxis.from + " to " + ranges.xaxis.to) + // similar for yaxis - with multiple axes, the extra ones are in + // x2axis, x3axis, ... + }); + +The "plotselected" event is only fired when the user has finished making the +selection. A "plotselecting" event is fired during the process with the same +parameters as the "plotselected" event, in case you want to know what's +happening while it's happening, + +A "plotunselected" event with no arguments is emitted when the user clicks the +mouse to remove the selection. As stated above, setting "minSize" to 0 will +destroy this behavior. + +The plugin allso adds the following methods to the plot object: + +- setSelection( ranges, preventEvent ) + + Set the selection rectangle. The passed in ranges is on the same form as + returned in the "plotselected" event. If the selection mode is "x", you + should put in either an xaxis range, if the mode is "y" you need to put in + an yaxis range and both xaxis and yaxis if the selection mode is "xy", like + this: + + setSelection({ xaxis: { from: 0, to: 10 }, yaxis: { from: 40, to: 60 } }); + + setSelection will trigger the "plotselected" event when called. If you don't + want that to happen, e.g. if you're inside a "plotselected" handler, pass + true as the second parameter. If you are using multiple axes, you can + specify the ranges on any of those, e.g. as x2axis/x3axis/... instead of + xaxis, the plugin picks the first one it sees. + +- clearSelection( preventEvent ) + + Clear the selection rectangle. Pass in true to avoid getting a + "plotunselected" event. + +- getSelection() + + Returns the current selection in the same format as the "plotselected" + event. If there's currently no selection, the function returns null. + +*/ + +(function ($) { + function init(plot) { + var selection = { + first: { x: -1, y: -1}, second: { x: -1, y: -1}, + show: false, + active: false + }; + + // FIXME: The drag handling implemented here should be + // abstracted out, there's some similar code from a library in + // the navigation plugin, this should be massaged a bit to fit + // the Flot cases here better and reused. Doing this would + // make this plugin much slimmer. + var savedhandlers = {}; + + var mouseUpHandler = null; + + function onMouseMove(e) { + if (selection.active) { + updateSelection(e); + + plot.getPlaceholder().trigger("plotselecting", [ getSelection() ]); + } + } + + function onMouseDown(e) { + if (e.which != 1) // only accept left-click + return; + + // cancel out any text selections + document.body.focus(); + + // prevent text selection and drag in old-school browsers + if (document.onselectstart !== undefined && savedhandlers.onselectstart == null) { + savedhandlers.onselectstart = document.onselectstart; + document.onselectstart = function () { return false; }; + } + if (document.ondrag !== undefined && savedhandlers.ondrag == null) { + savedhandlers.ondrag = document.ondrag; + document.ondrag = function () { return false; }; + } + + setSelectionPos(selection.first, e); + + selection.active = true; + + // this is a bit silly, but we have to use a closure to be + // able to whack the same handler again + mouseUpHandler = function (e) { onMouseUp(e); }; + + $(document).one("mouseup", mouseUpHandler); + } + + function onMouseUp(e) { + mouseUpHandler = null; + + // revert drag stuff for old-school browsers + if (document.onselectstart !== undefined) + document.onselectstart = savedhandlers.onselectstart; + if (document.ondrag !== undefined) + document.ondrag = savedhandlers.ondrag; + + // no more dragging + selection.active = false; + updateSelection(e); + + if (selectionIsSane()) + triggerSelectedEvent(); + else { + // this counts as a clear + plot.getPlaceholder().trigger("plotunselected", [ ]); + plot.getPlaceholder().trigger("plotselecting", [ null ]); + } + + return false; + } + + function getSelection() { + if (!selectionIsSane()) + return null; + + if (!selection.show) return null; + + var r = {}, c1 = selection.first, c2 = selection.second; + $.each(plot.getAxes(), function (name, axis) { + if (axis.used) { + var p1 = axis.c2p(c1[axis.direction]), p2 = axis.c2p(c2[axis.direction]); + r[name] = { from: Math.min(p1, p2), to: Math.max(p1, p2) }; + } + }); + return r; + } + + function triggerSelectedEvent() { + var r = getSelection(); + + plot.getPlaceholder().trigger("plotselected", [ r ]); + + // backwards-compat stuff, to be removed in future + if (r.xaxis && r.yaxis) + plot.getPlaceholder().trigger("selected", [ { x1: r.xaxis.from, y1: r.yaxis.from, x2: r.xaxis.to, y2: r.yaxis.to } ]); + } + + function clamp(min, value, max) { + return value < min ? min: (value > max ? max: value); + } + + function setSelectionPos(pos, e) { + var o = plot.getOptions(); + var offset = plot.getPlaceholder().offset(); + var plotOffset = plot.getPlotOffset(); + pos.x = clamp(0, e.pageX - offset.left - plotOffset.left, plot.width()); + pos.y = clamp(0, e.pageY - offset.top - plotOffset.top, plot.height()); + + if (o.selection.mode == "y") + pos.x = pos == selection.first ? 0 : plot.width(); + + if (o.selection.mode == "x") + pos.y = pos == selection.first ? 0 : plot.height(); + } + + function updateSelection(pos) { + if (pos.pageX == null) + return; + + setSelectionPos(selection.second, pos); + if (selectionIsSane()) { + selection.show = true; + plot.triggerRedrawOverlay(); + } + else + clearSelection(true); + } + + function clearSelection(preventEvent) { + if (selection.show) { + selection.show = false; + plot.triggerRedrawOverlay(); + if (!preventEvent) + plot.getPlaceholder().trigger("plotunselected", [ ]); + } + } + + // function taken from markings support in Flot + function extractRange(ranges, coord) { + var axis, from, to, key, axes = plot.getAxes(); + + for (var k in axes) { + axis = axes[k]; + if (axis.direction == coord) { + key = coord + axis.n + "axis"; + if (!ranges[key] && axis.n == 1) + key = coord + "axis"; // support x1axis as xaxis + if (ranges[key]) { + from = ranges[key].from; + to = ranges[key].to; + break; + } + } + } + + // backwards-compat stuff - to be removed in future + if (!ranges[key]) { + axis = coord == "x" ? plot.getXAxes()[0] : plot.getYAxes()[0]; + from = ranges[coord + "1"]; + to = ranges[coord + "2"]; + } + + // auto-reverse as an added bonus + if (from != null && to != null && from > to) { + var tmp = from; + from = to; + to = tmp; + } + + return { from: from, to: to, axis: axis }; + } + + function setSelection(ranges, preventEvent) { + var axis, range, o = plot.getOptions(); + + if (o.selection.mode == "y") { + selection.first.x = 0; + selection.second.x = plot.width(); + } + else { + range = extractRange(ranges, "x"); + + selection.first.x = range.axis.p2c(range.from); + selection.second.x = range.axis.p2c(range.to); + } + + if (o.selection.mode == "x") { + selection.first.y = 0; + selection.second.y = plot.height(); + } + else { + range = extractRange(ranges, "y"); + + selection.first.y = range.axis.p2c(range.from); + selection.second.y = range.axis.p2c(range.to); + } + + selection.show = true; + plot.triggerRedrawOverlay(); + if (!preventEvent && selectionIsSane()) + triggerSelectedEvent(); + } + + function selectionIsSane() { + var minSize = plot.getOptions().selection.minSize; + return Math.abs(selection.second.x - selection.first.x) >= minSize && + Math.abs(selection.second.y - selection.first.y) >= minSize; + } + + plot.clearSelection = clearSelection; + plot.setSelection = setSelection; + plot.getSelection = getSelection; + + plot.hooks.bindEvents.push(function(plot, eventHolder) { + var o = plot.getOptions(); + if (o.selection.mode != null) { + eventHolder.mousemove(onMouseMove); + eventHolder.mousedown(onMouseDown); + } + }); + + + plot.hooks.drawOverlay.push(function (plot, ctx) { + // draw selection + if (selection.show && selectionIsSane()) { + var plotOffset = plot.getPlotOffset(); + var o = plot.getOptions(); + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + var c = $.color.parse(o.selection.color); + + ctx.strokeStyle = c.scale('a', 0.8).toString(); + ctx.lineWidth = 1; + ctx.lineJoin = o.selection.shape; + ctx.fillStyle = c.scale('a', 0.4).toString(); + + var x = Math.min(selection.first.x, selection.second.x) + 0.5, + y = Math.min(selection.first.y, selection.second.y) + 0.5, + w = Math.abs(selection.second.x - selection.first.x) - 1, + h = Math.abs(selection.second.y - selection.first.y) - 1; + + ctx.fillRect(x, y, w, h); + ctx.strokeRect(x, y, w, h); + + ctx.restore(); + } + }); + + plot.hooks.shutdown.push(function (plot, eventHolder) { + eventHolder.unbind("mousemove", onMouseMove); + eventHolder.unbind("mousedown", onMouseDown); + + if (mouseUpHandler) + $(document).unbind("mouseup", mouseUpHandler); + }); + + } + + $.plot.plugins.push({ + init: init, + options: { + selection: { + mode: null, // one of null, "x", "y" or "xy" + color: "#e8cfac", + shape: "round", // one of "round", "miter", or "bevel" + minSize: 5 // minimum number of pixels + } + }, + name: 'selection', + version: '1.1' + }); +})(jQuery); diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.stack.js b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.stack.js new file mode 100644 index 0000000..e3f6097 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.stack.js @@ -0,0 +1,188 @@ +/* Flot plugin for stacking data sets rather than overlyaing them. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +The plugin assumes the data is sorted on x (or y if stacking horizontally). +For line charts, it is assumed that if a line has an undefined gap (from a +null point), then the line above it should have the same gap - insert zeros +instead of "null" if you want another behaviour. This also holds for the start +and end of the chart. Note that stacking a mix of positive and negative values +in most instances doesn't make sense (so it looks weird). + +Two or more series are stacked when their "stack" attribute is set to the same +key (which can be any number or string or just "true"). To specify the default +stack, you can set the stack option like this: + + series: { + stack: null/false, true, or a key (number/string) + } + +You can also specify it for a single series, like this: + + $.plot( $("#placeholder"), [{ + data: [ ... ], + stack: true + }]) + +The stacking order is determined by the order of the data series in the array +(later series end up on top of the previous). + +Internally, the plugin modifies the datapoints in each series, adding an +offset to the y value. For line series, extra data points are inserted through +interpolation. If there's a second y value, it's also adjusted (e.g for bar +charts or filled areas). + +*/ + +(function ($) { + var options = { + series: { stack: null } // or number/string + }; + + function init(plot) { + function findMatchingSeries(s, allseries) { + var res = null; + for (var i = 0; i < allseries.length; ++i) { + if (s == allseries[i]) + break; + + if (allseries[i].stack == s.stack) + res = allseries[i]; + } + + return res; + } + + function stackData(plot, s, datapoints) { + if (s.stack == null || s.stack === false) + return; + + var other = findMatchingSeries(s, plot.getData()); + if (!other) + return; + + var ps = datapoints.pointsize, + points = datapoints.points, + otherps = other.datapoints.pointsize, + otherpoints = other.datapoints.points, + newpoints = [], + px, py, intery, qx, qy, bottom, + withlines = s.lines.show, + horizontal = s.bars.horizontal, + withbottom = ps > 2 && (horizontal ? datapoints.format[2].x : datapoints.format[2].y), + withsteps = withlines && s.lines.steps, + fromgap = true, + keyOffset = horizontal ? 1 : 0, + accumulateOffset = horizontal ? 0 : 1, + i = 0, j = 0, l, m; + + while (true) { + if (i >= points.length) + break; + + l = newpoints.length; + + if (points[i] == null) { + // copy gaps + for (m = 0; m < ps; ++m) + newpoints.push(points[i + m]); + i += ps; + } + else if (j >= otherpoints.length) { + // for lines, we can't use the rest of the points + if (!withlines) { + for (m = 0; m < ps; ++m) + newpoints.push(points[i + m]); + } + i += ps; + } + else if (otherpoints[j] == null) { + // oops, got a gap + for (m = 0; m < ps; ++m) + newpoints.push(null); + fromgap = true; + j += otherps; + } + else { + // cases where we actually got two points + px = points[i + keyOffset]; + py = points[i + accumulateOffset]; + qx = otherpoints[j + keyOffset]; + qy = otherpoints[j + accumulateOffset]; + bottom = 0; + + if (px == qx) { + for (m = 0; m < ps; ++m) + newpoints.push(points[i + m]); + + newpoints[l + accumulateOffset] += qy; + bottom = qy; + + i += ps; + j += otherps; + } + else if (px > qx) { + // we got past point below, might need to + // insert interpolated extra point + if (withlines && i > 0 && points[i - ps] != null) { + intery = py + (points[i - ps + accumulateOffset] - py) * (qx - px) / (points[i - ps + keyOffset] - px); + newpoints.push(qx); + newpoints.push(intery + qy); + for (m = 2; m < ps; ++m) + newpoints.push(points[i + m]); + bottom = qy; + } + + j += otherps; + } + else { // px < qx + if (fromgap && withlines) { + // if we come from a gap, we just skip this point + i += ps; + continue; + } + + for (m = 0; m < ps; ++m) + newpoints.push(points[i + m]); + + // we might be able to interpolate a point below, + // this can give us a better y + if (withlines && j > 0 && otherpoints[j - otherps] != null) + bottom = qy + (otherpoints[j - otherps + accumulateOffset] - qy) * (px - qx) / (otherpoints[j - otherps + keyOffset] - qx); + + newpoints[l + accumulateOffset] += bottom; + + i += ps; + } + + fromgap = false; + + if (l != newpoints.length && withbottom) + newpoints[l + 2] += bottom; + } + + // maintain the line steps invariant + if (withsteps && l != newpoints.length && l > 0 + && newpoints[l] != null + && newpoints[l] != newpoints[l - ps] + && newpoints[l + 1] != newpoints[l - ps + 1]) { + for (m = 0; m < ps; ++m) + newpoints[l + ps + m] = newpoints[l + m]; + newpoints[l + 1] = newpoints[l - ps + 1]; + } + } + + datapoints.points = newpoints; + } + + plot.hooks.processDatapoints.push(stackData); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'stack', + version: '1.2' + }); +})(jQuery); diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.symbol.js b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.symbol.js new file mode 100644 index 0000000..61c15ac --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.symbol.js @@ -0,0 +1,71 @@ +/* Flot plugin that adds some extra symbols for plotting points. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +The symbols are accessed as strings through the standard symbol options: + + series: { + points: { + symbol: "square" // or "diamond", "triangle", "cross" + } + } + +*/ + +(function ($) { + function processRawData(plot, series, datapoints) { + // we normalize the area of each symbol so it is approximately the + // same as a circle of the given radius + + var handlers = { + square: function (ctx, x, y, radius, shadow) { + // pi * r^2 = (2s)^2 => s = r * sqrt(pi)/2 + var size = radius * Math.sqrt(Math.PI) / 2; + ctx.rect(x - size, y - size, size + size, size + size); + }, + diamond: function (ctx, x, y, radius, shadow) { + // pi * r^2 = 2s^2 => s = r * sqrt(pi/2) + var size = radius * Math.sqrt(Math.PI / 2); + ctx.moveTo(x - size, y); + ctx.lineTo(x, y - size); + ctx.lineTo(x + size, y); + ctx.lineTo(x, y + size); + ctx.lineTo(x - size, y); + }, + triangle: function (ctx, x, y, radius, shadow) { + // pi * r^2 = 1/2 * s^2 * sin (pi / 3) => s = r * sqrt(2 * pi / sin(pi / 3)) + var size = radius * Math.sqrt(2 * Math.PI / Math.sin(Math.PI / 3)); + var height = size * Math.sin(Math.PI / 3); + ctx.moveTo(x - size/2, y + height/2); + ctx.lineTo(x + size/2, y + height/2); + if (!shadow) { + ctx.lineTo(x, y - height/2); + ctx.lineTo(x - size/2, y + height/2); + } + }, + cross: function (ctx, x, y, radius, shadow) { + // pi * r^2 = (2s)^2 => s = r * sqrt(pi)/2 + var size = radius * Math.sqrt(Math.PI) / 2; + ctx.moveTo(x - size, y - size); + ctx.lineTo(x + size, y + size); + ctx.moveTo(x - size, y + size); + ctx.lineTo(x + size, y - size); + } + }; + + var s = series.points.symbol; + if (handlers[s]) + series.points.symbol = handlers[s]; + } + + function init(plot) { + plot.hooks.processDatapoints.push(processRawData); + } + + $.plot.plugins.push({ + init: init, + name: 'symbols', + version: '1.0' + }); +})(jQuery); diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.threshold.js b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.threshold.js new file mode 100644 index 0000000..0d73420 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.threshold.js @@ -0,0 +1,142 @@ +/* Flot plugin for thresholding data. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +The plugin supports these options: + + series: { + threshold: { + below: number + color: colorspec + } + } + +It can also be applied to a single series, like this: + + $.plot( $("#placeholder"), [{ + data: [ ... ], + threshold: { ... } + }]) + +An array can be passed for multiple thresholding, like this: + + threshold: [{ + below: number1 + color: color1 + },{ + below: number2 + color: color2 + }] + +These multiple threshold objects can be passed in any order since they are +sorted by the processing function. + +The data points below "below" are drawn with the specified color. This makes +it easy to mark points below 0, e.g. for budget data. + +Internally, the plugin works by splitting the data into two series, above and +below the threshold. The extra series below the threshold will have its label +cleared and the special "originSeries" attribute set to the original series. +You may need to check for this in hover events. + +*/ + +(function ($) { + var options = { + series: { threshold: null } // or { below: number, color: color spec} + }; + + function init(plot) { + function thresholdData(plot, s, datapoints, below, color) { + var ps = datapoints.pointsize, i, x, y, p, prevp, + thresholded = $.extend({}, s); // note: shallow copy + + thresholded.datapoints = { points: [], pointsize: ps, format: datapoints.format }; + thresholded.label = null; + thresholded.color = color; + thresholded.threshold = null; + thresholded.originSeries = s; + thresholded.data = []; + + var origpoints = datapoints.points, + addCrossingPoints = s.lines.show; + + var threspoints = []; + var newpoints = []; + var m; + + for (i = 0; i < origpoints.length; i += ps) { + x = origpoints[i]; + y = origpoints[i + 1]; + + prevp = p; + if (y < below) + p = threspoints; + else + p = newpoints; + + if (addCrossingPoints && prevp != p && x != null + && i > 0 && origpoints[i - ps] != null) { + var interx = x + (below - y) * (x - origpoints[i - ps]) / (y - origpoints[i - ps + 1]); + prevp.push(interx); + prevp.push(below); + for (m = 2; m < ps; ++m) + prevp.push(origpoints[i + m]); + + p.push(null); // start new segment + p.push(null); + for (m = 2; m < ps; ++m) + p.push(origpoints[i + m]); + p.push(interx); + p.push(below); + for (m = 2; m < ps; ++m) + p.push(origpoints[i + m]); + } + + p.push(x); + p.push(y); + for (m = 2; m < ps; ++m) + p.push(origpoints[i + m]); + } + + datapoints.points = newpoints; + thresholded.datapoints.points = threspoints; + + if (thresholded.datapoints.points.length > 0) { + var origIndex = $.inArray(s, plot.getData()); + // Insert newly-generated series right after original one (to prevent it from becoming top-most) + plot.getData().splice(origIndex + 1, 0, thresholded); + } + + // FIXME: there are probably some edge cases left in bars + } + + function processThresholds(plot, s, datapoints) { + if (!s.threshold) + return; + + if (s.threshold instanceof Array) { + s.threshold.sort(function(a, b) { + return a.below - b.below; + }); + + $(s.threshold).each(function(i, th) { + thresholdData(plot, s, datapoints, th.below, th.color); + }); + } + else { + thresholdData(plot, s, datapoints, s.threshold.below, s.threshold.color); + } + } + + plot.hooks.processDatapoints.push(processThresholds); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'threshold', + version: '1.2' + }); +})(jQuery); diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.time.js b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.time.js new file mode 100644 index 0000000..8b4849a --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.flot.time.js @@ -0,0 +1,432 @@ +/* Pretty handling of time axes. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +Set axis.mode to "time" to enable. See the section "Time series data" in +API.txt for details. + +*/ + +(function($) { + + var options = { + xaxis: { + timezone: null, // "browser" for local to the client or timezone for timezone-js + timeformat: null, // format string to use + twelveHourClock: false, // 12 or 24 time in time mode + monthNames: null // list of names of months + } + }; + + // round to nearby lower multiple of base + + function floorInBase(n, base) { + return base * Math.floor(n / base); + } + + // Returns a string with the date d formatted according to fmt. + // A subset of the Open Group's strftime format is supported. + + function formatDate(d, fmt, monthNames, dayNames) { + + if (typeof d.strftime == "function") { + return d.strftime(fmt); + } + + var leftPad = function(n, pad) { + n = "" + n; + pad = "" + (pad == null ? "0" : pad); + return n.length == 1 ? pad + n : n; + }; + + var r = []; + var escape = false; + var hours = d.getHours(); + var isAM = hours < 12; + + if (monthNames == null) { + monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; + } + + if (dayNames == null) { + dayNames = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; + } + + var hours12; + + if (hours > 12) { + hours12 = hours - 12; + } else if (hours == 0) { + hours12 = 12; + } else { + hours12 = hours; + } + + for (var i = 0; i < fmt.length; ++i) { + + var c = fmt.charAt(i); + + if (escape) { + switch (c) { + case 'a': c = "" + dayNames[d.getDay()]; break; + case 'b': c = "" + monthNames[d.getMonth()]; break; + case 'd': c = leftPad(d.getDate()); break; + case 'e': c = leftPad(d.getDate(), " "); break; + case 'h': // For back-compat with 0.7; remove in 1.0 + case 'H': c = leftPad(hours); break; + case 'I': c = leftPad(hours12); break; + case 'l': c = leftPad(hours12, " "); break; + case 'm': c = leftPad(d.getMonth() + 1); break; + case 'M': c = leftPad(d.getMinutes()); break; + // quarters not in Open Group's strftime specification + case 'q': + c = "" + (Math.floor(d.getMonth() / 3) + 1); break; + case 'S': c = leftPad(d.getSeconds()); break; + case 'y': c = leftPad(d.getFullYear() % 100); break; + case 'Y': c = "" + d.getFullYear(); break; + case 'p': c = (isAM) ? ("" + "am") : ("" + "pm"); break; + case 'P': c = (isAM) ? ("" + "AM") : ("" + "PM"); break; + case 'w': c = "" + d.getDay(); break; + } + r.push(c); + escape = false; + } else { + if (c == "%") { + escape = true; + } else { + r.push(c); + } + } + } + + return r.join(""); + } + + // To have a consistent view of time-based data independent of which time + // zone the client happens to be in we need a date-like object independent + // of time zones. This is done through a wrapper that only calls the UTC + // versions of the accessor methods. + + function makeUtcWrapper(d) { + + function addProxyMethod(sourceObj, sourceMethod, targetObj, targetMethod) { + sourceObj[sourceMethod] = function() { + return targetObj[targetMethod].apply(targetObj, arguments); + }; + }; + + var utc = { + date: d + }; + + // support strftime, if found + + if (d.strftime != undefined) { + addProxyMethod(utc, "strftime", d, "strftime"); + } + + addProxyMethod(utc, "getTime", d, "getTime"); + addProxyMethod(utc, "setTime", d, "setTime"); + + var props = ["Date", "Day", "FullYear", "Hours", "Milliseconds", "Minutes", "Month", "Seconds"]; + + for (var p = 0; p < props.length; p++) { + addProxyMethod(utc, "get" + props[p], d, "getUTC" + props[p]); + addProxyMethod(utc, "set" + props[p], d, "setUTC" + props[p]); + } + + return utc; + }; + + // select time zone strategy. This returns a date-like object tied to the + // desired timezone + + function dateGenerator(ts, opts) { + if (opts.timezone == "browser") { + return new Date(ts); + } else if (!opts.timezone || opts.timezone == "utc") { + return makeUtcWrapper(new Date(ts)); + } else if (typeof timezoneJS != "undefined" && typeof timezoneJS.Date != "undefined") { + var d = new timezoneJS.Date(); + // timezone-js is fickle, so be sure to set the time zone before + // setting the time. + d.setTimezone(opts.timezone); + d.setTime(ts); + return d; + } else { + return makeUtcWrapper(new Date(ts)); + } + } + + // map of app. size of time units in milliseconds + + var timeUnitSize = { + "second": 1000, + "minute": 60 * 1000, + "hour": 60 * 60 * 1000, + "day": 24 * 60 * 60 * 1000, + "month": 30 * 24 * 60 * 60 * 1000, + "quarter": 3 * 30 * 24 * 60 * 60 * 1000, + "year": 365.2425 * 24 * 60 * 60 * 1000 + }; + + // the allowed tick sizes, after 1 year we use + // an integer algorithm + + var baseSpec = [ + [1, "second"], [2, "second"], [5, "second"], [10, "second"], + [30, "second"], + [1, "minute"], [2, "minute"], [5, "minute"], [10, "minute"], + [30, "minute"], + [1, "hour"], [2, "hour"], [4, "hour"], + [8, "hour"], [12, "hour"], + [1, "day"], [2, "day"], [3, "day"], + [0.25, "month"], [0.5, "month"], [1, "month"], + [2, "month"] + ]; + + // we don't know which variant(s) we'll need yet, but generating both is + // cheap + + var specMonths = baseSpec.concat([[3, "month"], [6, "month"], + [1, "year"]]); + var specQuarters = baseSpec.concat([[1, "quarter"], [2, "quarter"], + [1, "year"]]); + + function init(plot) { + plot.hooks.processOptions.push(function (plot, options) { + $.each(plot.getAxes(), function(axisName, axis) { + + var opts = axis.options; + + if (opts.mode == "time") { + axis.tickGenerator = function(axis) { + + var ticks = []; + var d = dateGenerator(axis.min, opts); + var minSize = 0; + + // make quarter use a possibility if quarters are + // mentioned in either of these options + + var spec = (opts.tickSize && opts.tickSize[1] === + "quarter") || + (opts.minTickSize && opts.minTickSize[1] === + "quarter") ? specQuarters : specMonths; + + if (opts.minTickSize != null) { + if (typeof opts.tickSize == "number") { + minSize = opts.tickSize; + } else { + minSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]]; + } + } + + for (var i = 0; i < spec.length - 1; ++i) { + if (axis.delta < (spec[i][0] * timeUnitSize[spec[i][1]] + + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2 + && spec[i][0] * timeUnitSize[spec[i][1]] >= minSize) { + break; + } + } + + var size = spec[i][0]; + var unit = spec[i][1]; + + // special-case the possibility of several years + + if (unit == "year") { + + // if given a minTickSize in years, just use it, + // ensuring that it's an integer + + if (opts.minTickSize != null && opts.minTickSize[1] == "year") { + size = Math.floor(opts.minTickSize[0]); + } else { + + var magn = Math.pow(10, Math.floor(Math.log(axis.delta / timeUnitSize.year) / Math.LN10)); + var norm = (axis.delta / timeUnitSize.year) / magn; + + if (norm < 1.5) { + size = 1; + } else if (norm < 3) { + size = 2; + } else if (norm < 7.5) { + size = 5; + } else { + size = 10; + } + + size *= magn; + } + + // minimum size for years is 1 + + if (size < 1) { + size = 1; + } + } + + axis.tickSize = opts.tickSize || [size, unit]; + var tickSize = axis.tickSize[0]; + unit = axis.tickSize[1]; + + var step = tickSize * timeUnitSize[unit]; + + if (unit == "second") { + d.setSeconds(floorInBase(d.getSeconds(), tickSize)); + } else if (unit == "minute") { + d.setMinutes(floorInBase(d.getMinutes(), tickSize)); + } else if (unit == "hour") { + d.setHours(floorInBase(d.getHours(), tickSize)); + } else if (unit == "month") { + d.setMonth(floorInBase(d.getMonth(), tickSize)); + } else if (unit == "quarter") { + d.setMonth(3 * floorInBase(d.getMonth() / 3, + tickSize)); + } else if (unit == "year") { + d.setFullYear(floorInBase(d.getFullYear(), tickSize)); + } + + // reset smaller components + + d.setMilliseconds(0); + + if (step >= timeUnitSize.minute) { + d.setSeconds(0); + } + if (step >= timeUnitSize.hour) { + d.setMinutes(0); + } + if (step >= timeUnitSize.day) { + d.setHours(0); + } + if (step >= timeUnitSize.day * 4) { + d.setDate(1); + } + if (step >= timeUnitSize.month * 2) { + d.setMonth(floorInBase(d.getMonth(), 3)); + } + if (step >= timeUnitSize.quarter * 2) { + d.setMonth(floorInBase(d.getMonth(), 6)); + } + if (step >= timeUnitSize.year) { + d.setMonth(0); + } + + var carry = 0; + var v = Number.NaN; + var prev; + + do { + + prev = v; + v = d.getTime(); + ticks.push(v); + + if (unit == "month" || unit == "quarter") { + if (tickSize < 1) { + + // a bit complicated - we'll divide the + // month/quarter up but we need to take + // care of fractions so we don't end up in + // the middle of a day + + d.setDate(1); + var start = d.getTime(); + d.setMonth(d.getMonth() + + (unit == "quarter" ? 3 : 1)); + var end = d.getTime(); + d.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize); + carry = d.getHours(); + d.setHours(0); + } else { + d.setMonth(d.getMonth() + + tickSize * (unit == "quarter" ? 3 : 1)); + } + } else if (unit == "year") { + d.setFullYear(d.getFullYear() + tickSize); + } else { + d.setTime(v + step); + } + } while (v < axis.max && v != prev); + + return ticks; + }; + + axis.tickFormatter = function (v, axis) { + + var d = dateGenerator(v, axis.options); + + // first check global format + + if (opts.timeformat != null) { + return formatDate(d, opts.timeformat, opts.monthNames, opts.dayNames); + } + + // possibly use quarters if quarters are mentioned in + // any of these places + + var useQuarters = (axis.options.tickSize && + axis.options.tickSize[1] == "quarter") || + (axis.options.minTickSize && + axis.options.minTickSize[1] == "quarter"); + + var t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]]; + var span = axis.max - axis.min; + var suffix = (opts.twelveHourClock) ? " %p" : ""; + var hourCode = (opts.twelveHourClock) ? "%I" : "%H"; + var fmt; + + if (t < timeUnitSize.minute) { + fmt = hourCode + ":%M:%S" + suffix; + } else if (t < timeUnitSize.day) { + if (span < 2 * timeUnitSize.day) { + fmt = hourCode + ":%M" + suffix; + } else { + fmt = "%b %d " + hourCode + ":%M" + suffix; + } + } else if (t < timeUnitSize.month) { + fmt = "%b %d"; + } else if ((useQuarters && t < timeUnitSize.quarter) || + (!useQuarters && t < timeUnitSize.year)) { + if (span < timeUnitSize.year) { + fmt = "%b"; + } else { + fmt = "%b %Y"; + } + } else if (useQuarters && t < timeUnitSize.year) { + if (span < timeUnitSize.year) { + fmt = "Q%q"; + } else { + fmt = "Q%q %Y"; + } + } else { + fmt = "%Y"; + } + + var rt = formatDate(d, fmt, opts.monthNames, opts.dayNames); + + return rt; + }; + } + }); + }); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'time', + version: '1.0' + }); + + // Time-axis support used to be in Flot core, which exposed the + // formatDate function on the plot object. Various plugins depend + // on the function, so we need to re-expose it here. + + $.plot.formatDate = formatDate; + $.plot.dateGenerator = dateGenerator; + +})(jQuery); diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.js b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.js new file mode 100644 index 0000000..e41f0ab --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/jquery.js @@ -0,0 +1,9472 @@ +/*! + * jQuery JavaScript Library v1.8.3 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2012 jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: Tue Nov 13 2012 08:20:33 GMT-0500 (Eastern Standard Time) + */ +(function( window, undefined ) { +var + // A central reference to the root jQuery(document) + rootjQuery, + + // The deferred used on DOM ready + readyList, + + // Use the correct document accordingly with window argument (sandbox) + document = window.document, + location = window.location, + navigator = window.navigator, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // Save a reference to some core methods + core_push = Array.prototype.push, + core_slice = Array.prototype.slice, + core_indexOf = Array.prototype.indexOf, + core_toString = Object.prototype.toString, + core_hasOwn = Object.prototype.hasOwnProperty, + core_trim = String.prototype.trim, + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Used for matching numbers + core_pnum = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source, + + // Used for detecting and trimming whitespace + core_rnotwhite = /\S/, + core_rspace = /\s+/, + + // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE) + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + rquickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, + rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/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(); + }, + + // The ready event handler and self cleanup method + DOMContentLoaded = function() { + if ( document.addEventListener ) { + document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + jQuery.ready(); + } else if ( document.readyState === "complete" ) { + // we're here because readyState === "complete" in oldIE + // which is good enough for us to call the dom ready! + document.detachEvent( "onreadystatechange", DOMContentLoaded ); + jQuery.ready(); + } + }, + + // [[Class]] -> type pairs + class2type = {}; + +jQuery.fn = jQuery.prototype = { + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem, ret, doc; + + // Handle $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt(0) === "<" && selector.charAt( 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; + doc = ( context && context.nodeType ? context.ownerDocument || context : document ); + + // scripts is true for back-compat + selector = jQuery.parseHTML( match[1], doc, true ); + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + this.attr.call( selector, context, true ); + } + + return jQuery.merge( this, selector ); + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we 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 || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The current version of jQuery being used + jquery: "1.8.3", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + toArray: function() { + return core_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 a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems, name, selector ) { + + // 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; + + if ( name === "find" ) { + ret.selector = this.selector + ( this.selector ? " " : "" ) + selector; + } else if ( name ) { + ret.selector = this.selector + "." + name + "(" + selector + ")"; + } + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; + }, + + eq: function( i ) { + i = +i; + return i === -1 ? + this.slice( i ) : + this.slice( i, i + 1 ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + slice: function() { + return this.pushStack( core_slice.apply( this, arguments ), + "slice", core_slice.call(arguments).join(",") ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: core_push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +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; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // 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 ( length === i ) { + 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({ + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // 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; + } + + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready, 1 ); + } + + // 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.trigger ) { + jQuery( document ).trigger("ready").off("ready"); + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + isWindow: function( obj ) { + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + return obj == null ? + String( obj ) : + class2type[ core_toString.call(obj) ] || "object"; + }, + + isPlainObject: function( obj ) { + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !core_hasOwn.call(obj, "constructor") && + !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for ( key in obj ) {} + + return key === undefined || core_hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + // data: string of html + // context (optional): If specified, the fragment will be created in this context, defaults to document + // scripts (optional): If true, will include scripts passed in the html string + parseHTML: function( data, context, scripts ) { + var parsed; + if ( !data || typeof data !== "string" ) { + return null; + } + if ( typeof context === "boolean" ) { + scripts = context; + context = 0; + } + context = context || document; + + // Single tag + if ( (parsed = rsingleTag.exec( data )) ) { + return [ context.createElement( parsed[1] ) ]; + } + + parsed = jQuery.buildFragment( [ data ], context, scripts ? null : [] ); + return jQuery.merge( [], + (parsed.cacheable ? jQuery.clone( parsed.fragment ) : parsed.fragment).childNodes ); + }, + + parseJSON: function( data ) { + if ( !data || typeof data !== "string") { + return null; + } + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + + } + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + if ( !data || typeof data !== "string" ) { + return null; + } + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && core_rnotwhite.test( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // 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(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var name, + i = 0, + length = obj.length, + isObj = length === undefined || jQuery.isFunction( obj ); + + if ( args ) { + if ( isObj ) { + for ( name in obj ) { + if ( callback.apply( obj[ name ], args ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.apply( obj[ i++ ], args ) === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isObj ) { + for ( name in obj ) { + if ( callback.call( obj[ name ], name, obj[ name ] ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.call( obj[ i ], i, obj[ i++ ] ) === false ) { + break; + } + } + } + } + + return obj; + }, + + // Use native String.trim function wherever possible + trim: core_trim && !core_trim.call("\uFEFF\xA0") ? + function( text ) { + return text == null ? + "" : + core_trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var type, + ret = results || []; + + if ( arr != null ) { + // The window, strings (and functions) also have 'length' + // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 + type = jQuery.type( arr ); + + if ( arr.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( arr ) ) { + core_push.call( ret, arr ); + } else { + jQuery.merge( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + var len; + + if ( arr ) { + if ( core_indexOf ) { + return core_indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var l = second.length, + i = first.length, + j = 0; + + if ( typeof l === "number" ) { + for ( ; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var retVal, + ret = [], + i = 0, + length = elems.length; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, key, + ret = [], + i = 0, + length = elems.length, + // jquery objects are treated as arrays + isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( key in elems ) { + value = callback( elems[ key ], key, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return ret.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 = core_slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context, args.concat( core_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; + }, + + // Multifunctional method to get and set values of a collection + // The value/s can optionally be executed if it's a function + access: function( elems, fn, key, value, chainable, emptyGet, pass ) { + var exec, + bulk = key == null, + i = 0, + length = elems.length; + + // Sets many values + if ( key && typeof key === "object" ) { + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], 1, emptyGet, value ); + } + chainable = 1; + + // Sets one value + } else if ( value !== undefined ) { + // Optionally, function values get executed if exec is true + exec = pass === undefined && jQuery.isFunction( value ); + + if ( bulk ) { + // Bulk operations only iterate when executing function values + if ( exec ) { + exec = fn; + fn = function( elem, key, value ) { + return exec.call( jQuery( elem ), value ); + }; + + // Otherwise they run against the entire set + } else { + fn.call( elems, value ); + fn = null; + } + } + + if ( fn ) { + for (; i < length; i++ ) { + fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); + } + } + + chainable = 1; + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; + }, + + now: function() { + return ( new Date() ).getTime(); + } +}); + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // we once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready, 1 ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", jQuery.ready, false ); + + // If IE event model is used + } else { + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", DOMContentLoaded ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", jQuery.ready ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch(e) {} + + if ( top && top.doScroll ) { + (function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll("left"); + } catch(e) { + return setTimeout( doScrollCheck, 50 ); + } + + // and execute any waiting functions + jQuery.ready(); + } + })(); + } + } + } + return readyList.promise( obj ); +}; + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.split( core_rspace ), 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" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // Flag to know if list is currently firing + firing, + // First callback to fire (used internally by add and fireWith) + firingStart, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Control if a given callback is in the list + has: function( fn ) { + return jQuery.inArray( fn, list ) > -1; + }, + // Remove all callbacks from the list + empty: function() { + list = []; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( list && ( !fired || stack ) ) { + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + 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 action = tuple[ 0 ], + fn = fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ]( jQuery.isFunction( fn ) ? + function() { + var returned = fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] ); + } + } : + newDefer[ action ] + ); + }); + 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 ] = list.fire + deferred[ tuple[0] ] = list.fire; + 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 = core_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 ? core_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() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); +jQuery.support = (function() { + + var support, + all, + a, + select, + opt, + input, + fragment, + eventName, + i, + isSupported, + clickFn, + div = document.createElement("div"); + + // Setup + div.setAttribute( "className", "t" ); + div.innerHTML = "
a"; + + // Support tests won't run in some limited or non-browser environments + all = div.getElementsByTagName("*"); + a = div.getElementsByTagName("a")[ 0 ]; + if ( !all || !a || !all.length ) { + return {}; + } + + // First batch of tests + select = document.createElement("select"); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName("input")[ 0 ]; + + a.style.cssText = "top:1px;float:left;opacity:.5"; + support = { + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: ( div.firstChild.nodeType === 3 ), + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: !div.getElementsByTagName("tbody").length, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: !!div.getElementsByTagName("link").length, + + // Get the style information from getAttribute + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: ( a.getAttribute("href") === "/a" ), + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + opacity: /^0.5/.test( a.style.opacity ), + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: !!a.style.cssFloat, + + // Make sure that if no value is specified for a checkbox + // that it defaults to "on". + // (WebKit defaults to "" instead) + checkOn: ( input.value === "on" ), + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + optSelected: opt.selected, + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + + // Tests for enctype support on a form (#6743) + enctype: !!document.createElement("form").enctype, + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>", + + // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode + boxModel: ( document.compatMode === "CSS1Compat" ), + + // Will be defined later + submitBubbles: true, + changeBubbles: true, + focusinBubbles: false, + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true, + boxSizingReliable: true, + pixelPosition: false + }; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Test to see if it's possible to delete an expando from an element + // Fails in Internet Explorer + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { + div.attachEvent( "onclick", clickFn = function() { + // Cloning a node shouldn't copy over any + // bound event handlers (IE does this) + support.noCloneEvent = false; + }); + div.cloneNode( true ).fireEvent("onclick"); + div.detachEvent( "onclick", clickFn ); + } + + // Check if a radio maintains its value + // after being appended to the DOM + input = document.createElement("input"); + input.value = "t"; + input.setAttribute( "type", "radio" ); + support.radioValue = input.value === "t"; + + input.setAttribute( "checked", "checked" ); + + // #11217 - WebKit loses check when the name is after the checked attribute + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + fragment = document.createDocumentFragment(); + fragment.appendChild( div.lastChild ); + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + fragment.removeChild( input ); + fragment.appendChild( div ); + + // Technique from Juriy Zaytsev + // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/ + // We only care about the case where non-standard event systems + // are used, namely in IE. Short-circuiting here helps us to + // avoid an eval call (in setAttribute) which can cause CSP + // to go haywire. See: https://developer.mozilla.org/en/Security/CSP + if ( div.attachEvent ) { + for ( i in { + submit: true, + change: true, + focusin: true + }) { + eventName = "on" + i; + isSupported = ( eventName in div ); + if ( !isSupported ) { + div.setAttribute( eventName, "return;" ); + isSupported = ( typeof div[ eventName ] === "function" ); + } + support[ i + "Bubbles" ] = isSupported; + } + } + + // Run tests that need a body at doc ready + jQuery(function() { + var container, div, tds, marginDiv, + divReset = "padding:0;margin:0;border:0;display:block;overflow:hidden;", + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + container = document.createElement("div"); + container.style.cssText = "visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px"; + body.insertBefore( container, body.firstChild ); + + // Construct the test element + div = document.createElement("div"); + container.appendChild( div ); + + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + // (only IE 8 fails this test) + div.innerHTML = "
t
"; + tds = div.getElementsByTagName("td"); + tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none"; + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Check if empty table cells still have offsetWidth/Height + // (IE <= 8 fail this test) + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Check box-sizing and margin behavior + div.innerHTML = ""; + div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;"; + support.boxSizing = ( div.offsetWidth === 4 ); + support.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 ); + + // NOTE: To any future maintainer, we've window.getComputedStyle + // because jsdom on node.js will break without it. + if ( window.getComputedStyle ) { + support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; + support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. For more + // info see bug #3333 + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + marginDiv = document.createElement("div"); + marginDiv.style.cssText = div.style.cssText = divReset; + marginDiv.style.marginRight = marginDiv.style.width = "0"; + div.style.width = "1px"; + div.appendChild( marginDiv ); + support.reliableMarginRight = + !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); + } + + if ( typeof div.style.zoom !== "undefined" ) { + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + // (IE < 8 does this) + div.innerHTML = ""; + div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1"; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 ); + + // Check if elements with layout shrink-wrap their children + // (IE 6 does this) + div.style.display = "block"; + div.style.overflow = "visible"; + div.innerHTML = "
"; + div.firstChild.style.width = "5px"; + support.shrinkWrapBlocks = ( div.offsetWidth !== 3 ); + + container.style.zoom = 1; + } + + // Null elements to avoid leaks in IE + body.removeChild( container ); + container = div = tds = marginDiv = null; + }); + + // Null elements to avoid leaks in IE + fragment.removeChild( div ); + all = a = select = opt = input = fragment = div = null; + + return support; +})(); +var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, + rmultiDash = /([A-Z])/g; + +jQuery.extend({ + cache: {}, + + deletedIds: [], + + // Remove at next major release (1.9/2.0) + uuid: 0, + + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", + "applet": true + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, ret, + internalKey = jQuery.expando, + getByName = typeof name === "string", + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + elem[ internalKey ] = id = jQuery.deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // Avoids exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( getByName ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; + }, + + removeData: function( elem, name, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, l, + + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split(" "); + } + } + } + + for ( i = 0, l = name.length; i < l; i++ ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + } else if ( jQuery.support.deleteExpando || cache != cache.window ) { + delete cache[ id ]; + + // When all else fails, null + } else { + cache[ id ] = null; + } + }, + + // For internal use only. + _data: function( elem, name, data ) { + return jQuery.data( elem, name, data, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ]; + + // nodes accept data unless otherwise specified; rejection can be conditional + return !noData || noData !== true && elem.getAttribute("classid") === noData; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var parts, part, attr, name, l, + elem = this[0], + i = 0, + data = null; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + attr = elem.attributes; + for ( l = attr.length; i < l; i++ ) { + name = attr[i].name; + + if ( !name.indexOf( "data-" ) ) { + name = jQuery.camelCase( name.substring(5) ); + + dataAttr( elem, name, data[ name ] ); + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + parts = key.split( ".", 2 ); + parts[1] = parts[1] ? "." + parts[1] : ""; + part = parts[1] + "!"; + + return jQuery.access( this, function( value ) { + + if ( value === undefined ) { + data = this.triggerHandler( "getData" + part, [ parts[0] ] ); + + // Try to fetch any internally stored data first + if ( data === undefined && elem ) { + data = jQuery.data( elem, key ); + data = dataAttr( elem, key, data ); + } + + return data === undefined && parts[1] ? + this.data( parts[0] ) : + data; + } + + parts[1] = value; + this.each(function() { + var self = jQuery( this ); + + self.triggerHandler( "setData" + part, parts ); + jQuery.data( this, key, value ); + self.triggerHandler( "changeData" + part, parts ); + }); + }, null, value, arguments.length > 1, null, false ); + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).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 + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( 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 intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + jQuery.removeData( elem, type + "queue", true ); + jQuery.removeData( elem, key, true ); + }) + }); + } +}); + +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 ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + 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 = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + 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 = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var nodeHook, boolHook, fixSpecified, + rclass = /[\t\r\n]/g, + rreturn = /\r/g, + rtype = /^(?:button|input)$/i, + rfocusable = /^(?:button|input|object|select|textarea)$/i, + rclickable = /^a(?:rea|)$/i, + rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classNames, i, l, elem, + setClass, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call(this, j, this.className) ); + }); + } + + if ( value && typeof value === "string" ) { + classNames = value.split( core_rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 ) { + if ( !elem.className && classNames.length === 1 ) { + elem.className = value; + + } else { + setClass = " " + elem.className + " "; + + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + if ( setClass.indexOf( " " + classNames[ c ] + " " ) < 0 ) { + setClass += classNames[ c ] + " "; + } + } + elem.className = jQuery.trim( setClass ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var removes, className, elem, c, cl, i, l; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call(this, j, this.className) ); + }); + } + if ( (value && typeof value === "string") || value === undefined ) { + removes = ( value || "" ).split( core_rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + if ( elem.nodeType === 1 && elem.className ) { + + className = (" " + elem.className + " ").replace( rclass, " " ); + + // loop over each item in the removal list + for ( c = 0, cl = removes.length; c < cl; c++ ) { + // Remove until there is nothing to remove, + while ( className.indexOf(" " + removes[ c ] + " ") >= 0 ) { + className = className.replace( " " + removes[ c ] + " " , " " ); + } + } + elem.className = value ? jQuery.trim( className ) : ""; + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.split( core_rspace ); + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space separated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + } else if ( type === "undefined" || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // toggle whole className + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { + return true; + } + } + + return false; + }, + + 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, + self = jQuery(this); + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.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 ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + 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 ]; + + // oldIE 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 + ( jQuery.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 values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + // Unused in 1.8, left in so attrFn-stabbers won't die; remove in 1.9 + attrFn: {}, + + attr: function( elem, name, value, pass ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( pass && jQuery.isFunction( jQuery.fn[ name ] ) ) { + return jQuery( elem )[ name ]( value ); + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( notxml ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + + } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, value + "" ); + return value; + } + + } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + + ret = elem.getAttribute( name ); + + // Non-existent attributes return null, we normalize to undefined + return ret === null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var propName, attrNames, name, isBool, + i = 0; + + if ( value && elem.nodeType === 1 ) { + + attrNames = value.split( core_rspace ); + + for ( ; i < attrNames.length; i++ ) { + name = attrNames[ i ]; + + if ( name ) { + propName = jQuery.propFix[ name ] || name; + isBool = rboolean.test( name ); + + // See #9699 for explanation of this approach (setting first, then removal) + // Do not do this for boolean attributes (see #10870) + if ( !isBool ) { + jQuery.attr( elem, name, "" ); + } + elem.removeAttribute( getSetAttribute ? name : propName ); + + // Set corresponding property to false for boolean attributes + if ( isBool && propName in elem ) { + elem[ propName ] = false; + } + } + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + // We can't allow the type property to be changed (since it causes problems in IE) + if ( rtype.test( elem.nodeName ) && elem.parentNode ) { + jQuery.error( "type property can't be changed" ); + } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to it's default in case type is set after value + // This is for element creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + }, + // Use the value property for back compat + // Use the nodeHook for button elements in IE6/7 (#1954) + value: { + get: function( elem, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.get( elem, name ); + } + return name in elem ? + elem.value : + null; + }, + set: function( elem, value, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.set( elem, value, name ); + } + // Does not return so that setAttribute is also used + elem.value = value; + } + } + }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // 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; + + } else { + return ( elem[ name ] = value ); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + 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/ + var attributeNode = elem.getAttributeNode("tabindex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + } +}); + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + // Align boolean attributes with corresponding properties + // Fall back to attribute presence where some booleans are not supported + var attrNode, + property = jQuery.prop( elem, name ); + return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + var propName; + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + // value is true since we know at this point it's type boolean and not false + // Set boolean attributes to the same name and set the DOM property + propName = jQuery.propFix[ name ] || name; + if ( propName in elem ) { + // Only set the IDL specifically if it already exists on the element + elem[ propName ] = true; + } + + elem.setAttribute( name, name.toLowerCase() ); + } + return name; + } +}; + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + fixSpecified = { + name: true, + id: true, + coords: true + }; + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = jQuery.valHooks.button = { + get: function( elem, name ) { + var ret; + ret = elem.getAttributeNode( name ); + return ret && ( fixSpecified[ name ] ? ret.value !== "" : ret.specified ) ? + ret.value : + undefined; + }, + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + ret = document.createAttribute( name ); + elem.setAttributeNode( ret ); + } + return ( ret.value = value + "" ); + } + }; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }); + }); + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + get: nodeHook.get, + set: function( elem, value, name ) { + if ( value === "" ) { + value = "false"; + } + nodeHook.set( elem, value, name ); + } + }; +} + + +// Some attributes require a special call on IE +if ( !jQuery.support.hrefNormalized ) { + jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + get: function( elem ) { + var ret = elem.getAttribute( name, 2 ); + return ret === null ? undefined : ret; + } + }); + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Normalize to lowercase since IE uppercases css property names + return elem.style.cssText.toLowerCase() || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = value + "" ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }); +} + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }); +}); +var rformElems = /^(?:textarea|input|select)$/i, + rtypenamespace = /^([^\.]*|)(?:\.(.+)|)$/, + rhoverHack = /(?:^|\s)hover(\.\S+|)\b/, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + hoverHack = function( events ) { + return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" ); + }; + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + add: function( elem, types, handler, data, selector ) { + + var elemData, eventHandle, events, + t, tns, type, namespaces, handleObj, + handleObjIn, handlers, special; + + // Don't attach events to noData or text/comment nodes (allow plain objects tho) + if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) { + 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 + events = elemData.events; + if ( !events ) { + elemData.events = events = {}; + } + eventHandle = elemData.handle; + if ( !eventHandle ) { + elemData.handle = eventHandle = 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" && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + // jQuery(...).bind("mouseover mouseout", fn); + types = jQuery.trim( hoverHack(types) ).split( " " ); + for ( t = 0; t < types.length; t++ ) { + + tns = rtypenamespace.exec( types[t] ) || []; + type = tns[1]; + namespaces = ( tns[2] || "" ).split( "." ).sort(); + + // 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: tns[1], + 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 + handlers = events[ type ]; + if ( !handlers ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + 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; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + global: {}, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var t, tns, type, origType, namespaces, origCount, + j, events, special, eventType, handleObj, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = jQuery.trim( hoverHack( types || "" ) ).split(" "); + for ( t = 0; t < types.length; t++ ) { + tns = rtypenamespace.exec( types[t] ) || []; + type = origType = tns[1]; + namespaces = tns[2]; + + // 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; + eventType = events[ type ] || []; + origCount = eventType.length; + namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.|)") + "(\\.|$)") : null; + + // Remove matching events + for ( j = 0; j < eventType.length; j++ ) { + handleObj = eventType[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !namespaces || namespaces.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + eventType.splice( j--, 1 ); + + if ( handleObj.selector ) { + eventType.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 ( eventType.length === 0 && origCount !== eventType.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery.removeData( elem, "events", true ); + } + }, + + // Events that are safe to short-circuit if no handlers are attached. + // Native DOM events should not be added, they may have inline handlers. + customEvent: { + "getData": true, + "setData": true, + "changeData": true + }, + + trigger: function( event, data, elem, onlyHandlers ) { + // Don't do events on text and comment nodes + if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) { + return; + } + + // Event object or event type + var cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType, + type = event.type || event, + namespaces = []; + + // 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( "!" ) >= 0 ) { + // Exclusive events trigger only for the exact event (no namespaces) + type = type.slice(0, -1); + exclusive = true; + } + + if ( type.indexOf( "." ) >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + + if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { + // No jQuery handlers for this event type, and it can't have inline handlers + return; + } + + // Caller can pass in an Event, Object, or just an event type string + event = typeof event === "object" ? + // jQuery.Event object + event[ jQuery.expando ] ? event : + // Object literal + new jQuery.Event( type, event ) : + // Just the event type (string) + new jQuery.Event( type ); + + event.type = type; + event.isTrigger = true; + event.exclusive = exclusive; + event.namespace = namespaces.join( "." ); + event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null; + ontype = type.indexOf( ":" ) < 0 ? "on" + type : ""; + + // Handle a global trigger + if ( !elem ) { + + // TODO: Stop taunting the data cache; remove global events and always attach to document + cache = jQuery.cache; + for ( i in cache ) { + if ( cache[ i ].events && cache[ i ].events[ type ] ) { + jQuery.event.trigger( event, data, cache[ i ].handle.elem, true ); + } + } + return; + } + + // 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 ? jQuery.makeArray( data ) : []; + data.unshift( event ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( 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) + eventPath = [[ elem, special.bindType || type ]]; + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode; + for ( old = elem; cur; cur = cur.parentNode ) { + eventPath.push([ cur, bubbleType ]); + old = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( old === (elem.ownerDocument || document) ) { + eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]); + } + } + + // Fire handlers on the event path + for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) { + + cur = eventPath[i][0]; + event.type = eventPath[i][1]; + + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + // Note that this is a bare JS function and not a jQuery handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === 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( elem.ownerDocument, data ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + // IE<9 dies on focus/blur to hidden element (#1486) + if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + old = elem[ ontype ]; + + if ( old ) { + 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 ( old ) { + elem[ ontype ] = old; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event || window.event ); + + var i, j, cur, ret, selMatch, matched, matches, handleObj, sel, related, + handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []), + delegateCount = handlers.delegateCount, + args = core_slice.call( arguments ), + run_all = !event.exclusive && !event.namespace, + special = jQuery.event.special[ event.type ] || {}, + handlerQueue = []; + + // 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 that should run if there are delegated events + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && !(event.button && event.type === "click") ) { + + for ( cur = event.target; cur != this; cur = cur.parentNode || this ) { + + // Don't process clicks (ONLY) on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.disabled !== true || event.type !== "click" ) { + selMatch = {}; + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + sel = handleObj.selector; + + if ( selMatch[ sel ] === undefined ) { + selMatch[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( selMatch[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, matches: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( handlers.length > delegateCount ) { + handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) }); + } + + // Run delegates first; they may want to stop propagation beneath us + for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) { + matched = handlerQueue[ i ]; + event.currentTarget = matched.elem; + + for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) { + handleObj = matched.matches[ j ]; + + // Triggered event must either 1) be non-exclusive and have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) { + + event.data = handleObj.data; + event.handleObj = handleObj; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + event.result = ret; + if ( 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; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 *** + props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget 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 fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button, + fromElement = original.fromElement; + + // 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 relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // 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, + originalEvent = event, + fixHook = jQuery.event.fixHooks[ event.type ] || {}, + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = jQuery.Event( originalEvent ); + + for ( i = copy.length; i; ) { + prop = copy[ --i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Target should not be a text node (#504, Safari) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328; IE6/7/8) + event.metaKey = !!event.metaKey; + + return fixHook.filter? fixHook.filter( event, originalEvent ) : event; + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + + focus: { + delegateType: "focusin" + }, + blur: { + delegateType: "focusout" + }, + + beforeunload: { + setup: function( data, namespaces, eventHandle ) { + // We only want to do this special case on windows + if ( jQuery.isWindow( this ) ) { + this.onbeforeunload = eventHandle; + } + }, + + teardown: function( namespaces, eventHandle ) { + if ( this.onbeforeunload === eventHandle ) { + this.onbeforeunload = null; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +// Some plugins are using, but it's undocumented/deprecated and will be removed. +// The 1.7 special event interface should provide all the hooks needed now. +jQuery.event.handle = jQuery.event.dispatch; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 + // detachEvent needed property on element, by name of that event, to properly expose it to GC + if ( typeof elem[ name ] === "undefined" ) { + elem[ name ] = null; + } + + elem.detachEvent( name, 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.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? 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; +}; + +function returnFalse() { + return false; +} +function returnTrue() { + return 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 = { + preventDefault: function() { + this.isDefaultPrevented = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + + // if preventDefault exists run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // otherwise set the returnValue property of the original event to false (IE) + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + this.isPropagationStopped = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + // if stopPropagation exists run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + // otherwise set the cancelBubble property of the original event to true (IE) + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj, + selector = handleObj.selector; + + // For mousenter/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; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !jQuery._data( form, "_submit_attached" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submit_bubble = true; + }); + jQuery._data( form, "_submit_attached", true ); + } + }); + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( event._submit_bubble ) { + delete event._submit_bubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + } + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + } + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event, true ); + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "_change_attached" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + jQuery._data( elem, "_change_attached", true ); + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { // && selector != null + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + 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 this; + } + + 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 this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( 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 ); + }); + }, + + bind: function( types, data, fn ) { + return this.on( types, null, data, fn ); + }, + unbind: function( types, fn ) { + return this.off( types, null, fn ); + }, + + live: function( types, data, fn ) { + jQuery( this.context ).on( types, this.selector, data, fn ); + return this; + }, + die: function( types, fn ) { + jQuery( this.context ).off( types, this.selector || "**", fn ); + return this; + }, + + 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 ); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + if ( this[0] ) { + return jQuery.event.trigger( type, data, this[0], true ); + } + }, + + toggle: function( fn ) { + // Save reference to arguments for access in closure + var args = arguments, + guid = fn.guid || jQuery.guid++, + i = 0, + toggler = function( event ) { + // Figure out which function to execute + var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i; + jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 ); + + // Make sure that clicks stop + event.preventDefault(); + + // and execute the function + return args[ lastToggle ].apply( this, arguments ) || false; + }; + + // link all the functions, so any of them can unbind this click handler + toggler.guid = guid; + while ( i < args.length ) { + args[ i++ ].guid = guid; + } + + return this.click( toggler ); + }, + + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +}); + +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 ) { + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; + + if ( rkeyEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks; + } + + if ( rmouseEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks; + } +}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2012 jQuery Foundation and other contributors + * Released under the MIT license + * http://sizzlejs.com/ + */ +(function( window, undefined ) { + +var cachedruns, + assertGetIdNotName, + Expr, + getText, + isXML, + contains, + compile, + sortOrder, + hasDuplicate, + outermostContext, + + baseHasDuplicate = true, + strundefined = "undefined", + + expando = ( "sizcache" + Math.random() ).replace( ".", "" ), + + Token = String, + document = window.document, + docElem = document.documentElement, + dirruns = 0, + done = 0, + pop = [].pop, + push = [].push, + slice = [].slice, + // Use a stripped-down indexOf if a native one is unavailable + indexOf = [].indexOf || function( elem ) { + var i = 0, + len = this.length; + for ( ; i < len; i++ ) { + if ( this[i] === elem ) { + return i; + } + } + return -1; + }, + + // Augment a function for special use by Sizzle + markFunction = function( fn, value ) { + fn[ expando ] = value == null || value; + return fn; + }, + + createCache = function() { + var cache = {}, + keys = []; + + return markFunction(function( key, value ) { + // Only keep the most recent entries + if ( keys.push( key ) > Expr.cacheLength ) { + delete cache[ keys.shift() ]; + } + + // Retrieve with (key + " ") to avoid collision with native Object.prototype properties (see Issue #157) + return (cache[ key + " " ] = value); + }, cache ); + }, + + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + + // Regex + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier (http://www.w3.org/TR/css3-selectors/#attribute-selectors) + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors + operators = "([*^$|!~]?=)", + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + + "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", + + // Prefer arguments not in parens/brackets, + // then attribute selectors and non-pseudos (denoted by :), + // then anything else + // These preferences are here to reduce the number of selectors + // needing tokenize in the PSEUDO preFilter + pseudos = ":(" + characterEncoding + ")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:" + attributes + ")|[^:]|\\\\.)*|.*))\\)|)", + + // For matchExpr.POS and matchExpr.needsContext + pos = ":(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ), + rpseudo = new RegExp( pseudos ), + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/, + + rnot = /^:not/, + rsibling = /[\x20\t\r\n\f]*[+~]/, + rendsWithNot = /:not\($/, + + rheader = /h\d/i, + rinputs = /input|select|textarea|button/i, + + rbackslash = /\\(?!\\)/g, + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "POS": new RegExp( pos, "i" ), + "CHILD": new RegExp( "^:(only|nth|first|last)-child(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + // For use in libraries implementing .is() + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|" + pos, "i" ) + }, + + // Support + + // Used for testing something on an element + assert = function( fn ) { + var div = document.createElement("div"); + + try { + return fn( div ); + } catch (e) { + return false; + } finally { + // release memory in IE + div = null; + } + }, + + // Check if getElementsByTagName("*") returns only elements + assertTagNameNoComments = assert(function( div ) { + div.appendChild( document.createComment("") ); + return !div.getElementsByTagName("*").length; + }), + + // Check if getAttribute returns normalized href attributes + assertHrefNotNormalized = assert(function( div ) { + div.innerHTML = ""; + return div.firstChild && typeof div.firstChild.getAttribute !== strundefined && + div.firstChild.getAttribute("href") === "#"; + }), + + // Check if attributes should be retrieved by attribute nodes + assertAttributes = assert(function( div ) { + div.innerHTML = ""; + var type = typeof div.lastChild.getAttribute("multiple"); + // IE8 returns a string for some attributes even when not present + return type !== "boolean" && type !== "string"; + }), + + // Check if getElementsByClassName can be trusted + assertUsableClassName = assert(function( div ) { + // Opera can't find a second classname (in 9.6) + div.innerHTML = ""; + if ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) { + return false; + } + + // Safari 3.2 caches class attributes and doesn't catch changes + div.lastChild.className = "e"; + return div.getElementsByClassName("e").length === 2; + }), + + // Check if getElementById returns elements by name + // Check if getElementsByName privileges form controls or returns elements by ID + assertUsableName = assert(function( div ) { + // Inject content + div.id = expando + 0; + div.innerHTML = "
"; + docElem.insertBefore( div, docElem.firstChild ); + + // Test + var pass = document.getElementsByName && + // buggy browsers will return fewer than the correct 2 + document.getElementsByName( expando ).length === 2 + + // buggy browsers will return more than the correct 0 + document.getElementsByName( expando + 0 ).length; + assertGetIdNotName = !document.getElementById( expando ); + + // Cleanup + docElem.removeChild( div ); + + return pass; + }); + +// If slice is not available, provide a backup +try { + slice.call( docElem.childNodes, 0 )[0].nodeType; +} catch ( e ) { + slice = function( i ) { + var elem, + results = []; + for ( ; (elem = this[i]); i++ ) { + results.push( elem ); + } + return results; + }; +} + +function Sizzle( selector, context, results, seed ) { + results = results || []; + context = context || document; + var match, elem, xml, m, + nodeType = context.nodeType; + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + if ( nodeType !== 1 && nodeType !== 9 ) { + return []; + } + + xml = isXML( context ); + + if ( !xml && !seed ) { + if ( (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, slice.call(context.getElementsByTagName( selector ), 0) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && assertUsableClassName && context.getElementsByClassName ) { + push.apply( results, slice.call(context.getElementsByClassName( m ), 0) ); + return results; + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed, xml ); +} + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + return Sizzle( expr, null, null, [ elem ] ).length > 0; +}; + +// Returns a function to use in pseudos for input types +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 +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 +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]); + } + } + }); + }); +} + +/** + * 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 ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (see #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 + } else { + + // If no nodeType, this is expected to be an array + for ( ; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } + return ret; +}; + +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; +}; + +// Element contains another +contains = Sizzle.contains = 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) ); + } : + docElem.compareDocumentPosition ? + function( a, b ) { + return b && !!( a.compareDocumentPosition( b ) & 16 ); + } : + function( a, b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + return false; + }; + +Sizzle.attr = function( elem, name ) { + var val, + xml = isXML( elem ); + + if ( !xml ) { + name = name.toLowerCase(); + } + if ( (val = Expr.attrHandle[ name ]) ) { + return val( elem ); + } + if ( xml || assertAttributes ) { + return elem.getAttribute( name ); + } + val = elem.getAttributeNode( name ); + return val ? + typeof elem[ name ] === "boolean" ? + elem[ name ] ? name : null : + val.specified ? val.value : null : + null; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + // IE6/7 return a modified href + attrHandle: assertHrefNotNormalized ? + {} : + { + "href": function( elem ) { + return elem.getAttribute( "href", 2 ); + }, + "type": function( elem ) { + return elem.getAttribute("type"); + } + }, + + find: { + "ID": assertGetIdNotName ? + function( id, context, xml ) { + if ( typeof context.getElementById !== strundefined && !xml ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + } : + function( id, context, xml ) { + if ( typeof context.getElementById !== strundefined && !xml ) { + var m = context.getElementById( id ); + + return m ? + m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ? + [m] : + undefined : + []; + } + }, + + "TAG": assertTagNameNoComments ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + var elem, + tmp = [], + i = 0; + + for ( ; (elem = results[i]); i++ ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }, + + "NAME": assertUsableName && function( tag, context ) { + if ( typeof context.getElementsByName !== strundefined ) { + return context.getElementsByName( name ); + } + }, + + "CLASS": assertUsableClassName && function( className, context, xml ) { + if ( typeof context.getElementsByClassName !== strundefined && !xml ) { + return context.getElementsByClassName( className ); + } + } + }, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( rbackslash, "" ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[4] || match[5] || "" ).replace( rbackslash, "" ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 3 xn-component of xn+y argument ([+-]?\d*n|) + 4 sign of xn-component + 5 x of xn-component + 6 sign of y-component + 7 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1] === "nth" ) { + // nth-child requires argument + if ( !match[2] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[3] = +( match[3] ? match[4] + (match[5] || 1) : 2 * ( match[2] === "even" || match[2] === "odd" ) ); + match[4] = +( ( match[6] + match[7] ) || match[2] === "odd" ); + + // other types prohibit arguments + } else if ( match[2] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var unquoted, excess; + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + if ( match[3] ) { + match[2] = match[3]; + } else if ( (unquoted = match[4]) ) { + // Only check arguments that contain a pseudo + if ( 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 + unquoted = unquoted.slice( 0, excess ); + match[0] = match[0].slice( 0, excess ); + } + match[2] = unquoted; + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + "ID": assertGetIdNotName ? + function( id ) { + id = id.replace( rbackslash, "" ); + return function( elem ) { + return elem.getAttribute("id") === id; + }; + } : + function( id ) { + id = id.replace( rbackslash, "" ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === id; + }; + }, + + "TAG": function( nodeName ) { + if ( nodeName === "*" ) { + return function() { return true; }; + } + nodeName = nodeName.replace( rbackslash, "" ).toLowerCase(); + + return function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ expando ][ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem, context ) { + 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.substr( result.length - check.length ) === check : + operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.substr( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, argument, first, last ) { + + if ( type === "nth" ) { + return function( elem ) { + var node, diff, + parent = elem.parentNode; + + if ( first === 1 && last === 0 ) { + return true; + } + + if ( parent ) { + diff = 0; + for ( node = parent.firstChild; node; node = node.nextSibling ) { + if ( node.nodeType === 1 ) { + diff++; + if ( elem === node ) { + break; + } + } + } + } + + // Incorporate the offset (or cast to NaN), then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + }; + } + + return function( elem ) { + var node = elem; + + switch ( type ) { + case "only": + case "first": + while ( (node = node.previousSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + if ( type === "first" ) { + return true; + } + + node = elem; + + /* falls through */ + case "last": + while ( (node = node.nextSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + return true; + } + }; + }, + + "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.call( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + 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 ); + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + "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; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), + // not comment, processing instructions, or others + // Thanks to Diego Perini for the nodeName shortcut + // Greater than "@" means alpha characters (specifically not starting with "#" or "?") + var nodeType; + elem = elem.firstChild; + while ( elem ) { + if ( elem.nodeName > "@" || (nodeType = elem.nodeType) === 3 || nodeType === 4 ) { + return false; + } + elem = elem.nextSibling; + } + return true; + }, + + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "text": function( elem ) { + var type, attr; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && + (type = elem.type) === "text" && + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === type ); + }, + + // Input types + "radio": createInputPseudo("radio"), + "checkbox": createInputPseudo("checkbox"), + "file": createInputPseudo("file"), + "password": createInputPseudo("password"), + "image": createInputPseudo("image"), + + "submit": createButtonPseudo("submit"), + "reset": createButtonPseudo("reset"), + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "focus": function( elem ) { + var doc = elem.ownerDocument; + return elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + "active": function( elem ) { + return elem === elem.ownerDocument.activeElement; + }, + + // Positional types + "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 ) { + for ( var i = 0; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + for ( var i = 1; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + for ( var i = argument < 0 ? argument + length : argument; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + for ( var i = argument < 0 ? argument + length : argument; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +function siblingCheck( a, b, ret ) { + if ( a === b ) { + return ret; + } + + var cur = a.nextSibling; + + while ( cur ) { + if ( cur === b ) { + return -1; + } + + cur = cur.nextSibling; + } + + return 1; +} + +sortOrder = docElem.compareDocumentPosition ? + function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + return ( !a.compareDocumentPosition || !b.compareDocumentPosition ? + a.compareDocumentPosition : + a.compareDocumentPosition(b) & 4 + ) ? -1 : 1; + } : + function( a, b ) { + // The nodes are identical, we can exit early + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Fallback to using sourceIndex (in IE) if it's available on both nodes + } else if ( a.sourceIndex && b.sourceIndex ) { + return a.sourceIndex - b.sourceIndex; + } + + var al, bl, + ap = [], + bp = [], + aup = a.parentNode, + bup = b.parentNode, + cur = aup; + + // If the nodes are siblings (or identical) we can do a quick check + if ( aup === bup ) { + return siblingCheck( a, b ); + + // If no parents were found then the nodes are disconnected + } else if ( !aup ) { + return -1; + + } else if ( !bup ) { + return 1; + } + + // Otherwise they're somewhere else in the tree so we need + // to build up a full list of the parentNodes for comparison + while ( cur ) { + ap.unshift( cur ); + cur = cur.parentNode; + } + + cur = bup; + + while ( cur ) { + bp.unshift( cur ); + cur = cur.parentNode; + } + + al = ap.length; + bl = bp.length; + + // Start walking down the tree looking for a discrepancy + for ( var i = 0; i < al && i < bl; i++ ) { + if ( ap[i] !== bp[i] ) { + return siblingCheck( ap[i], bp[i] ); + } + } + + // We ended someplace up the tree so do a sibling check + return i === al ? + siblingCheck( a, bp[i], -1 ) : + siblingCheck( ap[i], b, 1 ); + }; + +// Always assume the presence of duplicates if sort doesn't +// pass them to our comparison function (as in Google Chrome). +[0, 0].sort( sortOrder ); +baseHasDuplicate = !hasDuplicate; + +// Document sorting and removing duplicates +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + i = 1, + j = 0; + + hasDuplicate = baseHasDuplicate; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( ; (elem = results[i]); i++ ) { + if ( elem === results[ i - 1 ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + return results; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +function tokenize( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ expando ][ 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 )) ) { + tokens.push( matched = new Token( match.shift() ) ); + soFar = soFar.slice( matched.length ); + + // Cast descendant combinators to space + matched.type = match[0].replace( rtrim, " " ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + + tokens.push( matched = new Token( match.shift() ) ); + soFar = soFar.slice( matched.length ); + matched.type = type; + matched.matches = match; + } + } + + 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 addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && combinator.dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( checkNonElements || elem.nodeType === 1 ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( !xml ) { + var cache, + dirkey = dirruns + " " + doneName + " ", + cachedkey = dirkey + cachedruns; + while ( (elem = elem[ dir ]) ) { + if ( checkNonElements || elem.nodeType === 1 ) { + if ( (cache = elem[ expando ]) === cachedkey ) { + return elem.sizset; + } else if ( typeof cache === "string" && cache.indexOf(dirkey) === 0 ) { + if ( elem.sizset ) { + return elem; + } + } else { + elem[ expando ] = cachedkey; + if ( matcher( elem, context, xml ) ) { + elem.sizset = true; + return elem; + } + elem.sizset = false; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( checkNonElements || elem.nodeType === 1 ) { + if ( matcher( elem, context, xml ) ) { + return elem; + } + } + } + } + }; +} + +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 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.call( 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.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + } ]; + + 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 && tokens.slice( 0, i - 1 ).join("").replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && tokens.join("") + ); + } + 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, expandContext ) { + var elem, j, matcher, + setMatched = [], + matchedCount = 0, + i = "0", + unmatched = seed && [], + outermost = expandContext != null, + contextBackup = outermostContext, + // We must always have either seed elements or context + elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ), + // Nested matchers should use non-integer dirruns + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.E); + + if ( outermost ) { + outermostContext = context !== document && context; + cachedruns = superMatcher.el; + } + + // Add elements passing elementMatchers directly to results + for ( ; (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + for ( j = 0; (matcher = elementMatchers[j]); j++ ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + cachedruns = ++superMatcher.el; + } + } + + // 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 ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + for ( j = 0; (matcher = setMatchers[j]); 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; + }; + + superMatcher.el = 0; + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ expando ][ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !group ) { + group = tokenize( selector ); + } + i = group.length; + while ( i-- ) { + cached = matcherFromTokens( group[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + } + return cached; +}; + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function select( selector, context, results, seed, xml ) { + var i, tokens, token, type, find, + match = tokenize( selector ), + j = match.length; + + if ( !seed ) { + // Try to minimize operations if there is only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + context.nodeType === 9 && !xml && + Expr.relative[ tokens[1].type ] ) { + + context = Expr.find["ID"]( token.matches[0].replace( rbackslash, "" ), context, xml )[0]; + if ( !context ) { + return results; + } + + selector = selector.slice( tokens.shift().length ); + } + + // Fetch a seed set for right-to-left matching + for ( i = matchExpr["POS"].test( selector ) ? -1 : tokens.length - 1; i >= 0; 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( rbackslash, "" ), + rsibling.test( tokens[0].type ) && context.parentNode || context, + xml + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && tokens.join(""); + if ( !selector ) { + push.apply( results, slice.call( seed, 0 ) ); + return results; + } + + break; + } + } + } + } + } + + // Compile and execute a filtering function + // Provide `match` to avoid retokenization if we modified the selector above + compile( selector, match )( + seed, + context, + xml, + results, + rsibling.test( selector ) + ); + return results; +} + +if ( document.querySelectorAll ) { + (function() { + var disconnectedMatch, + oldSelect = select, + rescape = /'|\\/g, + rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g, + + // qSa(:focus) reports false when true (Chrome 21), no need to also add to buggyMatches since matches checks buggyQSA + // A support test would require too much code (would include document ready) + rbuggyQSA = [ ":focus" ], + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + // A support test would require too much code (would include document ready) + // just skip matchesSelector for :active + rbuggyMatches = [ ":active" ], + matches = docElem.matchesSelector || + docElem.mozMatchesSelector || + docElem.webkitMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector; + + // 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 explictly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + div.innerHTML = ""; + + // IE8 - Some boolean attributes are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here (do not put tests after this one) + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + + // Opera 10-12/IE9 - ^= $= *= and empty values + // Should not select anything + div.innerHTML = "

"; + if ( div.querySelectorAll("[test^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here (do not put tests after this one) + div.innerHTML = ""; + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push(":enabled", ":disabled"); + } + }); + + // rbuggyQSA always contains :focus, so no need for a length check + rbuggyQSA = /* rbuggyQSA.length && */ new RegExp( rbuggyQSA.join("|") ); + + select = function( selector, context, results, seed, xml ) { + // Only use querySelectorAll when not filtering, + // when this is not xml, + // and when no QSA bugs apply + if ( !seed && !xml && !rbuggyQSA.test( selector ) ) { + var groups, i, + old = true, + nid = expando, + newContext = context, + newSelector = context.nodeType === 9 && selector; + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + groups[i].join(""); + } + newContext = rsibling.test( selector ) && context.parentNode || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, slice.call( newContext.querySelectorAll( + newSelector + ), 0 ) ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + + return oldSelect( selector, context, results, seed, xml ); + }; + + if ( matches ) { + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + try { + matches.call( div, "[test!='']:sizzle" ); + rbuggyMatches.push( "!=", pseudos ); + } catch ( e ) {} + }); + + // rbuggyMatches always contains :active and :focus, so no need for a length check + rbuggyMatches = /* rbuggyMatches.length && */ new RegExp( rbuggyMatches.join("|") ); + + Sizzle.matchesSelector = function( elem, expr ) { + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + // rbuggyMatches always contains :active, so no need for an existence check + if ( !isXML( elem ) && !rbuggyMatches.test( expr ) && !rbuggyQSA.test( expr ) ) { + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || 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, null, null, [ elem ] ).length > 0; + }; + } + })(); +} + +// Deprecated +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Back-compat +function setFilters() {} +Expr.filters = setFilters.prototype = Expr.pseudos; +Expr.setFilters = new setFilters(); + +// Override sizzle attribute retrieval +Sizzle.attr = jQuery.attr; +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})( window ); +var runtil = /Until$/, + rparentsprev = /^(?:parents|prev(?:Until|All))/, + isSimple = /^.[^:#\[\.,]*$/, + rneedsContext = jQuery.expr.match.needsContext, + // 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({ + find: function( selector ) { + var i, l, length, n, r, ret, + self = this; + + if ( typeof selector !== "string" ) { + return jQuery( selector ).filter(function() { + for ( i = 0, l = self.length; i < l; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }); + } + + ret = this.pushStack( "", "find", selector ); + + for ( i = 0, l = this.length; i < l; i++ ) { + length = ret.length; + jQuery.find( selector, this[i], ret ); + + if ( i > 0 ) { + // Make sure that the results are unique + for ( n = length; n < ret.length; n++ ) { + for ( r = 0; r < length; r++ ) { + if ( ret[r] === ret[n] ) { + ret.splice(n--, 1); + break; + } + } + } + } + } + + return ret; + }, + + has: function( target ) { + var i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false), "not", selector); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true), "filter", selector ); + }, + + is: function( selector ) { + return !!selector && ( + typeof selector === "string" ? + // 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". + rneedsContext.test( selector ) ? + jQuery( selector, this.context ).index( this[0] ) >= 0 : + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + ret = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + cur = this[i]; + + while ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + } + cur = cur.parentNode; + } + } + + ret = ret.length > 1 ? jQuery.unique( ret ) : ret; + + return this.pushStack( ret, "closest", selectors ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? + all : + jQuery.unique( all ) ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +jQuery.fn.andSelf = jQuery.fn.addBack; + +// A painfully simple check to see if an element is disconnected +// from a document (should be improved, where feasible). +function isDisconnected( node ) { + return !node || !node.parentNode || node.parentNode.nodeType === 11; +} + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && 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 jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( this.length > 1 && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, core_slice.call( arguments ).join(",") ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : + jQuery.find.matches(expr, elems); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem, i ) { + return ( elem === qualifier ) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem, i ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; + }); +} +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rtbody = /]", "i"), + rcheckableType = /^(?:checkbox|radio)$/, + // checked="checked" or checked + rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, + rscriptType = /\/(java|ecma)script/i, + rcleanScript = /^\s*\s*$/g, + wrapMap = { + option: [ 1, "" ], + legend: [ 1, "
", "
" ], + thead: [ 1, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + col: [ 2, "", "
" ], + area: [ 1, "", "" ], + _default: [ 0, "", "" ] + }, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement("div") ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, +// unless wrapped in a div with non-breaking characters in front of it. +if ( !jQuery.support.htmlSerialize ) { + wrapMap._default = [ 1, "X
", "
" ]; +} + +jQuery.fn.extend({ + text: function( value ) { + return jQuery.access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); + }, null, value, arguments.length ); + }, + + wrapAll: function( html ) { + 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 + var 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.firstChild && elem.firstChild.nodeType === 1 ) { + elem = elem.firstChild; + } + + 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(); + }, + + append: function() { + return this.domManip(arguments, true, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 ) { + this.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip(arguments, true, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 ) { + this.insertBefore( elem, this.firstChild ); + } + }); + }, + + before: function() { + if ( !isDisconnected( this[0] ) ) { + return this.domManip(arguments, false, function( elem ) { + this.parentNode.insertBefore( elem, this ); + }); + } + + if ( arguments.length ) { + var set = jQuery.clean( arguments ); + return this.pushStack( jQuery.merge( set, this ), "before", this.selector ); + } + }, + + after: function() { + if ( !isDisconnected( this[0] ) ) { + return this.domManip(arguments, false, function( elem ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + }); + } + + if ( arguments.length ) { + var set = jQuery.clean( arguments ); + return this.pushStack( jQuery.merge( this, set ), "after", this.selector ); + } + }, + + // keepData is for internal use only--do not document + remove: function( selector, keepData ) { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + if ( !selector || jQuery.filter( selector, [ elem ] ).length ) { + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( elem.getElementsByTagName("*") ); + jQuery.cleanData( [ elem ] ); + } + + if ( elem.parentNode ) { + elem.parentNode.removeChild( elem ); + } + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( elem.getElementsByTagName("*") ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + } + + 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 jQuery.access( this, function( value ) { + var elem = this[0] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for (; i < l; i++ ) { + // Remove element nodes and prevent memory leaks + elem = this[i] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( elem.getElementsByTagName( "*" ) ); + 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( value ) { + if ( !isDisconnected( this[0] ) ) { + // Make sure that the elements are removed from the DOM before they are inserted + // this can help fix replacing a parent with child elements + if ( jQuery.isFunction( value ) ) { + return this.each(function(i) { + var self = jQuery(this), old = self.html(); + self.replaceWith( value.call( this, i, old ) ); + }); + } + + if ( typeof value !== "string" ) { + value = jQuery( value ).detach(); + } + + return this.each(function() { + var next = this.nextSibling, + parent = this.parentNode; + + jQuery( this ).remove(); + + if ( next ) { + jQuery(next).before( value ); + } else { + jQuery(parent).append( value ); + } + }); + } + + return this.length ? + this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) : + this; + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, table, callback ) { + + // Flatten any nested arrays + args = [].concat.apply( [], args ); + + var results, first, fragment, iNoClone, + i = 0, + value = args[0], + scripts = [], + l = this.length; + + // We can't cloneNode fragments that contain checked, in WebKit + if ( !jQuery.support.checkClone && l > 1 && typeof value === "string" && rchecked.test( value ) ) { + return this.each(function() { + jQuery(this).domManip( args, table, callback ); + }); + } + + if ( jQuery.isFunction(value) ) { + return this.each(function(i) { + var self = jQuery(this); + args[0] = value.call( this, i, table ? self.html() : undefined ); + self.domManip( args, table, callback ); + }); + } + + if ( this[0] ) { + results = jQuery.buildFragment( args, this, scripts ); + fragment = results.fragment; + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + table = table && jQuery.nodeName( first, "tr" ); + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + // Fragments from the fragment cache must always be cloned and never used in place. + for ( iNoClone = results.cacheable || l - 1; i < l; i++ ) { + callback.call( + table && jQuery.nodeName( this[i], "table" ) ? + findOrAppend( this[i], "tbody" ) : + this[i], + i === iNoClone ? + fragment : + jQuery.clone( fragment, true, true ) + ); + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + + if ( scripts.length ) { + jQuery.each( scripts, function( i, elem ) { + if ( elem.src ) { + if ( jQuery.ajax ) { + jQuery.ajax({ + url: elem.src, + type: "GET", + dataType: "script", + async: false, + global: false, + "throws": true + }); + } else { + jQuery.error("no ajax"); + } + } else { + jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "" ) ); + } + + if ( elem.parentNode ) { + elem.parentNode.removeChild( elem ); + } + }); + } + } + + return this; + } +}); + +function findOrAppend( elem, tag ) { + return elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) ); +} + +function cloneCopyEvent( src, dest ) { + + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function cloneFixAttributes( src, dest ) { + var nodeName; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + // clearAttributes removes the attributes, which we don't want, + // but also removes the attachEvent events, which we *do* want + if ( dest.clearAttributes ) { + dest.clearAttributes(); + } + + // mergeAttributes, in contrast, only merges back on the + // original attributes, not the events + if ( dest.mergeAttributes ) { + dest.mergeAttributes( src ); + } + + nodeName = dest.nodeName.toLowerCase(); + + if ( nodeName === "object" ) { + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( jQuery.support.html5Clone && (src.innerHTML && !jQuery.trim(dest.innerHTML)) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + + // IE blanks contents when cloning scripts + } else if ( nodeName === "script" && dest.text !== src.text ) { + dest.text = src.text; + } + + // Event data gets referenced instead of copied if the expando + // gets copied too + dest.removeAttribute( jQuery.expando ); +} + +jQuery.buildFragment = function( args, context, scripts ) { + var fragment, cacheable, cachehit, + first = args[ 0 ]; + + // Set context from what may come in as undefined or a jQuery collection or a node + // Updated to fix #12266 where accessing context[0] could throw an exception in IE9/10 & + // also doubles as fix for #8950 where plain objects caused createDocumentFragment exception + context = context || document; + context = !context.nodeType && context[0] || context; + context = context.ownerDocument || context; + + // Only cache "small" (1/2 KB) HTML strings that are associated with the main document + // Cloning options loses the selected state, so don't cache them + // IE 6 doesn't like it when you put or elements in a fragment + // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache + // Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501 + if ( args.length === 1 && typeof first === "string" && first.length < 512 && context === document && + first.charAt(0) === "<" && !rnocache.test( first ) && + (jQuery.support.checkClone || !rchecked.test( first )) && + (jQuery.support.html5Clone || !rnoshimcache.test( first )) ) { + + // Mark cacheable and look for a hit + cacheable = true; + fragment = jQuery.fragments[ first ]; + cachehit = fragment !== undefined; + } + + if ( !fragment ) { + fragment = context.createDocumentFragment(); + jQuery.clean( args, context, fragment, scripts ); + + // Update the cache, but only store false + // unless this is a second parsing of the same content + if ( cacheable ) { + jQuery.fragments[ first ] = cachehit && fragment; + } + } + + return { fragment: fragment, cacheable: cacheable }; +}; + +jQuery.fragments = {}; + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + l = insert.length, + parent = this.length === 1 && this[0].parentNode; + + if ( (parent == null || parent && parent.nodeType === 11 && parent.childNodes.length === 1) && l === 1 ) { + insert[ original ]( this[0] ); + return this; + } else { + for ( ; i < l; i++ ) { + elems = ( i > 0 ? this.clone(true) : this ).get(); + jQuery( insert[i] )[ original ]( elems ); + ret = ret.concat( elems ); + } + + return this.pushStack( ret, name, insert.selector ); + } + }; +}); + +function getAll( elem ) { + if ( typeof elem.getElementsByTagName !== "undefined" ) { + return elem.getElementsByTagName( "*" ); + + } else if ( typeof elem.querySelectorAll !== "undefined" ) { + return elem.querySelectorAll( "*" ); + + } else { + return []; + } +} + +// Used in clean, fixes the defaultChecked property +function fixDefaultChecked( elem ) { + if ( rcheckableType.test( elem.type ) ) { + elem.defaultChecked = elem.checked; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var srcElements, + destElements, + i, + clone; + + if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && + (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { + // IE copies events bound via attachEvent when using cloneNode. + // Calling detachEvent on the clone will also remove the events + // from the original. In order to get around this, we use some + // proprietary methods to clear the events. Thanks to MooTools + // guys for this hotness. + + cloneFixAttributes( elem, clone ); + + // Using Sizzle here is crazy slow, so we use getElementsByTagName instead + srcElements = getAll( elem ); + destElements = getAll( clone ); + + // Weird iteration because IE will replace the length property + // with an element if you are cloning the body and one of the + // elements on the page has a name or id of "length" + for ( i = 0; srcElements[i]; ++i ) { + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[i] ) { + cloneFixAttributes( srcElements[i], destElements[i] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + cloneCopyEvent( elem, clone ); + + if ( deepDataAndEvents ) { + srcElements = getAll( elem ); + destElements = getAll( clone ); + + for ( i = 0; srcElements[i]; ++i ) { + cloneCopyEvent( srcElements[i], destElements[i] ); + } + } + } + + srcElements = destElements = null; + + // Return the cloned set + return clone; + }, + + clean: function( elems, context, fragment, scripts ) { + var i, j, elem, tag, wrap, depth, div, hasBody, tbody, len, handleScript, jsTags, + safe = context === document && safeFragment, + ret = []; + + // Ensure that context is a document + if ( !context || typeof context.createDocumentFragment === "undefined" ) { + context = document; + } + + // Use the already-created safe fragment if context permits + for ( i = 0; (elem = elems[i]) != null; i++ ) { + if ( typeof elem === "number" ) { + elem += ""; + } + + if ( !elem ) { + continue; + } + + // Convert html string into DOM nodes + if ( typeof elem === "string" ) { + if ( !rhtml.test( elem ) ) { + elem = context.createTextNode( elem ); + } else { + // Ensure a safe container in which to render the html + safe = safe || createSafeFragment( context ); + div = context.createElement("div"); + safe.appendChild( div ); + + // Fix "XHTML"-style tags in all browsers + elem = elem.replace(rxhtmlTag, "<$1>"); + + // Go to html and back, then peel off extra wrappers + tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + depth = wrap[0]; + div.innerHTML = wrap[1] + elem + wrap[2]; + + // Move to the right depth + while ( depth-- ) { + div = div.lastChild; + } + + // Remove IE's autoinserted from table fragments + if ( !jQuery.support.tbody ) { + + // String was a , *may* have spurious + hasBody = rtbody.test(elem); + tbody = tag === "table" && !hasBody ? + div.firstChild && div.firstChild.childNodes : + + // String was a bare or + wrap[1] === "
" && !hasBody ? + div.childNodes : + []; + + for ( j = tbody.length - 1; j >= 0 ; --j ) { + if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) { + tbody[ j ].parentNode.removeChild( tbody[ j ] ); + } + } + } + + // IE completely kills leading whitespace when innerHTML is used + if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild ); + } + + elem = div.childNodes; + + // Take out of fragment container (we need a fresh div each time) + div.parentNode.removeChild( div ); + } + } + + if ( elem.nodeType ) { + ret.push( elem ); + } else { + jQuery.merge( ret, elem ); + } + } + + // Fix #11356: Clear elements from safeFragment + if ( div ) { + elem = div = safe = null; + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !jQuery.support.appendChecked ) { + for ( i = 0; (elem = ret[i]) != null; i++ ) { + if ( jQuery.nodeName( elem, "input" ) ) { + fixDefaultChecked( elem ); + } else if ( typeof elem.getElementsByTagName !== "undefined" ) { + jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked ); + } + } + } + + // Append elements to a provided document fragment + if ( fragment ) { + // Special handling of each script element + handleScript = function( elem ) { + // Check if we consider it executable + if ( !elem.type || rscriptType.test( elem.type ) ) { + // Detach the script and store it in the scripts array (if provided) or the fragment + // Return truthy to indicate that it has been handled + return scripts ? + scripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) : + fragment.appendChild( elem ); + } + }; + + for ( i = 0; (elem = ret[i]) != null; i++ ) { + // Check if we're done after handling an executable script + if ( !( jQuery.nodeName( elem, "script" ) && handleScript( elem ) ) ) { + // Append to fragment and handle embedded scripts + fragment.appendChild( elem ); + if ( typeof elem.getElementsByTagName !== "undefined" ) { + // handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration + jsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName("script") ), handleScript ); + + // Splice the scripts into ret after their former ancestor and advance our index beyond them + ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) ); + i += jsTags.length; + } + } + } + } + + return ret; + }, + + cleanData: function( elems, /* internal */ acceptData ) { + var data, id, elem, type, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + deleteExpando = jQuery.support.deleteExpando, + special = jQuery.event.special; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( acceptData || jQuery.acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + 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 ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( deleteExpando ) { + delete elem[ internalKey ]; + + } else if ( elem.removeAttribute ) { + elem.removeAttribute( internalKey ); + + } else { + elem[ internalKey ] = null; + } + + jQuery.deletedIds.push( id ); + } + } + } + } + } +}); +// Limit scope pollution from any deprecated API +(function() { + +var matched, browser; + +// Use of jQuery.browser is frowned upon. +// More details: http://api.jquery.com/jQuery.browser +// jQuery.uaMatch maintained for back-compat +jQuery.uaMatch = function( ua ) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) || + /(webkit)[ \/]([\w.]+)/.exec( ua ) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) || + /(msie) ([\w.]+)/.exec( ua ) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; +}; + +matched = jQuery.uaMatch( navigator.userAgent ); +browser = {}; + +if ( matched.browser ) { + browser[ matched.browser ] = true; + browser.version = matched.version; +} + +// Chrome is Webkit, but Webkit is also Safari. +if ( browser.chrome ) { + browser.webkit = true; +} else if ( browser.webkit ) { + browser.safari = true; +} + +jQuery.browser = browser; + +jQuery.sub = function() { + function jQuerySub( selector, context ) { + return new jQuerySub.fn.init( selector, context ); + } + jQuery.extend( true, jQuerySub, this ); + jQuerySub.superclass = this; + jQuerySub.fn = jQuerySub.prototype = this(); + jQuerySub.fn.constructor = jQuerySub; + jQuerySub.sub = this.sub; + jQuerySub.fn.init = function init( selector, context ) { + if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { + context = jQuerySub( context ); + } + + return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); + }; + jQuerySub.fn.init.prototype = jQuerySub.fn; + var rootjQuerySub = jQuerySub(document); + return jQuerySub; +}; + +})(); +var curCSS, iframe, iframeDoc, + ralpha = /alpha\([^)]*\)/i, + ropacity = /opacity=([^)]*)/, + rposition = /^(top|right|bottom|left)$/, + // 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]).+)/, + rmargin = /^margin/, + rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ), + rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ), + rrelNum = new RegExp( "^([-+])=(" + core_pnum + ")", "i" ), + elemdisplay = { BODY: "block" }, + + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: 0, + fontWeight: 400 + }, + + cssExpand = [ "Top", "Right", "Bottom", "Left" ], + cssPrefixes = [ "Webkit", "O", "Moz", "ms" ], + + eventsToggle = jQuery.fn.toggle; + +// return a css property mapped to a potentially vendor prefixed property +function vendorPropName( style, name ) { + + // shortcut for names that are not vendor prefixed + if ( name in style ) { + return name; + } + + // check for vendor prefixed names + var capName = name.charAt(0).toUpperCase() + name.slice(1), + origName = name, + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in style ) { + return name; + } + } + + return origName; +} + +function isHidden( elem, el ) { + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); +} + +function showHide( elements, show ) { + var elem, display, + values = [], + index = 0, + length = elements.length; + + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + values[ index ] = jQuery._data( elem, "olddisplay" ); + if ( show ) { + // Reset the inline display of this element to learn if it is + // being hidden by cascaded rules or not + if ( !values[ index ] && elem.style.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 ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); + } + } else { + display = curCSS( elem, "display" ); + + if ( !values[ index ] && display !== "none" ) { + jQuery._data( elem, "olddisplay", 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.fn.extend({ + css: function( name, value ) { + return jQuery.access( this, function( elem, name, value ) { + 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, fn2 ) { + var bool = typeof state === "boolean"; + + if ( jQuery.isFunction( state ) && jQuery.isFunction( fn2 ) ) { + return eventsToggle.apply( this, arguments ); + } + + return this.each(function() { + if ( bool ? state : isHidden( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + }); + } +}); + +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; + + } + } + } + }, + + // Exclude the following css properties to add px + cssNumber: { + "fillOpacity": true, + "fontWeight": true, + "lineHeight": true, + "opacity": 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: { + // normalize float css property + "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat" + }, + + // 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( style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // convert relative number strings (+= or -=) to relative numbers. #7345 + if ( type === "string" && (ret = rrelNum.exec( value )) ) { + value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); + // Fixes bug #9237 + type = "number"; + } + + // Make sure that NaN and null values aren't set. See: #7116 + if ( value == null || type === "number" && isNaN( value ) ) { + return; + } + + // If a number was passed in, add 'px' to the (except for certain CSS properties) + if ( type === "number" && !jQuery.cssNumber[ origName ] ) { + value += "px"; + } + + // 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 ) { + // Wrapped to prevent IE from throwing errors when 'invalid' values are provided + // Fixes bug #5509 + try { + style[ name ] = value; + } catch(e) {} + } + + } 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, numeric, extra ) { + 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( elem.style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + 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 ); + } + + //convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Return, converting to number if forced or a qualifier was provided and val looks numeric + if ( numeric || extra !== undefined ) { + num = parseFloat( val ); + return numeric || jQuery.isNumeric( num ) ? num || 0 : val; + } + return val; + }, + + // A method for quickly swapping in/out CSS properties to get correct calculations + swap: function( elem, options, callback ) { + 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.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; + } +}); + +// NOTE: To any future maintainer, we've window.getComputedStyle +// because jsdom on node.js will break without it. +if ( window.getComputedStyle ) { + curCSS = function( elem, name ) { + var ret, width, minWidth, maxWidth, + computed = window.getComputedStyle( elem, null ), + style = elem.style; + + if ( computed ) { + + // getPropertyValue is only needed for .css('filter') in IE9, see #12537 + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right + // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels + // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values + if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret; + }; +} else if ( document.documentElement.currentStyle ) { + curCSS = function( elem, name ) { + var left, rsLeft, + ret = elem.currentStyle && elem.currentStyle[ name ], + style = elem.style; + + // Avoid setting ret to empty string here + // so we don't default to auto + if ( ret == null && style && style[ name ] ) { + ret = style[ name ]; + } + + // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + // but not position css attributes, as those are proportional to the parent element instead + // and we can't measure the parent instead because it might trigger a "stacking dolls" problem + if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { + + // Remember the original values + left = style.left; + rsLeft = elem.runtimeStyle && elem.runtimeStyle.left; + + // Put in the new values to get a computed value out + if ( rsLeft ) { + elem.runtimeStyle.left = elem.currentStyle.left; + } + style.left = name === "fontSize" ? "1em" : ret; + ret = style.pixelLeft + "px"; + + // Revert the changed values + style.left = left; + if ( rsLeft ) { + elem.runtimeStyle.left = rsLeft; + } + } + + return ret === "" ? "auto" : ret; + }; +} + +function setPositiveNumber( elem, value, subtract ) { + var matches = rnumsplit.exec( value ); + return matches ? + Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox ) { + 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" ) { + // we use jQuery.css instead of curCSS here + // because of the reliableMarginRight CSS hook! + val += jQuery.css( elem, extra + cssExpand[ i ], true ); + } + + // From this point on we use curCSS for maximum performance (relevant in animations) + if ( isBorderBox ) { + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= parseFloat( curCSS( elem, "padding" + cssExpand[ i ] ) ) || 0; + } + + // at this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= parseFloat( curCSS( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0; + } + } else { + // at this point, extra isn't content, so add padding + val += parseFloat( curCSS( elem, "padding" + cssExpand[ i ] ) ) || 0; + + // at this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += parseFloat( curCSS( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0; + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with offset property, which is equivalent to the border-box value + var val = name === "width" ? elem.offsetWidth : elem.offsetHeight, + valueIsBorderBox = true, + isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing" ) === "border-box"; + + // 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 ); + if ( val < 0 || val == null ) { + val = elem.style[ name ]; + } + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test(val) ) { + return val; + } + + // we need the check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && ( jQuery.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 + ) + ) + "px"; +} + + +// Try to determine the default display value of an element +function css_defaultDisplay( nodeName ) { + if ( elemdisplay[ nodeName ] ) { + return elemdisplay[ nodeName ]; + } + + var elem = jQuery( "<" + nodeName + ">" ).appendTo( document.body ), + display = elem.css("display"); + elem.remove(); + + // If the simple way fails, + // get element's real default display by attaching it to a temp iframe + if ( display === "none" || display === "" ) { + // Use the already-created iframe if possible + iframe = document.body.appendChild( + iframe || jQuery.extend( document.createElement("iframe"), { + frameBorder: 0, + width: 0, + height: 0 + }) + ); + + // Create a cacheable copy of the iframe document on first call. + // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML + // document to it; WebKit & Firefox won't allow reusing the iframe document. + if ( !iframeDoc || !iframe.createElement ) { + iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document; + iframeDoc.write(""); + iframeDoc.close(); + } + + elem = iframeDoc.body.appendChild( iframeDoc.createElement(nodeName) ); + + display = curCSS( elem, "display" ); + document.body.removeChild( iframe ); + } + + // Store the correct default display + elemdisplay[ nodeName ] = display; + + return display; +} + +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 + // however, it must have a current display style that would benefit from this + if ( elem.offsetWidth === 0 && rdisplayswap.test( curCSS( elem, "display" ) ) ) { + return jQuery.swap( elem, cssShow, function() { + return getWidthOrHeight( elem, name, extra ); + }); + } else { + return getWidthOrHeight( elem, name, extra ); + } + } + }, + + set: function( elem, value, extra ) { + return setPositiveNumber( elem, value, extra ? + augmentWidthOrHeight( + elem, + name, + extra, + jQuery.support.boxSizing && jQuery.css( elem, "boxSizing" ) === "border-box" + ) : 0 + ); + } + }; +}); + +if ( !jQuery.support.opacity ) { + jQuery.cssHooks.opacity = { + get: function( elem, computed ) { + // IE uses filters for opacity + return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ? + ( 0.01 * parseFloat( RegExp.$1 ) ) + "" : + computed ? "1" : ""; + }, + + set: function( elem, value ) { + var style = elem.style, + currentStyle = elem.currentStyle, + opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "", + filter = currentStyle && currentStyle.filter || style.filter || ""; + + // IE has trouble with opacity if it does not have layout + // Force it by setting the zoom level + style.zoom = 1; + + // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652 + if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" && + style.removeAttribute ) { + + // Setting style.filter to null, "" & " " still leave "filter:" in the cssText + // if "filter:" is present at all, clearType is disabled, we want to avoid this + // style.removeAttribute is IE Only, but so apparently is this code path... + style.removeAttribute( "filter" ); + + // if there there is no filter style applied in a css rule, we are done + if ( currentStyle && !currentStyle.filter ) { + return; + } + } + + // otherwise, set new filter values + style.filter = ralpha.test( filter ) ? + filter.replace( ralpha, opacity ) : + filter + " " + opacity; + } + }; +} + +// These hooks cannot be added until DOM ready because the support test +// for it is not run until after DOM ready +jQuery(function() { + if ( !jQuery.support.reliableMarginRight ) { + jQuery.cssHooks.marginRight = { + get: function( elem, computed ) { + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + // Work around by temporarily setting element display to inline-block + return jQuery.swap( elem, { "display": "inline-block" }, function() { + if ( computed ) { + return curCSS( elem, "marginRight" ); + } + }); + } + }; + } + + // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 + // getComputedStyle returns percent when specified for top/left/bottom/right + // rather than make the css module depend on the offset module, we just check for it here + if ( !jQuery.support.pixelPosition && jQuery.fn.position ) { + jQuery.each( [ "top", "left" ], function( i, prop ) { + jQuery.cssHooks[ prop ] = { + get: function( elem, computed ) { + if ( computed ) { + var ret = curCSS( elem, prop ); + // if curCSS returns percentage, fallback to offset + return rnumnonpx.test( ret ) ? jQuery( elem ).position()[ prop ] + "px" : ret; + } + } + }; + }); + } + +}); + +if ( jQuery.expr && jQuery.expr.filters ) { + jQuery.expr.filters.hidden = function( elem ) { + return ( elem.offsetWidth === 0 && elem.offsetHeight === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || curCSS( elem, "display" )) === "none"); + }; + + jQuery.expr.filters.visible = function( elem ) { + return !jQuery.expr.filters.hidden( elem ); + }; +} + +// 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, + + // assumes a single number if not a string + parts = typeof value === "string" ? value.split(" ") : [ value ], + expanded = {}; + + for ( i = 0; 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; + } +}); +var r20 = /%20/g, + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i, + rselectTextarea = /^(?:select|textarea)/i; + +jQuery.fn.extend({ + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map(function(){ + return this.elements ? jQuery.makeArray( this.elements ) : this; + }) + .filter(function(){ + return this.name && !this.disabled && + ( this.checked || rselectTextarea.test( this.nodeName ) || + rinput.test( this.type ) ); + }) + .map(function( i, elem ){ + var val = jQuery( this ).val(); + + return val == null ? + null : + jQuery.isArray( val ) ? + jQuery.map( val, function( val, i ){ + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + }) : + { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + }).get(); + } +}); + +//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, "+" ); +}; + +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 { + // If array item is non-scalar (array or object), encode its + // numeric index to resolve deserialization ambiguity issues. + // Note that rack (as of 1.0.0) can't currently deserialize + // nested arrays properly, and attempting to do so may cause + // a server error. Possible fixes are to modify rack's + // deserialization algorithm or to provide an option or flag + // to force array serialization to be shallow. + buildParams( prefix + "[" + ( typeof v === "object" ? 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 ); + } +} +var + // Document location + ajaxLocParts, + ajaxLocation, + + rhash = /#.*$/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + rquery = /\?/, + rscript = /)<[^<]*)*<\/script>/gi, + rts = /([?&])_=[^&]*/, + rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/, + + // Keep a copy of the old load method + _load = jQuery.fn.load, + + /* 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 = ["*/"] + ["*"]; + +// #8138, IE may throw an exception when accessing +// a field from window.location if document.domain has been set +try { + ajaxLocation = location.href; +} catch( e ) { + // Use the href attribute of an A element + // since IE will modify it given document.location + ajaxLocation = document.createElement( "a" ); + ajaxLocation.href = ""; + ajaxLocation = ajaxLocation.href; +} + +// Segment location into parts +ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || []; + +// 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, list, placeBefore, + dataTypes = dataTypeExpression.toLowerCase().split( core_rspace ), + i = 0, + length = dataTypes.length; + + if ( jQuery.isFunction( func ) ) { + // For each dataType in the dataTypeExpression + for ( ; i < length; i++ ) { + dataType = dataTypes[ i ]; + // We control if we're asked to add before + // any existing element + placeBefore = /^\+/.test( dataType ); + if ( placeBefore ) { + dataType = dataType.substr( 1 ) || "*"; + } + list = structure[ dataType ] = structure[ dataType ] || []; + // then we add to the structure accordingly + list[ placeBefore ? "unshift" : "push" ]( func ); + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR, + dataType /* internal */, inspected /* internal */ ) { + + dataType = dataType || options.dataTypes[ 0 ]; + inspected = inspected || {}; + + inspected[ dataType ] = true; + + var selection, + list = structure[ dataType ], + i = 0, + length = list ? list.length : 0, + executeOnly = ( structure === prefilters ); + + for ( ; i < length && ( executeOnly || !selection ); i++ ) { + selection = list[ i ]( options, originalOptions, jqXHR ); + // If we got redirected to another dataType + // we try there if executing only and not done already + if ( typeof selection === "string" ) { + if ( !executeOnly || inspected[ selection ] ) { + selection = undefined; + } else { + options.dataTypes.unshift( selection ); + selection = inspectPrefiltersOrTransports( + structure, options, originalOptions, jqXHR, selection, inspected ); + } + } + } + // If we're only executing or nothing was selected + // we try the catchall dataType if not done already + if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) { + selection = inspectPrefiltersOrTransports( + structure, options, originalOptions, jqXHR, "*", inspected ); + } + // unnecessary when only executing (prefilters) + // but it'll be ignored by the caller in that case + return selection; +} + +// 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 ); + } +} + +jQuery.fn.load = function( url, params, callback ) { + if ( typeof url !== "string" && _load ) { + return _load.apply( this, arguments ); + } + + // Don't do a request if no elements are being requested + if ( !this.length ) { + return this; + } + + var selector, type, response, + self = this, + off = url.indexOf(" "); + + if ( off >= 0 ) { + selector = url.slice( off, url.length ); + 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"; + } + + // Request the remote document + jQuery.ajax({ + url: url, + + // if "type" variable is undefined, then "GET" method will be used + type: type, + dataType: "html", + data: params, + complete: function( jqXHR, status ) { + if ( callback ) { + self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] ); + } + } + }).done(function( responseText ) { + + // Save response for use in complete callback + response = arguments; + + // See if a selector was specified + self.html( selector ? + + // Create a dummy div to hold the results + jQuery("
") + + // inject the contents of the document in, removing the scripts + // to avoid any 'Permission Denied' errors in IE + .append( responseText.replace( rscript, "" ) ) + + // Locate the specified elements + .find( selector ) : + + // If not, just inject the full result + responseText ); + + }); + + return this; +}; + +// Attach a bunch of functions for handling common AJAX events +jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){ + jQuery.fn[ o ] = function( f ){ + return this.on( o, f ); + }; +}); + +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; + } + + return jQuery.ajax({ + type: method, + url: url, + data: data, + success: callback, + dataType: type + }); + }; +}); + +jQuery.extend({ + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + // 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 ) { + if ( settings ) { + // Building a settings object + ajaxExtend( target, jQuery.ajaxSettings ); + } else { + // Extending ajaxSettings + settings = target; + target = jQuery.ajaxSettings; + } + ajaxExtend( target, settings ); + return target; + }, + + ajaxSettings: { + url: ajaxLocation, + isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ), + global: true, + type: "GET", + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + processData: true, + async: true, + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + xml: "application/xml, text/xml", + html: "text/html", + text: "text/plain", + json: "application/json, text/javascript", + "*": allTypes + }, + + contents: { + xml: /xml/, + html: /html/, + json: /json/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText" + }, + + // List of data converters + // 1) key format is "source_type destination_type" (a single space in-between) + // 2) the catchall symbol "*" can be used for source_type + converters: { + + // Convert anything to text + "* text": window.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: { + context: true, + url: true + } + }, + + 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 // ifModified key + ifModifiedKey, + // Response headers + responseHeadersString, + responseHeaders, + // transport + transport, + // timeout handle + timeoutTimer, + // Cross-domain detection vars + parts, + // 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 + // It's the callbackContext if one was provided in the options + // and if it's a DOM node or a jQuery collection + globalEventContext = callbackContext !== s && + ( callbackContext.nodeType || callbackContext instanceof 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, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( !state ) { + var lname = name.toLowerCase(); + name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Raw string + getAllResponseHeaders: function() { + return state === 2 ? responseHeadersString : null; + }, + + // 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 === undefined ? null : match; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( !state ) { + s.mimeType = type; + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + statusText = statusText || strAbort; + if ( transport ) { + transport.abort( statusText ); + } + done( 0, statusText ); + return this; + } + }; + + // Callback for when everything is done + // It is defined here because jslint complains if it is declared + // at the end of the function (which would be more logical and readable) + 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 ) { + 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; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // If successful, handle type chaining + if ( status >= 200 && status < 300 || status === 304 ) { + + // 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[ ifModifiedKey ] = modified; + } + modified = jqXHR.getResponseHeader("Etag"); + if ( modified ) { + jQuery.etag[ ifModifiedKey ] = modified; + } + } + + // If not modified + if ( status === 304 ) { + + statusText = "notmodified"; + isSuccess = true; + + // If we have data + } else { + + isSuccess = ajaxConvert( s, response ); + statusText = isSuccess.state; + success = isSuccess.data; + error = isSuccess.error; + isSuccess = !error; + } + } else { + // We extract error from statusText + // then normalize statusText and status for non-aborts + error = statusText; + if ( !statusText || status ) { + 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( "ajax" + ( isSuccess ? "Success" : "Error" ), + [ 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" ); + } + } + } + + // Attach deferreds + deferred.promise( jqXHR ); + jqXHR.success = jqXHR.done; + jqXHR.error = jqXHR.fail; + jqXHR.complete = completeDeferred.add; + + // Status-dependent callbacks + jqXHR.statusCode = function( map ) { + if ( map ) { + var tmp; + if ( state < 2 ) { + for ( tmp in map ) { + statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ]; + } + } else { + tmp = map[ jqXHR.status ]; + jqXHR.always( tmp ); + } + } + return this; + }; + + // Remove hash character (#7531: and string promotion) + // Add protocol if not provided (#5866: IE7 issue with protocol-less urls) + // We also use the url parameter if available + s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" ); + + // Extract dataTypes list + s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( core_rspace ); + + // A cross-domain request is in order when we have a protocol:host:port mismatch + if ( s.crossDomain == null ) { + parts = rurl.exec( s.url.toLowerCase() ); + s.crossDomain = !!( parts && + ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] || + ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) != + ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) ) + ); + } + + // 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 + fireGlobals = s.global; + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // If data is available, append data to url + if ( s.data ) { + s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data; + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Get ifModifiedKey before adding the anti-cache parameter + ifModifiedKey = s.url; + + // Add anti-cache in url if needed + if ( s.cache === false ) { + + var ts = jQuery.now(), + // try replacing _= if it is there + ret = s.url.replace( rts, "$1_=" + ts ); + + // if nothing was replaced, add timestamp to the end + s.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" ); + } + } + + // 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 If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + ifModifiedKey = ifModifiedKey || s.url; + if ( jQuery.lastModified[ ifModifiedKey ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] ); + } + if ( jQuery.etag[ ifModifiedKey ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] ); + } + } + + // 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 ] ); + } + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = 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; + } + } + } + + return jqXHR; + }, + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {} + +}); + +/* Handles responses to an ajax request: + * - sets all responseXXX fields accordingly + * - 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, + responseFields = s.responseFields; + + // Fill responseXXX fields + for ( type in responseFields ) { + if ( type in responses ) { + jqXHR[ responseFields[type] ] = responses[ type ]; + } + } + + // 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 +function ajaxConvert( s, response ) { + + var conv, conv2, current, tmp, + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(), + prev = dataTypes[ 0 ], + converters = {}, + i = 0; + + // Apply the dataFilter if provided + if ( s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + // Convert to each sequential dataType, tolerating list modification + for ( ; (current = dataTypes[++i]); ) { + + // There's only work to do if current dataType is non-auto + if ( current !== "*" ) { + + // Convert response if prev dataType is non-auto and differs from current + 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.splice( i--, 0, current ); + } + + 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 }; + } + } + } + } + + // Update prev for next iteration + prev = current; + } + } + + return { state: "success", data: response }; +} +var oldCallbacks = [], + rquestion = /\?/, + rjsonp = /(=)\?(?=&|$)|\?\?/, + nonce = jQuery.now(); + +// 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, + data = s.data, + url = s.url, + hasCallback = s.jsonp !== false, + replaceInUrl = hasCallback && rjsonp.test( url ), + replaceInData = hasCallback && !replaceInUrl && typeof data === "string" && + !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && + rjsonp.test( data ); + + // Handle iff the expected data type is "jsonp" or we have a parameter to set + if ( s.dataTypes[ 0 ] === "jsonp" || replaceInUrl || replaceInData ) { + + // Get callback name, remembering preexisting value associated with it + callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ? + s.jsonpCallback() : + s.jsonpCallback; + overwritten = window[ callbackName ]; + + // Insert callback into url or form data + if ( replaceInUrl ) { + s.url = url.replace( rjsonp, "$1" + callbackName ); + } else if ( replaceInData ) { + s.data = data.replace( rjsonp, "$1" + callbackName ); + } else if ( hasCallback ) { + s.url += ( rquestion.test( 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 + window[ callbackName ] = function() { + responseContainer = arguments; + }; + + // Clean-up function (fires after converters) + jqXHR.always(function() { + // Restore preexisting value + 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"; + } +}); +// Install script dataType +jQuery.ajaxSetup({ + accepts: { + script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /javascript|ecmascript/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +}); + +// Handle cache's special case and global +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + s.global = false; + } +}); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function(s) { + + // This transport only deals with cross domain requests + if ( s.crossDomain ) { + + var script, + head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement; + + return { + + send: function( _, callback ) { + + script = document.createElement( "script" ); + + script.async = "async"; + + if ( s.scriptCharset ) { + script.charset = s.scriptCharset; + } + + script.src = s.url; + + // Attach handlers for all browsers + script.onload = script.onreadystatechange = function( _, isAbort ) { + + if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) { + + // Handle memory leak in IE + script.onload = script.onreadystatechange = null; + + // Remove the script + if ( head && script.parentNode ) { + head.removeChild( script ); + } + + // Dereference the script + script = undefined; + + // Callback if not abort + if ( !isAbort ) { + callback( 200, "success" ); + } + } + }; + // Use insertBefore instead of appendChild to circumvent an IE6 bug. + // This arises when a base node is used (#2709 and #4378). + head.insertBefore( script, head.firstChild ); + }, + + abort: function() { + if ( script ) { + script.onload( 0, 1 ); + } + } + }; + } +}); +var xhrCallbacks, + // #5280: Internet Explorer will keep connections alive if we don't abort on unload + xhrOnUnloadAbort = window.ActiveXObject ? function() { + // Abort all pending requests + for ( var key in xhrCallbacks ) { + xhrCallbacks[ key ]( 0, 1 ); + } + } : false, + xhrId = 0; + +// Functions to create xhrs +function createStandardXHR() { + try { + return new window.XMLHttpRequest(); + } catch( e ) {} +} + +function createActiveXHR() { + try { + return new window.ActiveXObject( "Microsoft.XMLHTTP" ); + } catch( e ) {} +} + +// Create the request object +// (This is still attached to ajaxSettings for backward compatibility) +jQuery.ajaxSettings.xhr = window.ActiveXObject ? + /* Microsoft failed to properly + * implement the XMLHttpRequest in IE7 (can't request local files), + * so we use the ActiveXObject when it is available + * Additionally XMLHttpRequest can be disabled in IE7/IE8 so + * we need a fallback. + */ + function() { + return !this.isLocal && createStandardXHR() || createActiveXHR(); + } : + // For all other browsers, use the standard XMLHttpRequest object + createStandardXHR; + +// Determine support properties +(function( xhr ) { + jQuery.extend( jQuery.support, { + ajax: !!xhr, + cors: !!xhr && ( "withCredentials" in xhr ) + }); +})( jQuery.ajaxSettings.xhr() ); + +// Create transport if the browser can provide an xhr +if ( jQuery.support.ajax ) { + + jQuery.ajaxTransport(function( s ) { + // Cross domain only allowed if supported through XMLHttpRequest + if ( !s.crossDomain || jQuery.support.cors ) { + + var callback; + + return { + send: function( headers, complete ) { + + // Get a new xhr + var handle, i, + xhr = s.xhr(); + + // Open the socket + // Passing null username, generates a login popup on Opera (#2865) + if ( s.username ) { + xhr.open( s.type, s.url, s.async, s.username, s.password ); + } else { + xhr.open( s.type, s.url, s.async ); + } + + // Apply custom fields if provided + if ( s.xhrFields ) { + for ( i in s.xhrFields ) { + xhr[ i ] = s.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( s.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( s.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 ( !s.crossDomain && !headers["X-Requested-With"] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Need an extra try/catch for cross domain requests in Firefox 3 + try { + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + } catch( _ ) {} + + // Do send the request + // This may raise an exception which is actually + // handled in jQuery.ajax (so no try/catch here) + xhr.send( ( s.hasContent && s.data ) || null ); + + // Listener + callback = function( _, isAbort ) { + + var status, + statusText, + responseHeaders, + responses, + xml; + + // Firefox throws exceptions when accessing properties + // of an xhr when a network error occurred + // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE) + try { + + // Was never called and is aborted or complete + if ( callback && ( isAbort || xhr.readyState === 4 ) ) { + + // Only called once + callback = undefined; + + // Do not keep as active anymore + if ( handle ) { + xhr.onreadystatechange = jQuery.noop; + if ( xhrOnUnloadAbort ) { + delete xhrCallbacks[ handle ]; + } + } + + // If it's an abort + if ( isAbort ) { + // Abort it manually if needed + if ( xhr.readyState !== 4 ) { + xhr.abort(); + } + } else { + status = xhr.status; + responseHeaders = xhr.getAllResponseHeaders(); + responses = {}; + xml = xhr.responseXML; + + // Construct response list + if ( xml && xml.documentElement /* #4958 */ ) { + responses.xml = xml; + } + + // When requesting binary data, IE6-9 will throw an exception + // on any attempt to access responseText (#11426) + try { + responses.text = xhr.responseText; + } catch( e ) { + } + + // Firefox throws an exception when accessing + // statusText for faulty cross-domain requests + try { + statusText = xhr.statusText; + } catch( e ) { + // We normalize with Webkit giving an empty statusText + statusText = ""; + } + + // Filter status for non standard behaviors + + // If the request is local and we have data: assume a success + // (success with no data won't get notified, that's the best we + // can do given current implementations) + if ( !status && s.isLocal && !s.crossDomain ) { + status = responses.text ? 200 : 404; + // IE - #1450: sometimes returns 1223 when it should be 204 + } else if ( status === 1223 ) { + status = 204; + } + } + } + } catch( firefoxAccessException ) { + if ( !isAbort ) { + complete( -1, firefoxAccessException ); + } + } + + // Call complete if needed + if ( responses ) { + complete( status, statusText, responses, responseHeaders ); + } + }; + + if ( !s.async ) { + // if we're in sync mode we fire the callback + callback(); + } else if ( xhr.readyState === 4 ) { + // (IE6 & IE7) if it's in cache and has been + // retrieved directly we need to fire the callback + setTimeout( callback, 0 ); + } else { + handle = ++xhrId; + if ( xhrOnUnloadAbort ) { + // Create the active xhrs callbacks list if needed + // and attach the unload handler + if ( !xhrCallbacks ) { + xhrCallbacks = {}; + jQuery( window ).unload( xhrOnUnloadAbort ); + } + // Add to list of active xhrs callbacks + xhrCallbacks[ handle ] = callback; + } + xhr.onreadystatechange = callback; + } + }, + + abort: function() { + if ( callback ) { + callback(0,1); + } + } + }; + } + }); +} +var fxNow, timerId, + rfxtypes = /^(?:toggle|show|hide)$/, + rfxnum = new RegExp( "^(?:([-+])=|)(" + core_pnum + ")([a-z%]*)$", "i" ), + rrun = /queueHooks$/, + animationPrefilters = [ defaultPrefilter ], + tweeners = { + "*": [function( prop, value ) { + var end, unit, + tween = this.createTween( prop, value ), + parts = rfxnum.exec( value ), + target = tween.cur(), + start = +target || 0, + scale = 1, + maxIterations = 20; + + if ( parts ) { + end = +parts[2]; + unit = parts[3] || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + + // We need to compute starting value + if ( unit !== "px" && start ) { + // Iteratively approximate from a nonzero starting point + // Prefer the current property, because this process will be trivial if it uses the same units + // Fallback to end or a simple constant + start = jQuery.css( tween.elem, prop, true ) || end || 1; + + do { + // If previous iteration zeroed out, double until we get *something* + // Use a string for doubling factor so we don't accidentally see scale as unchanged below + scale = scale || ".5"; + + // Adjust and apply + start = start / scale; + jQuery.style( tween.elem, prop, start + unit ); + + // Update scale, tolerating zero or NaN from tween.cur() + // And breaking the loop if scale is unchanged or perfect, or if we've just had enough + } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations ); + } + + tween.unit = unit; + tween.start = start; + // If a +=/-= token was provided, we're doing a relative animation + tween.end = parts[1] ? start + ( parts[1] + 1 ) * end : end; + } + return tween; + }] + }; + +// Animations created synchronously will run synchronously +function createFxNow() { + setTimeout(function() { + fxNow = undefined; + }, 0 ); + return ( fxNow = jQuery.now() ); +} + +function createTweens( animation, props ) { + jQuery.each( props, function( prop, value ) { + var collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( collection[ index ].call( animation, prop, value ) ) { + + // we're done with this property + return; + } + } + }); +} + +function Animation( elem, properties, options ) { + var result, + index = 0, + tweenerIndex = 0, + length = animationPrefilters.length, + deferred = jQuery.Deferred().always( function() { + // don't match elem in the :animated selector + delete tick.elem; + }), + tick = function() { + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + // 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: {} }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end, easing ) { + 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; + + for ( ; index < length ; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // resolve when we played the last frame + // otherwise, reject + if ( gotoEnd ) { + 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 = animationPrefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + return result; + } + } + + createTweens( animation, props ); + + if ( jQuery.isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + jQuery.fx.timer( + jQuery.extend( tick, { + anim: animation, + queue: animation.opts.queue, + elem: elem + }) + ); + + // 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 ); +} + +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 wont overwrite keys already present. + // also - reusing 'index' from above 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; + } + } +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweener: function( props, callback ) { + if ( jQuery.isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.split(" "); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length ; index++ ) { + prop = props[ index ]; + tweeners[ prop ] = tweeners[ prop ] || []; + tweeners[ prop ].unshift( callback ); + } + }, + + prefilter: function( callback, prepend ) { + if ( prepend ) { + animationPrefilters.unshift( callback ); + } else { + animationPrefilters.push( callback ); + } + } +}); + +function defaultPrefilter( elem, props, opts ) { + var index, prop, value, length, dataShow, toggle, tween, hooks, oldfire, + anim = this, + style = elem.style, + orig = {}, + handled = [], + hidden = elem.nodeType && isHidden( elem ); + + // 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() { + // doing this makes sure that the complete handler will be 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 IE does 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 + if ( jQuery.css( elem, "display" ) === "inline" && + jQuery.css( elem, "float" ) === "none" ) { + + // inline-level elements accept inline-block; + // block-level elements need to be inline with layout + if ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) { + style.display = "inline-block"; + + } else { + style.zoom = 1; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + if ( !jQuery.support.shrinkWrapBlocks ) { + anim.done(function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + }); + } + } + + + // show/hide pass + for ( index in props ) { + value = props[ index ]; + if ( rfxtypes.exec( value ) ) { + delete props[ index ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + continue; + } + handled.push( index ); + } + } + + length = handled.length; + if ( length ) { + dataShow = jQuery._data( elem, "fxshow" ) || jQuery._data( elem, "fxshow", {} ); + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + + // 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; + jQuery.removeData( elem, "fxshow", true ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + }); + for ( index = 0 ; index < length ; index++ ) { + prop = handled[ index ]; + tween = anim.createTween( prop, hidden ? dataShow[ prop ] : 0 ); + orig[ prop ] = dataShow[ prop ] || jQuery.style( elem, prop ); + + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = tween.start; + if ( hidden ) { + tween.end = tween.start; + tween.start = prop === "width" || prop === "height" ? 1 : 0; + } + } + } + } +} + +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 || "swing"; + 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; + + if ( tween.elem[ tween.prop ] != null && + (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) { + return tween.elem[ tween.prop ]; + } + + // passing any value as a 4th parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails + // so, 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, false, "" ); + // 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 its + // available and use plain properties where available + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.style && ( 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; + } + } + } +}; + +// Remove in 2.0 - this supports IE8's 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.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" || + // special check for .toggle( handler, handler, ... ) + ( !i && jQuery.isFunction( speed ) && jQuery.isFunction( easing ) ) ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +}); + +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 resolve immediately + if ( empty ) { + anim.stop( true ); + } + }; + + 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 = jQuery._data( 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 ); + } + }); + } +}); + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + attrs = { height: type }, + i = 0; + + // if we include width, step value is 1 to do all cssExpand values, + // if we don't include width, 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; +} + +// 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.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.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p*Math.PI ) / 2; + } +}; + +jQuery.timers = []; +jQuery.fx = Tween.prototype.init; +jQuery.fx.tick = function() { + var timer, + timers = jQuery.timers, + i = 0; + + 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 ) { + if ( timer() && jQuery.timers.push( timer ) && !timerId ) { + timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval ); + } +}; + +jQuery.fx.interval = 13; + +jQuery.fx.stop = function() { + clearInterval( timerId ); + timerId = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + // Default speed + _default: 400 +}; + +// Back Compat <1.8 extension point +jQuery.fx.step = {}; + +if ( jQuery.expr && jQuery.expr.filters ) { + jQuery.expr.filters.animated = function( elem ) { + return jQuery.grep(jQuery.timers, function( fn ) { + return elem === fn.elem; + }).length; + }; +} +var rroot = /^(?:body|html)$/i; + +jQuery.fn.offset = function( options ) { + if ( arguments.length ) { + return options === undefined ? + this : + this.each(function( i ) { + jQuery.offset.setOffset( this, options, i ); + }); + } + + var docElem, body, win, clientTop, clientLeft, scrollTop, scrollLeft, + box = { top: 0, left: 0 }, + elem = this[ 0 ], + doc = elem && elem.ownerDocument; + + if ( !doc ) { + return; + } + + if ( (body = doc.body) === elem ) { + return jQuery.offset.bodyOffset( elem ); + } + + docElem = doc.documentElement; + + // Make sure it's not a disconnected DOM node + if ( !jQuery.contains( docElem, elem ) ) { + return box; + } + + // If we don't have gBCR, just use 0,0 rather than error + // BlackBerry 5, iOS 3 (original iPhone) + if ( typeof elem.getBoundingClientRect !== "undefined" ) { + box = elem.getBoundingClientRect(); + } + win = getWindow( doc ); + clientTop = docElem.clientTop || body.clientTop || 0; + clientLeft = docElem.clientLeft || body.clientLeft || 0; + scrollTop = win.pageYOffset || docElem.scrollTop; + scrollLeft = win.pageXOffset || docElem.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; +}; + +jQuery.offset = { + + bodyOffset: function( body ) { + var top = body.offsetTop, + left = body.offsetLeft; + + if ( jQuery.support.doesNotIncludeMarginInBodyOffset ) { + top += parseFloat( jQuery.css(body, "marginTop") ) || 0; + left += parseFloat( jQuery.css(body, "marginLeft") ) || 0; + } + + return { top: top, left: left }; + }, + + setOffset: function( elem, options, i ) { + var position = jQuery.css( elem, "position" ); + + // set position first, in-case top/left are set even on static elem + if ( position === "static" ) { + elem.style.position = "relative"; + } + + var curElem = jQuery( elem ), + curOffset = curElem.offset(), + curCSSTop = jQuery.css( elem, "top" ), + curCSSLeft = jQuery.css( elem, "left" ), + calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1, + props = {}, curPosition = {}, curTop, curLeft; + + // 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 ) ) { + options = options.call( elem, i, 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({ + + position: function() { + if ( !this[0] ) { + return; + } + + var elem = this[0], + + // Get *real* offsetParent + offsetParent = this.offsetParent(), + + // Get correct offsets + offset = this.offset(), + parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset(); + + // Subtract element margins + // note: when an element has margin: auto the offsetLeft and marginLeft + // are the same in Safari causing offset.left to incorrectly be 0 + offset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0; + offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0; + + // Add offsetParent borders + parentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0; + parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0; + + // Subtract the two offsets + return { + top: offset.top - parentOffset.top, + left: offset.left - parentOffset.left + }; + }, + + offsetParent: function() { + return this.map(function() { + var offsetParent = this.offsetParent || document.body; + while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) { + offsetParent = offsetParent.offsetParent; + } + return offsetParent || document.body; + }); + } +}); + + +// Create scrollLeft and scrollTop methods +jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) { + var top = /Y/.test( prop ); + + jQuery.fn[ method ] = function( val ) { + return jQuery.access( this, function( elem, method, val ) { + var win = getWindow( elem ); + + if ( val === undefined ) { + return win ? (prop in win) ? win[ prop ] : + win.document.documentElement[ method ] : + elem[ method ]; + } + + if ( win ) { + win.scrollTo( + !top ? val : jQuery( win ).scrollLeft(), + top ? val : jQuery( win ).scrollTop() + ); + + } else { + elem[ method ] = val; + } + }, method, val, arguments.length, null ); + }; +}); + +function getWindow( elem ) { + return jQuery.isWindow( elem ) ? + elem : + elem.nodeType === 9 ? + elem.defaultView || elem.parentWindow : + false; +} +// 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 jQuery.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 + // unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it. + 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, value, extra ) : + + // Set width or height on the element + jQuery.style( elem, type, value, extra ); + }, type, chainable ? margin : undefined, chainable, null ); + }; + }); +}); +// Expose jQuery to the global object +window.jQuery = window.$ = jQuery; + +// Expose jQuery as an AMD module, but only for AMD loaders that +// understand the issues with loading multiple versions of jQuery +// in a page that all might call define(). The loader will indicate +// they have special allowances for multiple jQuery versions by +// specifying define.amd.jQuery = true. Register as a named module, +// since jQuery can be concatenated with other files that may use define, +// but not use 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. +if ( typeof define === "function" && define.amd && define.amd.jQuery ) { + define( "jquery", [], function () { return jQuery; } ); +} + +})( window ); diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/flot/package.json b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/package.json new file mode 100644 index 0000000..5f00e85 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/flot/package.json @@ -0,0 +1,11 @@ +{ + "name": "Flot", + "version": "0.8.3", + "main": "jquery.flot.js", + "scripts": { + "test": "make test" + }, + "devDependencies": { + "jshint": "0.9.1" + } +} diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/gmaps.js b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/gmaps.js new file mode 100644 index 0000000..c4c2e1d --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/gmaps.js @@ -0,0 +1,2204 @@ +"use strict"; +(function(root, factory) { + if(typeof exports === 'object') { + module.exports = factory(); + } + else if(typeof define === 'function' && define.amd) { + define('GMaps', [], factory); + } + + root.GMaps = factory(); + +}(this, function() { + +/*! + * GMaps.js v0.4.18 + * http://hpneo.github.com/gmaps/ + * + * Copyright 2015, Gustavo Leon + * Released under the MIT License. + */ + +if (!(typeof window.google === 'object' && window.google.maps)) { + throw 'Google Maps API is required. Please register the following JavaScript library http://maps.google.com/maps/api/js?sensor=true.' +} + +var extend_object = function(obj, new_obj) { + var name; + + if (obj === new_obj) { + return obj; + } + + for (name in new_obj) { + obj[name] = new_obj[name]; + } + + return obj; +}; + +var replace_object = function(obj, replace) { + var name; + + if (obj === replace) { + return obj; + } + + for (name in replace) { + if (obj[name] != undefined) { + obj[name] = replace[name]; + } + } + + return obj; +}; + +var array_map = function(array, callback) { + var original_callback_params = Array.prototype.slice.call(arguments, 2), + array_return = [], + array_length = array.length, + i; + + if (Array.prototype.map && array.map === Array.prototype.map) { + array_return = Array.prototype.map.call(array, function(item) { + var callback_params = original_callback_params.slice(0); + callback_params.splice(0, 0, item); + + return callback.apply(this, callback_params); + }); + } + else { + for (i = 0; i < array_length; i++) { + callback_params = original_callback_params; + callback_params.splice(0, 0, array[i]); + array_return.push(callback.apply(this, callback_params)); + } + } + + return array_return; +}; + +var array_flat = function(array) { + var new_array = [], + i; + + for (i = 0; i < array.length; i++) { + new_array = new_array.concat(array[i]); + } + + return new_array; +}; + +var coordsToLatLngs = function(coords, useGeoJSON) { + var first_coord = coords[0], + second_coord = coords[1]; + + if (useGeoJSON) { + first_coord = coords[1]; + second_coord = coords[0]; + } + + return new google.maps.LatLng(first_coord, second_coord); +}; + +var arrayToLatLng = function(coords, useGeoJSON) { + var i; + + for (i = 0; i < coords.length; i++) { + if (!(coords[i] instanceof google.maps.LatLng)) { + if (coords[i].length > 0 && typeof(coords[i][0]) === "object") { + coords[i] = arrayToLatLng(coords[i], useGeoJSON); + } + else { + coords[i] = coordsToLatLngs(coords[i], useGeoJSON); + } + } + } + + return coords; +}; + + +var getElementsByClassName = function (class_name, context) { + + var element, + _class = class_name.replace('.', ''); + + if ('jQuery' in this && context) { + element = $("." + _class, context)[0]; + } else { + element = document.getElementsByClassName(_class)[0]; + } + return element; + +}; + +var getElementById = function(id, context) { + var element, + id = id.replace('#', ''); + + if ('jQuery' in window && context) { + element = $('#' + id, context)[0]; + } else { + element = document.getElementById(id); + }; + + return element; +}; + +var findAbsolutePosition = function(obj) { + var curleft = 0, + curtop = 0; + + if (obj.offsetParent) { + do { + curleft += obj.offsetLeft; + curtop += obj.offsetTop; + } while (obj = obj.offsetParent); + } + + return [curleft, curtop]; +}; + +var GMaps = (function(global) { + "use strict"; + + var doc = document; + + var GMaps = function(options) { + if (!this) return new GMaps(options); + + options.zoom = options.zoom || 15; + options.mapType = options.mapType || 'roadmap'; + + var self = this, + i, + events_that_hide_context_menu = [ + 'bounds_changed', 'center_changed', 'click', 'dblclick', 'drag', + 'dragend', 'dragstart', 'idle', 'maptypeid_changed', 'projection_changed', + 'resize', 'tilesloaded', 'zoom_changed' + ], + events_that_doesnt_hide_context_menu = ['mousemove', 'mouseout', 'mouseover'], + options_to_be_deleted = ['el', 'lat', 'lng', 'mapType', 'width', 'height', 'markerClusterer', 'enableNewStyle'], + identifier = options.el || options.div, + markerClustererFunction = options.markerClusterer, + mapType = google.maps.MapTypeId[options.mapType.toUpperCase()], + map_center = new google.maps.LatLng(options.lat, options.lng), + zoomControl = options.zoomControl || true, + zoomControlOpt = options.zoomControlOpt || { + style: 'DEFAULT', + position: 'TOP_LEFT' + }, + zoomControlStyle = zoomControlOpt.style || 'DEFAULT', + zoomControlPosition = zoomControlOpt.position || 'TOP_LEFT', + panControl = options.panControl || true, + mapTypeControl = options.mapTypeControl || true, + scaleControl = options.scaleControl || true, + streetViewControl = options.streetViewControl || true, + overviewMapControl = overviewMapControl || true, + map_options = {}, + map_base_options = { + zoom: this.zoom, + center: map_center, + mapTypeId: mapType + }, + map_controls_options = { + panControl: panControl, + zoomControl: zoomControl, + zoomControlOptions: { + style: google.maps.ZoomControlStyle[zoomControlStyle], + position: google.maps.ControlPosition[zoomControlPosition] + }, + mapTypeControl: mapTypeControl, + scaleControl: scaleControl, + streetViewControl: streetViewControl, + overviewMapControl: overviewMapControl + }; + + if (typeof(options.el) === 'string' || typeof(options.div) === 'string') { + + if (identifier.indexOf("#") > -1) { + this.el = getElementById(identifier, options.context); + } else { + this.el = getElementsByClassName.apply(this, [identifier, options.context]); + } + + } else { + this.el = identifier; + } + + if (typeof(this.el) === 'undefined' || this.el === null) { + throw 'No element defined.'; + } + + window.context_menu = window.context_menu || {}; + window.context_menu[self.el.id] = {}; + + this.controls = []; + this.overlays = []; + this.layers = []; // array with kml/georss and fusiontables layers, can be as many + this.singleLayers = {}; // object with the other layers, only one per layer + this.markers = []; + this.polylines = []; + this.routes = []; + this.polygons = []; + this.infoWindow = null; + this.overlay_el = null; + this.zoom = options.zoom; + this.registered_events = {}; + + this.el.style.width = options.width || this.el.scrollWidth || this.el.offsetWidth; + this.el.style.height = options.height || this.el.scrollHeight || this.el.offsetHeight; + + google.maps.visualRefresh = options.enableNewStyle; + + for (i = 0; i < options_to_be_deleted.length; i++) { + delete options[options_to_be_deleted[i]]; + } + + if(options.disableDefaultUI != true) { + map_base_options = extend_object(map_base_options, map_controls_options); + } + + map_options = extend_object(map_base_options, options); + + for (i = 0; i < events_that_hide_context_menu.length; i++) { + delete map_options[events_that_hide_context_menu[i]]; + } + + for (i = 0; i < events_that_doesnt_hide_context_menu.length; i++) { + delete map_options[events_that_doesnt_hide_context_menu[i]]; + } + + this.map = new google.maps.Map(this.el, map_options); + + if (markerClustererFunction) { + this.markerClusterer = markerClustererFunction.apply(this, [this.map]); + } + + var buildContextMenuHTML = function(control, e) { + var html = '', + options = window.context_menu[self.el.id][control]; + + for (var i in options){ + if (options.hasOwnProperty(i)) { + var option = options[i]; + + html += '
  • ' + option.title + '
  • '; + } + } + + if (!getElementById('gmaps_context_menu')) return; + + var context_menu_element = getElementById('gmaps_context_menu'); + + context_menu_element.innerHTML = html; + + var context_menu_items = context_menu_element.getElementsByTagName('a'), + context_menu_items_count = context_menu_items.length, + i; + + for (i = 0; i < context_menu_items_count; i++) { + var context_menu_item = context_menu_items[i]; + + var assign_menu_item_action = function(ev){ + ev.preventDefault(); + + options[this.id.replace(control + '_', '')].action.apply(self, [e]); + self.hideContextMenu(); + }; + + google.maps.event.clearListeners(context_menu_item, 'click'); + google.maps.event.addDomListenerOnce(context_menu_item, 'click', assign_menu_item_action, false); + } + + var position = findAbsolutePosition.apply(this, [self.el]), + left = position[0] + e.pixel.x - 15, + top = position[1] + e.pixel.y- 15; + + context_menu_element.style.left = left + "px"; + context_menu_element.style.top = top + "px"; + + context_menu_element.style.display = 'block'; + }; + + this.buildContextMenu = function(control, e) { + if (control === 'marker') { + e.pixel = {}; + + var overlay = new google.maps.OverlayView(); + overlay.setMap(self.map); + + overlay.draw = function() { + var projection = overlay.getProjection(), + position = e.marker.getPosition(); + + e.pixel = projection.fromLatLngToContainerPixel(position); + + buildContextMenuHTML(control, e); + }; + } + else { + buildContextMenuHTML(control, e); + } + }; + + this.setContextMenu = function(options) { + window.context_menu[self.el.id][options.control] = {}; + + var i, + ul = doc.createElement('ul'); + + for (i in options.options) { + if (options.options.hasOwnProperty(i)) { + var option = options.options[i]; + + window.context_menu[self.el.id][options.control][option.name] = { + title: option.title, + action: option.action + }; + } + } + + ul.id = 'gmaps_context_menu'; + ul.style.display = 'none'; + ul.style.position = 'absolute'; + ul.style.minWidth = '100px'; + ul.style.background = 'white'; + ul.style.listStyle = 'none'; + ul.style.padding = '8px'; + ul.style.boxShadow = '2px 2px 6px #ccc'; + + doc.body.appendChild(ul); + + var context_menu_element = getElementById('gmaps_context_menu') + + google.maps.event.addDomListener(context_menu_element, 'mouseout', function(ev) { + if (!ev.relatedTarget || !this.contains(ev.relatedTarget)) { + window.setTimeout(function(){ + context_menu_element.style.display = 'none'; + }, 400); + } + }, false); + }; + + this.hideContextMenu = function() { + var context_menu_element = getElementById('gmaps_context_menu'); + + if (context_menu_element) { + context_menu_element.style.display = 'none'; + } + }; + + var setupListener = function(object, name) { + google.maps.event.addListener(object, name, function(e){ + if (e == undefined) { + e = this; + } + + options[name].apply(this, [e]); + + self.hideContextMenu(); + }); + }; + + //google.maps.event.addListener(this.map, 'idle', this.hideContextMenu); + google.maps.event.addListener(this.map, 'zoom_changed', this.hideContextMenu); + + for (var ev = 0; ev < events_that_hide_context_menu.length; ev++) { + var name = events_that_hide_context_menu[ev]; + + if (name in options) { + setupListener(this.map, name); + } + } + + for (var ev = 0; ev < events_that_doesnt_hide_context_menu.length; ev++) { + var name = events_that_doesnt_hide_context_menu[ev]; + + if (name in options) { + setupListener(this.map, name); + } + } + + google.maps.event.addListener(this.map, 'rightclick', function(e) { + if (options.rightclick) { + options.rightclick.apply(this, [e]); + } + + if(window.context_menu[self.el.id]['map'] != undefined) { + self.buildContextMenu('map', e); + } + }); + + this.refresh = function() { + google.maps.event.trigger(this.map, 'resize'); + }; + + this.fitZoom = function() { + var latLngs = [], + markers_length = this.markers.length, + i; + + for (i = 0; i < markers_length; i++) { + if(typeof(this.markers[i].visible) === 'boolean' && this.markers[i].visible) { + latLngs.push(this.markers[i].getPosition()); + } + } + + this.fitLatLngBounds(latLngs); + }; + + this.fitLatLngBounds = function(latLngs) { + var total = latLngs.length, + bounds = new google.maps.LatLngBounds(), + i; + + for(i = 0; i < total; i++) { + bounds.extend(latLngs[i]); + } + + this.map.fitBounds(bounds); + }; + + this.setCenter = function(lat, lng, callback) { + this.map.panTo(new google.maps.LatLng(lat, lng)); + + if (callback) { + callback(); + } + }; + + this.getElement = function() { + return this.el; + }; + + this.zoomIn = function(value) { + value = value || 1; + + this.zoom = this.map.getZoom() + value; + this.map.setZoom(this.zoom); + }; + + this.zoomOut = function(value) { + value = value || 1; + + this.zoom = this.map.getZoom() - value; + this.map.setZoom(this.zoom); + }; + + var native_methods = [], + method; + + for (method in this.map) { + if (typeof(this.map[method]) == 'function' && !this[method]) { + native_methods.push(method); + } + } + + for (i = 0; i < native_methods.length; i++) { + (function(gmaps, scope, method_name) { + gmaps[method_name] = function(){ + return scope[method_name].apply(scope, arguments); + }; + })(this, this.map, native_methods[i]); + } + }; + + return GMaps; +})(this); + +GMaps.prototype.createControl = function(options) { + var control = document.createElement('div'); + + control.style.cursor = 'pointer'; + + if (options.disableDefaultStyles !== true) { + control.style.fontFamily = 'Roboto, Arial, sans-serif'; + control.style.fontSize = '11px'; + control.style.boxShadow = 'rgba(0, 0, 0, 0.298039) 0px 1px 4px -1px'; + } + + for (var option in options.style) { + control.style[option] = options.style[option]; + } + + if (options.id) { + control.id = options.id; + } + + if (options.classes) { + control.className = options.classes; + } + + if (options.content) { + if (typeof options.content === 'string') { + control.innerHTML = options.content; + } + else if (options.content instanceof HTMLElement) { + control.appendChild(options.content); + } + } + + if (options.position) { + control.position = google.maps.ControlPosition[options.position.toUpperCase()]; + } + + for (var ev in options.events) { + (function(object, name) { + google.maps.event.addDomListener(object, name, function(){ + options.events[name].apply(this, [this]); + }); + })(control, ev); + } + + control.index = 1; + + return control; +}; + +GMaps.prototype.addControl = function(options) { + var control = this.createControl(options); + + this.controls.push(control); + this.map.controls[control.position].push(control); + + return control; +}; + +GMaps.prototype.removeControl = function(control) { + var position = null, + i; + + for (i = 0; i < this.controls.length; i++) { + if (this.controls[i] == control) { + position = this.controls[i].position; + this.controls.splice(i, 1); + } + } + + if (position) { + for (i = 0; i < this.map.controls.length; i++) { + var controlsForPosition = this.map.controls[control.position]; + + if (controlsForPosition.getAt(i) == control) { + controlsForPosition.removeAt(i); + + break; + } + } + } + + return control; +}; + +GMaps.prototype.createMarker = function(options) { + if (options.lat == undefined && options.lng == undefined && options.position == undefined) { + throw 'No latitude or longitude defined.'; + } + + var self = this, + details = options.details, + fences = options.fences, + outside = options.outside, + base_options = { + position: new google.maps.LatLng(options.lat, options.lng), + map: null + }, + marker_options = extend_object(base_options, options); + + delete marker_options.lat; + delete marker_options.lng; + delete marker_options.fences; + delete marker_options.outside; + + var marker = new google.maps.Marker(marker_options); + + marker.fences = fences; + + if (options.infoWindow) { + marker.infoWindow = new google.maps.InfoWindow(options.infoWindow); + + var info_window_events = ['closeclick', 'content_changed', 'domready', 'position_changed', 'zindex_changed']; + + for (var ev = 0; ev < info_window_events.length; ev++) { + (function(object, name) { + if (options.infoWindow[name]) { + google.maps.event.addListener(object, name, function(e){ + options.infoWindow[name].apply(this, [e]); + }); + } + })(marker.infoWindow, info_window_events[ev]); + } + } + + var marker_events = ['animation_changed', 'clickable_changed', 'cursor_changed', 'draggable_changed', 'flat_changed', 'icon_changed', 'position_changed', 'shadow_changed', 'shape_changed', 'title_changed', 'visible_changed', 'zindex_changed']; + + var marker_events_with_mouse = ['dblclick', 'drag', 'dragend', 'dragstart', 'mousedown', 'mouseout', 'mouseover', 'mouseup']; + + for (var ev = 0; ev < marker_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(){ + options[name].apply(this, [this]); + }); + } + })(marker, marker_events[ev]); + } + + for (var ev = 0; ev < marker_events_with_mouse.length; ev++) { + (function(map, object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(me){ + if(!me.pixel){ + me.pixel = map.getProjection().fromLatLngToPoint(me.latLng) + } + + options[name].apply(this, [me]); + }); + } + })(this.map, marker, marker_events_with_mouse[ev]); + } + + google.maps.event.addListener(marker, 'click', function() { + this.details = details; + + if (options.click) { + options.click.apply(this, [this]); + } + + if (marker.infoWindow) { + self.hideInfoWindows(); + marker.infoWindow.open(self.map, marker); + } + }); + + google.maps.event.addListener(marker, 'rightclick', function(e) { + e.marker = this; + + if (options.rightclick) { + options.rightclick.apply(this, [e]); + } + + if (window.context_menu[self.el.id]['marker'] != undefined) { + self.buildContextMenu('marker', e); + } + }); + + if (marker.fences) { + google.maps.event.addListener(marker, 'dragend', function() { + self.checkMarkerGeofence(marker, function(m, f) { + outside(m, f); + }); + }); + } + + return marker; +}; + +GMaps.prototype.addMarker = function(options) { + var marker; + if(options.hasOwnProperty('gm_accessors_')) { + // Native google.maps.Marker object + marker = options; + } + else { + if ((options.hasOwnProperty('lat') && options.hasOwnProperty('lng')) || options.position) { + marker = this.createMarker(options); + } + else { + throw 'No latitude or longitude defined.'; + } + } + + marker.setMap(this.map); + + if(this.markerClusterer) { + this.markerClusterer.addMarker(marker); + } + + this.markers.push(marker); + + GMaps.fire('marker_added', marker, this); + + return marker; +}; + +GMaps.prototype.addMarkers = function(array) { + for (var i = 0, marker; marker=array[i]; i++) { + this.addMarker(marker); + } + + return this.markers; +}; + +GMaps.prototype.hideInfoWindows = function() { + for (var i = 0, marker; marker = this.markers[i]; i++){ + if (marker.infoWindow) { + marker.infoWindow.close(); + } + } +}; + +GMaps.prototype.removeMarker = function(marker) { + for (var i = 0; i < this.markers.length; i++) { + if (this.markers[i] === marker) { + this.markers[i].setMap(null); + this.markers.splice(i, 1); + + if(this.markerClusterer) { + this.markerClusterer.removeMarker(marker); + } + + GMaps.fire('marker_removed', marker, this); + + break; + } + } + + return marker; +}; + +GMaps.prototype.removeMarkers = function (collection) { + var new_markers = []; + + if (typeof collection == 'undefined') { + for (var i = 0; i < this.markers.length; i++) { + var marker = this.markers[i]; + marker.setMap(null); + + if(this.markerClusterer) { + this.markerClusterer.removeMarker(marker); + } + + GMaps.fire('marker_removed', marker, this); + } + + this.markers = new_markers; + } + else { + for (var i = 0; i < collection.length; i++) { + var index = this.markers.indexOf(collection[i]); + + if (index > -1) { + var marker = this.markers[index]; + marker.setMap(null); + + if(this.markerClusterer) { + this.markerClusterer.removeMarker(marker); + } + + GMaps.fire('marker_removed', marker, this); + } + } + + for (var i = 0; i < this.markers.length; i++) { + var marker = this.markers[i]; + if (marker.getMap() != null) { + new_markers.push(marker); + } + } + + this.markers = new_markers; + } +}; + +GMaps.prototype.drawOverlay = function(options) { + var overlay = new google.maps.OverlayView(), + auto_show = true; + + overlay.setMap(this.map); + + if (options.auto_show != null) { + auto_show = options.auto_show; + } + + overlay.onAdd = function() { + var el = document.createElement('div'); + + el.style.borderStyle = "none"; + el.style.borderWidth = "0px"; + el.style.position = "absolute"; + el.style.zIndex = 100; + el.innerHTML = options.content; + + overlay.el = el; + + if (!options.layer) { + options.layer = 'overlayLayer'; + } + + var panes = this.getPanes(), + overlayLayer = panes[options.layer], + stop_overlay_events = ['contextmenu', 'DOMMouseScroll', 'dblclick', 'mousedown']; + + overlayLayer.appendChild(el); + + for (var ev = 0; ev < stop_overlay_events.length; ev++) { + (function(object, name) { + google.maps.event.addDomListener(object, name, function(e){ + if (navigator.userAgent.toLowerCase().indexOf('msie') != -1 && document.all) { + e.cancelBubble = true; + e.returnValue = false; + } + else { + e.stopPropagation(); + } + }); + })(el, stop_overlay_events[ev]); + } + + if (options.click) { + panes.overlayMouseTarget.appendChild(overlay.el); + google.maps.event.addDomListener(overlay.el, 'click', function() { + options.click.apply(overlay, [overlay]); + }); + } + + google.maps.event.trigger(this, 'ready'); + }; + + overlay.draw = function() { + var projection = this.getProjection(), + pixel = projection.fromLatLngToDivPixel(new google.maps.LatLng(options.lat, options.lng)); + + options.horizontalOffset = options.horizontalOffset || 0; + options.verticalOffset = options.verticalOffset || 0; + + var el = overlay.el, + content = el.children[0], + content_height = content.clientHeight, + content_width = content.clientWidth; + + switch (options.verticalAlign) { + case 'top': + el.style.top = (pixel.y - content_height + options.verticalOffset) + 'px'; + break; + default: + case 'middle': + el.style.top = (pixel.y - (content_height / 2) + options.verticalOffset) + 'px'; + break; + case 'bottom': + el.style.top = (pixel.y + options.verticalOffset) + 'px'; + break; + } + + switch (options.horizontalAlign) { + case 'left': + el.style.left = (pixel.x - content_width + options.horizontalOffset) + 'px'; + break; + default: + case 'center': + el.style.left = (pixel.x - (content_width / 2) + options.horizontalOffset) + 'px'; + break; + case 'right': + el.style.left = (pixel.x + options.horizontalOffset) + 'px'; + break; + } + + el.style.display = auto_show ? 'block' : 'none'; + + if (!auto_show) { + options.show.apply(this, [el]); + } + }; + + overlay.onRemove = function() { + var el = overlay.el; + + if (options.remove) { + options.remove.apply(this, [el]); + } + else { + overlay.el.parentNode.removeChild(overlay.el); + overlay.el = null; + } + }; + + this.overlays.push(overlay); + return overlay; +}; + +GMaps.prototype.removeOverlay = function(overlay) { + for (var i = 0; i < this.overlays.length; i++) { + if (this.overlays[i] === overlay) { + this.overlays[i].setMap(null); + this.overlays.splice(i, 1); + + break; + } + } +}; + +GMaps.prototype.removeOverlays = function() { + for (var i = 0, item; item = this.overlays[i]; i++) { + item.setMap(null); + } + + this.overlays = []; +}; + +GMaps.prototype.drawPolyline = function(options) { + var path = [], + points = options.path; + + if (points.length) { + if (points[0][0] === undefined) { + path = points; + } + else { + for (var i = 0, latlng; latlng = points[i]; i++) { + path.push(new google.maps.LatLng(latlng[0], latlng[1])); + } + } + } + + var polyline_options = { + map: this.map, + path: path, + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight, + geodesic: options.geodesic, + clickable: true, + editable: false, + visible: true + }; + + if (options.hasOwnProperty("clickable")) { + polyline_options.clickable = options.clickable; + } + + if (options.hasOwnProperty("editable")) { + polyline_options.editable = options.editable; + } + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + if (options.hasOwnProperty("zIndex")) { + polyline_options.zIndex = options.zIndex; + } + + var polyline = new google.maps.Polyline(polyline_options); + + var polyline_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick']; + + for (var ev = 0; ev < polyline_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(e){ + options[name].apply(this, [e]); + }); + } + })(polyline, polyline_events[ev]); + } + + this.polylines.push(polyline); + + GMaps.fire('polyline_added', polyline, this); + + return polyline; +}; + +GMaps.prototype.removePolyline = function(polyline) { + for (var i = 0; i < this.polylines.length; i++) { + if (this.polylines[i] === polyline) { + this.polylines[i].setMap(null); + this.polylines.splice(i, 1); + + GMaps.fire('polyline_removed', polyline, this); + + break; + } + } +}; + +GMaps.prototype.removePolylines = function() { + for (var i = 0, item; item = this.polylines[i]; i++) { + item.setMap(null); + } + + this.polylines = []; +}; + +GMaps.prototype.drawCircle = function(options) { + options = extend_object({ + map: this.map, + center: new google.maps.LatLng(options.lat, options.lng) + }, options); + + delete options.lat; + delete options.lng; + + var polygon = new google.maps.Circle(options), + polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick']; + + for (var ev = 0; ev < polygon_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(e){ + options[name].apply(this, [e]); + }); + } + })(polygon, polygon_events[ev]); + } + + this.polygons.push(polygon); + + return polygon; +}; + +GMaps.prototype.drawRectangle = function(options) { + options = extend_object({ + map: this.map + }, options); + + var latLngBounds = new google.maps.LatLngBounds( + new google.maps.LatLng(options.bounds[0][0], options.bounds[0][1]), + new google.maps.LatLng(options.bounds[1][0], options.bounds[1][1]) + ); + + options.bounds = latLngBounds; + + var polygon = new google.maps.Rectangle(options), + polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick']; + + for (var ev = 0; ev < polygon_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(e){ + options[name].apply(this, [e]); + }); + } + })(polygon, polygon_events[ev]); + } + + this.polygons.push(polygon); + + return polygon; +}; + +GMaps.prototype.drawPolygon = function(options) { + var useGeoJSON = false; + + if(options.hasOwnProperty("useGeoJSON")) { + useGeoJSON = options.useGeoJSON; + } + + delete options.useGeoJSON; + + options = extend_object({ + map: this.map + }, options); + + if (useGeoJSON == false) { + options.paths = [options.paths.slice(0)]; + } + + if (options.paths.length > 0) { + if (options.paths[0].length > 0) { + options.paths = array_flat(array_map(options.paths, arrayToLatLng, useGeoJSON)); + } + } + + var polygon = new google.maps.Polygon(options), + polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick']; + + for (var ev = 0; ev < polygon_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(e){ + options[name].apply(this, [e]); + }); + } + })(polygon, polygon_events[ev]); + } + + this.polygons.push(polygon); + + GMaps.fire('polygon_added', polygon, this); + + return polygon; +}; + +GMaps.prototype.removePolygon = function(polygon) { + for (var i = 0; i < this.polygons.length; i++) { + if (this.polygons[i] === polygon) { + this.polygons[i].setMap(null); + this.polygons.splice(i, 1); + + GMaps.fire('polygon_removed', polygon, this); + + break; + } + } +}; + +GMaps.prototype.removePolygons = function() { + for (var i = 0, item; item = this.polygons[i]; i++) { + item.setMap(null); + } + + this.polygons = []; +}; + +GMaps.prototype.getFromFusionTables = function(options) { + var events = options.events; + + delete options.events; + + var fusion_tables_options = options, + layer = new google.maps.FusionTablesLayer(fusion_tables_options); + + for (var ev in events) { + (function(object, name) { + google.maps.event.addListener(object, name, function(e) { + events[name].apply(this, [e]); + }); + })(layer, ev); + } + + this.layers.push(layer); + + return layer; +}; + +GMaps.prototype.loadFromFusionTables = function(options) { + var layer = this.getFromFusionTables(options); + layer.setMap(this.map); + + return layer; +}; + +GMaps.prototype.getFromKML = function(options) { + var url = options.url, + events = options.events; + + delete options.url; + delete options.events; + + var kml_options = options, + layer = new google.maps.KmlLayer(url, kml_options); + + for (var ev in events) { + (function(object, name) { + google.maps.event.addListener(object, name, function(e) { + events[name].apply(this, [e]); + }); + })(layer, ev); + } + + this.layers.push(layer); + + return layer; +}; + +GMaps.prototype.loadFromKML = function(options) { + var layer = this.getFromKML(options); + layer.setMap(this.map); + + return layer; +}; + +GMaps.prototype.addLayer = function(layerName, options) { + //var default_layers = ['weather', 'clouds', 'traffic', 'transit', 'bicycling', 'panoramio', 'places']; + options = options || {}; + var layer; + + switch(layerName) { + case 'weather': this.singleLayers.weather = layer = new google.maps.weather.WeatherLayer(); + break; + case 'clouds': this.singleLayers.clouds = layer = new google.maps.weather.CloudLayer(); + break; + case 'traffic': this.singleLayers.traffic = layer = new google.maps.TrafficLayer(); + break; + case 'transit': this.singleLayers.transit = layer = new google.maps.TransitLayer(); + break; + case 'bicycling': this.singleLayers.bicycling = layer = new google.maps.BicyclingLayer(); + break; + case 'panoramio': + this.singleLayers.panoramio = layer = new google.maps.panoramio.PanoramioLayer(); + layer.setTag(options.filter); + delete options.filter; + + //click event + if (options.click) { + google.maps.event.addListener(layer, 'click', function(event) { + options.click(event); + delete options.click; + }); + } + break; + case 'places': + this.singleLayers.places = layer = new google.maps.places.PlacesService(this.map); + + //search, nearbySearch, radarSearch callback, Both are the same + if (options.search || options.nearbySearch || options.radarSearch) { + var placeSearchRequest = { + bounds : options.bounds || null, + keyword : options.keyword || null, + location : options.location || null, + name : options.name || null, + radius : options.radius || null, + rankBy : options.rankBy || null, + types : options.types || null + }; + + if (options.radarSearch) { + layer.radarSearch(placeSearchRequest, options.radarSearch); + } + + if (options.search) { + layer.search(placeSearchRequest, options.search); + } + + if (options.nearbySearch) { + layer.nearbySearch(placeSearchRequest, options.nearbySearch); + } + } + + //textSearch callback + if (options.textSearch) { + var textSearchRequest = { + bounds : options.bounds || null, + location : options.location || null, + query : options.query || null, + radius : options.radius || null + }; + + layer.textSearch(textSearchRequest, options.textSearch); + } + break; + } + + if (layer !== undefined) { + if (typeof layer.setOptions == 'function') { + layer.setOptions(options); + } + if (typeof layer.setMap == 'function') { + layer.setMap(this.map); + } + + return layer; + } +}; + +GMaps.prototype.removeLayer = function(layer) { + if (typeof(layer) == "string" && this.singleLayers[layer] !== undefined) { + this.singleLayers[layer].setMap(null); + + delete this.singleLayers[layer]; + } + else { + for (var i = 0; i < this.layers.length; i++) { + if (this.layers[i] === layer) { + this.layers[i].setMap(null); + this.layers.splice(i, 1); + + break; + } + } + } +}; + +var travelMode, unitSystem; + +GMaps.prototype.getRoutes = function(options) { + switch (options.travelMode) { + case 'bicycling': + travelMode = google.maps.TravelMode.BICYCLING; + break; + case 'transit': + travelMode = google.maps.TravelMode.TRANSIT; + break; + case 'driving': + travelMode = google.maps.TravelMode.DRIVING; + break; + default: + travelMode = google.maps.TravelMode.WALKING; + break; + } + + if (options.unitSystem === 'imperial') { + unitSystem = google.maps.UnitSystem.IMPERIAL; + } + else { + unitSystem = google.maps.UnitSystem.METRIC; + } + + var base_options = { + avoidHighways: false, + avoidTolls: false, + optimizeWaypoints: false, + waypoints: [] + }, + request_options = extend_object(base_options, options); + + request_options.origin = /string/.test(typeof options.origin) ? options.origin : new google.maps.LatLng(options.origin[0], options.origin[1]); + request_options.destination = /string/.test(typeof options.destination) ? options.destination : new google.maps.LatLng(options.destination[0], options.destination[1]); + request_options.travelMode = travelMode; + request_options.unitSystem = unitSystem; + + delete request_options.callback; + delete request_options.error; + + var self = this, + service = new google.maps.DirectionsService(); + + service.route(request_options, function(result, status) { + if (status === google.maps.DirectionsStatus.OK) { + for (var r in result.routes) { + if (result.routes.hasOwnProperty(r)) { + self.routes.push(result.routes[r]); + } + } + + if (options.callback) { + options.callback(self.routes); + } + } + else { + if (options.error) { + options.error(result, status); + } + } + }); +}; + +GMaps.prototype.removeRoutes = function() { + this.routes = []; +}; + +GMaps.prototype.getElevations = function(options) { + options = extend_object({ + locations: [], + path : false, + samples : 256 + }, options); + + if (options.locations.length > 0) { + if (options.locations[0].length > 0) { + options.locations = array_flat(array_map([options.locations], arrayToLatLng, false)); + } + } + + var callback = options.callback; + delete options.callback; + + var service = new google.maps.ElevationService(); + + //location request + if (!options.path) { + delete options.path; + delete options.samples; + + service.getElevationForLocations(options, function(result, status) { + if (callback && typeof(callback) === "function") { + callback(result, status); + } + }); + //path request + } else { + var pathRequest = { + path : options.locations, + samples : options.samples + }; + + service.getElevationAlongPath(pathRequest, function(result, status) { + if (callback && typeof(callback) === "function") { + callback(result, status); + } + }); + } +}; + +GMaps.prototype.cleanRoute = GMaps.prototype.removePolylines; + +GMaps.prototype.drawRoute = function(options) { + var self = this; + + this.getRoutes({ + origin: options.origin, + destination: options.destination, + travelMode: options.travelMode, + waypoints: options.waypoints, + unitSystem: options.unitSystem, + error: options.error, + callback: function(e) { + if (e.length > 0) { + var polyline_options = { + path: e[e.length - 1].overview_path, + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight + }; + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + self.drawPolyline(polyline_options); + + if (options.callback) { + options.callback(e[e.length - 1]); + } + } + } + }); +}; + +GMaps.prototype.travelRoute = function(options) { + if (options.origin && options.destination) { + this.getRoutes({ + origin: options.origin, + destination: options.destination, + travelMode: options.travelMode, + waypoints : options.waypoints, + unitSystem: options.unitSystem, + error: options.error, + callback: function(e) { + //start callback + if (e.length > 0 && options.start) { + options.start(e[e.length - 1]); + } + + //step callback + if (e.length > 0 && options.step) { + var route = e[e.length - 1]; + if (route.legs.length > 0) { + var steps = route.legs[0].steps; + for (var i = 0, step; step = steps[i]; i++) { + step.step_number = i; + options.step(step, (route.legs[0].steps.length - 1)); + } + } + } + + //end callback + if (e.length > 0 && options.end) { + options.end(e[e.length - 1]); + } + } + }); + } + else if (options.route) { + if (options.route.legs.length > 0) { + var steps = options.route.legs[0].steps; + for (var i = 0, step; step = steps[i]; i++) { + step.step_number = i; + options.step(step); + } + } + } +}; + +GMaps.prototype.drawSteppedRoute = function(options) { + var self = this; + + if (options.origin && options.destination) { + this.getRoutes({ + origin: options.origin, + destination: options.destination, + travelMode: options.travelMode, + waypoints : options.waypoints, + error: options.error, + callback: function(e) { + //start callback + if (e.length > 0 && options.start) { + options.start(e[e.length - 1]); + } + + //step callback + if (e.length > 0 && options.step) { + var route = e[e.length - 1]; + if (route.legs.length > 0) { + var steps = route.legs[0].steps; + for (var i = 0, step; step = steps[i]; i++) { + step.step_number = i; + var polyline_options = { + path: step.path, + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight + }; + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + self.drawPolyline(polyline_options); + options.step(step, (route.legs[0].steps.length - 1)); + } + } + } + + //end callback + if (e.length > 0 && options.end) { + options.end(e[e.length - 1]); + } + } + }); + } + else if (options.route) { + if (options.route.legs.length > 0) { + var steps = options.route.legs[0].steps; + for (var i = 0, step; step = steps[i]; i++) { + step.step_number = i; + var polyline_options = { + path: step.path, + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight + }; + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + self.drawPolyline(polyline_options); + options.step(step); + } + } + } +}; + +GMaps.Route = function(options) { + this.origin = options.origin; + this.destination = options.destination; + this.waypoints = options.waypoints; + + this.map = options.map; + this.route = options.route; + this.step_count = 0; + this.steps = this.route.legs[0].steps; + this.steps_length = this.steps.length; + + var polyline_options = { + path: new google.maps.MVCArray(), + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight + }; + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + this.polyline = this.map.drawPolyline(polyline_options).getPath(); +}; + +GMaps.Route.prototype.getRoute = function(options) { + var self = this; + + this.map.getRoutes({ + origin : this.origin, + destination : this.destination, + travelMode : options.travelMode, + waypoints : this.waypoints || [], + error: options.error, + callback : function() { + self.route = e[0]; + + if (options.callback) { + options.callback.call(self); + } + } + }); +}; + +GMaps.Route.prototype.back = function() { + if (this.step_count > 0) { + this.step_count--; + var path = this.route.legs[0].steps[this.step_count].path; + + for (var p in path){ + if (path.hasOwnProperty(p)){ + this.polyline.pop(); + } + } + } +}; + +GMaps.Route.prototype.forward = function() { + if (this.step_count < this.steps_length) { + var path = this.route.legs[0].steps[this.step_count].path; + + for (var p in path){ + if (path.hasOwnProperty(p)){ + this.polyline.push(path[p]); + } + } + this.step_count++; + } +}; + +GMaps.prototype.checkGeofence = function(lat, lng, fence) { + return fence.containsLatLng(new google.maps.LatLng(lat, lng)); +}; + +GMaps.prototype.checkMarkerGeofence = function(marker, outside_callback) { + if (marker.fences) { + for (var i = 0, fence; fence = marker.fences[i]; i++) { + var pos = marker.getPosition(); + if (!this.checkGeofence(pos.lat(), pos.lng(), fence)) { + outside_callback(marker, fence); + } + } + } +}; + +GMaps.prototype.toImage = function(options) { + var options = options || {}, + static_map_options = {}; + + static_map_options['size'] = options['size'] || [this.el.clientWidth, this.el.clientHeight]; + static_map_options['lat'] = this.getCenter().lat(); + static_map_options['lng'] = this.getCenter().lng(); + + if (this.markers.length > 0) { + static_map_options['markers'] = []; + + for (var i = 0; i < this.markers.length; i++) { + static_map_options['markers'].push({ + lat: this.markers[i].getPosition().lat(), + lng: this.markers[i].getPosition().lng() + }); + } + } + + if (this.polylines.length > 0) { + var polyline = this.polylines[0]; + + static_map_options['polyline'] = {}; + static_map_options['polyline']['path'] = google.maps.geometry.encoding.encodePath(polyline.getPath()); + static_map_options['polyline']['strokeColor'] = polyline.strokeColor + static_map_options['polyline']['strokeOpacity'] = polyline.strokeOpacity + static_map_options['polyline']['strokeWeight'] = polyline.strokeWeight + } + + return GMaps.staticMapURL(static_map_options); +}; + +GMaps.staticMapURL = function(options){ + var parameters = [], + data, + static_root = (location.protocol === 'file:' ? 'http:' : location.protocol ) + '//maps.googleapis.com/maps/api/staticmap'; + + if (options.url) { + static_root = options.url; + delete options.url; + } + + static_root += '?'; + + var markers = options.markers; + + delete options.markers; + + if (!markers && options.marker) { + markers = [options.marker]; + delete options.marker; + } + + var styles = options.styles; + + delete options.styles; + + var polyline = options.polyline; + delete options.polyline; + + /** Map options **/ + if (options.center) { + parameters.push('center=' + options.center); + delete options.center; + } + else if (options.address) { + parameters.push('center=' + options.address); + delete options.address; + } + else if (options.lat) { + parameters.push(['center=', options.lat, ',', options.lng].join('')); + delete options.lat; + delete options.lng; + } + else if (options.visible) { + var visible = encodeURI(options.visible.join('|')); + parameters.push('visible=' + visible); + } + + var size = options.size; + if (size) { + if (size.join) { + size = size.join('x'); + } + delete options.size; + } + else { + size = '630x300'; + } + parameters.push('size=' + size); + + if (!options.zoom && options.zoom !== false) { + options.zoom = 15; + } + + var sensor = options.hasOwnProperty('sensor') ? !!options.sensor : true; + delete options.sensor; + parameters.push('sensor=' + sensor); + + for (var param in options) { + if (options.hasOwnProperty(param)) { + parameters.push(param + '=' + options[param]); + } + } + + /** Markers **/ + if (markers) { + var marker, loc; + + for (var i = 0; data = markers[i]; i++) { + marker = []; + + if (data.size && data.size !== 'normal') { + marker.push('size:' + data.size); + delete data.size; + } + else if (data.icon) { + marker.push('icon:' + encodeURI(data.icon)); + delete data.icon; + } + + if (data.color) { + marker.push('color:' + data.color.replace('#', '0x')); + delete data.color; + } + + if (data.label) { + marker.push('label:' + data.label[0].toUpperCase()); + delete data.label; + } + + loc = (data.address ? data.address : data.lat + ',' + data.lng); + delete data.address; + delete data.lat; + delete data.lng; + + for(var param in data){ + if (data.hasOwnProperty(param)) { + marker.push(param + ':' + data[param]); + } + } + + if (marker.length || i === 0) { + marker.push(loc); + marker = marker.join('|'); + parameters.push('markers=' + encodeURI(marker)); + } + // New marker without styles + else { + marker = parameters.pop() + encodeURI('|' + loc); + parameters.push(marker); + } + } + } + + /** Map Styles **/ + if (styles) { + for (var i = 0; i < styles.length; i++) { + var styleRule = []; + if (styles[i].featureType){ + styleRule.push('feature:' + styles[i].featureType.toLowerCase()); + } + + if (styles[i].elementType) { + styleRule.push('element:' + styles[i].elementType.toLowerCase()); + } + + for (var j = 0; j < styles[i].stylers.length; j++) { + for (var p in styles[i].stylers[j]) { + var ruleArg = styles[i].stylers[j][p]; + if (p == 'hue' || p == 'color') { + ruleArg = '0x' + ruleArg.substring(1); + } + styleRule.push(p + ':' + ruleArg); + } + } + + var rule = styleRule.join('|'); + if (rule != '') { + parameters.push('style=' + rule); + } + } + } + + /** Polylines **/ + function parseColor(color, opacity) { + if (color[0] === '#'){ + color = color.replace('#', '0x'); + + if (opacity) { + opacity = parseFloat(opacity); + opacity = Math.min(1, Math.max(opacity, 0)); + if (opacity === 0) { + return '0x00000000'; + } + opacity = (opacity * 255).toString(16); + if (opacity.length === 1) { + opacity += opacity; + } + + color = color.slice(0,8) + opacity; + } + } + return color; + } + + if (polyline) { + data = polyline; + polyline = []; + + if (data.strokeWeight) { + polyline.push('weight:' + parseInt(data.strokeWeight, 10)); + } + + if (data.strokeColor) { + var color = parseColor(data.strokeColor, data.strokeOpacity); + polyline.push('color:' + color); + } + + if (data.fillColor) { + var fillcolor = parseColor(data.fillColor, data.fillOpacity); + polyline.push('fillcolor:' + fillcolor); + } + + var path = data.path; + if (path.join) { + for (var j=0, pos; pos=path[j]; j++) { + polyline.push(pos.join(',')); + } + } + else { + polyline.push('enc:' + path); + } + + polyline = polyline.join('|'); + parameters.push('path=' + encodeURI(polyline)); + } + + /** Retina support **/ + var dpi = window.devicePixelRatio || 1; + parameters.push('scale=' + dpi); + + parameters = parameters.join('&'); + return static_root + parameters; +}; + +GMaps.prototype.addMapType = function(mapTypeId, options) { + if (options.hasOwnProperty("getTileUrl") && typeof(options["getTileUrl"]) == "function") { + options.tileSize = options.tileSize || new google.maps.Size(256, 256); + + var mapType = new google.maps.ImageMapType(options); + + this.map.mapTypes.set(mapTypeId, mapType); + } + else { + throw "'getTileUrl' function required."; + } +}; + +GMaps.prototype.addOverlayMapType = function(options) { + if (options.hasOwnProperty("getTile") && typeof(options["getTile"]) == "function") { + var overlayMapTypeIndex = options.index; + + delete options.index; + + this.map.overlayMapTypes.insertAt(overlayMapTypeIndex, options); + } + else { + throw "'getTile' function required."; + } +}; + +GMaps.prototype.removeOverlayMapType = function(overlayMapTypeIndex) { + this.map.overlayMapTypes.removeAt(overlayMapTypeIndex); +}; + +GMaps.prototype.addStyle = function(options) { + var styledMapType = new google.maps.StyledMapType(options.styles, { name: options.styledMapName }); + + this.map.mapTypes.set(options.mapTypeId, styledMapType); +}; + +GMaps.prototype.setStyle = function(mapTypeId) { + this.map.setMapTypeId(mapTypeId); +}; + +GMaps.prototype.createPanorama = function(streetview_options) { + if (!streetview_options.hasOwnProperty('lat') || !streetview_options.hasOwnProperty('lng')) { + streetview_options.lat = this.getCenter().lat(); + streetview_options.lng = this.getCenter().lng(); + } + + this.panorama = GMaps.createPanorama(streetview_options); + + this.map.setStreetView(this.panorama); + + return this.panorama; +}; + +GMaps.createPanorama = function(options) { + var el = getElementById(options.el, options.context); + + options.position = new google.maps.LatLng(options.lat, options.lng); + + delete options.el; + delete options.context; + delete options.lat; + delete options.lng; + + var streetview_events = ['closeclick', 'links_changed', 'pano_changed', 'position_changed', 'pov_changed', 'resize', 'visible_changed'], + streetview_options = extend_object({visible : true}, options); + + for (var i = 0; i < streetview_events.length; i++) { + delete streetview_options[streetview_events[i]]; + } + + var panorama = new google.maps.StreetViewPanorama(el, streetview_options); + + for (var i = 0; i < streetview_events.length; i++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(){ + options[name].apply(this); + }); + } + })(panorama, streetview_events[i]); + } + + return panorama; +}; + +GMaps.prototype.on = function(event_name, handler) { + return GMaps.on(event_name, this, handler); +}; + +GMaps.prototype.off = function(event_name) { + GMaps.off(event_name, this); +}; + +GMaps.custom_events = ['marker_added', 'marker_removed', 'polyline_added', 'polyline_removed', 'polygon_added', 'polygon_removed', 'geolocated', 'geolocation_failed']; + +GMaps.on = function(event_name, object, handler) { + if (GMaps.custom_events.indexOf(event_name) == -1) { + if(object instanceof GMaps) object = object.map; + return google.maps.event.addListener(object, event_name, handler); + } + else { + var registered_event = { + handler : handler, + eventName : event_name + }; + + object.registered_events[event_name] = object.registered_events[event_name] || []; + object.registered_events[event_name].push(registered_event); + + return registered_event; + } +}; + +GMaps.off = function(event_name, object) { + if (GMaps.custom_events.indexOf(event_name) == -1) { + if(object instanceof GMaps) object = object.map; + google.maps.event.clearListeners(object, event_name); + } + else { + object.registered_events[event_name] = []; + } +}; + +GMaps.fire = function(event_name, object, scope) { + if (GMaps.custom_events.indexOf(event_name) == -1) { + google.maps.event.trigger(object, event_name, Array.prototype.slice.apply(arguments).slice(2)); + } + else { + if(event_name in scope.registered_events) { + var firing_events = scope.registered_events[event_name]; + + for(var i = 0; i < firing_events.length; i++) { + (function(handler, scope, object) { + handler.apply(scope, [object]); + })(firing_events[i]['handler'], scope, object); + } + } + } +}; + +GMaps.geolocate = function(options) { + var complete_callback = options.always || options.complete; + + if (navigator.geolocation) { + navigator.geolocation.getCurrentPosition(function(position) { + options.success(position); + + if (complete_callback) { + complete_callback(); + } + }, function(error) { + options.error(error); + + if (complete_callback) { + complete_callback(); + } + }, options.options); + } + else { + options.not_supported(); + + if (complete_callback) { + complete_callback(); + } + } +}; + +GMaps.geocode = function(options) { + this.geocoder = new google.maps.Geocoder(); + var callback = options.callback; + if (options.hasOwnProperty('lat') && options.hasOwnProperty('lng')) { + options.latLng = new google.maps.LatLng(options.lat, options.lng); + } + + delete options.lat; + delete options.lng; + delete options.callback; + + this.geocoder.geocode(options, function(results, status) { + callback(results, status); + }); +}; + +//========================== +// Polygon containsLatLng +// https://github.com/tparkin/Google-Maps-Point-in-Polygon +// Poygon getBounds extension - google-maps-extensions +// http://code.google.com/p/google-maps-extensions/source/browse/google.maps.Polygon.getBounds.js +if (!google.maps.Polygon.prototype.getBounds) { + google.maps.Polygon.prototype.getBounds = function(latLng) { + var bounds = new google.maps.LatLngBounds(); + var paths = this.getPaths(); + var path; + + for (var p = 0; p < paths.getLength(); p++) { + path = paths.getAt(p); + for (var i = 0; i < path.getLength(); i++) { + bounds.extend(path.getAt(i)); + } + } + + return bounds; + }; +} + +if (!google.maps.Polygon.prototype.containsLatLng) { + // Polygon containsLatLng - method to determine if a latLng is within a polygon + google.maps.Polygon.prototype.containsLatLng = function(latLng) { + // Exclude points outside of bounds as there is no way they are in the poly + var bounds = this.getBounds(); + + if (bounds !== null && !bounds.contains(latLng)) { + return false; + } + + // Raycast point in polygon method + var inPoly = false; + + var numPaths = this.getPaths().getLength(); + for (var p = 0; p < numPaths; p++) { + var path = this.getPaths().getAt(p); + var numPoints = path.getLength(); + var j = numPoints - 1; + + for (var i = 0; i < numPoints; i++) { + var vertex1 = path.getAt(i); + var vertex2 = path.getAt(j); + + if (vertex1.lng() < latLng.lng() && vertex2.lng() >= latLng.lng() || vertex2.lng() < latLng.lng() && vertex1.lng() >= latLng.lng()) { + if (vertex1.lat() + (latLng.lng() - vertex1.lng()) / (vertex2.lng() - vertex1.lng()) * (vertex2.lat() - vertex1.lat()) < latLng.lat()) { + inPoly = !inPoly; + } + } + + j = i; + } + } + + return inPoly; + }; +} + +if (!google.maps.Circle.prototype.containsLatLng) { + google.maps.Circle.prototype.containsLatLng = function(latLng) { + if (google.maps.geometry) { + return google.maps.geometry.spherical.computeDistanceBetween(this.getCenter(), latLng) <= this.getRadius(); + } + else { + return true; + } + }; +} + +google.maps.LatLngBounds.prototype.containsLatLng = function(latLng) { + return this.contains(latLng); +}; + +google.maps.Marker.prototype.setFences = function(fences) { + this.fences = fences; +}; + +google.maps.Marker.prototype.addFence = function(fence) { + this.fences.push(fence); +}; + +google.maps.Marker.prototype.getId = function() { + return this['__gm_id']; +}; + +//========================== +// Array indexOf +// https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf +if (!Array.prototype.indexOf) { + Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) { + "use strict"; + if (this == null) { + throw new TypeError(); + } + var t = Object(this); + var len = t.length >>> 0; + if (len === 0) { + return -1; + } + var n = 0; + if (arguments.length > 1) { + n = Number(arguments[1]); + if (n != n) { // shortcut for verifying if it's NaN + n = 0; + } else if (n != 0 && n != Infinity && n != -Infinity) { + n = (n > 0 || -1) * Math.floor(Math.abs(n)); + } + } + if (n >= len) { + return -1; + } + var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0); + for (; k < len; k++) { + if (k in t && t[k] === searchElement) { + return k; + } + } + return -1; + } +} + +return GMaps; +})); diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/gmaps.min.js b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/gmaps.min.js new file mode 100644 index 0000000..34599bc --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/gmaps.min.js @@ -0,0 +1,2 @@ +"use strict";!function(a,b){"object"==typeof exports?module.exports=b():"function"==typeof define&&define.amd&&define("GMaps",[],b),a.GMaps=b()}(this,function(){if("object"!=typeof window.google||!window.google.maps)throw"Google Maps API is required. Please register the following JavaScript library http://maps.google.com/maps/api/js?sensor=true.";var a=function(a,b){var c;if(a===b)return a;for(c in b)a[c]=b[c];return a},b=function(a,b){var c,d=Array.prototype.slice.call(arguments,2),e=[],f=a.length;if(Array.prototype.map&&a.map===Array.prototype.map)e=Array.prototype.map.call(a,function(a){var c=d.slice(0);return c.splice(0,0,a),b.apply(this,c)});else for(c=0;f>c;c++)callback_params=d,callback_params.splice(0,0,a[c]),e.push(b.apply(this,callback_params));return e},c=function(a){var b,c=[];for(b=0;b0&&"object"==typeof a[c][0]?a[c]=f(a[c],b):a[c]=d(a[c],b));return a},g=function(a,b){var c,d=a.replace(".","");return c="jQuery"in this&&b?$("."+d,b)[0]:document.getElementsByClassName(d)[0]},h=function(a,b){var c,a=a.replace("#","");return c="jQuery"in window&&b?$("#"+a,b)[0]:document.getElementById(a)},i=function(a){var b=0,c=0;if(a.offsetParent)do b+=a.offsetLeft,c+=a.offsetTop;while(a=a.offsetParent);return[b,c]},j=function(b){var c=document,d=function(b){if(!this)return new d(b);b.zoom=b.zoom||15,b.mapType=b.mapType||"roadmap";var e,f=this,j=["bounds_changed","center_changed","click","dblclick","drag","dragend","dragstart","idle","maptypeid_changed","projection_changed","resize","tilesloaded","zoom_changed"],k=["mousemove","mouseout","mouseover"],l=["el","lat","lng","mapType","width","height","markerClusterer","enableNewStyle"],m=b.el||b.div,n=b.markerClusterer,o=google.maps.MapTypeId[b.mapType.toUpperCase()],p=new google.maps.LatLng(b.lat,b.lng),q=b.zoomControl||!0,r=b.zoomControlOpt||{style:"DEFAULT",position:"TOP_LEFT"},s=r.style||"DEFAULT",t=r.position||"TOP_LEFT",u=b.panControl||!0,v=b.mapTypeControl||!0,w=b.scaleControl||!0,x=b.streetViewControl||!0,y=y||!0,z={},A={zoom:this.zoom,center:p,mapTypeId:o},B={panControl:u,zoomControl:q,zoomControlOptions:{style:google.maps.ZoomControlStyle[s],position:google.maps.ControlPosition[t]},mapTypeControl:v,scaleControl:w,streetViewControl:x,overviewMapControl:y};if("string"==typeof b.el||"string"==typeof b.div?m.indexOf("#")>-1?this.el=h(m,b.context):this.el=g.apply(this,[m,b.context]):this.el=m,"undefined"==typeof this.el||null===this.el)throw"No element defined.";for(window.context_menu=window.context_menu||{},window.context_menu[f.el.id]={},this.controls=[],this.overlays=[],this.layers=[],this.singleLayers={},this.markers=[],this.polylines=[],this.routes=[],this.polygons=[],this.infoWindow=null,this.overlay_el=null,this.zoom=b.zoom,this.registered_events={},this.el.style.width=b.width||this.el.scrollWidth||this.el.offsetWidth,this.el.style.height=b.height||this.el.scrollHeight||this.el.offsetHeight,google.maps.visualRefresh=b.enableNewStyle,e=0;e'+g.title+""}if(h("gmaps_context_menu")){var j=h("gmaps_context_menu");j.innerHTML=c;var e,k=j.getElementsByTagName("a"),l=k.length;for(e=0;l>e;e++){var m=k[e],n=function(c){c.preventDefault(),d[this.id.replace(a+"_","")].action.apply(f,[b]),f.hideContextMenu()};google.maps.event.clearListeners(m,"click"),google.maps.event.addDomListenerOnce(m,"click",n,!1)}var o=i.apply(this,[f.el]),p=o[0]+b.pixel.x-15,q=o[1]+b.pixel.y-15;j.style.left=p+"px",j.style.top=q+"px",j.style.display="block"}};this.buildContextMenu=function(a,b){if("marker"===a){b.pixel={};var c=new google.maps.OverlayView;c.setMap(f.map),c.draw=function(){var d=c.getProjection(),e=b.marker.getPosition();b.pixel=d.fromLatLngToContainerPixel(e),C(a,b)}}else C(a,b)},this.setContextMenu=function(a){window.context_menu[f.el.id][a.control]={};var b,d=c.createElement("ul");for(b in a.options)if(a.options.hasOwnProperty(b)){var e=a.options[b];window.context_menu[f.el.id][a.control][e.name]={title:e.title,action:e.action}}d.id="gmaps_context_menu",d.style.display="none",d.style.position="absolute",d.style.minWidth="100px",d.style.background="white",d.style.listStyle="none",d.style.padding="8px",d.style.boxShadow="2px 2px 6px #ccc",c.body.appendChild(d);var g=h("gmaps_context_menu");google.maps.event.addDomListener(g,"mouseout",function(a){a.relatedTarget&&this.contains(a.relatedTarget)||window.setTimeout(function(){g.style.display="none"},400)},!1)},this.hideContextMenu=function(){var a=h("gmaps_context_menu");a&&(a.style.display="none")};var D=function(a,c){google.maps.event.addListener(a,c,function(a){void 0==a&&(a=this),b[c].apply(this,[a]),f.hideContextMenu()})};google.maps.event.addListener(this.map,"zoom_changed",this.hideContextMenu);for(var E=0;Ea;a++)"boolean"==typeof this.markers[a].visible&&this.markers[a].visible&&b.push(this.markers[a].getPosition());this.fitLatLngBounds(b)},this.fitLatLngBounds=function(a){var b,c=a.length,d=new google.maps.LatLngBounds;for(b=0;c>b;b++)d.extend(a[b]);this.map.fitBounds(d)},this.setCenter=function(a,b,c){this.map.panTo(new google.maps.LatLng(a,b)),c&&c()},this.getElement=function(){return this.el},this.zoomIn=function(a){a=a||1,this.zoom=this.map.getZoom()+a,this.map.setZoom(this.zoom)},this.zoomOut=function(a){a=a||1,this.zoom=this.map.getZoom()-a,this.map.setZoom(this.zoom)};var G,H=[];for(G in this.map)"function"!=typeof this.map[G]||this[G]||H.push(G);for(e=0;e-1){var d=this.markers[e];d.setMap(null),this.markerClusterer&&this.markerClusterer.removeMarker(d),j.fire("marker_removed",d,this)}}for(var c=0;c0&&d.paths[0].length>0&&(d.paths=c(b(d.paths,f,e)));for(var g=new google.maps.Polygon(d),h=["click","dblclick","mousedown","mousemove","mouseout","mouseover","mouseup","rightclick"],i=0;i0&&d.locations[0].length>0&&(d.locations=c(b([d.locations],f,!1)));var e=d.callback;delete d.callback;var g=new google.maps.ElevationService;if(d.path){var h={path:d.locations,samples:d.samples};g.getElevationAlongPath(h,function(a,b){e&&"function"==typeof e&&e(a,b)})}else delete d.path,delete d.samples,g.getElevationForLocations(d,function(a,b){e&&"function"==typeof e&&e(a,b)})},j.prototype.cleanRoute=j.prototype.removePolylines,j.prototype.drawRoute=function(a){var b=this;this.getRoutes({origin:a.origin,destination:a.destination,travelMode:a.travelMode,waypoints:a.waypoints,unitSystem:a.unitSystem,error:a.error,callback:function(c){if(c.length>0){var d={path:c[c.length-1].overview_path,strokeColor:a.strokeColor,strokeOpacity:a.strokeOpacity,strokeWeight:a.strokeWeight};a.hasOwnProperty("icons")&&(d.icons=a.icons),b.drawPolyline(d),a.callback&&a.callback(c[c.length-1])}}})},j.prototype.travelRoute=function(a){if(a.origin&&a.destination)this.getRoutes({origin:a.origin,destination:a.destination,travelMode:a.travelMode,waypoints:a.waypoints,unitSystem:a.unitSystem,error:a.error,callback:function(b){if(b.length>0&&a.start&&a.start(b[b.length-1]),b.length>0&&a.step){var c=b[b.length-1];if(c.legs.length>0)for(var d,e=c.legs[0].steps,f=0;d=e[f];f++)d.step_number=f,a.step(d,c.legs[0].steps.length-1)}b.length>0&&a.end&&a.end(b[b.length-1])}});else if(a.route&&a.route.legs.length>0)for(var b,c=a.route.legs[0].steps,d=0;b=c[d];d++)b.step_number=d,a.step(b)},j.prototype.drawSteppedRoute=function(a){var b=this;if(a.origin&&a.destination)this.getRoutes({origin:a.origin,destination:a.destination,travelMode:a.travelMode,waypoints:a.waypoints,error:a.error,callback:function(c){if(c.length>0&&a.start&&a.start(c[c.length-1]),c.length>0&&a.step){var d=c[c.length-1];if(d.legs.length>0)for(var e,f=d.legs[0].steps,g=0;e=f[g];g++){e.step_number=g;var h={path:e.path,strokeColor:a.strokeColor,strokeOpacity:a.strokeOpacity,strokeWeight:a.strokeWeight};a.hasOwnProperty("icons")&&(h.icons=a.icons),b.drawPolyline(h),a.step(e,d.legs[0].steps.length-1)}}c.length>0&&a.end&&a.end(c[c.length-1])}});else if(a.route&&a.route.legs.length>0)for(var c,d=a.route.legs[0].steps,e=0;c=d[e];e++){c.step_number=e;var f={path:c.path,strokeColor:a.strokeColor,strokeOpacity:a.strokeOpacity,strokeWeight:a.strokeWeight};a.hasOwnProperty("icons")&&(f.icons=a.icons),b.drawPolyline(f),a.step(c)}},j.Route=function(a){this.origin=a.origin,this.destination=a.destination,this.waypoints=a.waypoints,this.map=a.map,this.route=a.route,this.step_count=0,this.steps=this.route.legs[0].steps,this.steps_length=this.steps.length;var b={path:new google.maps.MVCArray,strokeColor:a.strokeColor,strokeOpacity:a.strokeOpacity,strokeWeight:a.strokeWeight};a.hasOwnProperty("icons")&&(b.icons=a.icons),this.polyline=this.map.drawPolyline(b).getPath()},j.Route.prototype.getRoute=function(a){var b=this;this.map.getRoutes({origin:this.origin,destination:this.destination,travelMode:a.travelMode,waypoints:this.waypoints||[],error:a.error,callback:function(){b.route=e[0],a.callback&&a.callback.call(b)}})},j.Route.prototype.back=function(){if(this.step_count>0){this.step_count--;var a=this.route.legs[0].steps[this.step_count].path;for(var b in a)a.hasOwnProperty(b)&&this.polyline.pop()}},j.Route.prototype.forward=function(){if(this.step_count0){b.markers=[];for(var c=0;c0){var d=this.polylines[0];b.polyline={},b.polyline.path=google.maps.geometry.encoding.encodePath(d.getPath()),b.polyline.strokeColor=d.strokeColor,b.polyline.strokeOpacity=d.strokeOpacity,b.polyline.strokeWeight=d.strokeWeight}return j.staticMapURL(b)},j.staticMapURL=function(a){function b(a,b){if("#"===a[0]&&(a=a.replace("#","0x"),b)){if(b=parseFloat(b),b=Math.min(1,Math.max(b,0)),0===b)return"0x00000000";b=(255*b).toString(16),1===b.length&&(b+=b),a=a.slice(0,8)+b}return a}var c,d=[],e=("file:"===location.protocol?"http:":location.protocol)+"//maps.googleapis.com/maps/api/staticmap";a.url&&(e=a.url,delete a.url),e+="?";var f=a.markers;delete a.markers,!f&&a.marker&&(f=[a.marker],delete a.marker);var g=a.styles;delete a.styles;var h=a.polyline;if(delete a.polyline,a.center)d.push("center="+a.center),delete a.center;else if(a.address)d.push("center="+a.address),delete a.address;else if(a.lat)d.push(["center=",a.lat,",",a.lng].join("")),delete a.lat,delete a.lng;else if(a.visible){var i=encodeURI(a.visible.join("|"));d.push("visible="+i)}var j=a.size;j?(j.join&&(j=j.join("x")),delete a.size):j="630x300",d.push("size="+j),a.zoom||a.zoom===!1||(a.zoom=15);var k=a.hasOwnProperty("sensor")?!!a.sensor:!0;delete a.sensor,d.push("sensor="+k);for(var l in a)a.hasOwnProperty(l)&&d.push(l+"="+a[l]);if(f)for(var m,n,o=0;c=f[o];o++){m=[],c.size&&"normal"!==c.size?(m.push("size:"+c.size),delete c.size):c.icon&&(m.push("icon:"+encodeURI(c.icon)),delete c.icon),c.color&&(m.push("color:"+c.color.replace("#","0x")),delete c.color),c.label&&(m.push("label:"+c.label[0].toUpperCase()),delete c.label),n=c.address?c.address:c.lat+","+c.lng,delete c.address,delete c.lat,delete c.lng;for(var l in c)c.hasOwnProperty(l)&&m.push(l+":"+c[l]);m.length||0===o?(m.push(n),m=m.join("|"),d.push("markers="+encodeURI(m))):(m=d.pop()+encodeURI("|"+n),d.push(m))}if(g)for(var o=0;oe;e++)for(var f=this.getPaths().getAt(e),g=f.getLength(),h=g-1,i=0;g>i;i++){var j=f.getAt(i),k=f.getAt(h);(j.lng()=a.lng()||k.lng()=a.lng())&&j.lat()+(a.lng()-j.lng())/(k.lng()-j.lng())*(k.lat()-j.lat())>>0;if(0===c)return-1;var d=0;if(arguments.length>1&&(d=Number(arguments[1]),d!=d?d=0:0!=d&&d!=1/0&&d!=-(1/0)&&(d=(d>0||-1)*Math.floor(Math.abs(d)))),d>=c)return-1;for(var e=d>=0?d:Math.max(c-Math.abs(d),0);c>e;e++)if(e in b&&b[e]===a)return e;return-1}),j}); +//# sourceMappingURL=gmaps.min.js.map \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/gmaps.min.js.map b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/gmaps.min.js.map new file mode 100644 index 0000000..1ad84b5 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/gmaps.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"gmaps.min.js","sources":["gmaps.js"],"names":["root","factory","exports","module","define","amd","GMaps","this","window","google","maps","extend_object","obj","new_obj","name","array_map","array","callback","i","original_callback_params","Array","prototype","slice","call","arguments","array_return","array_length","length","map","item","callback_params","splice","apply","push","array_flat","new_array","concat","coordsToLatLngs","coords","useGeoJSON","first_coord","second_coord","LatLng","arrayToLatLng","getElementsByClassName","class_name","context","element","_class","replace","$","document","getElementById","id","findAbsolutePosition","curleft","curtop","offsetParent","offsetLeft","offsetTop","global","doc","options","zoom","mapType","self","events_that_hide_context_menu","events_that_doesnt_hide_context_menu","options_to_be_deleted","identifier","el","div","markerClustererFunction","markerClusterer","MapTypeId","toUpperCase","map_center","lat","lng","zoomControl","zoomControlOpt","style","position","zoomControlStyle","zoomControlPosition","panControl","mapTypeControl","scaleControl","streetViewControl","overviewMapControl","map_options","map_base_options","center","mapTypeId","map_controls_options","zoomControlOptions","ZoomControlStyle","ControlPosition","indexOf","context_menu","controls","overlays","layers","singleLayers","markers","polylines","routes","polygons","infoWindow","overlay_el","registered_events","width","scrollWidth","offsetWidth","height","scrollHeight","offsetHeight","visualRefresh","enableNewStyle","disableDefaultUI","Map","buildContextMenuHTML","control","e","html","hasOwnProperty","option","title","context_menu_element","innerHTML","context_menu_items","getElementsByTagName","context_menu_items_count","context_menu_item","assign_menu_item_action","ev","preventDefault","action","hideContextMenu","event","clearListeners","addDomListenerOnce","left","pixel","x","top","y","display","buildContextMenu","overlay","OverlayView","setMap","draw","projection","getProjection","marker","getPosition","fromLatLngToContainerPixel","setContextMenu","ul","createElement","minWidth","background","listStyle","padding","boxShadow","body","appendChild","addDomListener","relatedTarget","contains","setTimeout","setupListener","object","addListener","undefined","rightclick","refresh","trigger","fitZoom","latLngs","markers_length","visible","fitLatLngBounds","total","bounds","LatLngBounds","extend","fitBounds","setCenter","panTo","getElement","zoomIn","value","getZoom","setZoom","zoomOut","method","native_methods","gmaps","scope","method_name","createControl","cursor","disableDefaultStyles","fontFamily","fontSize","classes","className","content","HTMLElement","events","index","addControl","removeControl","controlsForPosition","getAt","removeAt","createMarker","details","fences","outside","base_options","marker_options","Marker","InfoWindow","info_window_events","marker_events","marker_events_with_mouse","me","fromLatLngToPoint","latLng","click","hideInfoWindows","open","checkMarkerGeofence","m","f","addMarker","fire","addMarkers","close","removeMarker","removeMarkers","collection","new_markers","getMap","drawOverlay","auto_show","onAdd","borderStyle","borderWidth","zIndex","layer","panes","getPanes","overlayLayer","stop_overlay_events","navigator","userAgent","toLowerCase","all","cancelBubble","returnValue","stopPropagation","overlayMouseTarget","fromLatLngToDivPixel","horizontalOffset","verticalOffset","children","content_height","clientHeight","content_width","clientWidth","verticalAlign","horizontalAlign","show","onRemove","remove","parentNode","removeChild","removeOverlay","removeOverlays","drawPolyline","path","points","latlng","polyline_options","strokeColor","strokeOpacity","strokeWeight","geodesic","clickable","editable","icons","polyline","Polyline","polyline_events","removePolyline","removePolylines","drawCircle","polygon","Circle","polygon_events","drawRectangle","latLngBounds","Rectangle","drawPolygon","paths","Polygon","removePolygon","removePolygons","getFromFusionTables","fusion_tables_options","FusionTablesLayer","loadFromFusionTables","getFromKML","url","kml_options","KmlLayer","loadFromKML","addLayer","layerName","weather","WeatherLayer","clouds","CloudLayer","traffic","TrafficLayer","transit","TransitLayer","bicycling","BicyclingLayer","panoramio","PanoramioLayer","setTag","filter","places","PlacesService","search","nearbySearch","radarSearch","placeSearchRequest","keyword","location","radius","rankBy","types","textSearch","textSearchRequest","query","setOptions","removeLayer","travelMode","unitSystem","getRoutes","TravelMode","BICYCLING","TRANSIT","DRIVING","WALKING","UnitSystem","IMPERIAL","METRIC","avoidHighways","avoidTolls","optimizeWaypoints","waypoints","request_options","origin","test","destination","error","service","DirectionsService","route","result","status","DirectionsStatus","OK","r","removeRoutes","getElevations","locations","samples","ElevationService","pathRequest","getElevationAlongPath","getElevationForLocations","cleanRoute","drawRoute","overview_path","travelRoute","start","step","legs","steps","step_number","end","drawSteppedRoute","Route","step_count","steps_length","MVCArray","getPath","getRoute","back","p","pop","forward","checkGeofence","fence","containsLatLng","outside_callback","pos","toImage","static_map_options","getCenter","geometry","encoding","encodePath","staticMapURL","parseColor","color","opacity","parseFloat","Math","min","max","toString","data","parameters","static_root","protocol","styles","address","join","encodeURI","size","sensor","param","loc","icon","label","styleRule","featureType","elementType","j","stylers","ruleArg","substring","rule","parseInt","fillColor","fillcolor","fillOpacity","dpi","devicePixelRatio","addMapType","tileSize","Size","ImageMapType","mapTypes","set","addOverlayMapType","overlayMapTypeIndex","overlayMapTypes","insertAt","removeOverlayMapType","addStyle","styledMapType","StyledMapType","styledMapName","setStyle","setMapTypeId","createPanorama","streetview_options","panorama","setStreetView","streetview_events","StreetViewPanorama","on","event_name","handler","off","custom_events","registered_event","eventName","firing_events","geolocate","complete_callback","always","complete","geolocation","getCurrentPosition","success","not_supported","geocode","geocoder","Geocoder","results","getBounds","getPaths","getLength","inPoly","numPaths","numPoints","vertex1","vertex2","spherical","computeDistanceBetween","getRadius","setFences","addFence","getId","searchElement","TypeError","t","Object","len","n","Number","Infinity","floor","abs","k"],"mappings":"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"} \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/jquery.gmaps.js b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/jquery.gmaps.js new file mode 100644 index 0000000..d9e9190 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/jquery.gmaps.js @@ -0,0 +1,13 @@ +$(document).ready(function () { + // Simple map + map = new GMaps({ + el: '#gmaps-simple', + lat: 34.05, + lng: -78.72, + zoom: 5, + panControl: false, + streetViewControl: false, + mapTypeControl: false, + overviewMapControl: false + }); +}); diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.controls.js b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.controls.js new file mode 100644 index 0000000..cbd525c --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.controls.js @@ -0,0 +1,83 @@ +GMaps.prototype.createControl = function(options) { + var control = document.createElement('div'); + + control.style.cursor = 'pointer'; + + if (options.disableDefaultStyles !== true) { + control.style.fontFamily = 'Roboto, Arial, sans-serif'; + control.style.fontSize = '11px'; + control.style.boxShadow = 'rgba(0, 0, 0, 0.298039) 0px 1px 4px -1px'; + } + + for (var option in options.style) { + control.style[option] = options.style[option]; + } + + if (options.id) { + control.id = options.id; + } + + if (options.classes) { + control.className = options.classes; + } + + if (options.content) { + if (typeof options.content === 'string') { + control.innerHTML = options.content; + } + else if (options.content instanceof HTMLElement) { + control.appendChild(options.content); + } + } + + if (options.position) { + control.position = google.maps.ControlPosition[options.position.toUpperCase()]; + } + + for (var ev in options.events) { + (function(object, name) { + google.maps.event.addDomListener(object, name, function(){ + options.events[name].apply(this, [this]); + }); + })(control, ev); + } + + control.index = 1; + + return control; +}; + +GMaps.prototype.addControl = function(options) { + var control = this.createControl(options); + + this.controls.push(control); + this.map.controls[control.position].push(control); + + return control; +}; + +GMaps.prototype.removeControl = function(control) { + var position = null, + i; + + for (i = 0; i < this.controls.length; i++) { + if (this.controls[i] == control) { + position = this.controls[i].position; + this.controls.splice(i, 1); + } + } + + if (position) { + for (i = 0; i < this.map.controls.length; i++) { + var controlsForPosition = this.map.controls[control.position]; + + if (controlsForPosition.getAt(i) == control) { + controlsForPosition.removeAt(i); + + break; + } + } + } + + return control; +}; diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.core.js b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.core.js new file mode 100644 index 0000000..242c80f --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.core.js @@ -0,0 +1,488 @@ +if (!(typeof window.google === 'object' && window.google.maps)) { + throw 'Google Maps API is required. Please register the following JavaScript library http://maps.google.com/maps/api/js?sensor=true.' +} + +var extend_object = function(obj, new_obj) { + var name; + + if (obj === new_obj) { + return obj; + } + + for (name in new_obj) { + obj[name] = new_obj[name]; + } + + return obj; +}; + +var replace_object = function(obj, replace) { + var name; + + if (obj === replace) { + return obj; + } + + for (name in replace) { + if (obj[name] != undefined) { + obj[name] = replace[name]; + } + } + + return obj; +}; + +var array_map = function(array, callback) { + var original_callback_params = Array.prototype.slice.call(arguments, 2), + array_return = [], + array_length = array.length, + i; + + if (Array.prototype.map && array.map === Array.prototype.map) { + array_return = Array.prototype.map.call(array, function(item) { + var callback_params = original_callback_params.slice(0); + callback_params.splice(0, 0, item); + + return callback.apply(this, callback_params); + }); + } + else { + for (i = 0; i < array_length; i++) { + callback_params = original_callback_params; + callback_params.splice(0, 0, array[i]); + array_return.push(callback.apply(this, callback_params)); + } + } + + return array_return; +}; + +var array_flat = function(array) { + var new_array = [], + i; + + for (i = 0; i < array.length; i++) { + new_array = new_array.concat(array[i]); + } + + return new_array; +}; + +var coordsToLatLngs = function(coords, useGeoJSON) { + var first_coord = coords[0], + second_coord = coords[1]; + + if (useGeoJSON) { + first_coord = coords[1]; + second_coord = coords[0]; + } + + return new google.maps.LatLng(first_coord, second_coord); +}; + +var arrayToLatLng = function(coords, useGeoJSON) { + var i; + + for (i = 0; i < coords.length; i++) { + if (!(coords[i] instanceof google.maps.LatLng)) { + if (coords[i].length > 0 && typeof(coords[i][0]) === "object") { + coords[i] = arrayToLatLng(coords[i], useGeoJSON); + } + else { + coords[i] = coordsToLatLngs(coords[i], useGeoJSON); + } + } + } + + return coords; +}; + + +var getElementsByClassName = function (class_name, context) { + + var element, + _class = class_name.replace('.', ''); + + if ('jQuery' in this && context) { + element = $("." + _class, context)[0]; + } else { + element = document.getElementsByClassName(_class)[0]; + } + return element; + +}; + +var getElementById = function(id, context) { + var element, + id = id.replace('#', ''); + + if ('jQuery' in window && context) { + element = $('#' + id, context)[0]; + } else { + element = document.getElementById(id); + }; + + return element; +}; + +var findAbsolutePosition = function(obj) { + var curleft = 0, + curtop = 0; + + if (obj.offsetParent) { + do { + curleft += obj.offsetLeft; + curtop += obj.offsetTop; + } while (obj = obj.offsetParent); + } + + return [curleft, curtop]; +}; + +var GMaps = (function(global) { + "use strict"; + + var doc = document; + + var GMaps = function(options) { + if (!this) return new GMaps(options); + + options.zoom = options.zoom || 15; + options.mapType = options.mapType || 'roadmap'; + + var self = this, + i, + events_that_hide_context_menu = [ + 'bounds_changed', 'center_changed', 'click', 'dblclick', 'drag', + 'dragend', 'dragstart', 'idle', 'maptypeid_changed', 'projection_changed', + 'resize', 'tilesloaded', 'zoom_changed' + ], + events_that_doesnt_hide_context_menu = ['mousemove', 'mouseout', 'mouseover'], + options_to_be_deleted = ['el', 'lat', 'lng', 'mapType', 'width', 'height', 'markerClusterer', 'enableNewStyle'], + identifier = options.el || options.div, + markerClustererFunction = options.markerClusterer, + mapType = google.maps.MapTypeId[options.mapType.toUpperCase()], + map_center = new google.maps.LatLng(options.lat, options.lng), + zoomControl = options.zoomControl || true, + zoomControlOpt = options.zoomControlOpt || { + style: 'DEFAULT', + position: 'TOP_LEFT' + }, + zoomControlStyle = zoomControlOpt.style || 'DEFAULT', + zoomControlPosition = zoomControlOpt.position || 'TOP_LEFT', + panControl = options.panControl || true, + mapTypeControl = options.mapTypeControl || true, + scaleControl = options.scaleControl || true, + streetViewControl = options.streetViewControl || true, + overviewMapControl = overviewMapControl || true, + map_options = {}, + map_base_options = { + zoom: this.zoom, + center: map_center, + mapTypeId: mapType + }, + map_controls_options = { + panControl: panControl, + zoomControl: zoomControl, + zoomControlOptions: { + style: google.maps.ZoomControlStyle[zoomControlStyle], + position: google.maps.ControlPosition[zoomControlPosition] + }, + mapTypeControl: mapTypeControl, + scaleControl: scaleControl, + streetViewControl: streetViewControl, + overviewMapControl: overviewMapControl + }; + + if (typeof(options.el) === 'string' || typeof(options.div) === 'string') { + + if (identifier.indexOf("#") > -1) { + this.el = getElementById(identifier, options.context); + } else { + this.el = getElementsByClassName.apply(this, [identifier, options.context]); + } + + } else { + this.el = identifier; + } + + if (typeof(this.el) === 'undefined' || this.el === null) { + throw 'No element defined.'; + } + + window.context_menu = window.context_menu || {}; + window.context_menu[self.el.id] = {}; + + this.controls = []; + this.overlays = []; + this.layers = []; // array with kml/georss and fusiontables layers, can be as many + this.singleLayers = {}; // object with the other layers, only one per layer + this.markers = []; + this.polylines = []; + this.routes = []; + this.polygons = []; + this.infoWindow = null; + this.overlay_el = null; + this.zoom = options.zoom; + this.registered_events = {}; + + this.el.style.width = options.width || this.el.scrollWidth || this.el.offsetWidth; + this.el.style.height = options.height || this.el.scrollHeight || this.el.offsetHeight; + + google.maps.visualRefresh = options.enableNewStyle; + + for (i = 0; i < options_to_be_deleted.length; i++) { + delete options[options_to_be_deleted[i]]; + } + + if(options.disableDefaultUI != true) { + map_base_options = extend_object(map_base_options, map_controls_options); + } + + map_options = extend_object(map_base_options, options); + + for (i = 0; i < events_that_hide_context_menu.length; i++) { + delete map_options[events_that_hide_context_menu[i]]; + } + + for (i = 0; i < events_that_doesnt_hide_context_menu.length; i++) { + delete map_options[events_that_doesnt_hide_context_menu[i]]; + } + + this.map = new google.maps.Map(this.el, map_options); + + if (markerClustererFunction) { + this.markerClusterer = markerClustererFunction.apply(this, [this.map]); + } + + var buildContextMenuHTML = function(control, e) { + var html = '', + options = window.context_menu[self.el.id][control]; + + for (var i in options){ + if (options.hasOwnProperty(i)) { + var option = options[i]; + + html += '
  • ' + option.title + '
  • '; + } + } + + if (!getElementById('gmaps_context_menu')) return; + + var context_menu_element = getElementById('gmaps_context_menu'); + + context_menu_element.innerHTML = html; + + var context_menu_items = context_menu_element.getElementsByTagName('a'), + context_menu_items_count = context_menu_items.length, + i; + + for (i = 0; i < context_menu_items_count; i++) { + var context_menu_item = context_menu_items[i]; + + var assign_menu_item_action = function(ev){ + ev.preventDefault(); + + options[this.id.replace(control + '_', '')].action.apply(self, [e]); + self.hideContextMenu(); + }; + + google.maps.event.clearListeners(context_menu_item, 'click'); + google.maps.event.addDomListenerOnce(context_menu_item, 'click', assign_menu_item_action, false); + } + + var position = findAbsolutePosition.apply(this, [self.el]), + left = position[0] + e.pixel.x - 15, + top = position[1] + e.pixel.y- 15; + + context_menu_element.style.left = left + "px"; + context_menu_element.style.top = top + "px"; + + context_menu_element.style.display = 'block'; + }; + + this.buildContextMenu = function(control, e) { + if (control === 'marker') { + e.pixel = {}; + + var overlay = new google.maps.OverlayView(); + overlay.setMap(self.map); + + overlay.draw = function() { + var projection = overlay.getProjection(), + position = e.marker.getPosition(); + + e.pixel = projection.fromLatLngToContainerPixel(position); + + buildContextMenuHTML(control, e); + }; + } + else { + buildContextMenuHTML(control, e); + } + }; + + this.setContextMenu = function(options) { + window.context_menu[self.el.id][options.control] = {}; + + var i, + ul = doc.createElement('ul'); + + for (i in options.options) { + if (options.options.hasOwnProperty(i)) { + var option = options.options[i]; + + window.context_menu[self.el.id][options.control][option.name] = { + title: option.title, + action: option.action + }; + } + } + + ul.id = 'gmaps_context_menu'; + ul.style.display = 'none'; + ul.style.position = 'absolute'; + ul.style.minWidth = '100px'; + ul.style.background = 'white'; + ul.style.listStyle = 'none'; + ul.style.padding = '8px'; + ul.style.boxShadow = '2px 2px 6px #ccc'; + + doc.body.appendChild(ul); + + var context_menu_element = getElementById('gmaps_context_menu') + + google.maps.event.addDomListener(context_menu_element, 'mouseout', function(ev) { + if (!ev.relatedTarget || !this.contains(ev.relatedTarget)) { + window.setTimeout(function(){ + context_menu_element.style.display = 'none'; + }, 400); + } + }, false); + }; + + this.hideContextMenu = function() { + var context_menu_element = getElementById('gmaps_context_menu'); + + if (context_menu_element) { + context_menu_element.style.display = 'none'; + } + }; + + var setupListener = function(object, name) { + google.maps.event.addListener(object, name, function(e){ + if (e == undefined) { + e = this; + } + + options[name].apply(this, [e]); + + self.hideContextMenu(); + }); + }; + + //google.maps.event.addListener(this.map, 'idle', this.hideContextMenu); + google.maps.event.addListener(this.map, 'zoom_changed', this.hideContextMenu); + + for (var ev = 0; ev < events_that_hide_context_menu.length; ev++) { + var name = events_that_hide_context_menu[ev]; + + if (name in options) { + setupListener(this.map, name); + } + } + + for (var ev = 0; ev < events_that_doesnt_hide_context_menu.length; ev++) { + var name = events_that_doesnt_hide_context_menu[ev]; + + if (name in options) { + setupListener(this.map, name); + } + } + + google.maps.event.addListener(this.map, 'rightclick', function(e) { + if (options.rightclick) { + options.rightclick.apply(this, [e]); + } + + if(window.context_menu[self.el.id]['map'] != undefined) { + self.buildContextMenu('map', e); + } + }); + + this.refresh = function() { + google.maps.event.trigger(this.map, 'resize'); + }; + + this.fitZoom = function() { + var latLngs = [], + markers_length = this.markers.length, + i; + + for (i = 0; i < markers_length; i++) { + if(typeof(this.markers[i].visible) === 'boolean' && this.markers[i].visible) { + latLngs.push(this.markers[i].getPosition()); + } + } + + this.fitLatLngBounds(latLngs); + }; + + this.fitLatLngBounds = function(latLngs) { + var total = latLngs.length, + bounds = new google.maps.LatLngBounds(), + i; + + for(i = 0; i < total; i++) { + bounds.extend(latLngs[i]); + } + + this.map.fitBounds(bounds); + }; + + this.setCenter = function(lat, lng, callback) { + this.map.panTo(new google.maps.LatLng(lat, lng)); + + if (callback) { + callback(); + } + }; + + this.getElement = function() { + return this.el; + }; + + this.zoomIn = function(value) { + value = value || 1; + + this.zoom = this.map.getZoom() + value; + this.map.setZoom(this.zoom); + }; + + this.zoomOut = function(value) { + value = value || 1; + + this.zoom = this.map.getZoom() - value; + this.map.setZoom(this.zoom); + }; + + var native_methods = [], + method; + + for (method in this.map) { + if (typeof(this.map[method]) == 'function' && !this[method]) { + native_methods.push(method); + } + } + + for (i = 0; i < native_methods.length; i++) { + (function(gmaps, scope, method_name) { + gmaps[method_name] = function(){ + return scope[method_name].apply(scope, arguments); + }; + })(this, this.map, native_methods[i]); + } + }; + + return GMaps; +})(this); diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.events.js b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.events.js new file mode 100644 index 0000000..bacf1b2 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.events.js @@ -0,0 +1,54 @@ +GMaps.prototype.on = function(event_name, handler) { + return GMaps.on(event_name, this, handler); +}; + +GMaps.prototype.off = function(event_name) { + GMaps.off(event_name, this); +}; + +GMaps.custom_events = ['marker_added', 'marker_removed', 'polyline_added', 'polyline_removed', 'polygon_added', 'polygon_removed', 'geolocated', 'geolocation_failed']; + +GMaps.on = function(event_name, object, handler) { + if (GMaps.custom_events.indexOf(event_name) == -1) { + if(object instanceof GMaps) object = object.map; + return google.maps.event.addListener(object, event_name, handler); + } + else { + var registered_event = { + handler : handler, + eventName : event_name + }; + + object.registered_events[event_name] = object.registered_events[event_name] || []; + object.registered_events[event_name].push(registered_event); + + return registered_event; + } +}; + +GMaps.off = function(event_name, object) { + if (GMaps.custom_events.indexOf(event_name) == -1) { + if(object instanceof GMaps) object = object.map; + google.maps.event.clearListeners(object, event_name); + } + else { + object.registered_events[event_name] = []; + } +}; + +GMaps.fire = function(event_name, object, scope) { + if (GMaps.custom_events.indexOf(event_name) == -1) { + google.maps.event.trigger(object, event_name, Array.prototype.slice.apply(arguments).slice(2)); + } + else { + if(event_name in scope.registered_events) { + var firing_events = scope.registered_events[event_name]; + + for(var i = 0; i < firing_events.length; i++) { + (function(handler, scope, object) { + handler.apply(scope, [object]); + })(firing_events[i]['handler'], scope, object); + } + } + } +}; diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.geofences.js b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.geofences.js new file mode 100644 index 0000000..ffba09d --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.geofences.js @@ -0,0 +1,14 @@ +GMaps.prototype.checkGeofence = function(lat, lng, fence) { + return fence.containsLatLng(new google.maps.LatLng(lat, lng)); +}; + +GMaps.prototype.checkMarkerGeofence = function(marker, outside_callback) { + if (marker.fences) { + for (var i = 0, fence; fence = marker.fences[i]; i++) { + var pos = marker.getPosition(); + if (!this.checkGeofence(pos.lat(), pos.lng(), fence)) { + outside_callback(marker, fence); + } + } + } +}; diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.geometry.js b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.geometry.js new file mode 100644 index 0000000..6c672d7 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.geometry.js @@ -0,0 +1,205 @@ +GMaps.prototype.drawPolyline = function(options) { + var path = [], + points = options.path; + + if (points.length) { + if (points[0][0] === undefined) { + path = points; + } + else { + for (var i = 0, latlng; latlng = points[i]; i++) { + path.push(new google.maps.LatLng(latlng[0], latlng[1])); + } + } + } + + var polyline_options = { + map: this.map, + path: path, + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight, + geodesic: options.geodesic, + clickable: true, + editable: false, + visible: true + }; + + if (options.hasOwnProperty("clickable")) { + polyline_options.clickable = options.clickable; + } + + if (options.hasOwnProperty("editable")) { + polyline_options.editable = options.editable; + } + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + if (options.hasOwnProperty("zIndex")) { + polyline_options.zIndex = options.zIndex; + } + + var polyline = new google.maps.Polyline(polyline_options); + + var polyline_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick']; + + for (var ev = 0; ev < polyline_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(e){ + options[name].apply(this, [e]); + }); + } + })(polyline, polyline_events[ev]); + } + + this.polylines.push(polyline); + + GMaps.fire('polyline_added', polyline, this); + + return polyline; +}; + +GMaps.prototype.removePolyline = function(polyline) { + for (var i = 0; i < this.polylines.length; i++) { + if (this.polylines[i] === polyline) { + this.polylines[i].setMap(null); + this.polylines.splice(i, 1); + + GMaps.fire('polyline_removed', polyline, this); + + break; + } + } +}; + +GMaps.prototype.removePolylines = function() { + for (var i = 0, item; item = this.polylines[i]; i++) { + item.setMap(null); + } + + this.polylines = []; +}; + +GMaps.prototype.drawCircle = function(options) { + options = extend_object({ + map: this.map, + center: new google.maps.LatLng(options.lat, options.lng) + }, options); + + delete options.lat; + delete options.lng; + + var polygon = new google.maps.Circle(options), + polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick']; + + for (var ev = 0; ev < polygon_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(e){ + options[name].apply(this, [e]); + }); + } + })(polygon, polygon_events[ev]); + } + + this.polygons.push(polygon); + + return polygon; +}; + +GMaps.prototype.drawRectangle = function(options) { + options = extend_object({ + map: this.map + }, options); + + var latLngBounds = new google.maps.LatLngBounds( + new google.maps.LatLng(options.bounds[0][0], options.bounds[0][1]), + new google.maps.LatLng(options.bounds[1][0], options.bounds[1][1]) + ); + + options.bounds = latLngBounds; + + var polygon = new google.maps.Rectangle(options), + polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick']; + + for (var ev = 0; ev < polygon_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(e){ + options[name].apply(this, [e]); + }); + } + })(polygon, polygon_events[ev]); + } + + this.polygons.push(polygon); + + return polygon; +}; + +GMaps.prototype.drawPolygon = function(options) { + var useGeoJSON = false; + + if(options.hasOwnProperty("useGeoJSON")) { + useGeoJSON = options.useGeoJSON; + } + + delete options.useGeoJSON; + + options = extend_object({ + map: this.map + }, options); + + if (useGeoJSON == false) { + options.paths = [options.paths.slice(0)]; + } + + if (options.paths.length > 0) { + if (options.paths[0].length > 0) { + options.paths = array_flat(array_map(options.paths, arrayToLatLng, useGeoJSON)); + } + } + + var polygon = new google.maps.Polygon(options), + polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick']; + + for (var ev = 0; ev < polygon_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(e){ + options[name].apply(this, [e]); + }); + } + })(polygon, polygon_events[ev]); + } + + this.polygons.push(polygon); + + GMaps.fire('polygon_added', polygon, this); + + return polygon; +}; + +GMaps.prototype.removePolygon = function(polygon) { + for (var i = 0; i < this.polygons.length; i++) { + if (this.polygons[i] === polygon) { + this.polygons[i].setMap(null); + this.polygons.splice(i, 1); + + GMaps.fire('polygon_removed', polygon, this); + + break; + } + } +}; + +GMaps.prototype.removePolygons = function() { + for (var i = 0, item; item = this.polygons[i]; i++) { + item.setMap(null); + } + + this.polygons = []; +}; diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.layers.js b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.layers.js new file mode 100644 index 0000000..7bb94ee --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.layers.js @@ -0,0 +1,158 @@ +GMaps.prototype.getFromFusionTables = function(options) { + var events = options.events; + + delete options.events; + + var fusion_tables_options = options, + layer = new google.maps.FusionTablesLayer(fusion_tables_options); + + for (var ev in events) { + (function(object, name) { + google.maps.event.addListener(object, name, function(e) { + events[name].apply(this, [e]); + }); + })(layer, ev); + } + + this.layers.push(layer); + + return layer; +}; + +GMaps.prototype.loadFromFusionTables = function(options) { + var layer = this.getFromFusionTables(options); + layer.setMap(this.map); + + return layer; +}; + +GMaps.prototype.getFromKML = function(options) { + var url = options.url, + events = options.events; + + delete options.url; + delete options.events; + + var kml_options = options, + layer = new google.maps.KmlLayer(url, kml_options); + + for (var ev in events) { + (function(object, name) { + google.maps.event.addListener(object, name, function(e) { + events[name].apply(this, [e]); + }); + })(layer, ev); + } + + this.layers.push(layer); + + return layer; +}; + +GMaps.prototype.loadFromKML = function(options) { + var layer = this.getFromKML(options); + layer.setMap(this.map); + + return layer; +}; + +GMaps.prototype.addLayer = function(layerName, options) { + //var default_layers = ['weather', 'clouds', 'traffic', 'transit', 'bicycling', 'panoramio', 'places']; + options = options || {}; + var layer; + + switch(layerName) { + case 'weather': this.singleLayers.weather = layer = new google.maps.weather.WeatherLayer(); + break; + case 'clouds': this.singleLayers.clouds = layer = new google.maps.weather.CloudLayer(); + break; + case 'traffic': this.singleLayers.traffic = layer = new google.maps.TrafficLayer(); + break; + case 'transit': this.singleLayers.transit = layer = new google.maps.TransitLayer(); + break; + case 'bicycling': this.singleLayers.bicycling = layer = new google.maps.BicyclingLayer(); + break; + case 'panoramio': + this.singleLayers.panoramio = layer = new google.maps.panoramio.PanoramioLayer(); + layer.setTag(options.filter); + delete options.filter; + + //click event + if (options.click) { + google.maps.event.addListener(layer, 'click', function(event) { + options.click(event); + delete options.click; + }); + } + break; + case 'places': + this.singleLayers.places = layer = new google.maps.places.PlacesService(this.map); + + //search, nearbySearch, radarSearch callback, Both are the same + if (options.search || options.nearbySearch || options.radarSearch) { + var placeSearchRequest = { + bounds : options.bounds || null, + keyword : options.keyword || null, + location : options.location || null, + name : options.name || null, + radius : options.radius || null, + rankBy : options.rankBy || null, + types : options.types || null + }; + + if (options.radarSearch) { + layer.radarSearch(placeSearchRequest, options.radarSearch); + } + + if (options.search) { + layer.search(placeSearchRequest, options.search); + } + + if (options.nearbySearch) { + layer.nearbySearch(placeSearchRequest, options.nearbySearch); + } + } + + //textSearch callback + if (options.textSearch) { + var textSearchRequest = { + bounds : options.bounds || null, + location : options.location || null, + query : options.query || null, + radius : options.radius || null + }; + + layer.textSearch(textSearchRequest, options.textSearch); + } + break; + } + + if (layer !== undefined) { + if (typeof layer.setOptions == 'function') { + layer.setOptions(options); + } + if (typeof layer.setMap == 'function') { + layer.setMap(this.map); + } + + return layer; + } +}; + +GMaps.prototype.removeLayer = function(layer) { + if (typeof(layer) == "string" && this.singleLayers[layer] !== undefined) { + this.singleLayers[layer].setMap(null); + + delete this.singleLayers[layer]; + } + else { + for (var i = 0; i < this.layers.length; i++) { + if (this.layers[i] === layer) { + this.layers[i].setMap(null); + this.layers.splice(i, 1); + + break; + } + } + } +}; diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.map_types.js b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.map_types.js new file mode 100644 index 0000000..ef47106 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.map_types.js @@ -0,0 +1,29 @@ +GMaps.prototype.addMapType = function(mapTypeId, options) { + if (options.hasOwnProperty("getTileUrl") && typeof(options["getTileUrl"]) == "function") { + options.tileSize = options.tileSize || new google.maps.Size(256, 256); + + var mapType = new google.maps.ImageMapType(options); + + this.map.mapTypes.set(mapTypeId, mapType); + } + else { + throw "'getTileUrl' function required."; + } +}; + +GMaps.prototype.addOverlayMapType = function(options) { + if (options.hasOwnProperty("getTile") && typeof(options["getTile"]) == "function") { + var overlayMapTypeIndex = options.index; + + delete options.index; + + this.map.overlayMapTypes.insertAt(overlayMapTypeIndex, options); + } + else { + throw "'getTile' function required."; + } +}; + +GMaps.prototype.removeOverlayMapType = function(overlayMapTypeIndex) { + this.map.overlayMapTypes.removeAt(overlayMapTypeIndex); +}; diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.markers.js b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.markers.js new file mode 100644 index 0000000..8a2de1c --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.markers.js @@ -0,0 +1,210 @@ +GMaps.prototype.createMarker = function(options) { + if (options.lat == undefined && options.lng == undefined && options.position == undefined) { + throw 'No latitude or longitude defined.'; + } + + var self = this, + details = options.details, + fences = options.fences, + outside = options.outside, + base_options = { + position: new google.maps.LatLng(options.lat, options.lng), + map: null + }, + marker_options = extend_object(base_options, options); + + delete marker_options.lat; + delete marker_options.lng; + delete marker_options.fences; + delete marker_options.outside; + + var marker = new google.maps.Marker(marker_options); + + marker.fences = fences; + + if (options.infoWindow) { + marker.infoWindow = new google.maps.InfoWindow(options.infoWindow); + + var info_window_events = ['closeclick', 'content_changed', 'domready', 'position_changed', 'zindex_changed']; + + for (var ev = 0; ev < info_window_events.length; ev++) { + (function(object, name) { + if (options.infoWindow[name]) { + google.maps.event.addListener(object, name, function(e){ + options.infoWindow[name].apply(this, [e]); + }); + } + })(marker.infoWindow, info_window_events[ev]); + } + } + + var marker_events = ['animation_changed', 'clickable_changed', 'cursor_changed', 'draggable_changed', 'flat_changed', 'icon_changed', 'position_changed', 'shadow_changed', 'shape_changed', 'title_changed', 'visible_changed', 'zindex_changed']; + + var marker_events_with_mouse = ['dblclick', 'drag', 'dragend', 'dragstart', 'mousedown', 'mouseout', 'mouseover', 'mouseup']; + + for (var ev = 0; ev < marker_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(){ + options[name].apply(this, [this]); + }); + } + })(marker, marker_events[ev]); + } + + for (var ev = 0; ev < marker_events_with_mouse.length; ev++) { + (function(map, object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(me){ + if(!me.pixel){ + me.pixel = map.getProjection().fromLatLngToPoint(me.latLng) + } + + options[name].apply(this, [me]); + }); + } + })(this.map, marker, marker_events_with_mouse[ev]); + } + + google.maps.event.addListener(marker, 'click', function() { + this.details = details; + + if (options.click) { + options.click.apply(this, [this]); + } + + if (marker.infoWindow) { + self.hideInfoWindows(); + marker.infoWindow.open(self.map, marker); + } + }); + + google.maps.event.addListener(marker, 'rightclick', function(e) { + e.marker = this; + + if (options.rightclick) { + options.rightclick.apply(this, [e]); + } + + if (window.context_menu[self.el.id]['marker'] != undefined) { + self.buildContextMenu('marker', e); + } + }); + + if (marker.fences) { + google.maps.event.addListener(marker, 'dragend', function() { + self.checkMarkerGeofence(marker, function(m, f) { + outside(m, f); + }); + }); + } + + return marker; +}; + +GMaps.prototype.addMarker = function(options) { + var marker; + if(options.hasOwnProperty('gm_accessors_')) { + // Native google.maps.Marker object + marker = options; + } + else { + if ((options.hasOwnProperty('lat') && options.hasOwnProperty('lng')) || options.position) { + marker = this.createMarker(options); + } + else { + throw 'No latitude or longitude defined.'; + } + } + + marker.setMap(this.map); + + if(this.markerClusterer) { + this.markerClusterer.addMarker(marker); + } + + this.markers.push(marker); + + GMaps.fire('marker_added', marker, this); + + return marker; +}; + +GMaps.prototype.addMarkers = function(array) { + for (var i = 0, marker; marker=array[i]; i++) { + this.addMarker(marker); + } + + return this.markers; +}; + +GMaps.prototype.hideInfoWindows = function() { + for (var i = 0, marker; marker = this.markers[i]; i++){ + if (marker.infoWindow) { + marker.infoWindow.close(); + } + } +}; + +GMaps.prototype.removeMarker = function(marker) { + for (var i = 0; i < this.markers.length; i++) { + if (this.markers[i] === marker) { + this.markers[i].setMap(null); + this.markers.splice(i, 1); + + if(this.markerClusterer) { + this.markerClusterer.removeMarker(marker); + } + + GMaps.fire('marker_removed', marker, this); + + break; + } + } + + return marker; +}; + +GMaps.prototype.removeMarkers = function (collection) { + var new_markers = []; + + if (typeof collection == 'undefined') { + for (var i = 0; i < this.markers.length; i++) { + var marker = this.markers[i]; + marker.setMap(null); + + if(this.markerClusterer) { + this.markerClusterer.removeMarker(marker); + } + + GMaps.fire('marker_removed', marker, this); + } + + this.markers = new_markers; + } + else { + for (var i = 0; i < collection.length; i++) { + var index = this.markers.indexOf(collection[i]); + + if (index > -1) { + var marker = this.markers[index]; + marker.setMap(null); + + if(this.markerClusterer) { + this.markerClusterer.removeMarker(marker); + } + + GMaps.fire('marker_removed', marker, this); + } + } + + for (var i = 0; i < this.markers.length; i++) { + var marker = this.markers[i]; + if (marker.getMap() != null) { + new_markers.push(marker); + } + } + + this.markers = new_markers; + } +}; diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.native_extensions.js b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.native_extensions.js new file mode 100644 index 0000000..9c9353e --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.native_extensions.js @@ -0,0 +1,121 @@ +//========================== +// Polygon containsLatLng +// https://github.com/tparkin/Google-Maps-Point-in-Polygon +// Poygon getBounds extension - google-maps-extensions +// http://code.google.com/p/google-maps-extensions/source/browse/google.maps.Polygon.getBounds.js +if (!google.maps.Polygon.prototype.getBounds) { + google.maps.Polygon.prototype.getBounds = function(latLng) { + var bounds = new google.maps.LatLngBounds(); + var paths = this.getPaths(); + var path; + + for (var p = 0; p < paths.getLength(); p++) { + path = paths.getAt(p); + for (var i = 0; i < path.getLength(); i++) { + bounds.extend(path.getAt(i)); + } + } + + return bounds; + }; +} + +if (!google.maps.Polygon.prototype.containsLatLng) { + // Polygon containsLatLng - method to determine if a latLng is within a polygon + google.maps.Polygon.prototype.containsLatLng = function(latLng) { + // Exclude points outside of bounds as there is no way they are in the poly + var bounds = this.getBounds(); + + if (bounds !== null && !bounds.contains(latLng)) { + return false; + } + + // Raycast point in polygon method + var inPoly = false; + + var numPaths = this.getPaths().getLength(); + for (var p = 0; p < numPaths; p++) { + var path = this.getPaths().getAt(p); + var numPoints = path.getLength(); + var j = numPoints - 1; + + for (var i = 0; i < numPoints; i++) { + var vertex1 = path.getAt(i); + var vertex2 = path.getAt(j); + + if (vertex1.lng() < latLng.lng() && vertex2.lng() >= latLng.lng() || vertex2.lng() < latLng.lng() && vertex1.lng() >= latLng.lng()) { + if (vertex1.lat() + (latLng.lng() - vertex1.lng()) / (vertex2.lng() - vertex1.lng()) * (vertex2.lat() - vertex1.lat()) < latLng.lat()) { + inPoly = !inPoly; + } + } + + j = i; + } + } + + return inPoly; + }; +} + +if (!google.maps.Circle.prototype.containsLatLng) { + google.maps.Circle.prototype.containsLatLng = function(latLng) { + if (google.maps.geometry) { + return google.maps.geometry.spherical.computeDistanceBetween(this.getCenter(), latLng) <= this.getRadius(); + } + else { + return true; + } + }; +} + +google.maps.LatLngBounds.prototype.containsLatLng = function(latLng) { + return this.contains(latLng); +}; + +google.maps.Marker.prototype.setFences = function(fences) { + this.fences = fences; +}; + +google.maps.Marker.prototype.addFence = function(fence) { + this.fences.push(fence); +}; + +google.maps.Marker.prototype.getId = function() { + return this['__gm_id']; +}; + +//========================== +// Array indexOf +// https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf +if (!Array.prototype.indexOf) { + Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) { + "use strict"; + if (this == null) { + throw new TypeError(); + } + var t = Object(this); + var len = t.length >>> 0; + if (len === 0) { + return -1; + } + var n = 0; + if (arguments.length > 1) { + n = Number(arguments[1]); + if (n != n) { // shortcut for verifying if it's NaN + n = 0; + } else if (n != 0 && n != Infinity && n != -Infinity) { + n = (n > 0 || -1) * Math.floor(Math.abs(n)); + } + } + if (n >= len) { + return -1; + } + var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0); + for (; k < len; k++) { + if (k in t && t[k] === searchElement) { + return k; + } + } + return -1; + } +} \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.overlays.js b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.overlays.js new file mode 100644 index 0000000..ab64b4a --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.overlays.js @@ -0,0 +1,134 @@ +GMaps.prototype.drawOverlay = function(options) { + var overlay = new google.maps.OverlayView(), + auto_show = true; + + overlay.setMap(this.map); + + if (options.auto_show != null) { + auto_show = options.auto_show; + } + + overlay.onAdd = function() { + var el = document.createElement('div'); + + el.style.borderStyle = "none"; + el.style.borderWidth = "0px"; + el.style.position = "absolute"; + el.style.zIndex = 100; + el.innerHTML = options.content; + + overlay.el = el; + + if (!options.layer) { + options.layer = 'overlayLayer'; + } + + var panes = this.getPanes(), + overlayLayer = panes[options.layer], + stop_overlay_events = ['contextmenu', 'DOMMouseScroll', 'dblclick', 'mousedown']; + + overlayLayer.appendChild(el); + + for (var ev = 0; ev < stop_overlay_events.length; ev++) { + (function(object, name) { + google.maps.event.addDomListener(object, name, function(e){ + if (navigator.userAgent.toLowerCase().indexOf('msie') != -1 && document.all) { + e.cancelBubble = true; + e.returnValue = false; + } + else { + e.stopPropagation(); + } + }); + })(el, stop_overlay_events[ev]); + } + + if (options.click) { + panes.overlayMouseTarget.appendChild(overlay.el); + google.maps.event.addDomListener(overlay.el, 'click', function() { + options.click.apply(overlay, [overlay]); + }); + } + + google.maps.event.trigger(this, 'ready'); + }; + + overlay.draw = function() { + var projection = this.getProjection(), + pixel = projection.fromLatLngToDivPixel(new google.maps.LatLng(options.lat, options.lng)); + + options.horizontalOffset = options.horizontalOffset || 0; + options.verticalOffset = options.verticalOffset || 0; + + var el = overlay.el, + content = el.children[0], + content_height = content.clientHeight, + content_width = content.clientWidth; + + switch (options.verticalAlign) { + case 'top': + el.style.top = (pixel.y - content_height + options.verticalOffset) + 'px'; + break; + default: + case 'middle': + el.style.top = (pixel.y - (content_height / 2) + options.verticalOffset) + 'px'; + break; + case 'bottom': + el.style.top = (pixel.y + options.verticalOffset) + 'px'; + break; + } + + switch (options.horizontalAlign) { + case 'left': + el.style.left = (pixel.x - content_width + options.horizontalOffset) + 'px'; + break; + default: + case 'center': + el.style.left = (pixel.x - (content_width / 2) + options.horizontalOffset) + 'px'; + break; + case 'right': + el.style.left = (pixel.x + options.horizontalOffset) + 'px'; + break; + } + + el.style.display = auto_show ? 'block' : 'none'; + + if (!auto_show) { + options.show.apply(this, [el]); + } + }; + + overlay.onRemove = function() { + var el = overlay.el; + + if (options.remove) { + options.remove.apply(this, [el]); + } + else { + overlay.el.parentNode.removeChild(overlay.el); + overlay.el = null; + } + }; + + this.overlays.push(overlay); + return overlay; +}; + +GMaps.prototype.removeOverlay = function(overlay) { + for (var i = 0; i < this.overlays.length; i++) { + if (this.overlays[i] === overlay) { + this.overlays[i].setMap(null); + this.overlays.splice(i, 1); + + break; + } + } +}; + +GMaps.prototype.removeOverlays = function() { + for (var i = 0, item; item = this.overlays[i]; i++) { + item.setMap(null); + } + + this.overlays = []; +}; diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.routes.js b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.routes.js new file mode 100644 index 0000000..031b815 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.routes.js @@ -0,0 +1,330 @@ +var travelMode, unitSystem; + +GMaps.prototype.getRoutes = function(options) { + switch (options.travelMode) { + case 'bicycling': + travelMode = google.maps.TravelMode.BICYCLING; + break; + case 'transit': + travelMode = google.maps.TravelMode.TRANSIT; + break; + case 'driving': + travelMode = google.maps.TravelMode.DRIVING; + break; + default: + travelMode = google.maps.TravelMode.WALKING; + break; + } + + if (options.unitSystem === 'imperial') { + unitSystem = google.maps.UnitSystem.IMPERIAL; + } + else { + unitSystem = google.maps.UnitSystem.METRIC; + } + + var base_options = { + avoidHighways: false, + avoidTolls: false, + optimizeWaypoints: false, + waypoints: [] + }, + request_options = extend_object(base_options, options); + + request_options.origin = /string/.test(typeof options.origin) ? options.origin : new google.maps.LatLng(options.origin[0], options.origin[1]); + request_options.destination = /string/.test(typeof options.destination) ? options.destination : new google.maps.LatLng(options.destination[0], options.destination[1]); + request_options.travelMode = travelMode; + request_options.unitSystem = unitSystem; + + delete request_options.callback; + delete request_options.error; + + var self = this, + service = new google.maps.DirectionsService(); + + service.route(request_options, function(result, status) { + if (status === google.maps.DirectionsStatus.OK) { + for (var r in result.routes) { + if (result.routes.hasOwnProperty(r)) { + self.routes.push(result.routes[r]); + } + } + + if (options.callback) { + options.callback(self.routes); + } + } + else { + if (options.error) { + options.error(result, status); + } + } + }); +}; + +GMaps.prototype.removeRoutes = function() { + this.routes = []; +}; + +GMaps.prototype.getElevations = function(options) { + options = extend_object({ + locations: [], + path : false, + samples : 256 + }, options); + + if (options.locations.length > 0) { + if (options.locations[0].length > 0) { + options.locations = array_flat(array_map([options.locations], arrayToLatLng, false)); + } + } + + var callback = options.callback; + delete options.callback; + + var service = new google.maps.ElevationService(); + + //location request + if (!options.path) { + delete options.path; + delete options.samples; + + service.getElevationForLocations(options, function(result, status) { + if (callback && typeof(callback) === "function") { + callback(result, status); + } + }); + //path request + } else { + var pathRequest = { + path : options.locations, + samples : options.samples + }; + + service.getElevationAlongPath(pathRequest, function(result, status) { + if (callback && typeof(callback) === "function") { + callback(result, status); + } + }); + } +}; + +GMaps.prototype.cleanRoute = GMaps.prototype.removePolylines; + +GMaps.prototype.drawRoute = function(options) { + var self = this; + + this.getRoutes({ + origin: options.origin, + destination: options.destination, + travelMode: options.travelMode, + waypoints: options.waypoints, + unitSystem: options.unitSystem, + error: options.error, + callback: function(e) { + if (e.length > 0) { + var polyline_options = { + path: e[e.length - 1].overview_path, + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight + }; + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + self.drawPolyline(polyline_options); + + if (options.callback) { + options.callback(e[e.length - 1]); + } + } + } + }); +}; + +GMaps.prototype.travelRoute = function(options) { + if (options.origin && options.destination) { + this.getRoutes({ + origin: options.origin, + destination: options.destination, + travelMode: options.travelMode, + waypoints : options.waypoints, + unitSystem: options.unitSystem, + error: options.error, + callback: function(e) { + //start callback + if (e.length > 0 && options.start) { + options.start(e[e.length - 1]); + } + + //step callback + if (e.length > 0 && options.step) { + var route = e[e.length - 1]; + if (route.legs.length > 0) { + var steps = route.legs[0].steps; + for (var i = 0, step; step = steps[i]; i++) { + step.step_number = i; + options.step(step, (route.legs[0].steps.length - 1)); + } + } + } + + //end callback + if (e.length > 0 && options.end) { + options.end(e[e.length - 1]); + } + } + }); + } + else if (options.route) { + if (options.route.legs.length > 0) { + var steps = options.route.legs[0].steps; + for (var i = 0, step; step = steps[i]; i++) { + step.step_number = i; + options.step(step); + } + } + } +}; + +GMaps.prototype.drawSteppedRoute = function(options) { + var self = this; + + if (options.origin && options.destination) { + this.getRoutes({ + origin: options.origin, + destination: options.destination, + travelMode: options.travelMode, + waypoints : options.waypoints, + error: options.error, + callback: function(e) { + //start callback + if (e.length > 0 && options.start) { + options.start(e[e.length - 1]); + } + + //step callback + if (e.length > 0 && options.step) { + var route = e[e.length - 1]; + if (route.legs.length > 0) { + var steps = route.legs[0].steps; + for (var i = 0, step; step = steps[i]; i++) { + step.step_number = i; + var polyline_options = { + path: step.path, + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight + }; + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + self.drawPolyline(polyline_options); + options.step(step, (route.legs[0].steps.length - 1)); + } + } + } + + //end callback + if (e.length > 0 && options.end) { + options.end(e[e.length - 1]); + } + } + }); + } + else if (options.route) { + if (options.route.legs.length > 0) { + var steps = options.route.legs[0].steps; + for (var i = 0, step; step = steps[i]; i++) { + step.step_number = i; + var polyline_options = { + path: step.path, + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight + }; + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + self.drawPolyline(polyline_options); + options.step(step); + } + } + } +}; + +GMaps.Route = function(options) { + this.origin = options.origin; + this.destination = options.destination; + this.waypoints = options.waypoints; + + this.map = options.map; + this.route = options.route; + this.step_count = 0; + this.steps = this.route.legs[0].steps; + this.steps_length = this.steps.length; + + var polyline_options = { + path: new google.maps.MVCArray(), + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight + }; + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + this.polyline = this.map.drawPolyline(polyline_options).getPath(); +}; + +GMaps.Route.prototype.getRoute = function(options) { + var self = this; + + this.map.getRoutes({ + origin : this.origin, + destination : this.destination, + travelMode : options.travelMode, + waypoints : this.waypoints || [], + error: options.error, + callback : function() { + self.route = e[0]; + + if (options.callback) { + options.callback.call(self); + } + } + }); +}; + +GMaps.Route.prototype.back = function() { + if (this.step_count > 0) { + this.step_count--; + var path = this.route.legs[0].steps[this.step_count].path; + + for (var p in path){ + if (path.hasOwnProperty(p)){ + this.polyline.pop(); + } + } + } +}; + +GMaps.Route.prototype.forward = function() { + if (this.step_count < this.steps_length) { + var path = this.route.legs[0].steps[this.step_count].path; + + for (var p in path){ + if (path.hasOwnProperty(p)){ + this.polyline.push(path[p]); + } + } + this.step_count++; + } +}; diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.static.js b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.static.js new file mode 100644 index 0000000..ef325bb --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.static.js @@ -0,0 +1,245 @@ +GMaps.prototype.toImage = function(options) { + var options = options || {}, + static_map_options = {}; + + static_map_options['size'] = options['size'] || [this.el.clientWidth, this.el.clientHeight]; + static_map_options['lat'] = this.getCenter().lat(); + static_map_options['lng'] = this.getCenter().lng(); + + if (this.markers.length > 0) { + static_map_options['markers'] = []; + + for (var i = 0; i < this.markers.length; i++) { + static_map_options['markers'].push({ + lat: this.markers[i].getPosition().lat(), + lng: this.markers[i].getPosition().lng() + }); + } + } + + if (this.polylines.length > 0) { + var polyline = this.polylines[0]; + + static_map_options['polyline'] = {}; + static_map_options['polyline']['path'] = google.maps.geometry.encoding.encodePath(polyline.getPath()); + static_map_options['polyline']['strokeColor'] = polyline.strokeColor + static_map_options['polyline']['strokeOpacity'] = polyline.strokeOpacity + static_map_options['polyline']['strokeWeight'] = polyline.strokeWeight + } + + return GMaps.staticMapURL(static_map_options); +}; + +GMaps.staticMapURL = function(options){ + var parameters = [], + data, + static_root = (location.protocol === 'file:' ? 'http:' : location.protocol ) + '//maps.googleapis.com/maps/api/staticmap'; + + if (options.url) { + static_root = options.url; + delete options.url; + } + + static_root += '?'; + + var markers = options.markers; + + delete options.markers; + + if (!markers && options.marker) { + markers = [options.marker]; + delete options.marker; + } + + var styles = options.styles; + + delete options.styles; + + var polyline = options.polyline; + delete options.polyline; + + /** Map options **/ + if (options.center) { + parameters.push('center=' + options.center); + delete options.center; + } + else if (options.address) { + parameters.push('center=' + options.address); + delete options.address; + } + else if (options.lat) { + parameters.push(['center=', options.lat, ',', options.lng].join('')); + delete options.lat; + delete options.lng; + } + else if (options.visible) { + var visible = encodeURI(options.visible.join('|')); + parameters.push('visible=' + visible); + } + + var size = options.size; + if (size) { + if (size.join) { + size = size.join('x'); + } + delete options.size; + } + else { + size = '630x300'; + } + parameters.push('size=' + size); + + if (!options.zoom && options.zoom !== false) { + options.zoom = 15; + } + + var sensor = options.hasOwnProperty('sensor') ? !!options.sensor : true; + delete options.sensor; + parameters.push('sensor=' + sensor); + + for (var param in options) { + if (options.hasOwnProperty(param)) { + parameters.push(param + '=' + options[param]); + } + } + + /** Markers **/ + if (markers) { + var marker, loc; + + for (var i = 0; data = markers[i]; i++) { + marker = []; + + if (data.size && data.size !== 'normal') { + marker.push('size:' + data.size); + delete data.size; + } + else if (data.icon) { + marker.push('icon:' + encodeURI(data.icon)); + delete data.icon; + } + + if (data.color) { + marker.push('color:' + data.color.replace('#', '0x')); + delete data.color; + } + + if (data.label) { + marker.push('label:' + data.label[0].toUpperCase()); + delete data.label; + } + + loc = (data.address ? data.address : data.lat + ',' + data.lng); + delete data.address; + delete data.lat; + delete data.lng; + + for(var param in data){ + if (data.hasOwnProperty(param)) { + marker.push(param + ':' + data[param]); + } + } + + if (marker.length || i === 0) { + marker.push(loc); + marker = marker.join('|'); + parameters.push('markers=' + encodeURI(marker)); + } + // New marker without styles + else { + marker = parameters.pop() + encodeURI('|' + loc); + parameters.push(marker); + } + } + } + + /** Map Styles **/ + if (styles) { + for (var i = 0; i < styles.length; i++) { + var styleRule = []; + if (styles[i].featureType){ + styleRule.push('feature:' + styles[i].featureType.toLowerCase()); + } + + if (styles[i].elementType) { + styleRule.push('element:' + styles[i].elementType.toLowerCase()); + } + + for (var j = 0; j < styles[i].stylers.length; j++) { + for (var p in styles[i].stylers[j]) { + var ruleArg = styles[i].stylers[j][p]; + if (p == 'hue' || p == 'color') { + ruleArg = '0x' + ruleArg.substring(1); + } + styleRule.push(p + ':' + ruleArg); + } + } + + var rule = styleRule.join('|'); + if (rule != '') { + parameters.push('style=' + rule); + } + } + } + + /** Polylines **/ + function parseColor(color, opacity) { + if (color[0] === '#'){ + color = color.replace('#', '0x'); + + if (opacity) { + opacity = parseFloat(opacity); + opacity = Math.min(1, Math.max(opacity, 0)); + if (opacity === 0) { + return '0x00000000'; + } + opacity = (opacity * 255).toString(16); + if (opacity.length === 1) { + opacity += opacity; + } + + color = color.slice(0,8) + opacity; + } + } + return color; + } + + if (polyline) { + data = polyline; + polyline = []; + + if (data.strokeWeight) { + polyline.push('weight:' + parseInt(data.strokeWeight, 10)); + } + + if (data.strokeColor) { + var color = parseColor(data.strokeColor, data.strokeOpacity); + polyline.push('color:' + color); + } + + if (data.fillColor) { + var fillcolor = parseColor(data.fillColor, data.fillOpacity); + polyline.push('fillcolor:' + fillcolor); + } + + var path = data.path; + if (path.join) { + for (var j=0, pos; pos=path[j]; j++) { + polyline.push(pos.join(',')); + } + } + else { + polyline.push('enc:' + path); + } + + polyline = polyline.join('|'); + parameters.push('path=' + encodeURI(polyline)); + } + + /** Retina support **/ + var dpi = window.devicePixelRatio || 1; + parameters.push('scale=' + dpi); + + parameters = parameters.join('&'); + return static_root + parameters; +}; diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.streetview.js b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.streetview.js new file mode 100644 index 0000000..21522ac --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.streetview.js @@ -0,0 +1,44 @@ +GMaps.prototype.createPanorama = function(streetview_options) { + if (!streetview_options.hasOwnProperty('lat') || !streetview_options.hasOwnProperty('lng')) { + streetview_options.lat = this.getCenter().lat(); + streetview_options.lng = this.getCenter().lng(); + } + + this.panorama = GMaps.createPanorama(streetview_options); + + this.map.setStreetView(this.panorama); + + return this.panorama; +}; + +GMaps.createPanorama = function(options) { + var el = getElementById(options.el, options.context); + + options.position = new google.maps.LatLng(options.lat, options.lng); + + delete options.el; + delete options.context; + delete options.lat; + delete options.lng; + + var streetview_events = ['closeclick', 'links_changed', 'pano_changed', 'position_changed', 'pov_changed', 'resize', 'visible_changed'], + streetview_options = extend_object({visible : true}, options); + + for (var i = 0; i < streetview_events.length; i++) { + delete streetview_options[streetview_events[i]]; + } + + var panorama = new google.maps.StreetViewPanorama(el, streetview_options); + + for (var i = 0; i < streetview_events.length; i++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(){ + options[name].apply(this); + }); + } + })(panorama, streetview_events[i]); + } + + return panorama; +}; diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.styles.js b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.styles.js new file mode 100644 index 0000000..0ec0087 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.styles.js @@ -0,0 +1,9 @@ +GMaps.prototype.addStyle = function(options) { + var styledMapType = new google.maps.StyledMapType(options.styles, { name: options.styledMapName }); + + this.map.mapTypes.set(options.mapTypeId, styledMapType); +}; + +GMaps.prototype.setStyle = function(mapTypeId) { + this.map.setMapTypeId(mapTypeId); +}; diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.utils.js b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.utils.js new file mode 100644 index 0000000..b4f26ab --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/gmaps/lib/gmaps.utils.js @@ -0,0 +1,42 @@ +GMaps.geolocate = function(options) { + var complete_callback = options.always || options.complete; + + if (navigator.geolocation) { + navigator.geolocation.getCurrentPosition(function(position) { + options.success(position); + + if (complete_callback) { + complete_callback(); + } + }, function(error) { + options.error(error); + + if (complete_callback) { + complete_callback(); + } + }, options.options); + } + else { + options.not_supported(); + + if (complete_callback) { + complete_callback(); + } + } +}; + +GMaps.geocode = function(options) { + this.geocoder = new google.maps.Geocoder(); + var callback = options.callback; + if (options.hasOwnProperty('lat') && options.hasOwnProperty('lng')) { + options.latLng = new google.maps.LatLng(options.lat, options.lng); + } + + delete options.lat; + delete options.lng; + delete options.callback; + + this.geocoder.geocode(options, function(results, status) { + callback(results, status); + }); +}; diff --git a/SpringBootHomework/src/main/resources/static/assets/plugins/jquery/jquery.min.js b/SpringBootHomework/src/main/resources/static/assets/plugins/jquery/jquery.min.js new file mode 100644 index 0000000..36aefef --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/assets/plugins/jquery/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v3.2.0 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.0",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S), +a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,""],thead:[1,"
    ","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d)); +},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,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"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r(" + + + + + + + + + + + Home + + + + + + + + + + + + + + + +
    + + + +
    + + + +
    + + + +
    + +
    + + + + + + + + + + + + + +
    + + + +
    + + + + +
    +
    +

    今日竞赛

    + +
    +
    +

    竞赛是每个人单独完成作业

    +
    +
    +
    +
    +

    竞赛作业,需要在中午12点前提交

    +
    +
    +
    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SpringBootHomework/src/main/resources/static/index2.html b/SpringBootHomework/src/main/resources/static/index2.html new file mode 100644 index 0000000..adbf815 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/index2.html @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + Home + + + + + + + + + + + + + + + +
    + + + +
    + + + +
    + + + +
    + +
    + + + + + + + + + + + + + +
    + + + +
    + + + + +
    +
    +

    今日结对

    + +
    +
    +

    结对是多人合作完成作业

    +
    +
    +
    +
    +

    结对作业,需要在下午4点前提交

    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SpringBootHomework/src/main/resources/static/index3.html b/SpringBootHomework/src/main/resources/static/index3.html new file mode 100644 index 0000000..b5d0e3d --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/index3.html @@ -0,0 +1,236 @@ + + + + + + + + + + + + + + + + Home + + + + + + + + + + + + + + + +
    + + + +
    + + + +
    + + + +
    + +
    + + + + + + + + + + + + + +
    + + + +
    + + + + +
    +
    +

    布置作业

    + +
    +
    + +
    + +
    +

    名称

    + +
    +
    + + +
    + +
    +

    截止日期

    + +
    +
    +

    内容

    + +
    +
    + +
    +
    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SpringBootHomework/src/main/resources/static/index4.html b/SpringBootHomework/src/main/resources/static/index4.html new file mode 100644 index 0000000..afc4d81 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/index4.html @@ -0,0 +1,357 @@ + + + + + + + + + + + + + + + Home + + + + + + + + + + + + + + + +
    + + + +
    + + + +
    + + + +
    + +
    + + + + + + + + + + + + + +
    + + + +
    + + + + +
    +
    +

    Dashboard

    + +
    +
    +
    + + + + + +
    +
    + + + + + + + + + + + + +
    编号作业名类型更新日期截止日期
    +
    +
    +
    +
    +
      +
    +
    +
    +
    + + + +
    + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SpringBootHomework/src/main/resources/static/index5.html b/SpringBootHomework/src/main/resources/static/index5.html new file mode 100644 index 0000000..d0ec687 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/index5.html @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + Home + + + + + + + + + + + + + + + +
    + + + +
    + + + +
    + + + +
    + +
    + + + + + + + + + + + + + +
    + + + +
    + + + + +
    +
    +

    排行榜

    + +
    +
    + + +
    +
    +    + +    + +
    +
    +
    + + + + + + + + + + + + +
    排名名字完成次数
    +
    +
    + + +
    + +
    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SpringBootHomework/src/main/resources/static/js/auth.js b/SpringBootHomework/src/main/resources/static/js/auth.js new file mode 100644 index 0000000..8cf9a33 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/js/auth.js @@ -0,0 +1,136 @@ +var Auth = { + vars: { + lowin: document.querySelector('.lowin'), + lowin_brand: document.querySelector('.lowin-brand'), + lowin_wrapper: document.querySelector('.lowin-wrapper'), + lowin_login: document.querySelector('.lowin-login'), + lowin_wrapper_height: 0, + login_back_link: document.querySelector('.login-back-link'), + forgot_link: document.querySelector('.forgot-link'), + login_link: document.querySelector('.login-link'), + login_btn: document.querySelector('.login-btn'), + register_link: document.querySelector('.register-link'), + password_group: document.querySelector('.password-group'), + password_group_height: 0, + lowin_register: document.querySelector('.lowin-register'), + lowin_footer: document.querySelector('.lowin-footer'), + box: document.getElementsByClassName('lowin-box'), + option: {} + }, + register(e) { + Auth.vars.lowin_login.className += ' lowin-animated'; + setTimeout(() => { + Auth.vars.lowin_login.style.display = 'none'; + }, 500); + Auth.vars.lowin_register.style.display = 'block'; + Auth.vars.lowin_register.className += ' lowin-animated-flip'; + + Auth.setHeight(Auth.vars.lowin_register.offsetHeight + Auth.vars.lowin_footer.offsetHeight); + + e.preventDefault(); + }, + login(e) { + Auth.vars.lowin_register.classList.remove('lowin-animated-flip'); + Auth.vars.lowin_register.className += ' lowin-animated-flipback'; + Auth.vars.lowin_login.style.display = 'block'; + Auth.vars.lowin_login.classList.remove('lowin-animated'); + Auth.vars.lowin_login.className += ' lowin-animatedback'; + setTimeout(() => { + Auth.vars.lowin_register.style.display = 'none'; + }, 500); + + setTimeout(() => { + Auth.vars.lowin_register.classList.remove('lowin-animated-flipback'); + Auth.vars.lowin_login.classList.remove('lowin-animatedback'); + },1000); + + Auth.setHeight(Auth.vars.lowin_login.offsetHeight + Auth.vars.lowin_footer.offsetHeight); + + e.preventDefault(); + }, + forgot(e) { + Auth.vars.password_group.classList += ' lowin-animated'; + Auth.vars.login_back_link.style.display = 'block'; + + setTimeout(() => { + Auth.vars.login_back_link.style.opacity = 1; + Auth.vars.password_group.style.height = 0; + Auth.vars.password_group.style.margin = 0; + }, 100); + + Auth.vars.login_btn.innerText = 'Forgot Password'; + + Auth.setHeight(Auth.vars.lowin_wrapper_height - Auth.vars.password_group_height); + Auth.vars.lowin_login.querySelector('form').setAttribute('action', Auth.vars.option.forgot_url); + + e.preventDefault(); + }, + loginback(e) { + Auth.vars.password_group.classList.remove('lowin-animated'); + Auth.vars.password_group.classList += ' lowin-animated-back'; + Auth.vars.password_group.style.display = 'block'; + + setTimeout(() => { + Auth.vars.login_back_link.style.opacity = 0; + Auth.vars.password_group.style.height = Auth.vars.password_group_height + 'px'; + Auth.vars.password_group.style.marginBottom = 30 + 'px'; + }, 100); + + setTimeout(() => { + Auth.vars.login_back_link.style.display = 'none'; + Auth.vars.password_group.classList.remove('lowin-animated-back'); + }, 1000); + + Auth.vars.login_btn.innerText = 'Sign In'; + Auth.vars.lowin_login.querySelector('form').setAttribute('action', Auth.vars.option.login_url); + + Auth.setHeight(Auth.vars.lowin_wrapper_height); + + e.preventDefault(); + }, + setHeight(height) { + Auth.vars.lowin_wrapper.style.minHeight = height + 'px'; + }, + brand() { + Auth.vars.lowin_brand.classList += ' lowin-animated'; + setTimeout(() => { + Auth.vars.lowin_brand.classList.remove('lowin-animated'); + }, 1000); + }, + init(option) { + Auth.setHeight(Auth.vars.box[0].offsetHeight + Auth.vars.lowin_footer.offsetHeight); + + Auth.vars.password_group.style.height = Auth.vars.password_group.offsetHeight + 'px'; + Auth.vars.password_group_height = Auth.vars.password_group.offsetHeight; + Auth.vars.lowin_wrapper_height = Auth.vars.lowin_wrapper.offsetHeight; + + Auth.vars.option = option; + Auth.vars.lowin_login.querySelector('form').setAttribute('action', option.login_url); + + var len = Auth.vars.box.length - 1; + + for(var i = 0; i <= len; i++) { + if(i !== 0) { + Auth.vars.box[i].className += ' lowin-flip'; + } + } + + Auth.vars.forgot_link.addEventListener("click", (e) => { + Auth.forgot(e); + }); + + Auth.vars.register_link.addEventListener("click", (e) => { + Auth.brand(); + Auth.register(e); + }); + + Auth.vars.login_link.addEventListener("click", (e) => { + Auth.brand(); + Auth.login(e); + }); + + Auth.vars.login_back_link.addEventListener("click", (e) => { + Auth.loginback(e); + }); + } +} \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/js/custom.js b/SpringBootHomework/src/main/resources/static/js/custom.js new file mode 100644 index 0000000..85faf82 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/js/custom.js @@ -0,0 +1,96 @@ +/* +Template Name: Monster Admin +Author: Themedesigner +Email: niravjoshi87@gmail.com +File: js +*/ +$(function() { + "use strict"; + $(function() { + $(".preloader").fadeOut(); + }); + jQuery(document).on('click', '.mega-dropdown', function(e) { + e.stopPropagation() + }); + // ============================================================== + // This is for the top header part and sidebar part + // ============================================================== + var set = function() { + var width = (window.innerWidth > 0) ? window.innerWidth : this.screen.width; + var topOffset = 70; + if (width < 500) { + $("body").addClass("mini-sidebar"); + $('.navbar-brand span').hide(); + $(".scroll-sidebar, .slimScrollDiv").css("overflow-x", "visible").parent().css("overflow", "visible"); + $(".sidebartoggler i").addClass("ti-menu"); + } else { + $("body").removeClass("mini-sidebar"); + $('.navbar-brand span').show(); + $(".sidebartoggler i").removeClass("ti-menu"); + } + + var height = ((window.innerHeight > 0) ? window.innerHeight : this.screen.height) - 1; + height = height - topOffset; + if (height < 1) height = 1; + if (height > topOffset) { + $(".page-wrapper").css("min-height", (height) + "px"); + } + + }; + $(window).ready(set); + $(window).on("resize", set); + + // topbar stickey on scroll + + $(".fix-header .topbar").stick_in_parent({ + + }); + + // this is for close icon when navigation open in mobile view + $(".nav-toggler").click(function() { + $("body").toggleClass("show-sidebar"); + $(".nav-toggler i").toggleClass("ti-menu"); + $(".nav-toggler i").addClass("ti-close"); + }); + $(".sidebartoggler").on('click', function() { + $(".sidebartoggler i").toggleClass("ti-menu"); + }); + + // ============================================================== + // Auto select left navbar + // ============================================================== + $(function() { + var url = window.location; + var element = $('ul#sidebarnav a').filter(function() { + return this.href == url; + }).addClass('active').parent().addClass('active'); + while (true) { + if (element.is('li')) { + element = element.parent().addClass('in').parent().addClass('active'); + } else { + break; + } + } + }); + + // ============================================================== + // Sidebarmenu + // ============================================================== + $(function() { + $('#sidebarnav').metisMenu(); + }); + // ============================================================== + // Slimscrollbars + // ============================================================== + $('.scroll-sidebar').slimScroll({ + position: 'left', + size: "5px", + height: '100%', + color: '#dcdcdc' + }); + + // ============================================================== + // Resize all elements + // ============================================================== + $("body").trigger("resize"); +}); diff --git a/SpringBootHomework/src/main/resources/static/js/custom.min.js b/SpringBootHomework/src/main/resources/static/js/custom.min.js new file mode 100644 index 0000000..1c28fad --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/js/custom.min.js @@ -0,0 +1 @@ +$(function(){"use strict";$(function(){$(".preloader").fadeOut()}),jQuery(document).on("click",".mega-dropdown",function(i){i.stopPropagation()});var i=function(){var i=window.innerWidth>0?window.innerWidth:this.screen.width,e=70;500>i?($("body").addClass("mini-sidebar"),$(".navbar-brand span").hide(),$(".scroll-sidebar, .slimScrollDiv").css("overflow-x","visible").parent().css("overflow","visible"),$(".sidebartoggler i").addClass("ti-menu")):($("body").removeClass("mini-sidebar"),$(".navbar-brand span").show(),$(".sidebartoggler i").removeClass("ti-menu"));var s=(window.innerHeight>0?window.innerHeight:this.screen.height)-1;s-=e,1>s&&(s=1),s>e&&$(".page-wrapper").css("min-height",s+"px")};$(window).ready(i),$(window).on("resize",i),$(".fix-header .topbar").stick_in_parent({}),$(".nav-toggler").click(function(){$("body").toggleClass("show-sidebar"),$(".nav-toggler i").toggleClass("ti-menu"),$(".nav-toggler i").addClass("ti-close")}),$(".sidebartoggler").on("click",function(){$(".sidebartoggler i").toggleClass("ti-menu")}),$(function(){for(var i=window.location,e=$("ul#sidebarnav a").filter(function(){return this.href==i}).addClass("active").parent().addClass("active");;){if(!e.is("li"))break;e=e.parent().addClass("in").parent().addClass("active")}}),$(function(){$("#sidebarnav").metisMenu()}),$(".scroll-sidebar").slimScroll({position:"left",size:"5px",height:"100%",color:"#dcdcdc"}),$("body").trigger("resize")}); \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/js/flot-data.js b/SpringBootHomework/src/main/resources/static/js/flot-data.js new file mode 100644 index 0000000..e35827f --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/js/flot-data.js @@ -0,0 +1,130 @@ +/* +Template Name: Monster Admin +Author: Themedesigner +Email: niravjoshi87@gmail.com +File: js +*/ +// Real Time chart +var data = [], + totalPoints = 300; + +function getRandomData() { + if (data.length > 0) data = data.slice(1); + // Do a random walk + while (data.length < totalPoints) { + var prev = data.length > 0 ? data[data.length - 1] : 50, + y = prev + Math.random() * 10 - 5; + if (y < 0) { + y = 0; + } else if (y > 100) { + y = 100; + } + data.push(y); + } + // Zip the generated y values with the x values + var res = []; + for (var i = 0; i < data.length; ++i) { + res.push([i, data[i]]) + } + return res; +} +// Set up the control widget +var updateInterval = 30; +$("#updateInterval").val(updateInterval).change(function() { + var v = $(this).val(); + if (v && !isNaN(+v)) { + updateInterval = +v; + if (updateInterval < 1) { + updateInterval = 1; + } else if (updateInterval > 3000) { + updateInterval = 3000; + } + $(this).val("" + updateInterval); + } +}); +var plot = $.plot("#placeholder", [getRandomData()], { + series: { + shadowSize: 0 // Drawing is faster without shadows + }, + yaxis: { + min: 0, + max: 100 + }, + xaxis: { + show: false + }, + colors: ["#55ce63"], + grid: { + color: "#AFAFAF", + hoverable: true, + borderWidth: 0, + backgroundColor: '#FFF' + }, + tooltip: true, + tooltipOpts: { + content: "Y: %y", + defaultTheme: false + } +}); + +function update() { + plot.setData([getRandomData()]); + // Since the axes don't change, we don't need to call plot.setupGrid() + plot.draw(); + setTimeout(update, updateInterval); +} +update(); +//Flot Line Chart +$(document).ready(function() { + console.log("document ready"); + var offset = 0; + plot(); + + function plot() { + var sin = [], + cos = []; + for (var i = 0; i < 12; i += 0.2) { + sin.push([i, Math.sin(i + offset)]); + cos.push([i, Math.cos(i + offset)]); + } + var options = { + series: { + lines: { + show: true + }, + points: { + show: true + } + }, + grid: { + hoverable: true //IMPORTANT! this is needed for tooltip to work + }, + yaxis: { + min: -1.2, + max: 1.2 + }, + colors: ["#009efb", "#55ce63"], + grid: { + color: "#AFAFAF", + hoverable: true, + borderWidth: 0, + backgroundColor: '#FFF' + }, + tooltip: true, + tooltipOpts: { + content: "'%s' of %x.1 is %y.4", + shifts: { + x: -60, + y: 25 + } + } + }; + var plotObj = $.plot($("#flot-line-chart"), [{ + data: sin, + label: "sin(x)", + }, { + data: cos, + label: "cos(x)" + }], options); + } +}); diff --git a/SpringBootHomework/src/main/resources/static/js/index1.js b/SpringBootHomework/src/main/resources/static/js/index1.js new file mode 100644 index 0000000..46532a7 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/js/index1.js @@ -0,0 +1,31 @@ +$(document).ready(function () { + var loginname; + var logintype; + var loginid; + $.post("showId", function (data) { + loginname = data.username; + logintype = data.type; + loginid = data.id; + if (loginname == null) { + window.location.href = "login.html"; + } + if (logintype == "student") { + $("#index3").css("display", "none"); + } + + $("#username").text(loginname); + }, "json"); + + $.post("homework/showByType/竞赛", {"type": "竞赛"}, function (json) { + $("#hw").empty(); + for (var i = 0; i < json.length; i++) { + $("#hw").append( + "

    " + + json[i].title + + "

    " + "
  • " + json[i].details + "
  • " + ); + } + }) + + +}) diff --git a/SpringBootHomework/src/main/resources/static/js/index2.js b/SpringBootHomework/src/main/resources/static/js/index2.js new file mode 100644 index 0000000..2266d66 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/js/index2.js @@ -0,0 +1,30 @@ +$(document).ready(function () { + var loginname; + var logintype; + var loginid; + $.post("showId", function (data) { + loginname = data.username; + logintype = data.type; + loginid = data.id; + if (loginname == null) { + window.location.href = "login.html"; + } + if (logintype == "student") { + $("#index3").css("display", "none"); + } + $("#username").text(loginname); + }, "json"); + + $.post("homework/showByType/结对", {"type": "结对"}, function (json) { + $("#hw").empty(); + for (var i = 0; i < json.length; i++) { + $("#hw").append( + "

    " + + json[i].title + + "

    " + "
  • " + json[i].details + "
  • " + ); + } + }) + + +}) diff --git a/SpringBootHomework/src/main/resources/static/js/index3.js b/SpringBootHomework/src/main/resources/static/js/index3.js new file mode 100644 index 0000000..eac4c73 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/js/index3.js @@ -0,0 +1,49 @@ +$(document).ready(function () { + var loginname; + var logintype; + var loginid; + $.post("showId", function (data) { + loginname = data.username; + logintype = data.type; + loginid = data.id; + if (loginname == null) { + window.location.href = "login.html"; + } + if (logintype == "student") { + window.location.href = "index.html"; + } + $("#username").text(loginname); + }, "json"); + + $("button[name='btnn']").click(function () { + var adata = { + "title": $("#title").val(), + "type": $("#type").val(), + "finishTime": $("#finishTime").val(), + "details": $("#details").val() + } + var data = JSON.stringify(adata); + $.ajax({ + type: "POST", + contentType: "application/json", + data: data, + url: "homework/save", + success: function (res) { + if (res != "") { + alert("添加成功"); + window.location.href = "index3.html"; + } else { + alert("添加失败"); + window.location.href = "index3.html"; + } + }, + error: function () { + alert("失败"); + window.location.href = "index3.html"; + } + }); + + }) + + +}) diff --git a/SpringBootHomework/src/main/resources/static/js/index4.js b/SpringBootHomework/src/main/resources/static/js/index4.js new file mode 100644 index 0000000..a5d0bc3 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/js/index4.js @@ -0,0 +1,410 @@ +$(document).ready(function () { + var loginname; + var logintype; + var loginid; + $.post("showId", function (data) { + loginname = data.username; + logintype = data.type; + loginid = data.id; + if (loginname == null) { + window.location.href = "login.html"; + } + if (logintype == "student") { + $("#index3").css("display", "none"); + $("button[name='changebtn']").attr("style", "display:none;"); + $("button[name='deletebtn']").attr("style", "display:none;"); + } + $("#username").text(loginname); + }, "json"); + + function SimpleDateFormat(pattern) { + var fmt = new Object(); + fmt.pattern = pattern; + + fmt.parse = function (source) { + try { + return new Date(source); + } catch (e) { + console.log("字符串 " + source + " 转时间格式失败!"); + return null; + } + }; + + fmt.format = function (date) { + if (typeof (date) == "undefined" || date == null || date == "") { + return ""; + } + + try { + date = new Date(date); + } catch (e) { + console.log("时间 " + date + " 格式化失败!"); + return ""; + } + + var strTime = this.pattern;//时间表达式的正则 + + var o = { + "M+": date.getMonth() + 1, //月份 + "d+": date.getDate(), //日 + "H+": date.getHours(), //小时 + "m+": date.getMinutes(), //分 + "s+": date.getSeconds(), //秒 + "q+": Math.floor((date.getMonth() + 3) / 3), //季度 + "S": date.getMilliseconds() //毫秒 + }; + + if (/(y+)/.test(strTime)) { + strTime = strTime + .replace(RegExp.$1, (date.getFullYear() + "") + .substr(4 - RegExp.$1.length)); + } + for (var k in o) { + if (new RegExp("(" + k + ")").test(strTime)) { + strTime = strTime.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); + } + } + + return strTime; + }; + return fmt; + } + + function getdata(pagen,type,finishTime) { + $.getJSON("homework/showByTypeAndFinishTime/" + pagen, {type: type, finishTime: finishTime}, function (json) { + if (pagen <= json.totalPages) { + $("#tbodymainbtn").empty(); + for (var i = 0; i < json.content.length; i++) { + $("#tbodymainbtn").append( + "" + + "" + json.content[i].id + + "" + + "" + json.content[i].title + + "" + + "" + json.content[i].type + + "" + + "" + json.content[i].updateTime + + "" + + "" + json.content[i].finishTime + + "" + + "" + + "" + + "" + + "" + + "" + ); + } + var pagenum = json.totalPages; + $(".pagination").empty(); + $(".pagination").append('
  • 首页
  • '); + $(".pagination").append('
  • 上一页
  • '); + for (var j = 0; j < pagenum; j++) { + $(".pagination").append('
  • ' + (j + 1) + '
  • '); + } + $(".pagination").append('
  • 下一页
  • '); + $(".pagination").append('
  • 尾页
  • '); + $(".page-item").removeClass("active"); + $("#page" + pagen).addClass("active"); + $("#nextpage").click(function () { + var pagenum1 = Number(pagen) + Number(1); + if (pagen < pagenum - 1) { + getdata(pagenum1,type,finishTime); + } + }); + $("#previosepage").click(function () { + var pagenum2 = Number(pagen) - Number(1); + if (pagen > 0) { + getdata(pagenum2,type,finishTime); + } + }); + $("#lastpage").click(function () { + console.log(1); + getdata(pagenum-1,type,finishTime); + }); + $("#firstpage").click(function () { + console.log(1); + getdata(0,type,finishTime); + }); + + + $(".page-item").click(function () { + page = this.id.substr(4); + getdata(page,type,finishTime); + }); + if (logintype == "student") { + $("button[name='changebtn']").attr("style", "display:none;"); + $("button[name='deletebtn']").attr("style", "display:none;"); + } + $("button[name='changebtn']").click(function () { + var id = this.id + var fmt = SimpleDateFormat("yyyy-MM-dd"); + $.getJSON("homework/findAllById/" + id, {id: id}, function (js) { + $("#changebtn").empty(); + $("#id").attr("value", js[0].id); + $("#hwtitle").attr("value", js[0].title); + $("#hwtype").attr("value", js[0].type); + $("#hwupdateTime").attr("value", fmt.format(js[0].updateTime)); + $("#hwfinishTime").attr("value", fmt.format(js[0].finishTime)); + document.getElementById("hwdetails").innerHTML = js[0].details; + $('#modalhwdetail').modal("show"); + $("button[name='btnn']").click(function () { + var adata = { + "id": $("#id").val(), + "title": $("#hwtitle").val(), + "type": $("#hwtype").val(), + "updateTime": $("#hwupdateTime").val(), + "finishTime": $("#hwfinishTime").val(), + "details": $("#hwdetails").val() + } + var data = JSON.stringify(adata); + $.ajax({ + type: "POST", + contentType: "application/json", + data: data, + url: "homework/update", + success: function (res) { + if (res != "") { + alert("修改成功"); + window.location.href = "index4.html"; + } else { + alert("修改失败"); + window.location.href = "index4.html"; + } + }, + error: function () { + alert("失败"); + window.location.href = "index4.html"; + } + }); + }) + }) + }) + + $("button[name='deletebtn']").click(function () { + var id = this.id; + console.log(id); + $.getJSON("homework/deleteById/" + id, {id: id}, function (rs) { + if (rs.rs == 'success') { + window.location.href = "index4.html"; + } else { + alert("删除失败"); + window.location.href = "index4.html"; + } + }); + }) + + $("button[name='checkbtn']").click(function () { + var fmt = SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + $.getJSON("homework/showdetails/" + this.id, {"id": this.id}, function (json) { + $("#dtbodybtn").empty(); + for (var i = 0; i < json.length; i++) { + $("#dtbodybtn").append( + "" + + "" + json[i].id + + "" + + "" + json[i].username + + "" + + "" + fmt.format(json[i].completeTime) + + "" + + "" + json[i].status + + "" + + "" + ) + } + + }) + $('#modalhwdetail2').modal("show"); + + + }) + + $("button[name='uploadbtn']").click(function () { + var hid = this.id; + var uid = loginid; + $('#uploadmodal').modal("show"); + $("button[name='uploadbtn2']").click(function () { + var formData = new FormData(document.getElementById("upload-form")); + $.ajax({ + url: "homework/upload", + method: 'POST', + data: formData, + contentType: false, + processData: false, + success: function (resp) { + if (resp.result != null) { + $.getJSON("homework/saveDetails/" + uid + "/" + hid + "/" + resp.result, function (json) { + if ("outtime" == json.rs) { + alert("已超时"); + } else if ("fail" == json.rs) { + alert("失败"); + } else { + alert(" 添加成功"); + $('#modalhwdetail2').modal('hide'); + } + }) + + } else { + alert("上传失败"); + } + } + }); + + }) + }) + } + + + }) + }; + + $("button[name='searchbtn']").click(function () { + var type = $("#searchtype").val(); + var finishTime = $("#searchfinishTime").val(); + getdata(0,type,finishTime); + // $.getJSON("homework/showByTypeAndFinishTime", {type: type, finishTime: finishTime}, function (json) { + // $("#tbodymainbtn").empty(); + // for (var i = 0; i < json.length; i++) { + // $("#tbodymainbtn").append( + // "" + // + "" + json[i].id + // + "" + // + "" + json[i].title + // + "" + // + "" + json[i].type + // + "" + // + "" + json[i].updateTime + // + "" + // + "" + json[i].finishTime + // + "" + // + "" + // + "" + // + "" + // + "" + // + "" + // ); + // } + // if (logintype == "student") { + // $("button[name='changebtn']").attr("style", "display:none;"); + // $("button[name='deletebtn']").attr("style", "display:none;"); + // } + // $("button[name='changebtn']").click(function () { + // var id = this.id + // var fmt = SimpleDateFormat("yyyy-MM-dd"); + // $.getJSON("homework/findAllById/" + id, {id: id}, function (js) { + // $("#changebtn").empty(); + // $("#id").attr("value", js[0].id); + // $("#hwtitle").attr("value", js[0].title); + // $("#hwtype").attr("value", js[0].type); + // $("#hwupdateTime").attr("value", fmt.format(js[0].updateTime)); + // $("#hwfinishTime").attr("value", fmt.format(js[0].finishTime)); + // document.getElementById("hwdetails").innerHTML = js[0].details; + // $('#modalhwdetail').modal("show"); + // $("button[name='btnn']").click(function () { + // var adata = { + // "id": $("#id").val(), + // "title": $("#hwtitle").val(), + // "type": $("#hwtype").val(), + // "updateTime": $("#hwupdateTime").val(), + // "finishTime": $("#hwfinishTime").val(), + // "details": $("#hwdetails").val() + // } + // var data = JSON.stringify(adata); + // $.ajax({ + // type: "POST", + // contentType: "application/json", + // data: data, + // url: "homework/update", + // success: function (res) { + // if (res != "") { + // alert("修改成功"); + // window.location.href = "index4.html"; + // } else { + // alert("修改失败"); + // window.location.href = "index4.html"; + // } + // }, + // error: function () { + // alert("失败"); + // window.location.href = "index4.html"; + // } + // }); + // }) + // }) + // }) + // + // $("button[name='deletebtn']").click(function () { + // var id = this.id; + // console.log(id); + // $.getJSON("homework/deleteById/" + id, {id: id}, function (rs) { + // if (rs.rs == 'success') { + // window.location.href = "index4.html"; + // } else { + // alert("删除失败"); + // window.location.href = "index4.html"; + // } + // }); + // }) + // + // $("button[name='checkbtn']").click(function () { + // var fmt = SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + // $.getJSON("homework/showdetails/" + this.id, {"id": this.id}, function (json) { + // $("#dtbodybtn").empty(); + // for (var i = 0; i < json.length; i++) { + // $("#dtbodybtn").append( + // "" + // + "" + json[i].id + // + "" + // + "" + json[i].username + // + "" + // + "" + fmt.format(json[i].completeTime) + // + "" + // + "" + json[i].status + // + "" + // + "" + // ) + // } + // + // }) + // $('#modalhwdetail2').modal("show"); + // + // + // }) + // + // $("button[name='uploadbtn']").click(function () { + // var hid = this.id; + // var uid = loginid; + // $('#uploadmodal').modal("show"); + // $("button[name='uploadbtn2']").click(function () { + // var formData = new FormData(document.getElementById("upload-form")); + // $.ajax({ + // url: "homework/upload", + // method: 'POST', + // data: formData, + // contentType: false, + // processData: false, + // success: function (resp) { + // if (resp.result != null) { + // $.getJSON("homework/saveDetails/" + uid + "/" + hid + "/" + resp.result, function (json) { + // if ("outtime" == json.rs) { + // alert("已超时"); + // } else if ("fail" == json.rs) { + // alert("失败"); + // } else { + // alert(" 添加成功"); + // $('#modalhwdetail2').modal('hide'); + // } + // }) + // + // } else { + // alert("上传失败"); + // } + // } + // }); + // + // }) + // }) + // }) + }) + + +}) diff --git a/SpringBootHomework/src/main/resources/static/js/index5.js b/SpringBootHomework/src/main/resources/static/js/index5.js new file mode 100644 index 0000000..e41c8e3 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/js/index5.js @@ -0,0 +1,41 @@ +$(document).ready(function () { + var loginname; + var logintype; + var loginid; + $.post("showId", function (data) { + loginname = data.username; + logintype = data.type; + loginid = data.id; + if (loginname == null) { + window.location.href = "login.html"; + } + if (logintype == "student") { + $("#index3").css("display", "none"); + } + + $("#username").text(loginname); + }, "json"); + + + $("#btn1").click(function () { + $.getJSON("homework/rank/" + $("#type").val(), {"type": $("#type").val()}, function (json) { + $("#tbodymain").empty(); + for (var i = 0; i < json.length; i++) { + var rank = i+1; + $("#tbodymain").append( + "" + + "" + rank + + "" + + "" + json[i].username + + "" + + "" + json[i].ac + + "" + + "" + ) + } + + }) + }) + + +}) diff --git a/SpringBootHomework/src/main/resources/static/js/jquery.slimscroll.js b/SpringBootHomework/src/main/resources/static/js/jquery.slimscroll.js new file mode 100644 index 0000000..92d31d2 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/js/jquery.slimscroll.js @@ -0,0 +1 @@ +!function(e){e.fn.extend({slimScroll:function(i){var o={width:"auto",height:"250px",size:"7px",color:"#000",position:"right",distance:"1px",start:"top",opacity:.4,alwaysVisible:!1,disableFadeOut:!1,railVisible:!1,railColor:"#333",railOpacity:.2,railDraggable:!0,railClass:"slimScrollRail",barClass:"slimScrollBar",wrapperClass:"slimScrollDiv",allowPageScroll:!1,wheelStep:20,touchScrollStep:200,borderRadius:"7px",railBorderRadius:"7px"},s=e.extend(o,i);return this.each(function(){function o(t){if(h){var t=t||window.event,i=0;t.wheelDelta&&(i=-t.wheelDelta/120),t.detail&&(i=t.detail/3);var o=t.target||t.srcTarget||t.srcElement;e(o).closest("."+s.wrapperClass).is(x.parent())&&r(i,!0),t.preventDefault&&!y&&t.preventDefault(),y||(t.returnValue=!1)}}function r(e,t,i){y=!1;var o=e,r=x.outerHeight()-R.outerHeight();if(t&&(o=parseInt(R.css("top"))+e*parseInt(s.wheelStep)/100*R.outerHeight(),o=Math.min(Math.max(o,0),r),o=e>0?Math.ceil(o):Math.floor(o),R.css({top:o+"px"})),v=parseInt(R.css("top"))/(x.outerHeight()-R.outerHeight()),o=v*(x[0].scrollHeight-x.outerHeight()),i){o=e;var a=o/x[0].scrollHeight*x.outerHeight();a=Math.min(Math.max(a,0),r),R.css({top:a+"px"})}x.scrollTop(o),x.trigger("slimscrolling",~~o),n(),c()}function a(e){window.addEventListener?(e.addEventListener("DOMMouseScroll",o,!1),e.addEventListener("mousewheel",o,!1)):document.attachEvent("onmousewheel",o)}function l(){f=Math.max(x.outerHeight()/x[0].scrollHeight*x.outerHeight(),m),R.css({height:f+"px"});var e=f==x.outerHeight()?"none":"block";R.css({display:e})}function n(){if(l(),clearTimeout(p),v==~~v){if(y=s.allowPageScroll,b!=v){var e=0==~~v?"top":"bottom";x.trigger("slimscroll",e)}}else y=!1;return b=v,f>=x.outerHeight()?void(y=!0):(R.stop(!0,!0).fadeIn("fast"),void(s.railVisible&&E.stop(!0,!0).fadeIn("fast")))}function c(){s.alwaysVisible||(p=setTimeout(function(){s.disableFadeOut&&h||u||d||(R.fadeOut("slow"),E.fadeOut("slow"))},1e3))}var h,u,d,p,g,f,v,b,w="
    ",m=30,y=!1,x=e(this);if(x.parent().hasClass(s.wrapperClass)){var C=x.scrollTop();if(R=x.closest("."+s.barClass),E=x.closest("."+s.railClass),l(),e.isPlainObject(i)){if("height"in i&&"auto"==i.height){x.parent().css("height","auto"),x.css("height","auto");var H=x.parent().parent().height();x.parent().css("height",H),x.css("height",H)}if("scrollTo"in i)C=parseInt(s.scrollTo);else if("scrollBy"in i)C+=parseInt(s.scrollBy);else if("destroy"in i)return R.remove(),E.remove(),void x.unwrap();r(C,!1,!0)}}else if(!(e.isPlainObject(i)&&"destroy"in i)){s.height="auto"==s.height?x.parent().height():s.height;var S=e(w).addClass(s.wrapperClass).css({position:"relative",overflow:"hidden",width:s.width,height:s.height});x.css({overflow:"hidden",width:s.width,height:s.height});var E=e(w).addClass(s.railClass).css({width:s.size,height:"100%",position:"absolute",top:0,display:s.alwaysVisible&&s.railVisible?"block":"none","border-radius":s.railBorderRadius,background:s.railColor,opacity:s.railOpacity,zIndex:90}),R=e(w).addClass(s.barClass).css({background:s.color,width:s.size,position:"absolute",top:0,opacity:s.opacity,display:s.alwaysVisible?"block":"none","border-radius":s.borderRadius,BorderRadius:s.borderRadius,MozBorderRadius:s.borderRadius,WebkitBorderRadius:s.borderRadius,zIndex:99}),D="right"==s.position?{right:s.distance}:{left:s.distance};E.css(D),R.css(D),x.wrap(S),x.parent().append(R),x.parent().append(E),s.railDraggable&&R.bind("mousedown",function(i){var o=e(document);return d=!0,t=parseFloat(R.css("top")),pageY=i.pageY,o.bind("mousemove.slimscroll",function(e){currTop=t+e.pageY-pageY,R.css("top",currTop),r(0,R.position().top,!1)}),o.bind("mouseup.slimscroll",function(e){d=!1,c(),o.unbind(".slimscroll")}),!1}).bind("selectstart.slimscroll",function(e){return e.stopPropagation(),e.preventDefault(),!1}),E.hover(function(){n()},function(){c()}),R.hover(function(){u=!0},function(){u=!1}),x.hover(function(){h=!0,n(),c()},function(){h=!1,c()}),x.bind("touchstart",function(e,t){e.originalEvent.touches.length&&(g=e.originalEvent.touches[0].pageY)}),x.bind("touchmove",function(e){if(y||e.originalEvent.preventDefault(),e.originalEvent.touches.length){var t=(g-e.originalEvent.touches[0].pageY)/s.touchScrollStep;r(t,!0),g=e.originalEvent.touches[0].pageY}}),l(),"bottom"===s.start?(R.css({top:x.outerHeight()-R.outerHeight()}),r(0,!0)):"top"!==s.start&&(r(e(s.start).position().top,null,!0),s.alwaysVisible||R.hide()),a(this)}}),this}}),e.fn.extend({slimscroll:e.fn.slimScroll})}(jQuery); \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/js/login.js b/SpringBootHomework/src/main/resources/static/js/login.js new file mode 100644 index 0000000..683b249 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/js/login.js @@ -0,0 +1,61 @@ +$(function () { + $("#btn").attr('disabled', true); + $("#namep").hide(); + $("#pwd").blur(function () { + var pwd = $("#pwd").val(); + if (pwd.length == 0) { + $("#pwdp").show(); + $("#btn").attr('disabled', true); + } else { + $("#pwdp").hide(); + $("#btn").attr('disabled', false); + } + }); + $("#name").blur(function () { + var name = $("#name").val(); + if (name.length == 0) { + $("#namepp").show(); + $("#btn").attr('disabled', true); + } else if (name.length > 0) { + $("#namepp").hide(); + $("#btn").attr('disabled', false); + } + if (/^[0-9a-zA-Z_]{1,30}$/.test(name)) { + $("#namep").hide(); + $("#btn").attr('disabled', false); + } else if (name.length > 30) { + $("#namep").show(); + $("#btn").attr('disabled', true); + } + }); + + $("button[name='btn']").click(function () { + + var adata = { + "username": $("#name").val(), + "password": $("#pwd").val(), + "type": $("#type").val() + } + var data = JSON.stringify(adata); + $.ajax({ + type: "POST", + contentType: "application/json", + data: data, + url: "login", + success: function (res) { + if (res != null) { + $.getJSON("setId", {"id": res.id, "username": res.username,"type":res.type}, function (data) { + window.location.href = "index.html"; + }, "json"); + + } else { + window.location.href = "login.html"; + } + }, + error: function () { + window.location.href = "login.html"; + } + }); + }) + +}) diff --git a/SpringBootHomework/src/main/resources/static/js/register.js b/SpringBootHomework/src/main/resources/static/js/register.js new file mode 100644 index 0000000..493cbc7 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/js/register.js @@ -0,0 +1,94 @@ +$(function () { + $("#btn").attr('disabled', true); + $("#namep").hide(); + $("#pwd").blur(function () { + var pwd = $("#pwd").val(); + if (/^[0-9a-zA-Z_]{6,15}$/.test(pwd)) { + $("#pwdp").hide(); + $("#btn").attr('disabled', false); + + } else { + $("#pwdp").show(); + $("#btn").attr('disabled', true); + + } + }); + $("#pwd2").blur(function () { + var pwd2 = $("#pwd2").val(); + if (pwd2 != $("#pwd").val()) { + $("#pwd3p").show(); + $("#btn").attr('disabled', true); + } else if (pwd2 == $("#pwd").val()) { + $("#pwd3p").hide(); + $("#btn").attr('disabled', false); + } + if (pwd2.length == 0) { + $("#pwd2p").show(); + $("#btn").attr('disabled', true); + } else if (pwd2.length > 0) { + $("#pwd2p").hide(); + $("#btn").attr('disabled', false); + } + }); + $("#name").blur(function () { + var name = $("#name").val(); + if (this.value.length == 0) { + $("#namepp").show(); + $("#btn").attr('disabled', true); + } else if (name.length > 0) { + $("#namepp").hide(); + $("#btn").attr('disabled', false); + } + if (/^[0-9a-zA-Z_]{1,30}$/.test(name)) { + $("#namep").hide(); + $("#btn").attr('disabled', false); + } else if (name.length > 30) { + $("#namep").show(); + $("#btn").attr('disabled', true); + } + $.getJSON("checkName", {username: name}, function (json) { + console.log(json); + var rs = json.result + ""; + console.log(rs); + if (rs == 'false') { + $("#nameppp").hide(); + $("#btn").attr('disabled', false); + } else { + $("#nameppp").show(); + $("#btn").attr('disabled', true); + } + }); + }); + + + $("button[name='btn']").click(function () { + + var adata = { + "username": $("#name").val(), + "password": $("#pwd").val(), + "type":$("#type").val() + } + var data = JSON.stringify(adata); + $.ajax({ + type: "POST", + contentType: "application/json", + data: data, + url: "register", + success: function (res) { + console.log(res); + if (res != "" && res == "success") { + alert("注册成功"); + window.location.href = "login.html"; + } else { + alert("注册失败"); + window.location.href = "register.html"; + } + }, + error: function () { + alert("失败"); + window.location.href = "register.html"; + } + }); + }) + +}) diff --git a/SpringBootHomework/src/main/resources/static/js/sidebarmenu.js b/SpringBootHomework/src/main/resources/static/js/sidebarmenu.js new file mode 100644 index 0000000..2052e0c --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/js/sidebarmenu.js @@ -0,0 +1,342 @@ +/* +Template Name: Monster Admin +Author: Themedesigner +Email: niravjoshi87@gmail.com +File: js +*/ +(function (global, factory) { + if (typeof define === "function" && define.amd) { + define(['jquery'], factory); + } else if (typeof exports !== "undefined") { + factory(require('jquery')); + } else { + var mod = { + exports: {} + }; + factory(global.jquery); + global.metisMenu = mod.exports; + } +})(this, function (_jquery) { + 'use strict'; + + var _jquery2 = _interopRequireDefault(_jquery); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + var Util = function ($) { + var transition = false; + + var TransitionEndEvent = { + WebkitTransition: 'webkitTransitionEnd', + MozTransition: 'transitionend', + OTransition: 'oTransitionEnd otransitionend', + transition: 'transitionend' + }; + + function getSpecialTransitionEndEvent() { + return { + bindType: transition.end, + delegateType: transition.end, + handle: function handle(event) { + if ($(event.target).is(this)) { + return event.handleObj.handler.apply(this, arguments); + } + return undefined; + } + }; + } + + function transitionEndTest() { + if (window.QUnit) { + return false; + } + + var el = document.createElement('mm'); + + for (var name in TransitionEndEvent) { + if (el.style[name] !== undefined) { + return { + end: TransitionEndEvent[name] + }; + } + } + + return false; + } + + function transitionEndEmulator(duration) { + var _this2 = this; + + var called = false; + + $(this).one(Util.TRANSITION_END, function () { + called = true; + }); + + setTimeout(function () { + if (!called) { + Util.triggerTransitionEnd(_this2); + } + }, duration); + + return this; + } + + function setTransitionEndSupport() { + transition = transitionEndTest(); + $.fn.emulateTransitionEnd = transitionEndEmulator; + + if (Util.supportsTransitionEnd()) { + $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); + } + } + + var Util = { + TRANSITION_END: 'mmTransitionEnd', + + triggerTransitionEnd: function triggerTransitionEnd(element) { + $(element).trigger(transition.end); + }, + supportsTransitionEnd: function supportsTransitionEnd() { + return Boolean(transition); + } + }; + + setTransitionEndSupport(); + + return Util; + }(jQuery); + + var MetisMenu = function ($) { + + var NAME = 'metisMenu'; + var DATA_KEY = 'metisMenu'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 350; + + var Default = { + toggle: true, + preventDefault: true, + activeClass: 'active', + collapseClass: 'collapse', + collapseInClass: 'in', + collapsingClass: 'collapsing', + triggerElement: 'a', + parentTrigger: 'li', + subMenu: 'ul' + }; + + var Event = { + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var MetisMenu = function () { + function MetisMenu(element, config) { + _classCallCheck(this, MetisMenu); + + this._element = element; + this._config = this._getConfig(config); + this._transitioning = null; + + this.init(); + } + + MetisMenu.prototype.init = function init() { + var self = this; + $(this._element).find(this._config.parentTrigger + '.' + this._config.activeClass).has(this._config.subMenu).children(this._config.subMenu).attr('aria-expanded', true).addClass(this._config.collapseClass + ' ' + this._config.collapseInClass); + + $(this._element).find(this._config.parentTrigger).not('.' + this._config.activeClass).has(this._config.subMenu).children(this._config.subMenu).attr('aria-expanded', false).addClass(this._config.collapseClass); + + $(this._element).find(this._config.parentTrigger).has(this._config.subMenu).children(this._config.triggerElement).on(Event.CLICK_DATA_API, function (e) { + var _this = $(this); + var _parent = _this.parent(self._config.parentTrigger); + var _siblings = _parent.siblings(self._config.parentTrigger).children(self._config.triggerElement); + var _list = _parent.children(self._config.subMenu); + if (self._config.preventDefault) { + e.preventDefault(); + } + if (_this.attr('aria-disabled') === 'true') { + return; + } + if (_parent.hasClass(self._config.activeClass)) { + _this.attr('aria-expanded', false); + self._hide(_list); + } else { + self._show(_list); + _this.attr('aria-expanded', true); + if (self._config.toggle) { + _siblings.attr('aria-expanded', false); + } + } + + if (self._config.onTransitionStart) { + self._config.onTransitionStart(e); + } + }); + }; + + MetisMenu.prototype._show = function _show(element) { + if (this._transitioning || $(element).hasClass(this._config.collapsingClass)) { + return; + } + var _this = this; + var _el = $(element); + + var startEvent = $.Event(Event.SHOW); + _el.trigger(startEvent); + + if (startEvent.isDefaultPrevented()) { + return; + } + + _el.parent(this._config.parentTrigger).addClass(this._config.activeClass); + + if (this._config.toggle) { + this._hide(_el.parent(this._config.parentTrigger).siblings().children(this._config.subMenu + '.' + this._config.collapseInClass).attr('aria-expanded', false)); + } + + _el.removeClass(this._config.collapseClass).addClass(this._config.collapsingClass).height(0); + + this.setTransitioning(true); + + var complete = function complete() { + + _el.removeClass(_this._config.collapsingClass).addClass(_this._config.collapseClass + ' ' + _this._config.collapseInClass).height('').attr('aria-expanded', true); + + _this.setTransitioning(false); + + _el.trigger(Event.SHOWN); + }; + + if (!Util.supportsTransitionEnd()) { + complete(); + return; + } + + _el.height(_el[0].scrollHeight).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + }; + + MetisMenu.prototype._hide = function _hide(element) { + + if (this._transitioning || !$(element).hasClass(this._config.collapseInClass)) { + return; + } + var _this = this; + var _el = $(element); + + var startEvent = $.Event(Event.HIDE); + _el.trigger(startEvent); + + if (startEvent.isDefaultPrevented()) { + return; + } + + _el.parent(this._config.parentTrigger).removeClass(this._config.activeClass); + _el.height(_el.height())[0].offsetHeight; + + _el.addClass(this._config.collapsingClass).removeClass(this._config.collapseClass).removeClass(this._config.collapseInClass); + + this.setTransitioning(true); + + var complete = function complete() { + if (_this._transitioning && _this._config.onTransitionEnd) { + _this._config.onTransitionEnd(); + } + + _this.setTransitioning(false); + _el.trigger(Event.HIDDEN); + + _el.removeClass(_this._config.collapsingClass).addClass(_this._config.collapseClass).attr('aria-expanded', false); + }; + + if (!Util.supportsTransitionEnd()) { + complete(); + return; + } + + _el.height() == 0 || _el.css('display') == 'none' ? complete() : _el.height(0).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + }; + + MetisMenu.prototype.setTransitioning = function setTransitioning(isTransitioning) { + this._transitioning = isTransitioning; + }; + + MetisMenu.prototype.dispose = function dispose() { + $.removeData(this._element, DATA_KEY); + + $(this._element).find(this._config.parentTrigger).has(this._config.subMenu).children(this._config.triggerElement).off('click'); + + this._transitioning = null; + this._config = null; + this._element = null; + }; + + MetisMenu.prototype._getConfig = function _getConfig(config) { + config = $.extend({}, Default, config); + return config; + }; + + MetisMenu._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DATA_KEY); + var _config = $.extend({}, Default, $this.data(), (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config); + + if (!data && /dispose/.test(config)) { + this.dispose(); + } + + if (!data) { + data = new MetisMenu(this, _config); + $this.data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); + }; + + return MetisMenu; + }(); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = MetisMenu._jQueryInterface; + $.fn[NAME].Constructor = MetisMenu; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return MetisMenu._jQueryInterface; + }; + return MetisMenu; + }(jQuery); +}); \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/js/table.js b/SpringBootHomework/src/main/resources/static/js/table.js new file mode 100644 index 0000000..c272fcc --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/js/table.js @@ -0,0 +1,71 @@ +$(document).ready(function () { + $.getJSON("getAll", function (json) { + console.log(json); + $("#tbodymainbtn").empty(); + for (var i = 0; i < json.length; i++) { + $("#tbodymainbtn").append( + "" + + "" + json[i].id + + "" + + "" + json[i].username + + "" + + "" + json[i].password + + "" + + "" + "  " + + "" + ); + $("#tbodymainbtn").append( + "
    " + + "" + + "" + + "" + + "" + + "
    " + ); + } + + + //jquery 样式查找 “点+样式名字” + $("button[name='btn001']").click(function () { + var id = this.id; + //从最后面开始,截取一位 + var numb = id.slice(4); + console.log("****************" + id); + $("#tridval" + numb).hide(); + $("#tridval2" + numb).show(); + + }); + + + $("button[name='btn002']").click(function () { + var id = this.id; + //从最后面开始,截取一位 + var numb = id.slice(4); + console.log("****************" + id); + var nval = $("#name2" + numb).val(); + var aval = $("#password2" + numb).val(); + console.log("********name2********" + nval); + console.log("********age2********" + aval); + + $("#tridval" + numb).show(); + $("#tridval2" + numb).hide(); + + + }); + + $("button[name='btn003']").click(function () { + var uid =this.id; + var numb = uid.slice(4); + console.log(numb); + $.getJSON("delete",{id:numb},function (json) { + console.log("delete-----",json); + }) + }) + + + }); + +}); diff --git a/SpringBootHomework/src/main/resources/static/js/waves.js b/SpringBootHomework/src/main/resources/static/js/waves.js new file mode 100644 index 0000000..d559e22 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/js/waves.js @@ -0,0 +1 @@ +!function(t){"use strict";function e(t){return null!==t&&t===t.window}function n(t){return e(t)?t:9===t.nodeType&&t.defaultView}function a(t){var e,a,i={top:0,left:0},o=t&&t.ownerDocument;return e=o.documentElement,"undefined"!=typeof t.getBoundingClientRect&&(i=t.getBoundingClientRect()),a=n(o),{top:i.top+a.pageYOffset-e.clientTop,left:i.left+a.pageXOffset-e.clientLeft}}function i(t){var e="";for(var n in t)t.hasOwnProperty(n)&&(e+=n+":"+t[n]+";");return e}function o(t){if(d.allowEvent(t)===!1)return null;for(var e=null,n=t.target||t.srcElement;null!==n.parentElement;){if(!(n instanceof SVGElement||-1===n.className.indexOf("waves-effect"))){e=n;break}if(n.classList.contains("waves-effect")){e=n;break}n=n.parentElement}return e}function r(e){var n=o(e);null!==n&&(c.show(e,n),"ontouchstart"in t&&(n.addEventListener("touchend",c.hide,!1),n.addEventListener("touchcancel",c.hide,!1)),n.addEventListener("mouseup",c.hide,!1),n.addEventListener("mouseleave",c.hide,!1))}var s=s||{},u=document.querySelectorAll.bind(document),c={duration:750,show:function(t,e){if(2===t.button)return!1;var n=e||this,o=document.createElement("div");o.className="waves-ripple",n.appendChild(o);var r=a(n),s=t.pageY-r.top,u=t.pageX-r.left,d="scale("+n.clientWidth/100*10+")";"touches"in t&&(s=t.touches[0].pageY-r.top,u=t.touches[0].pageX-r.left),o.setAttribute("data-hold",Date.now()),o.setAttribute("data-scale",d),o.setAttribute("data-x",u),o.setAttribute("data-y",s);var l={top:s+"px",left:u+"px"};o.className=o.className+" waves-notransition",o.setAttribute("style",i(l)),o.className=o.className.replace("waves-notransition",""),l["-webkit-transform"]=d,l["-moz-transform"]=d,l["-ms-transform"]=d,l["-o-transform"]=d,l.transform=d,l.opacity="1",l["-webkit-transition-duration"]=c.duration+"ms",l["-moz-transition-duration"]=c.duration+"ms",l["-o-transition-duration"]=c.duration+"ms",l["transition-duration"]=c.duration+"ms",l["-webkit-transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",l["-moz-transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",l["-o-transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",l["transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",o.setAttribute("style",i(l))},hide:function(t){d.touchup(t);var e=this,n=(1.4*e.clientWidth,null),a=e.getElementsByClassName("waves-ripple");if(!(a.length>0))return!1;n=a[a.length-1];var o=n.getAttribute("data-x"),r=n.getAttribute("data-y"),s=n.getAttribute("data-scale"),u=Date.now()-Number(n.getAttribute("data-hold")),l=350-u;0>l&&(l=0),setTimeout(function(){var t={top:r+"px",left:o+"px",opacity:"0","-webkit-transition-duration":c.duration+"ms","-moz-transition-duration":c.duration+"ms","-o-transition-duration":c.duration+"ms","transition-duration":c.duration+"ms","-webkit-transform":s,"-moz-transform":s,"-ms-transform":s,"-o-transform":s,transform:s};n.setAttribute("style",i(t)),setTimeout(function(){try{e.removeChild(n)}catch(t){return!1}},c.duration)},l)},wrapInput:function(t){for(var e=0;e0&&(d.touches-=1)},500):"mousedown"===t.type&&d.touches>0&&(e=!1),e},touchup:function(t){d.allowEvent(t)}};s.displayEffect=function(e){e=e||{},"duration"in e&&(c.duration=e.duration),c.wrapInput(u(".waves-effect")),"ontouchstart"in t&&document.body.addEventListener("touchstart",r,!1),document.body.addEventListener("mousedown",r,!1)},s.attach=function(e){"input"===e.tagName.toLowerCase()&&(c.wrapInput([e]),e=e.parentElement),"ontouchstart"in t&&e.addEventListener("touchstart",r,!1),e.addEventListener("mousedown",r,!1)},t.Waves=s,document.addEventListener("DOMContentLoaded",function(){s.displayEffect()},!1)}(window); \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/login.html b/SpringBootHomework/src/main/resources/static/login.html new file mode 100644 index 0000000..d909b3e --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/login.html @@ -0,0 +1,65 @@ + + + + + + 登陆 + + + + + + + + +
    +
    + +
    +
    + + +
    +
    + + + + + + \ No newline at end of file diff --git a/SpringBootHomework/src/main/resources/static/register.html b/SpringBootHomework/src/main/resources/static/register.html new file mode 100644 index 0000000..65ce2a8 --- /dev/null +++ b/SpringBootHomework/src/main/resources/static/register.html @@ -0,0 +1,69 @@ + + + + + + + + + 注册 + + + + + +
    +
    + +
    +
    +
    +
    +
    +

    Let's create your account

    +
    + + + + + +
    +
    + + + + +
    +
    + + + + +
    + + +
    + 已有账号? +
    +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/SpringBootHomework/target/SpringBootHomework-0.0.1-SNAPSHOT.jar b/SpringBootHomework/target/SpringBootHomework-0.0.1-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..5db81b95795421385eb33b253874726436b31332 GIT binary patch literal 1959217 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℘v7>Lxqo4r{?5 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

    Kkj}1!sP< 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

    Hq2X2(r- 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%0AHx+>6*unZL;Y` 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%0D$rh8}hlnD;GDp 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

    &Kz7Ve^0oBVB^vSalH7@RZb`tiRs**a^@qlrY4{ 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%0A2>OcwFfsK~E?a=E; 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 z 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�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

    r()7M|afHfs&Z4E-F|e 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

    5jPdxLCP>AA=3Wuk!bi=7k#3AOEi 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

    |RjYU7V&na@#?nyBwv#_dOakH>)>93VBuEJ`A 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 + 4.0.0 + + zz + SpringBoot2 + 0.0.1-SNAPSHOT + + SpringBootHomework + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-devtools + true + true + + + junit + junit + 4.11 + test + + + + junit + junit + 4.11 + test + + + mysql + mysql-connector-java + 8.0.15 + + + org.springframework.boot + spring-boot-starter-data-jpa + + + com.auth0 + java-jwt + 3.3.0 + + + commons-fileupload + commons-fileupload + 1.3 + + + org.springframework.boot + spring-boot-starter-test + + + + + + alimaven + aliyun maven + http://maven.aliyun.com/nexus/content/groups/public/ + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + \ No newline at end of file diff --git a/SpringBootHomework/target/classes/application.properties b/SpringBootHomework/target/classes/application.properties new file mode 100644 index 0000000..a3bf886 --- /dev/null +++ b/SpringBootHomework/target/classes/application.properties @@ -0,0 +1,8 @@ +server.port=9084 +server.servlet.context-path=/SpringBootHomework +spring.datasource.url=jdbc:mysql://118.24.99.140:3306/zzty?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.username=root +spring.datasource.password=Aa_114514 +spring.jpa.database=MYSQL +spring.jpa.hibernate.ddl-auto=update \ No newline at end of file diff --git a/SpringBootHomework/target/classes/com/cy/SpringBootHomeworkApplication.class b/SpringBootHomework/target/classes/com/cy/SpringBootHomeworkApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..d789c124e10b4e2f46bddec30c0e6101ee6bc01c GIT binary patch literal 725 zcma)4O;6iE5PchxIC0YkLV~ zRN}12B4N&XlnRDksAHbaxREY?NY?FlnKOJ0pTlKDeKIZ;!}j1ZeB?B>PQYk?=3@h! z9(oKzZIU1_h0P7WR~1Ag@j-1xVF$0VMLJADz|o+BJ4tz-k5+XGSHZ_xS#e{7iB@x& z6voM{^r5sXI}zL@BzkiNGJ`+Wg^9(9bTfPZ{W-^zqrBd3KyQ3cC zl}yV)@WN`MTv8R4Pf(#e!X9Wc^k;w?ooKUUJ&FSIjC^DG3$34J*(dADpbIa^cJ42b ye@Rgruh6B8dwf)a0j(Yz{>J*n<9nYf?yd*Fg3-b@b|_!No6`2NOWyT*3;YN5Grybw literal 0 HcmV?d00001 diff --git a/SpringBootHomework/target/classes/com/cy/controller/HomeworkController.class b/SpringBootHomework/target/classes/com/cy/controller/HomeworkController.class new file mode 100644 index 0000000000000000000000000000000000000000..af86a11f336dd6243622b8c104a156152f565b72 GIT binary patch literal 7939 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 literal 0 HcmV?d00001 diff --git a/SpringBootHomework/target/classes/com/cy/controller/UserController.class b/SpringBootHomework/target/classes/com/cy/controller/UserController.class new file mode 100644 index 0000000000000000000000000000000000000000..9051d3def7b3f5fad6fb5e99885582d2e32b4691 GIT binary patch literal 3477 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 literal 0 HcmV?d00001 diff --git a/SpringBootHomework/target/classes/com/cy/entity/HomeworkRankDTO.class b/SpringBootHomework/target/classes/com/cy/entity/HomeworkRankDTO.class new file mode 100644 index 0000000000000000000000000000000000000000..9555b27c5720c55ff057a1a523284e2a80be5fd5 GIT binary patch literal 918 zcmaKpO;5r=5Qg7vfeKdq0u&VxPpFB#c+;2=jqyM2?m9Ck7G% zGuQG~T3zY3t&`TZvIBvML0|c<>?wh{##i_(@Ey0kBcMrJAQ232C?U1$xK6Mqpx4$f z$h+@dstj~YnMfleFx_xmbv)>`l;4!CZdlT@W%ok*4!_6FL~!Nw1uBhyfvNXoTLtHz zc)8m8Z@@GJ@+Oi4QL>o*a-Bs)t9L7RPVZ1=Bi>1w5~?GtY-zj*%D zSs?x6?rD}%f|f6x&yGEE+@XEiyOez`D4_;|O6|KJ9qlW3_(ssu1Wwl(OF_vCR#_gBo>O>7#ux-&23o;NOgx2uyXl70;H&C~eV&k4gIm$y1 zt^8>_&YZvLd=w@|i%Zzc*-343e0U!^img4Spq-&yl_ zs(g)^i$?Q9dNeg3f;7RUn)^Sfa#uPZMpw~IIn1ygsVFMXXxt}LZx}(Uagd4;oSAd^o&OB{{`2z}5gk%HO)){Go-;CgQ&ZZ$@~7r|Pr7MJ z2r67yA1!le*#q-U_d@o3K{3@w{OR)G%y*SNI1*HQH$nPHc9f^OL;1|M9pCbmV|#)s zI^nZ9maeBfU)nusp7fElF+nfe8c8h2mgjwPT+~na(=m2ZPnE6wV?nPPs}28er`bXE z=T2W{DNY503@QqWH=3Oc3EDC!Nhw}!8^UZ|+L1FUp>8iGvJ3Wy8xgN6IXs(We0PkPGcEs>JMiM1XAXXBQY;*AW z<^nZy*uCW8?CnBcK3jU(GiT!V#r~#HGE^FXV`BL8LfdP=aEt8N4(+ zwi~c9R!>`Kr!AC&&EnjkEBJ20`=WD+>a8D?Z?$JsYTchvx%FU1l~ye=qv|)ETgSJq z^Ec5ikJ<&~7io)1RKxcg&JRJsQP=4PEUyA8UNK8d?=cNi*ZC$+=#O>HNwNhPwemw3V1HG2W_ zj4Jh^4^^c;^dIn0Ra8Q$RMAR(?f)oJ|3uX@v+MP`I0&VRl--#7;t(|1$3S~(|a0T2j`K9rtFskWqUr^;Io<%UTh^su?r zsL4B>wq(i#;zdp0P8l6tQMVuH(vJL8(;uanOsb*ja_WvpIzu2*u~bvpk=GSN*=oy6 zs;Zfisc5P}V4}#pJxfXMW~w3^nx!{n)b!6Os$$L)@I_#j%FC7a55WMYdza7ri9CmUhRtUmn z0_%#3WjCp!np!^tqBeUNh5Gmt@1_Ai7}(5~5u;C}wj~?Ug}Cz<3&Is_;lFrj0#6lKjEO z&1QVLyjH43`-Vtz(q3m0Ox0upS&!TQS(a`to3hcs6IEc&@PT7>hQN`kDK#G98R;DFAMnn5pr}px86WUh zz0`gC@N{+twBgQy6c65*Ul6!r$Zfo1(JA{#?yEsJ<-K8J&mA0rRenWUQP`d5uzh(; zveSmZ^uWuRVd5dJu{7fSs(b6pAi;5{;>{4x8+ORzGk`1h3_4G|XW{BFu2T3U_!Osp zfzZ$RG6WwuLV#~0_#UzaU=%*Y6`p`_6s3-F*)eY9ISA+oU^0AsRrn2jb>H+Jj8{v- z>*2a@G*nItQ?KAmJP{H0fWG94%t;v40FC+3*a(c_)#3zqIBOeo9HLqH7%rk?ADo9M z#L)Q&9ET~G#+?X;7l#B|B9P>07^**T&9LUfm(pU8M-;Eth3RTtj0n}bKT)j*!ZX#h zKj1`I7ck7aIJ!};`&qyN7H~w2`1fG;M>J$-#SZus8b1vb&cF@)&oWf8ow)($;W~!N z(wavZ7BG8D;~OhW9x^b8HUwDWa745+$>I1>+J+NA?W_yuwF74{Jf9W=91epaAPf;P z`Qryfaslm5!UU#w79;5)S#*&sx=0pXB#SPRMHk7OgJi-*GV4LIh)BDPxyc#x3OzH% zTnjHFRq{W;NchuLPLe%XeHkuyY4i>b`8ZL}aBj!(mqP*_CXq##U>q)E56mDxu5eKE z$bEF>g1QEu@$#_W8#bTD;Vc%B73!SJtZA27Rn+zY8N-^?V9iCc&XIhNNSOIV`16wJ zVOm-cz1&KR3>|hrL>$lq*U|nBY_Bv@A>)ZT;l`YB3z2XN;X}%>=zXYniql6x?IXM! RL=3WyK@Gt@xA!*y{slFX>xlXpH9Xddu-atwN=N)vo2Q3K$bmHi z^&xv55P>n;K-e{X4^jH`akG zE9_JQw~5@feAbqf?d&>0#pbZj8K}8J+S0Dc9D*M@cnif3bi{7xG$l<}ocbtpZ(One4Ng8RH2?qr literal 0 HcmV?d00001 diff --git a/SpringBootHomework/target/classes/com/cy/repository/UserRepository.class b/SpringBootHomework/target/classes/com/cy/repository/UserRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..8d34051162764cbd9b890e3fbe09a096f388b64c GIT binary patch literal 579 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 G;Qs>^LTyk0 literal 0 HcmV?d00001 diff --git a/SpringBootHomework/target/classes/static/assets/images/big/img1.jpg b/SpringBootHomework/target/classes/static/assets/images/big/img1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9c4a8c60f17894975660c3ac7658e9c595fb2d56 GIT binary patch literal 64932 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£K5Sw;JN}e5bdkIFYL9t!su}Gnn?(&?JbG7kze& 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𓑤>ljE|4f62=3Hblzk5Gu3?{{Z6wjDdI5 z_E%jn*G;-iJw`tbfs29rO0w+rW&Z$^CQM~6;rv^o-d!%%)@fnY2^jj`vw}Am^e4d@ z=3X}y#MXCNjxr?MOzr|i$HP@JmulWG9Q8Zq!4fK0K5ig~=9n`aVk++35ie)qDp`^OT`sNG6$-F;|U!~xH73wPeP&&707izngWa;q6S0{ z#Zhk;^HdW8f^7+bVz`vREwCCU0O&de10xqyS)_GL2q04cga>pMApy`TEQp{368b13 z9_THiLSO-jKq3da3Sj!GQEAy$P@s_k0RTHH2uH~QZP5h*su>dm1mLJ9o(hOVj*1Ea z1du>61<)`>kY1{YOq3H;5CVcS3UYvCf(KAr$xss9fJ{jU0KmEn*icVR1$t%BSgFua zs2~Ablo#n2L0dIJTSK6ur(^`~5D7n$0F$?h1(PGxAQ2=Aovd4_Kr*nmLV&=Lk4;c! zol&>%@VgAy8CXf&KEh0m0swUmw5LJ zRz8SKNa_b;rpO6GhtS#4T=*s1B7iTGvAV&E__9$X9OCrfW`OJ+-)fXkoe<{`9 zRdQsR!Q4B^)J%lHX#G6AQz?*{MkI*Iz9$N@i?i9!!_oU+I{Pe$1ea30w!WXn`i8ifJFawftBEQGh&N;e zVo*)8XJr9E%fSGdOi!Xw36jlNqZR6+zckkMkgBqOJ_D(j_pNK~V}}R~qHv zq5}|N(E$p>I;K)o_fStvo`C@X0AdhWhzf{nbpgf$qbhfK@ z@t^+yEAdv z2lSvB^pd1W_V_Chv-BUw{SivDrC$%`lnClk3$y4y6aI)WWOe)zrwf|@0L4FnQH{Ui z`Ce!L0L!1na@q0s`E)S41c>@yvOcJO3sik;j{gA1AA;vm(yOA1&^sU?fRsdsL{OfJ z2s~3OyAN^;BF@5k(X_Ain4=1%(B8pq+xM8K5Yr7&|KxiYZ95^q>RLC;`<# wWmO+#5EgY+K`x;{=&Fe>s)~LffD+H$ZDhi*+27Ys{jB1 literal 0 HcmV?d00001 diff --git a/SpringBootHomework/target/classes/static/assets/images/big/img2.jpg b/SpringBootHomework/target/classes/static/assets/images/big/img2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b282e6d6079d5e1a740f468e3d0e3dacfbedac13 GIT binary patch literal 124425 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

    m|NS@?X7cN>jy<@qDoG|?s)sV^#e0EJ%kt= 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%0D$rh8}hlnD;GDpU1OzQz6ST& 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

    Y48Z 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 literal 0 HcmV?d00001 diff --git a/SpringBootHomework/target/classes/static/assets/images/custom-select.png b/SpringBootHomework/target/classes/static/assets/images/custom-select.png new file mode 100644 index 0000000000000000000000000000000000000000..5a5f9f487b381da6f162a7162a205923adee0875 GIT binary patch literal 14991 zcmeI3Ux*t;9LML7`seE5Lo5D4?7CHHt;zmLa=EOVw0B9)J2dTiz0x}@ZTEKPF3Tmm z>+W8YI}nPBS`b8`D59W`iU6>Cf@Wp2Z>4Sp$q_ew8_Loi4IiZgeNb<|f z_xGKh&-`YxFMDC(=#vxU_m3llCg$fVi{$%G^1ki%Tgj*T*~br)uREN%6%V1^dxG~E zdgtAH5h}cAE-m}ZwWk%`Zl*QEUd8El(;;e-cDU_m`Udv7RlIImMgIDiU-O)46#0|6 znpktnxNgpEyZHF_(ItI*LoXQo;nKL;R)|3p`x@77HY`tR7x~avA#uz+9}Lucb>`J{dIMQrhaI6Pv^7VN(xNaTsaCsjTC+Jc)AJW`JhPz# zdP`dl78bE*Z@M}r^8Ldu!Sk!<$do#Wc3@OJhb@1om7({1oK3e8f;MykH*k}rc!Yv9 zbS_Ta_HD0jj{w-~9*NO6*G8}idPb(CFr9|eQHcf*}#K_5baxEpw zlQ@-;vwBJsF;3;OlAO=1l8F~G;UxRh2dpc$z8Mr!$J!v)(^FHDB*tRE;+A>@~loxp;b=?1-J5M3HNM+Gu;du378YC<$G1-G*d} zDg;Z{F#A_7YVBXpZV?U^fNJQ3~@=BX;5Q^i;4&e7%oVI8Z%r}L{PwRK^oMU;i4jf0)`9HpvDXr6%iCLT#yDe zX1J(`pn&0mG^jDdMMVS!3>Tz9jTtT~A}C8Ps4>GuMFa&57oe)G(gS)y&sSEiTRKfmg-v$ba|});k5~$f8xLguUx+Sfh!YVUA*wjwWm(E{&F6w@!$S(YVPyh=E9Nd z`su&F`R>#$hrU1X{;oft_20;Ee6h0fTi Zp)=NrV`uK$_YoNv%~y|BKAAcD!hhb5Hb4LX literal 0 HcmV?d00001 diff --git a/SpringBootHomework/target/classes/static/assets/images/favicon.png b/SpringBootHomework/target/classes/static/assets/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..7e5c0dc0e1ff6fd151b10f8964ee6e45d3c92de1 GIT binary patch literal 817737 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

    ZW(g0Z` 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�gfxmIPlP(e2~warl>G76EP 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 literal 0 HcmV?d00001 diff --git a/SpringBootHomework/target/classes/static/assets/images/users/2.jpg b/SpringBootHomework/target/classes/static/assets/images/users/2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0fc35cc4d6359383ab2afbcfe1771ecde2c497f2 GIT binary patch literal 101308 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 literal 0 HcmV?d00001 diff --git a/SpringBootHomework/target/classes/static/assets/images/users/5.jpg b/SpringBootHomework/target/classes/static/assets/images/users/5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..da41991a3057985ceb9ef8be678d774e2f0fe050 GIT binary patch literal 73888 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 o*0XBI+Sco<)W2%Grgm3l$qwxDVapha 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 literal 0 HcmV?d00001 diff --git a/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-grid.css b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-grid.css new file mode 100644 index 0000000..08a1cc1 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-grid.css @@ -0,0 +1,1339 @@ +@-ms-viewport { + width: device-width; +} + +html { + -webkit-box-sizing: border-box; + box-sizing: border-box; + -ms-overflow-style: scrollbar; +} + +*, +*::before, +*::after { + -webkit-box-sizing: inherit; + box-sizing: inherit; +} + +.container { + position: relative; + margin-left: auto; + margin-right: auto; + padding-right: 15px; + padding-left: 15px; +} + +@media (min-width: 576px) { + .container { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 768px) { + .container { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 992px) { + .container { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 1200px) { + .container { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 576px) { + .container { + width: 540px; + max-width: 100%; + } +} + +@media (min-width: 768px) { + .container { + width: 720px; + max-width: 100%; + } +} + +@media (min-width: 992px) { + .container { + width: 960px; + max-width: 100%; + } +} + +@media (min-width: 1200px) { + .container { + width: 1140px; + max-width: 100%; + } +} + +.container-fluid { + position: relative; + margin-left: auto; + margin-right: auto; + padding-right: 15px; + padding-left: 15px; +} + +@media (min-width: 576px) { + .container-fluid { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 768px) { + .container-fluid { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 992px) { + .container-fluid { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 1200px) { + .container-fluid { + padding-right: 15px; + padding-left: 15px; + } +} + +.row { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -15px; + margin-left: -15px; +} + +@media (min-width: 576px) { + .row { + margin-right: -15px; + margin-left: -15px; + } +} + +@media (min-width: 768px) { + .row { + margin-right: -15px; + margin-left: -15px; + } +} + +@media (min-width: 992px) { + .row { + margin-right: -15px; + margin-left: -15px; + } +} + +@media (min-width: 1200px) { + .row { + margin-right: -15px; + margin-left: -15px; + } +} + +.no-gutters { + margin-right: 0; + margin-left: 0; +} + +.no-gutters > .col, +.no-gutters > [class*="col-"] { + padding-right: 0; + padding-left: 0; +} + +.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { + position: relative; + width: 100%; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} + +@media (min-width: 576px) { + .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 768px) { + .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 992px) { + .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 1200px) { + .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { + padding-right: 15px; + padding-left: 15px; + } +} + +.col { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; +} + +.col-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; +} + +.col-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; +} + +.col-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; +} + +.col-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; +} + +.col-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; +} + +.col-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; +} + +.col-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; +} + +.col-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; +} + +.col-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; +} + +.col-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; +} + +.col-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; +} + +.col-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; +} + +.col-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; +} + +.pull-0 { + right: auto; +} + +.pull-1 { + right: 8.333333%; +} + +.pull-2 { + right: 16.666667%; +} + +.pull-3 { + right: 25%; +} + +.pull-4 { + right: 33.333333%; +} + +.pull-5 { + right: 41.666667%; +} + +.pull-6 { + right: 50%; +} + +.pull-7 { + right: 58.333333%; +} + +.pull-8 { + right: 66.666667%; +} + +.pull-9 { + right: 75%; +} + +.pull-10 { + right: 83.333333%; +} + +.pull-11 { + right: 91.666667%; +} + +.pull-12 { + right: 100%; +} + +.push-0 { + left: auto; +} + +.push-1 { + left: 8.333333%; +} + +.push-2 { + left: 16.666667%; +} + +.push-3 { + left: 25%; +} + +.push-4 { + left: 33.333333%; +} + +.push-5 { + left: 41.666667%; +} + +.push-6 { + left: 50%; +} + +.push-7 { + left: 58.333333%; +} + +.push-8 { + left: 66.666667%; +} + +.push-9 { + left: 75%; +} + +.push-10 { + left: 83.333333%; +} + +.push-11 { + left: 91.666667%; +} + +.push-12 { + left: 100%; +} + +.offset-1 { + margin-left: 8.333333%; +} + +.offset-2 { + margin-left: 16.666667%; +} + +.offset-3 { + margin-left: 25%; +} + +.offset-4 { + margin-left: 33.333333%; +} + +.offset-5 { + margin-left: 41.666667%; +} + +.offset-6 { + margin-left: 50%; +} + +.offset-7 { + margin-left: 58.333333%; +} + +.offset-8 { + margin-left: 66.666667%; +} + +.offset-9 { + margin-left: 75%; +} + +.offset-10 { + margin-left: 83.333333%; +} + +.offset-11 { + margin-left: 91.666667%; +} + +@media (min-width: 576px) { + .col-sm { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-sm-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .col-sm-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-sm-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-sm-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-sm-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-sm-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-sm-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-sm-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-sm-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-sm-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-sm-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-sm-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-sm-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .pull-sm-0 { + right: auto; + } + .pull-sm-1 { + right: 8.333333%; + } + .pull-sm-2 { + right: 16.666667%; + } + .pull-sm-3 { + right: 25%; + } + .pull-sm-4 { + right: 33.333333%; + } + .pull-sm-5 { + right: 41.666667%; + } + .pull-sm-6 { + right: 50%; + } + .pull-sm-7 { + right: 58.333333%; + } + .pull-sm-8 { + right: 66.666667%; + } + .pull-sm-9 { + right: 75%; + } + .pull-sm-10 { + right: 83.333333%; + } + .pull-sm-11 { + right: 91.666667%; + } + .pull-sm-12 { + right: 100%; + } + .push-sm-0 { + left: auto; + } + .push-sm-1 { + left: 8.333333%; + } + .push-sm-2 { + left: 16.666667%; + } + .push-sm-3 { + left: 25%; + } + .push-sm-4 { + left: 33.333333%; + } + .push-sm-5 { + left: 41.666667%; + } + .push-sm-6 { + left: 50%; + } + .push-sm-7 { + left: 58.333333%; + } + .push-sm-8 { + left: 66.666667%; + } + .push-sm-9 { + left: 75%; + } + .push-sm-10 { + left: 83.333333%; + } + .push-sm-11 { + left: 91.666667%; + } + .push-sm-12 { + left: 100%; + } + .offset-sm-0 { + margin-left: 0%; + } + .offset-sm-1 { + margin-left: 8.333333%; + } + .offset-sm-2 { + margin-left: 16.666667%; + } + .offset-sm-3 { + margin-left: 25%; + } + .offset-sm-4 { + margin-left: 33.333333%; + } + .offset-sm-5 { + margin-left: 41.666667%; + } + .offset-sm-6 { + margin-left: 50%; + } + .offset-sm-7 { + margin-left: 58.333333%; + } + .offset-sm-8 { + margin-left: 66.666667%; + } + .offset-sm-9 { + margin-left: 75%; + } + .offset-sm-10 { + margin-left: 83.333333%; + } + .offset-sm-11 { + margin-left: 91.666667%; + } +} + +@media (min-width: 768px) { + .col-md { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-md-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .col-md-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-md-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-md-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-md-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-md-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-md-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-md-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-md-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-md-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-md-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-md-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-md-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .pull-md-0 { + right: auto; + } + .pull-md-1 { + right: 8.333333%; + } + .pull-md-2 { + right: 16.666667%; + } + .pull-md-3 { + right: 25%; + } + .pull-md-4 { + right: 33.333333%; + } + .pull-md-5 { + right: 41.666667%; + } + .pull-md-6 { + right: 50%; + } + .pull-md-7 { + right: 58.333333%; + } + .pull-md-8 { + right: 66.666667%; + } + .pull-md-9 { + right: 75%; + } + .pull-md-10 { + right: 83.333333%; + } + .pull-md-11 { + right: 91.666667%; + } + .pull-md-12 { + right: 100%; + } + .push-md-0 { + left: auto; + } + .push-md-1 { + left: 8.333333%; + } + .push-md-2 { + left: 16.666667%; + } + .push-md-3 { + left: 25%; + } + .push-md-4 { + left: 33.333333%; + } + .push-md-5 { + left: 41.666667%; + } + .push-md-6 { + left: 50%; + } + .push-md-7 { + left: 58.333333%; + } + .push-md-8 { + left: 66.666667%; + } + .push-md-9 { + left: 75%; + } + .push-md-10 { + left: 83.333333%; + } + .push-md-11 { + left: 91.666667%; + } + .push-md-12 { + left: 100%; + } + .offset-md-0 { + margin-left: 0%; + } + .offset-md-1 { + margin-left: 8.333333%; + } + .offset-md-2 { + margin-left: 16.666667%; + } + .offset-md-3 { + margin-left: 25%; + } + .offset-md-4 { + margin-left: 33.333333%; + } + .offset-md-5 { + margin-left: 41.666667%; + } + .offset-md-6 { + margin-left: 50%; + } + .offset-md-7 { + margin-left: 58.333333%; + } + .offset-md-8 { + margin-left: 66.666667%; + } + .offset-md-9 { + margin-left: 75%; + } + .offset-md-10 { + margin-left: 83.333333%; + } + .offset-md-11 { + margin-left: 91.666667%; + } +} + +@media (min-width: 992px) { + .col-lg { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-lg-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .col-lg-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-lg-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-lg-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-lg-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-lg-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-lg-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-lg-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-lg-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-lg-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-lg-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-lg-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-lg-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .pull-lg-0 { + right: auto; + } + .pull-lg-1 { + right: 8.333333%; + } + .pull-lg-2 { + right: 16.666667%; + } + .pull-lg-3 { + right: 25%; + } + .pull-lg-4 { + right: 33.333333%; + } + .pull-lg-5 { + right: 41.666667%; + } + .pull-lg-6 { + right: 50%; + } + .pull-lg-7 { + right: 58.333333%; + } + .pull-lg-8 { + right: 66.666667%; + } + .pull-lg-9 { + right: 75%; + } + .pull-lg-10 { + right: 83.333333%; + } + .pull-lg-11 { + right: 91.666667%; + } + .pull-lg-12 { + right: 100%; + } + .push-lg-0 { + left: auto; + } + .push-lg-1 { + left: 8.333333%; + } + .push-lg-2 { + left: 16.666667%; + } + .push-lg-3 { + left: 25%; + } + .push-lg-4 { + left: 33.333333%; + } + .push-lg-5 { + left: 41.666667%; + } + .push-lg-6 { + left: 50%; + } + .push-lg-7 { + left: 58.333333%; + } + .push-lg-8 { + left: 66.666667%; + } + .push-lg-9 { + left: 75%; + } + .push-lg-10 { + left: 83.333333%; + } + .push-lg-11 { + left: 91.666667%; + } + .push-lg-12 { + left: 100%; + } + .offset-lg-0 { + margin-left: 0%; + } + .offset-lg-1 { + margin-left: 8.333333%; + } + .offset-lg-2 { + margin-left: 16.666667%; + } + .offset-lg-3 { + margin-left: 25%; + } + .offset-lg-4 { + margin-left: 33.333333%; + } + .offset-lg-5 { + margin-left: 41.666667%; + } + .offset-lg-6 { + margin-left: 50%; + } + .offset-lg-7 { + margin-left: 58.333333%; + } + .offset-lg-8 { + margin-left: 66.666667%; + } + .offset-lg-9 { + margin-left: 75%; + } + .offset-lg-10 { + margin-left: 83.333333%; + } + .offset-lg-11 { + margin-left: 91.666667%; + } +} + +@media (min-width: 1200px) { + .col-xl { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-xl-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .col-xl-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-xl-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-xl-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-xl-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-xl-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-xl-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-xl-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-xl-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-xl-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-xl-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-xl-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-xl-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .pull-xl-0 { + right: auto; + } + .pull-xl-1 { + right: 8.333333%; + } + .pull-xl-2 { + right: 16.666667%; + } + .pull-xl-3 { + right: 25%; + } + .pull-xl-4 { + right: 33.333333%; + } + .pull-xl-5 { + right: 41.666667%; + } + .pull-xl-6 { + right: 50%; + } + .pull-xl-7 { + right: 58.333333%; + } + .pull-xl-8 { + right: 66.666667%; + } + .pull-xl-9 { + right: 75%; + } + .pull-xl-10 { + right: 83.333333%; + } + .pull-xl-11 { + right: 91.666667%; + } + .pull-xl-12 { + right: 100%; + } + .push-xl-0 { + left: auto; + } + .push-xl-1 { + left: 8.333333%; + } + .push-xl-2 { + left: 16.666667%; + } + .push-xl-3 { + left: 25%; + } + .push-xl-4 { + left: 33.333333%; + } + .push-xl-5 { + left: 41.666667%; + } + .push-xl-6 { + left: 50%; + } + .push-xl-7 { + left: 58.333333%; + } + .push-xl-8 { + left: 66.666667%; + } + .push-xl-9 { + left: 75%; + } + .push-xl-10 { + left: 83.333333%; + } + .push-xl-11 { + left: 91.666667%; + } + .push-xl-12 { + left: 100%; + } + .offset-xl-0 { + margin-left: 0%; + } + .offset-xl-1 { + margin-left: 8.333333%; + } + .offset-xl-2 { + margin-left: 16.666667%; + } + .offset-xl-3 { + margin-left: 25%; + } + .offset-xl-4 { + margin-left: 33.333333%; + } + .offset-xl-5 { + margin-left: 41.666667%; + } + .offset-xl-6 { + margin-left: 50%; + } + .offset-xl-7 { + margin-left: 58.333333%; + } + .offset-xl-8 { + margin-left: 66.666667%; + } + .offset-xl-9 { + margin-left: 75%; + } + .offset-xl-10 { + margin-left: 83.333333%; + } + .offset-xl-11 { + margin-left: 91.666667%; + } +} +/*# sourceMappingURL=bootstrap-grid.css.map */ \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-grid.css.map b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-grid.css.map new file mode 100644 index 0000000..058beb4 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-grid.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/bootstrap-grid.scss","bootstrap-grid.css","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/mixins/_grid-framework.scss"],"names":[],"mappings":"AAUE;EAAgB,oBAAmB;CCRpC;;ADWD;EACE,+BAAsB;UAAtB,uBAAsB;EACtB,8BAA6B;CAC9B;;AAED;;;EAGE,4BAAmB;UAAnB,oBAAmB;CACpB;;AEjBC;ECAA,mBAAkB;EAClB,kBAAiB;EACjB,mBAAkB;EAKd,oBAA4B;EAC5B,mBAA4B;CDL/B;;AEgDC;EFnDF;ICOI,oBAA4B;IAC5B,mBAA4B;GDL/B;CDoBF;;AG4BG;EFnDF;ICOI,oBAA4B;IAC5B,mBAA4B;GDL/B;CD2BF;;AGqBG;EFnDF;ICOI,oBAA4B;IAC5B,mBAA4B;GDL/B;CDkCF;;AGcG;EFnDF;ICOI,oBAA4B;IAC5B,mBAA4B;GDL/B;CDyCF;;AGOG;EFnDF;ICkBI,aEqMK;IFpML,gBAAe;GDhBlB;CDgDF;;AGAG;EFnDF;ICkBI,aEsMK;IFrML,gBAAe;GDhBlB;CDuDF;;AGPG;EFnDF;ICkBI,aEuMK;IFtML,gBAAe;GDhBlB;CD8DF;;AGdG;EFnDF;ICkBI,cEwMM;IFvMN,gBAAe;GDhBlB;CDqEF;;AC5DC;ECZA,mBAAkB;EAClB,kBAAiB;EACjB,mBAAkB;EAKd,oBAA4B;EAC5B,mBAA4B;CDM/B;;AEqCC;EFvCF;ICLI,oBAA4B;IAC5B,mBAA4B;GDM/B;CDyEF;;AGpCG;EFvCF;ICLI,oBAA4B;IAC5B,mBAA4B;GDM/B;CDgFF;;AG3CG;EFvCF;ICLI,oBAA4B;IAC5B,mBAA4B;GDM/B;CDuFF;;AGlDG;EFvCF;ICLI,oBAA4B;IAC5B,mBAA4B;GDM/B;CD8FF;;ACtFC;ECaA,qBAAa;EAAb,sBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,wBAAe;MAAf,oBAAe;UAAf,gBAAe;EAKX,oBAA4B;EAC5B,mBAA4B;CDlB/B;;AE2BC;EF7BF;ICmBI,oBAA4B;IAC5B,mBAA4B;GDlB/B;CDkGF;;AGvEG;EF7BF;ICmBI,oBAA4B;IAC5B,mBAA4B;GDlB/B;CDyGF;;AG9EG;EF7BF;ICmBI,oBAA4B;IAC5B,mBAA4B;GDlB/B;CDgHF;;AGrFG;EF7BF;ICmBI,oBAA4B;IAC5B,mBAA4B;GDlB/B;CDuHF;;ACnHC;EACE,gBAAe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AiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,WAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,WAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,WAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,YAAiD;GGrCxC;EAFD;IHmCR,WAAsD;GGjC7C;EAFD;IHmCR,gBAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,UAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,UAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,UAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,WAAgD;GGjCvC;EAOD;IHsBR,gBAAyC;GGpBhC;EAFD;IHsBR,uBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,iBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,iBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,iBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;CL2hCV","file":"bootstrap-grid.css","sourcesContent":[null,"@-ms-viewport {\n width: device-width;\n}\n\nhtml {\n box-sizing: border-box;\n -ms-overflow-style: scrollbar;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n.container {\n position: relative;\n margin-left: auto;\n margin-right: auto;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 576px) {\n .container {\n width: 540px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n width: 720px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n width: 960px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n width: 1140px;\n max-width: 100%;\n }\n}\n\n.container-fluid {\n position: relative;\n margin-left: auto;\n margin-right: auto;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n.row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n@media (min-width: 576px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 768px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 992px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 1200px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl {\n position: relative;\n width: 100%;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n.col {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.pull-0 {\n right: auto;\n}\n\n.pull-1 {\n right: 8.333333%;\n}\n\n.pull-2 {\n right: 16.666667%;\n}\n\n.pull-3 {\n right: 25%;\n}\n\n.pull-4 {\n right: 33.333333%;\n}\n\n.pull-5 {\n right: 41.666667%;\n}\n\n.pull-6 {\n right: 50%;\n}\n\n.pull-7 {\n right: 58.333333%;\n}\n\n.pull-8 {\n right: 66.666667%;\n}\n\n.pull-9 {\n right: 75%;\n}\n\n.pull-10 {\n right: 83.333333%;\n}\n\n.pull-11 {\n right: 91.666667%;\n}\n\n.pull-12 {\n right: 100%;\n}\n\n.push-0 {\n left: auto;\n}\n\n.push-1 {\n left: 8.333333%;\n}\n\n.push-2 {\n left: 16.666667%;\n}\n\n.push-3 {\n left: 25%;\n}\n\n.push-4 {\n left: 33.333333%;\n}\n\n.push-5 {\n left: 41.666667%;\n}\n\n.push-6 {\n left: 50%;\n}\n\n.push-7 {\n left: 58.333333%;\n}\n\n.push-8 {\n left: 66.666667%;\n}\n\n.push-9 {\n left: 75%;\n}\n\n.push-10 {\n left: 83.333333%;\n}\n\n.push-11 {\n left: 91.666667%;\n}\n\n.push-12 {\n left: 100%;\n}\n\n.offset-1 {\n margin-left: 8.333333%;\n}\n\n.offset-2 {\n margin-left: 16.666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.333333%;\n}\n\n.offset-5 {\n margin-left: 41.666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.333333%;\n}\n\n.offset-8 {\n margin-left: 66.666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.333333%;\n}\n\n.offset-11 {\n margin-left: 91.666667%;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-sm-0 {\n right: auto;\n }\n .pull-sm-1 {\n right: 8.333333%;\n }\n .pull-sm-2 {\n right: 16.666667%;\n }\n .pull-sm-3 {\n right: 25%;\n }\n .pull-sm-4 {\n right: 33.333333%;\n }\n .pull-sm-5 {\n right: 41.666667%;\n }\n .pull-sm-6 {\n right: 50%;\n }\n .pull-sm-7 {\n right: 58.333333%;\n }\n .pull-sm-8 {\n right: 66.666667%;\n }\n .pull-sm-9 {\n right: 75%;\n }\n .pull-sm-10 {\n right: 83.333333%;\n }\n .pull-sm-11 {\n right: 91.666667%;\n }\n .pull-sm-12 {\n right: 100%;\n }\n .push-sm-0 {\n left: auto;\n }\n .push-sm-1 {\n left: 8.333333%;\n }\n .push-sm-2 {\n left: 16.666667%;\n }\n .push-sm-3 {\n left: 25%;\n }\n .push-sm-4 {\n left: 33.333333%;\n }\n .push-sm-5 {\n left: 41.666667%;\n }\n .push-sm-6 {\n left: 50%;\n }\n .push-sm-7 {\n left: 58.333333%;\n }\n .push-sm-8 {\n left: 66.666667%;\n }\n .push-sm-9 {\n left: 75%;\n }\n .push-sm-10 {\n left: 83.333333%;\n }\n .push-sm-11 {\n left: 91.666667%;\n }\n .push-sm-12 {\n left: 100%;\n }\n .offset-sm-0 {\n margin-left: 0%;\n }\n .offset-sm-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-md-0 {\n right: auto;\n }\n .pull-md-1 {\n right: 8.333333%;\n }\n .pull-md-2 {\n right: 16.666667%;\n }\n .pull-md-3 {\n right: 25%;\n }\n .pull-md-4 {\n right: 33.333333%;\n }\n .pull-md-5 {\n right: 41.666667%;\n }\n .pull-md-6 {\n right: 50%;\n }\n .pull-md-7 {\n right: 58.333333%;\n }\n .pull-md-8 {\n right: 66.666667%;\n }\n .pull-md-9 {\n right: 75%;\n }\n .pull-md-10 {\n right: 83.333333%;\n }\n .pull-md-11 {\n right: 91.666667%;\n }\n .pull-md-12 {\n right: 100%;\n }\n .push-md-0 {\n left: auto;\n }\n .push-md-1 {\n left: 8.333333%;\n }\n .push-md-2 {\n left: 16.666667%;\n }\n .push-md-3 {\n left: 25%;\n }\n .push-md-4 {\n left: 33.333333%;\n }\n .push-md-5 {\n left: 41.666667%;\n }\n .push-md-6 {\n left: 50%;\n }\n .push-md-7 {\n left: 58.333333%;\n }\n .push-md-8 {\n left: 66.666667%;\n }\n .push-md-9 {\n left: 75%;\n }\n .push-md-10 {\n left: 83.333333%;\n }\n .push-md-11 {\n left: 91.666667%;\n }\n .push-md-12 {\n left: 100%;\n }\n .offset-md-0 {\n margin-left: 0%;\n }\n .offset-md-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-lg-0 {\n right: auto;\n }\n .pull-lg-1 {\n right: 8.333333%;\n }\n .pull-lg-2 {\n right: 16.666667%;\n }\n .pull-lg-3 {\n right: 25%;\n }\n .pull-lg-4 {\n right: 33.333333%;\n }\n .pull-lg-5 {\n right: 41.666667%;\n }\n .pull-lg-6 {\n right: 50%;\n }\n .pull-lg-7 {\n right: 58.333333%;\n }\n .pull-lg-8 {\n right: 66.666667%;\n }\n .pull-lg-9 {\n right: 75%;\n }\n .pull-lg-10 {\n right: 83.333333%;\n }\n .pull-lg-11 {\n right: 91.666667%;\n }\n .pull-lg-12 {\n right: 100%;\n }\n .push-lg-0 {\n left: auto;\n }\n .push-lg-1 {\n left: 8.333333%;\n }\n .push-lg-2 {\n left: 16.666667%;\n }\n .push-lg-3 {\n left: 25%;\n }\n .push-lg-4 {\n left: 33.333333%;\n }\n .push-lg-5 {\n left: 41.666667%;\n }\n .push-lg-6 {\n left: 50%;\n }\n .push-lg-7 {\n left: 58.333333%;\n }\n .push-lg-8 {\n left: 66.666667%;\n }\n .push-lg-9 {\n left: 75%;\n }\n .push-lg-10 {\n left: 83.333333%;\n }\n .push-lg-11 {\n left: 91.666667%;\n }\n .push-lg-12 {\n left: 100%;\n }\n .offset-lg-0 {\n margin-left: 0%;\n }\n .offset-lg-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-xl-0 {\n right: auto;\n }\n .pull-xl-1 {\n right: 8.333333%;\n }\n .pull-xl-2 {\n right: 16.666667%;\n }\n .pull-xl-3 {\n right: 25%;\n }\n .pull-xl-4 {\n right: 33.333333%;\n }\n .pull-xl-5 {\n right: 41.666667%;\n }\n .pull-xl-6 {\n right: 50%;\n }\n .pull-xl-7 {\n right: 58.333333%;\n }\n .pull-xl-8 {\n right: 66.666667%;\n }\n .pull-xl-9 {\n right: 75%;\n }\n .pull-xl-10 {\n right: 83.333333%;\n }\n .pull-xl-11 {\n right: 91.666667%;\n }\n .pull-xl-12 {\n right: 100%;\n }\n .push-xl-0 {\n left: auto;\n }\n .push-xl-1 {\n left: 8.333333%;\n }\n .push-xl-2 {\n left: 16.666667%;\n }\n .push-xl-3 {\n left: 25%;\n }\n .push-xl-4 {\n left: 33.333333%;\n }\n .push-xl-5 {\n left: 41.666667%;\n }\n .push-xl-6 {\n left: 50%;\n }\n .push-xl-7 {\n left: 58.333333%;\n }\n .push-xl-8 {\n left: 66.666667%;\n }\n .push-xl-9 {\n left: 75%;\n }\n .push-xl-10 {\n left: 83.333333%;\n }\n .push-xl-11 {\n left: 91.666667%;\n }\n .push-xl-12 {\n left: 100%;\n }\n .offset-xl-0 {\n margin-left: 0%;\n }\n .offset-xl-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11 {\n margin-left: 91.666667%;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */",null,null,null,null,null]} \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-grid.min.css b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-grid.min.css new file mode 100644 index 0000000..edb16cb --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-grid.min.css @@ -0,0 +1 @@ +@-ms-viewport{width:device-width}html{-webkit-box-sizing:border-box;box-sizing:border-box;-ms-overflow-style:scrollbar}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}.container{position:relative;margin-left:auto;margin-right:auto;padding-right:15px;padding-left:15px}@media (min-width:576px){.container{padding-right:15px;padding-left:15px}}@media (min-width:768px){.container{padding-right:15px;padding-left:15px}}@media (min-width:992px){.container{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.container{padding-right:15px;padding-left:15px}}@media (min-width:576px){.container{width:540px;max-width:100%}}@media (min-width:768px){.container{width:720px;max-width:100%}}@media (min-width:992px){.container{width:960px;max-width:100%}}@media (min-width:1200px){.container{width:1140px;max-width:100%}}.container-fluid{position:relative;margin-left:auto;margin-right:auto;padding-right:15px;padding-left:15px}@media (min-width:576px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:768px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:992px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.container-fluid{padding-right:15px;padding-left:15px}}.row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}@media (min-width:576px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:768px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:992px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:1200px){.row{margin-right:-15px;margin-left:-15px}}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}@media (min-width:576px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{padding-right:15px;padding-left:15px}}@media (min-width:768px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{padding-right:15px;padding-left:15px}}@media (min-width:992px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{padding-right:15px;padding-left:15px}}.col{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-0{right:auto}.pull-1{right:8.333333%}.pull-2{right:16.666667%}.pull-3{right:25%}.pull-4{right:33.333333%}.pull-5{right:41.666667%}.pull-6{right:50%}.pull-7{right:58.333333%}.pull-8{right:66.666667%}.pull-9{right:75%}.pull-10{right:83.333333%}.pull-11{right:91.666667%}.pull-12{right:100%}.push-0{left:auto}.push-1{left:8.333333%}.push-2{left:16.666667%}.push-3{left:25%}.push-4{left:33.333333%}.push-5{left:41.666667%}.push-6{left:50%}.push-7{left:58.333333%}.push-8{left:66.666667%}.push-9{left:75%}.push-10{left:83.333333%}.push-11{left:91.666667%}.push-12{left:100%}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-sm-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-sm-0{right:auto}.pull-sm-1{right:8.333333%}.pull-sm-2{right:16.666667%}.pull-sm-3{right:25%}.pull-sm-4{right:33.333333%}.pull-sm-5{right:41.666667%}.pull-sm-6{right:50%}.pull-sm-7{right:58.333333%}.pull-sm-8{right:66.666667%}.pull-sm-9{right:75%}.pull-sm-10{right:83.333333%}.pull-sm-11{right:91.666667%}.pull-sm-12{right:100%}.push-sm-0{left:auto}.push-sm-1{left:8.333333%}.push-sm-2{left:16.666667%}.push-sm-3{left:25%}.push-sm-4{left:33.333333%}.push-sm-5{left:41.666667%}.push-sm-6{left:50%}.push-sm-7{left:58.333333%}.push-sm-8{left:66.666667%}.push-sm-9{left:75%}.push-sm-10{left:83.333333%}.push-sm-11{left:91.666667%}.push-sm-12{left:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-md-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-md-0{right:auto}.pull-md-1{right:8.333333%}.pull-md-2{right:16.666667%}.pull-md-3{right:25%}.pull-md-4{right:33.333333%}.pull-md-5{right:41.666667%}.pull-md-6{right:50%}.pull-md-7{right:58.333333%}.pull-md-8{right:66.666667%}.pull-md-9{right:75%}.pull-md-10{right:83.333333%}.pull-md-11{right:91.666667%}.pull-md-12{right:100%}.push-md-0{left:auto}.push-md-1{left:8.333333%}.push-md-2{left:16.666667%}.push-md-3{left:25%}.push-md-4{left:33.333333%}.push-md-5{left:41.666667%}.push-md-6{left:50%}.push-md-7{left:58.333333%}.push-md-8{left:66.666667%}.push-md-9{left:75%}.push-md-10{left:83.333333%}.push-md-11{left:91.666667%}.push-md-12{left:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-lg-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-lg-0{right:auto}.pull-lg-1{right:8.333333%}.pull-lg-2{right:16.666667%}.pull-lg-3{right:25%}.pull-lg-4{right:33.333333%}.pull-lg-5{right:41.666667%}.pull-lg-6{right:50%}.pull-lg-7{right:58.333333%}.pull-lg-8{right:66.666667%}.pull-lg-9{right:75%}.pull-lg-10{right:83.333333%}.pull-lg-11{right:91.666667%}.pull-lg-12{right:100%}.push-lg-0{left:auto}.push-lg-1{left:8.333333%}.push-lg-2{left:16.666667%}.push-lg-3{left:25%}.push-lg-4{left:33.333333%}.push-lg-5{left:41.666667%}.push-lg-6{left:50%}.push-lg-7{left:58.333333%}.push-lg-8{left:66.666667%}.push-lg-9{left:75%}.push-lg-10{left:83.333333%}.push-lg-11{left:91.666667%}.push-lg-12{left:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-xl-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-xl-0{right:auto}.pull-xl-1{right:8.333333%}.pull-xl-2{right:16.666667%}.pull-xl-3{right:25%}.pull-xl-4{right:33.333333%}.pull-xl-5{right:41.666667%}.pull-xl-6{right:50%}.pull-xl-7{right:58.333333%}.pull-xl-8{right:66.666667%}.pull-xl-9{right:75%}.pull-xl-10{right:83.333333%}.pull-xl-11{right:91.666667%}.pull-xl-12{right:100%}.push-xl-0{left:auto}.push-xl-1{left:8.333333%}.push-xl-2{left:16.666667%}.push-xl-3{left:25%}.push-xl-4{left:33.333333%}.push-xl-5{left:41.666667%}.push-xl-6{left:50%}.push-xl-7{left:58.333333%}.push-xl-8{left:66.666667%}.push-xl-9{left:75%}.push-xl-10{left:83.333333%}.push-xl-11{left:91.666667%}.push-xl-12{left:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}/*# sourceMappingURL=bootstrap-grid.min.css.map */ \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-grid.min.css.map b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-grid.min.css.map new file mode 100644 index 0000000..edae8e6 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-grid.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/bootstrap-grid.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss"],"names":[],"mappings":"AAUE,cAAgB,MAAA,aAGlB,KACE,mBAAA,WAAA,WAAA,WACA,mBAAA,UAGF,EAAA,QAAA,SAGE,mBAAA,QAAA,WAAA,QChBA,WCAA,SAAA,SACA,YAAA,KACA,aAAA,KAKI,cAAA,KACA,aAAA,KC2CF,yBFnDF,WCOI,cAAA,KACA,aAAA,MC2CF,yBFnDF,WCOI,cAAA,KACA,aAAA,MC2CF,yBFnDF,WCOI,cAAA,KACA,aAAA,MC2CF,0BFnDF,WCOI,cAAA,KACA,aAAA,MC2CF,yBFnDF,WCkBI,MAAA,MACA,UAAA,MCgCF,yBFnDF,WCkBI,MAAA,MACA,UAAA,MCgCF,yBFnDF,WCkBI,MAAA,MACA,UAAA,MCgCF,0BFnDF,WCkBI,MAAA,OACA,UAAA,MDPJ,iBCZA,SAAA,SACA,YAAA,KACA,aAAA,KAKI,cAAA,KACA,aAAA,KC2CF,yBFvCF,iBCLI,cAAA,KACA,aAAA,MC2CF,yBFvCF,iBCLI,cAAA,KACA,aAAA,MC2CF,yBFvCF,iBCLI,cAAA,KACA,aAAA,MC2CF,0BFvCF,iBCLI,cAAA,KACA,aAAA,MDcJ,KCaA,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,kBAAA,KAAA,cAAA,KAAA,UAAA,KAKI,aAAA,MACA,YAAA,MCSF,yBF7BF,KCmBI,aAAA,MACA,YAAA,OCSF,yBF7BF,KCmBI,aAAA,MACA,YAAA,OCSF,yBF7BF,KCmBI,aAAA,MACA,YAAA,OCSF,0BF7BF,KCmBI,aAAA,MACA,YAAA,ODdJ,YACE,aAAA,EACA,YAAA,EAFF,iBAAA,0BAMI,cAAA,EACA,aAAA,EGjCJ,KAAA,OAAA,QAAA,QAAA,QAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UACE,SAAA,SACA,MAAA,KACA,WAAA,IFuBE,cAAA,KACA,aAAA,KCsBF,yBCjDF,KAAA,OAAA,QAAA,QAAA,QAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UF0BI,cAAA,KACA,aAAA,MCsBF,yBCjDF,KAAA,OAAA,QAAA,QAAA,QAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UF0BI,cAAA,KACA,aAAA,MCsBF,yBCjDF,KAAA,OAAA,QAAA,QAAA,QAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UF0BI,cAAA,KACA,aAAA,MCsBF,0BCjDF,KAAA,OAAA,QAAA,QAAA,QAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UF0BI,cAAA,KACA,aAAA,MEJA,KACE,mBAAA,EAAA,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,UACE,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KAIA,OF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,UAAA,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAKA,UAAA,UElCM,OF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,OF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,OF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,OF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,OF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,OF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,OF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,OF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,QF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,QF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,QF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAKA,UAAA,KE3BQ,QFuCR,MAAA,KEvCQ,QFuCR,MAAA,UEvCQ,QFuCR,MAAA,WEvCQ,QFuCR,MAAA,IEvCQ,QFuCR,MAAA,WEvCQ,QFuCR,MAAA,WEvCQ,QFuCR,MAAA,IEvCQ,QFuCR,MAAA,WEvCQ,QFuCR,MAAA,WEvCQ,QFuCR,MAAA,IEvCQ,SFuCR,MAAA,WEvCQ,SFuCR,MAAA,WEvCQ,SFuCR,MAAA,KEvCQ,QFmCR,KAAA,KEnCQ,QFmCR,KAAA,UEnCQ,QFmCR,KAAA,WEnCQ,QFmCR,KAAA,IEnCQ,QFmCR,KAAA,WEnCQ,QFmCR,KAAA,WEnCQ,QFmCR,KAAA,IEnCQ,QFmCR,KAAA,WEnCQ,QFmCR,KAAA,WEnCQ,QFmCR,KAAA,IEnCQ,SFmCR,KAAA,WEnCQ,SFmCR,KAAA,WEnCQ,SFmCR,KAAA,KE1BQ,UFsBR,YAAA,UEtBQ,UFsBR,YAAA,WEtBQ,UFsBR,YAAA,IEtBQ,UFsBR,YAAA,WEtBQ,UFsBR,YAAA,WEtBQ,UFsBR,YAAA,IEtBQ,UFsBR,YAAA,WEtBQ,UFsBR,YAAA,WEtBQ,UFsBR,YAAA,IEtBQ,WFsBR,YAAA,WEtBQ,WFsBR,YAAA,WCvBE,yBC1BE,QACE,mBAAA,EAAA,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KAIA,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,UAAA,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAKA,UAAA,UElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,WF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,WF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,WF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAKA,UAAA,KE3BQ,WFuCR,MAAA,KEvCQ,WFuCR,MAAA,UEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,IEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,IEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,IEvCQ,YFuCR,MAAA,WEvCQ,YFuCR,MAAA,WEvCQ,YFuCR,MAAA,KEvCQ,WFmCR,KAAA,KEnCQ,WFmCR,KAAA,UEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,IEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,IEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,IEnCQ,YFmCR,KAAA,WEnCQ,YFmCR,KAAA,WEnCQ,YFmCR,KAAA,KE1BQ,aFsBR,YAAA,EEtBQ,aFsBR,YAAA,UEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,IEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,IEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,IEtBQ,cFsBR,YAAA,WEtBQ,cFsBR,YAAA,YCvBE,yBC1BE,QACE,mBAAA,EAAA,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KAIA,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,UAAA,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAKA,UAAA,UElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,WF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,WF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,WF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAKA,UAAA,KE3BQ,WFuCR,MAAA,KEvCQ,WFuCR,MAAA,UEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,IEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,IEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,IEvCQ,YFuCR,MAAA,WEvCQ,YFuCR,MAAA,WEvCQ,YFuCR,MAAA,KEvCQ,WFmCR,KAAA,KEnCQ,WFmCR,KAAA,UEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,IEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,IEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,IEnCQ,YFmCR,KAAA,WEnCQ,YFmCR,KAAA,WEnCQ,YFmCR,KAAA,KE1BQ,aFsBR,YAAA,EEtBQ,aFsBR,YAAA,UEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,IEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,IEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,IEtBQ,cFsBR,YAAA,WEtBQ,cFsBR,YAAA,YCvBE,yBC1BE,QACE,mBAAA,EAAA,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KAIA,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,UAAA,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAKA,UAAA,UElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,WF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,WF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,WF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAKA,UAAA,KE3BQ,WFuCR,MAAA,KEvCQ,WFuCR,MAAA,UEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,IEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,IEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,IEvCQ,YFuCR,MAAA,WEvCQ,YFuCR,MAAA,WEvCQ,YFuCR,MAAA,KEvCQ,WFmCR,KAAA,KEnCQ,WFmCR,KAAA,UEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,IEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,IEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,IEnCQ,YFmCR,KAAA,WEnCQ,YFmCR,KAAA,WEnCQ,YFmCR,KAAA,KE1BQ,aFsBR,YAAA,EEtBQ,aFsBR,YAAA,UEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,IEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,IEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,IEtBQ,cFsBR,YAAA,WEtBQ,cFsBR,YAAA,YCvBE,0BC1BE,QACE,mBAAA,EAAA,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KAIA,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,UAAA,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAKA,UAAA,UElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,WF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,WF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,WF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAKA,UAAA,KE3BQ,WFuCR,MAAA,KEvCQ,WFuCR,MAAA,UEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,IEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,IEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,IEvCQ,YFuCR,MAAA,WEvCQ,YFuCR,MAAA,WEvCQ,YFuCR,MAAA,KEvCQ,WFmCR,KAAA,KEnCQ,WFmCR,KAAA,UEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,IEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,IEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,IEnCQ,YFmCR,KAAA,WEnCQ,YFmCR,KAAA,WEnCQ,YFmCR,KAAA,KE1BQ,aFsBR,YAAA,EEtBQ,aFsBR,YAAA,UEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,IEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,IEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,IEtBQ,cFsBR,YAAA,WEtBQ,cFsBR,YAAA"} \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-reboot.css b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-reboot.css new file mode 100644 index 0000000..89f687d --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-reboot.css @@ -0,0 +1,459 @@ +/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */ +html { + font-family: sans-serif; + line-height: 1.15; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} + +body { + margin: 0; +} + +article, +aside, +footer, +header, +nav, +section { + display: block; +} + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +figcaption, +figure, +main { + display: block; +} + +figure { + margin: 1em 40px; +} + +hr { + -webkit-box-sizing: content-box; + box-sizing: content-box; + height: 0; + overflow: visible; +} + +pre { + font-family: monospace, monospace; + font-size: 1em; +} + +a { + background-color: transparent; + -webkit-text-decoration-skip: objects; +} + +a:active, +a:hover { + outline-width: 0; +} + +abbr[title] { + border-bottom: none; + text-decoration: underline; + text-decoration: underline dotted; +} + +b, +strong { + font-weight: inherit; +} + +b, +strong { + font-weight: bolder; +} + +code, +kbd, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +dfn { + font-style: italic; +} + +mark { + background-color: #ff0; + color: #000; +} + +small { + font-size: 80%; +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +audio, +video { + display: inline-block; +} + +audio:not([controls]) { + display: none; + height: 0; +} + +img { + border-style: none; +} + +svg:not(:root) { + overflow: hidden; +} + +button, +input, +optgroup, +select, +textarea { + font-family: sans-serif; + font-size: 100%; + line-height: 1.15; + margin: 0; +} + +button, +input { + overflow: visible; +} + +button, +select { + text-transform: none; +} + +button, +html [type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +legend { + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: inherit; + display: table; + max-width: 100%; + padding: 0; + white-space: normal; +} + +progress { + display: inline-block; + vertical-align: baseline; +} + +textarea { + overflow: auto; +} + +[type="checkbox"], +[type="radio"] { + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +[type="search"] { + -webkit-appearance: textfield; + outline-offset: -2px; +} + +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; +} + +details, +menu { + display: block; +} + +summary { + display: list-item; +} + +canvas { + display: inline-block; +} + +template { + display: none; +} + +[hidden] { + display: none; +} + +html { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +*, +*::before, +*::after { + -webkit-box-sizing: inherit; + box-sizing: inherit; +} + +@-ms-viewport { + width: device-width; +} + +html { + -ms-overflow-style: scrollbar; + -webkit-tap-highlight-color: transparent; +} + +body { + font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + font-size: 1rem; + font-weight: normal; + line-height: 1.5; + color: #292b2c; + background-color: #fff; +} + +[tabindex="-1"]:focus { + outline: none !important; +} + +h1, h2, h3, h4, h5, h6 { + margin-top: 0; + margin-bottom: .5rem; +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +abbr[title], +abbr[data-original-title] { + cursor: help; +} + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: bold; +} + +dd { + margin-bottom: .5rem; + margin-left: 0; +} + +blockquote { + margin: 0 0 1rem; +} + +a { + color: #0275d8; + text-decoration: none; +} + +a:focus, a:hover { + color: #014c8c; + text-decoration: underline; +} + +a:not([href]):not([tabindex]) { + color: inherit; + text-decoration: none; +} + +a:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover { + color: inherit; + text-decoration: none; +} + +a:not([href]):not([tabindex]):focus { + outline: 0; +} + +pre { + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; +} + +figure { + margin: 0 0 1rem; +} + +img { + vertical-align: middle; +} + +[role="button"] { + cursor: pointer; +} + +a, +area, +button, +[role="button"], +input, +label, +select, +summary, +textarea { + -ms-touch-action: manipulation; + touch-action: manipulation; +} + +table { + border-collapse: collapse; + background-color: transparent; +} + +caption { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #636c72; + text-align: left; + caption-side: bottom; +} + +th { + text-align: left; +} + +label { + display: inline-block; + margin-bottom: .5rem; +} + +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; +} + +input, +button, +select, +textarea { + line-height: inherit; +} + +input[type="radio"]:disabled, +input[type="checkbox"]:disabled { + cursor: not-allowed; +} + +input[type="date"], +input[type="time"], +input[type="datetime-local"], +input[type="month"] { + -webkit-appearance: listbox; +} + +textarea { + resize: vertical; +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: .5rem; + font-size: 1.5rem; + line-height: inherit; +} + +input[type="search"] { + -webkit-appearance: none; +} + +output { + display: inline-block; +} + +[hidden] { + display: none !important; +} +/*# sourceMappingURL=bootstrap-reboot.css.map */ \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-reboot.css.map b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-reboot.css.map new file mode 100644 index 0000000..67c00c3 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-reboot.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/_normalize.scss","bootstrap-reboot.css","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_hover.scss"],"names":[],"mappings":"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","file":"bootstrap-reboot.css","sourcesContent":[null,"/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\n\nbody {\n margin: 0;\n}\n\narticle,\naside,\nfooter,\nheader,\nnav,\nsection {\n display: block;\n}\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\nfigcaption,\nfigure,\nmain {\n display: block;\n}\n\nfigure {\n margin: 1em 40px;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\npre {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\na {\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:active,\na:hover {\n outline-width: 0;\n}\n\nabbr[title] {\n border-bottom: none;\n text-decoration: underline;\n text-decoration: underline dotted;\n}\n\nb,\nstrong {\n font-weight: inherit;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\ndfn {\n font-style: italic;\n}\n\nmark {\n background-color: #ff0;\n color: #000;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\naudio,\nvideo {\n display: inline-block;\n}\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\nimg {\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: sans-serif;\n font-size: 100%;\n line-height: 1.15;\n margin: 0;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\nlegend {\n box-sizing: border-box;\n color: inherit;\n display: table;\n max-width: 100%;\n padding: 0;\n white-space: normal;\n}\n\nprogress {\n display: inline-block;\n vertical-align: baseline;\n}\n\ntextarea {\n overflow: auto;\n}\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n -webkit-appearance: button;\n font: inherit;\n}\n\ndetails,\nmenu {\n display: block;\n}\n\nsummary {\n display: list-item;\n}\n\ncanvas {\n display: inline-block;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none;\n}\n\nhtml {\n box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\nhtml {\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\nbody {\n font-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-size: 1rem;\n font-weight: normal;\n line-height: 1.5;\n color: #292b2c;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: none !important;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: .5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: bold;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\na {\n color: #0275d8;\n text-decoration: none;\n}\n\na:focus, a:hover {\n color: #014c8c;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n}\n\n[role=\"button\"] {\n cursor: pointer;\n}\n\na,\narea,\nbutton,\n[role=\"button\"],\ninput,\nlabel,\nselect,\nsummary,\ntextarea {\n touch-action: manipulation;\n}\n\ntable {\n border-collapse: collapse;\n background-color: transparent;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #636c72;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: left;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\ntextarea {\n line-height: inherit;\n}\n\ninput[type=\"radio\"]:disabled,\ninput[type=\"checkbox\"]:disabled {\n cursor: not-allowed;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n}\n\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n\noutput {\n display: inline-block;\n}\n\n[hidden] {\n display: none !important;\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */",null,null,null]} \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-reboot.min.css b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-reboot.min.css new file mode 100644 index 0000000..7bf2395 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-reboot.min.css @@ -0,0 +1 @@ +/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none}html{-webkit-box-sizing:border-box;box-sizing:border-box}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}@-ms-viewport{width:device-width}html{-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}body{font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#292b2c;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{cursor:help}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}a{color:#0275d8;text-decoration:none}a:focus,a:hover{color:#014c8c;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle}[role=button]{cursor:pointer}[role=button],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse;background-color:transparent}caption{padding-top:.75rem;padding-bottom:.75rem;color:#636c72;text-align:left;caption-side:bottom}th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,select,textarea{line-height:inherit}input[type=checkbox]:disabled,input[type=radio]:disabled{cursor:not-allowed}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit}input[type=search]{-webkit-appearance:none}output{display:inline-block}[hidden]{display:none!important}/*# sourceMappingURL=bootstrap-reboot.min.css.map */ \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-reboot.min.css.map b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-reboot.min.css.map new file mode 100644 index 0000000..fa2cf12 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap-reboot.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/_normalize.scss","bootstrap-reboot.css","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_hover.scss"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap.css b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap.css new file mode 100644 index 0000000..eda335e --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap.css @@ -0,0 +1,9320 @@ +/*! + * Bootstrap v4.0.0-alpha.6 (https://getbootstrap.com) + * Copyright 2011-2017 The Bootstrap Authors + * Copyright 2011-2017 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */ +html { + font-family: sans-serif; + line-height: 1.15; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} + +body { + margin: 0; +} + +article, +aside, +footer, +header, +nav, +section { + display: block; +} + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +figcaption, +figure, +main { + display: block; +} + +figure { + margin: 1em 40px; +} + +hr { + -webkit-box-sizing: content-box; + box-sizing: content-box; + height: 0; + overflow: visible; +} + +pre { + font-family: monospace, monospace; + font-size: 1em; +} + +a { + background-color: transparent; + -webkit-text-decoration-skip: objects; +} + +a:active, +a:hover { + outline-width: 0; +} + +abbr[title] { + border-bottom: none; + text-decoration: underline; + text-decoration: underline dotted; +} + +b, +strong { + font-weight: inherit; +} + +b, +strong { + font-weight: bolder; +} + +code, +kbd, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +dfn { + font-style: italic; +} + +mark { + background-color: #ff0; + color: #000; +} + +small { + font-size: 80%; +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +audio, +video { + display: inline-block; +} + +audio:not([controls]) { + display: none; + height: 0; +} + +img { + border-style: none; +} + +svg:not(:root) { + overflow: hidden; +} + +button, +input, +optgroup, +select, +textarea { + font-family: sans-serif; + font-size: 100%; + line-height: 1.15; + margin: 0; +} + +button, +input { + overflow: visible; +} + +button, +select { + text-transform: none; +} + +button, +html [type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +legend { + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: inherit; + display: table; + max-width: 100%; + padding: 0; + white-space: normal; +} + +progress { + display: inline-block; + vertical-align: baseline; +} + +textarea { + overflow: auto; +} + +[type="checkbox"], +[type="radio"] { + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +[type="search"] { + -webkit-appearance: textfield; + outline-offset: -2px; +} + +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; +} + +details, +menu { + display: block; +} + +summary { + display: list-item; +} + +canvas { + display: inline-block; +} + +template { + display: none; +} + +[hidden] { + display: none; +} + +@media print { + *, + *::before, + *::after, + p::first-letter, + div::first-letter, + blockquote::first-letter, + li::first-letter, + p::first-line, + div::first-line, + blockquote::first-line, + li::first-line { + text-shadow: none !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + abbr[title]::after { + content: " (" attr(title) ")"; + } + pre { + white-space: pre-wrap !important; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + .navbar { + display: none; + } + .badge { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} + +html { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +*, +*::before, +*::after { + -webkit-box-sizing: inherit; + box-sizing: inherit; +} + +@-ms-viewport { + width: device-width; +} + +html { + -ms-overflow-style: scrollbar; + -webkit-tap-highlight-color: transparent; +} + +body { + font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + font-size: 1rem; + font-weight: normal; + line-height: 1.5; + color: #292b2c; + background-color: #fff; +} + +[tabindex="-1"]:focus { + outline: none !important; +} + +h1, h2, h3, h4, h5, h6 { + margin-top: 0; + margin-bottom: .5rem; +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +abbr[title], +abbr[data-original-title] { + cursor: help; +} + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: bold; +} + +dd { + margin-bottom: .5rem; + margin-left: 0; +} + +blockquote { + margin: 0 0 1rem; +} + +a { + color: #0275d8; + text-decoration: none; +} + +a:focus, a:hover { + color: #014c8c; + text-decoration: underline; +} + +a:not([href]):not([tabindex]) { + color: inherit; + text-decoration: none; +} + +a:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover { + color: inherit; + text-decoration: none; +} + +a:not([href]):not([tabindex]):focus { + outline: 0; +} + +pre { + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; +} + +figure { + margin: 0 0 1rem; +} + +img { + vertical-align: middle; +} + +[role="button"] { + cursor: pointer; +} + +a, +area, +button, +[role="button"], +input, +label, +select, +summary, +textarea { + -ms-touch-action: manipulation; + touch-action: manipulation; +} + +table { + border-collapse: collapse; + background-color: transparent; +} + +caption { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #636c72; + text-align: left; + caption-side: bottom; +} + +th { + text-align: left; +} + +label { + display: inline-block; + margin-bottom: .5rem; +} + +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; +} + +input, +button, +select, +textarea { + line-height: inherit; +} + +input[type="radio"]:disabled, +input[type="checkbox"]:disabled { + cursor: not-allowed; +} + +input[type="date"], +input[type="time"], +input[type="datetime-local"], +input[type="month"] { + -webkit-appearance: listbox; +} + +textarea { + resize: vertical; +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: .5rem; + font-size: 1.5rem; + line-height: inherit; +} + +input[type="search"] { + -webkit-appearance: none; +} + +output { + display: inline-block; +} + +[hidden] { + display: none !important; +} + +h1, h2, h3, h4, h5, h6, +.h1, .h2, .h3, .h4, .h5, .h6 { + margin-bottom: 0.5rem; + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} + +h1, .h1 { + font-size: 2.5rem; +} + +h2, .h2 { + font-size: 2rem; +} + +h3, .h3 { + font-size: 1.75rem; +} + +h4, .h4 { + font-size: 1.5rem; +} + +h5, .h5 { + font-size: 1.25rem; +} + +h6, .h6 { + font-size: 1rem; +} + +.lead { + font-size: 1.25rem; + font-weight: 300; +} + +.display-1 { + font-size: 6rem; + font-weight: 300; + line-height: 1.1; +} + +.display-2 { + font-size: 5.5rem; + font-weight: 300; + line-height: 1.1; +} + +.display-3 { + font-size: 4.5rem; + font-weight: 300; + line-height: 1.1; +} + +.display-4 { + font-size: 3.5rem; + font-weight: 300; + line-height: 1.1; +} + +hr { + margin-top: 1rem; + margin-bottom: 1rem; + border: 0; + border-top: 1px solid rgba(0, 0, 0, 0.1); +} + +small, +.small { + font-size: 80%; + font-weight: normal; +} + +mark, +.mark { + padding: 0.2em; + background-color: #fcf8e3; +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} + +.list-inline { + padding-left: 0; + list-style: none; +} + +.list-inline-item { + display: inline-block; +} + +.list-inline-item:not(:last-child) { + margin-right: 5px; +} + +.initialism { + font-size: 90%; + text-transform: uppercase; +} + +.blockquote { + padding: 0.5rem 1rem; + margin-bottom: 1rem; + font-size: 1.25rem; + border-left: 0.25rem solid #eceeef; +} + +.blockquote-footer { + display: block; + font-size: 80%; + color: #636c72; +} + +.blockquote-footer::before { + content: "\2014 \00A0"; +} + +.blockquote-reverse { + padding-right: 1rem; + padding-left: 0; + text-align: right; + border-right: 0.25rem solid #eceeef; + border-left: 0; +} + +.blockquote-reverse .blockquote-footer::before { + content: ""; +} + +.blockquote-reverse .blockquote-footer::after { + content: "\00A0 \2014"; +} + +.img-fluid { + max-width: 100%; + height: auto; +} + +.img-thumbnail { + padding: 0.25rem; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 0.25rem; + -webkit-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + max-width: 100%; + height: auto; +} + +.figure { + display: inline-block; +} + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; +} + +.figure-caption { + font-size: 90%; + color: #636c72; +} + +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} + +code { + padding: 0.2rem 0.4rem; + font-size: 90%; + color: #bd4147; + background-color: #f7f7f9; + border-radius: 0.25rem; +} + +a > code { + padding: 0; + color: inherit; + background-color: inherit; +} + +kbd { + padding: 0.2rem 0.4rem; + font-size: 90%; + color: #fff; + background-color: #292b2c; + border-radius: 0.2rem; +} + +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; +} + +pre { + display: block; + margin-top: 0; + margin-bottom: 1rem; + font-size: 90%; + color: #292b2c; +} + +pre code { + padding: 0; + font-size: inherit; + color: inherit; + background-color: transparent; + border-radius: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +.container { + position: relative; + margin-left: auto; + margin-right: auto; + padding-right: 15px; + padding-left: 15px; +} + +@media (min-width: 576px) { + .container { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 768px) { + .container { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 992px) { + .container { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 1200px) { + .container { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 576px) { + .container { + width: 540px; + max-width: 100%; + } +} + +@media (min-width: 768px) { + .container { + width: 720px; + max-width: 100%; + } +} + +@media (min-width: 992px) { + .container { + width: 960px; + max-width: 100%; + } +} + +@media (min-width: 1200px) { + .container { + width: 1140px; + max-width: 100%; + } +} + +.container-fluid { + position: relative; + margin-left: auto; + margin-right: auto; + padding-right: 15px; + padding-left: 15px; +} + +@media (min-width: 576px) { + .container-fluid { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 768px) { + .container-fluid { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 992px) { + .container-fluid { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 1200px) { + .container-fluid { + padding-right: 15px; + padding-left: 15px; + } +} + +.row { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -15px; + margin-left: -15px; +} + +@media (min-width: 576px) { + .row { + margin-right: -15px; + margin-left: -15px; + } +} + +@media (min-width: 768px) { + .row { + margin-right: -15px; + margin-left: -15px; + } +} + +@media (min-width: 992px) { + .row { + margin-right: -15px; + margin-left: -15px; + } +} + +@media (min-width: 1200px) { + .row { + margin-right: -15px; + margin-left: -15px; + } +} + +.no-gutters { + margin-right: 0; + margin-left: 0; +} + +.no-gutters > .col, +.no-gutters > [class*="col-"] { + padding-right: 0; + padding-left: 0; +} + +.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { + position: relative; + width: 100%; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} + +@media (min-width: 576px) { + .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 768px) { + .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 992px) { + .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { + padding-right: 15px; + padding-left: 15px; + } +} + +@media (min-width: 1200px) { + .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { + padding-right: 15px; + padding-left: 15px; + } +} + +.col { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; +} + +.col-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; +} + +.col-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; +} + +.col-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; +} + +.col-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; +} + +.col-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; +} + +.col-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; +} + +.col-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; +} + +.col-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; +} + +.col-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; +} + +.col-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; +} + +.col-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; +} + +.col-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; +} + +.col-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; +} + +.pull-0 { + right: auto; +} + +.pull-1 { + right: 8.333333%; +} + +.pull-2 { + right: 16.666667%; +} + +.pull-3 { + right: 25%; +} + +.pull-4 { + right: 33.333333%; +} + +.pull-5 { + right: 41.666667%; +} + +.pull-6 { + right: 50%; +} + +.pull-7 { + right: 58.333333%; +} + +.pull-8 { + right: 66.666667%; +} + +.pull-9 { + right: 75%; +} + +.pull-10 { + right: 83.333333%; +} + +.pull-11 { + right: 91.666667%; +} + +.pull-12 { + right: 100%; +} + +.push-0 { + left: auto; +} + +.push-1 { + left: 8.333333%; +} + +.push-2 { + left: 16.666667%; +} + +.push-3 { + left: 25%; +} + +.push-4 { + left: 33.333333%; +} + +.push-5 { + left: 41.666667%; +} + +.push-6 { + left: 50%; +} + +.push-7 { + left: 58.333333%; +} + +.push-8 { + left: 66.666667%; +} + +.push-9 { + left: 75%; +} + +.push-10 { + left: 83.333333%; +} + +.push-11 { + left: 91.666667%; +} + +.push-12 { + left: 100%; +} + +.offset-1 { + margin-left: 8.333333%; +} + +.offset-2 { + margin-left: 16.666667%; +} + +.offset-3 { + margin-left: 25%; +} + +.offset-4 { + margin-left: 33.333333%; +} + +.offset-5 { + margin-left: 41.666667%; +} + +.offset-6 { + margin-left: 50%; +} + +.offset-7 { + margin-left: 58.333333%; +} + +.offset-8 { + margin-left: 66.666667%; +} + +.offset-9 { + margin-left: 75%; +} + +.offset-10 { + margin-left: 83.333333%; +} + +.offset-11 { + margin-left: 91.666667%; +} + +@media (min-width: 576px) { + .col-sm { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-sm-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .col-sm-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-sm-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-sm-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-sm-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-sm-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-sm-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-sm-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-sm-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-sm-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-sm-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-sm-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-sm-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .pull-sm-0 { + right: auto; + } + .pull-sm-1 { + right: 8.333333%; + } + .pull-sm-2 { + right: 16.666667%; + } + .pull-sm-3 { + right: 25%; + } + .pull-sm-4 { + right: 33.333333%; + } + .pull-sm-5 { + right: 41.666667%; + } + .pull-sm-6 { + right: 50%; + } + .pull-sm-7 { + right: 58.333333%; + } + .pull-sm-8 { + right: 66.666667%; + } + .pull-sm-9 { + right: 75%; + } + .pull-sm-10 { + right: 83.333333%; + } + .pull-sm-11 { + right: 91.666667%; + } + .pull-sm-12 { + right: 100%; + } + .push-sm-0 { + left: auto; + } + .push-sm-1 { + left: 8.333333%; + } + .push-sm-2 { + left: 16.666667%; + } + .push-sm-3 { + left: 25%; + } + .push-sm-4 { + left: 33.333333%; + } + .push-sm-5 { + left: 41.666667%; + } + .push-sm-6 { + left: 50%; + } + .push-sm-7 { + left: 58.333333%; + } + .push-sm-8 { + left: 66.666667%; + } + .push-sm-9 { + left: 75%; + } + .push-sm-10 { + left: 83.333333%; + } + .push-sm-11 { + left: 91.666667%; + } + .push-sm-12 { + left: 100%; + } + .offset-sm-0 { + margin-left: 0%; + } + .offset-sm-1 { + margin-left: 8.333333%; + } + .offset-sm-2 { + margin-left: 16.666667%; + } + .offset-sm-3 { + margin-left: 25%; + } + .offset-sm-4 { + margin-left: 33.333333%; + } + .offset-sm-5 { + margin-left: 41.666667%; + } + .offset-sm-6 { + margin-left: 50%; + } + .offset-sm-7 { + margin-left: 58.333333%; + } + .offset-sm-8 { + margin-left: 66.666667%; + } + .offset-sm-9 { + margin-left: 75%; + } + .offset-sm-10 { + margin-left: 83.333333%; + } + .offset-sm-11 { + margin-left: 91.666667%; + } +} + +@media (min-width: 768px) { + .col-md { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-md-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .col-md-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-md-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-md-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-md-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-md-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-md-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-md-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-md-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-md-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-md-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-md-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-md-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .pull-md-0 { + right: auto; + } + .pull-md-1 { + right: 8.333333%; + } + .pull-md-2 { + right: 16.666667%; + } + .pull-md-3 { + right: 25%; + } + .pull-md-4 { + right: 33.333333%; + } + .pull-md-5 { + right: 41.666667%; + } + .pull-md-6 { + right: 50%; + } + .pull-md-7 { + right: 58.333333%; + } + .pull-md-8 { + right: 66.666667%; + } + .pull-md-9 { + right: 75%; + } + .pull-md-10 { + right: 83.333333%; + } + .pull-md-11 { + right: 91.666667%; + } + .pull-md-12 { + right: 100%; + } + .push-md-0 { + left: auto; + } + .push-md-1 { + left: 8.333333%; + } + .push-md-2 { + left: 16.666667%; + } + .push-md-3 { + left: 25%; + } + .push-md-4 { + left: 33.333333%; + } + .push-md-5 { + left: 41.666667%; + } + .push-md-6 { + left: 50%; + } + .push-md-7 { + left: 58.333333%; + } + .push-md-8 { + left: 66.666667%; + } + .push-md-9 { + left: 75%; + } + .push-md-10 { + left: 83.333333%; + } + .push-md-11 { + left: 91.666667%; + } + .push-md-12 { + left: 100%; + } + .offset-md-0 { + margin-left: 0%; + } + .offset-md-1 { + margin-left: 8.333333%; + } + .offset-md-2 { + margin-left: 16.666667%; + } + .offset-md-3 { + margin-left: 25%; + } + .offset-md-4 { + margin-left: 33.333333%; + } + .offset-md-5 { + margin-left: 41.666667%; + } + .offset-md-6 { + margin-left: 50%; + } + .offset-md-7 { + margin-left: 58.333333%; + } + .offset-md-8 { + margin-left: 66.666667%; + } + .offset-md-9 { + margin-left: 75%; + } + .offset-md-10 { + margin-left: 83.333333%; + } + .offset-md-11 { + margin-left: 91.666667%; + } +} + +@media (min-width: 992px) { + .col-lg { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-lg-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .col-lg-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-lg-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-lg-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-lg-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-lg-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-lg-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-lg-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-lg-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-lg-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-lg-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-lg-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-lg-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .pull-lg-0 { + right: auto; + } + .pull-lg-1 { + right: 8.333333%; + } + .pull-lg-2 { + right: 16.666667%; + } + .pull-lg-3 { + right: 25%; + } + .pull-lg-4 { + right: 33.333333%; + } + .pull-lg-5 { + right: 41.666667%; + } + .pull-lg-6 { + right: 50%; + } + .pull-lg-7 { + right: 58.333333%; + } + .pull-lg-8 { + right: 66.666667%; + } + .pull-lg-9 { + right: 75%; + } + .pull-lg-10 { + right: 83.333333%; + } + .pull-lg-11 { + right: 91.666667%; + } + .pull-lg-12 { + right: 100%; + } + .push-lg-0 { + left: auto; + } + .push-lg-1 { + left: 8.333333%; + } + .push-lg-2 { + left: 16.666667%; + } + .push-lg-3 { + left: 25%; + } + .push-lg-4 { + left: 33.333333%; + } + .push-lg-5 { + left: 41.666667%; + } + .push-lg-6 { + left: 50%; + } + .push-lg-7 { + left: 58.333333%; + } + .push-lg-8 { + left: 66.666667%; + } + .push-lg-9 { + left: 75%; + } + .push-lg-10 { + left: 83.333333%; + } + .push-lg-11 { + left: 91.666667%; + } + .push-lg-12 { + left: 100%; + } + .offset-lg-0 { + margin-left: 0%; + } + .offset-lg-1 { + margin-left: 8.333333%; + } + .offset-lg-2 { + margin-left: 16.666667%; + } + .offset-lg-3 { + margin-left: 25%; + } + .offset-lg-4 { + margin-left: 33.333333%; + } + .offset-lg-5 { + margin-left: 41.666667%; + } + .offset-lg-6 { + margin-left: 50%; + } + .offset-lg-7 { + margin-left: 58.333333%; + } + .offset-lg-8 { + margin-left: 66.666667%; + } + .offset-lg-9 { + margin-left: 75%; + } + .offset-lg-10 { + margin-left: 83.333333%; + } + .offset-lg-11 { + margin-left: 91.666667%; + } +} + +@media (min-width: 1200px) { + .col-xl { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-xl-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .col-xl-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.333333%; + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-xl-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.666667%; + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-xl-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-xl-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.333333%; + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-xl-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.666667%; + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-xl-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-xl-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.333333%; + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-xl-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.666667%; + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-xl-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-xl-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.333333%; + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-xl-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.666667%; + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-xl-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .pull-xl-0 { + right: auto; + } + .pull-xl-1 { + right: 8.333333%; + } + .pull-xl-2 { + right: 16.666667%; + } + .pull-xl-3 { + right: 25%; + } + .pull-xl-4 { + right: 33.333333%; + } + .pull-xl-5 { + right: 41.666667%; + } + .pull-xl-6 { + right: 50%; + } + .pull-xl-7 { + right: 58.333333%; + } + .pull-xl-8 { + right: 66.666667%; + } + .pull-xl-9 { + right: 75%; + } + .pull-xl-10 { + right: 83.333333%; + } + .pull-xl-11 { + right: 91.666667%; + } + .pull-xl-12 { + right: 100%; + } + .push-xl-0 { + left: auto; + } + .push-xl-1 { + left: 8.333333%; + } + .push-xl-2 { + left: 16.666667%; + } + .push-xl-3 { + left: 25%; + } + .push-xl-4 { + left: 33.333333%; + } + .push-xl-5 { + left: 41.666667%; + } + .push-xl-6 { + left: 50%; + } + .push-xl-7 { + left: 58.333333%; + } + .push-xl-8 { + left: 66.666667%; + } + .push-xl-9 { + left: 75%; + } + .push-xl-10 { + left: 83.333333%; + } + .push-xl-11 { + left: 91.666667%; + } + .push-xl-12 { + left: 100%; + } + .offset-xl-0 { + margin-left: 0%; + } + .offset-xl-1 { + margin-left: 8.333333%; + } + .offset-xl-2 { + margin-left: 16.666667%; + } + .offset-xl-3 { + margin-left: 25%; + } + .offset-xl-4 { + margin-left: 33.333333%; + } + .offset-xl-5 { + margin-left: 41.666667%; + } + .offset-xl-6 { + margin-left: 50%; + } + .offset-xl-7 { + margin-left: 58.333333%; + } + .offset-xl-8 { + margin-left: 66.666667%; + } + .offset-xl-9 { + margin-left: 75%; + } + .offset-xl-10 { + margin-left: 83.333333%; + } + .offset-xl-11 { + margin-left: 91.666667%; + } +} + +.table { + width: 100%; + max-width: 100%; + margin-bottom: 1rem; +} + +.table th, +.table td { + padding: 0.75rem; + vertical-align: top; + border-top: 1px solid #eceeef; +} + +.table thead th { + vertical-align: bottom; + border-bottom: 2px solid #eceeef; +} + +.table tbody + tbody { + border-top: 2px solid #eceeef; +} + +.table .table { + background-color: #fff; +} + +.table-sm th, +.table-sm td { + padding: 0.3rem; +} + +.table-bordered { + border: 1px solid #eceeef; +} + +.table-bordered th, +.table-bordered td { + border: 1px solid #eceeef; +} + +.table-bordered thead th, +.table-bordered thead td { + border-bottom-width: 2px; +} + +.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(0, 0, 0, 0.05); +} + +.table-hover tbody tr:hover { + background-color: rgba(0, 0, 0, 0.075); +} + +.table-active, +.table-active > th, +.table-active > td { + background-color: rgba(0, 0, 0, 0.075); +} + +.table-hover .table-active:hover { + background-color: rgba(0, 0, 0, 0.075); +} + +.table-hover .table-active:hover > td, +.table-hover .table-active:hover > th { + background-color: rgba(0, 0, 0, 0.075); +} + +.table-success, +.table-success > th, +.table-success > td { + background-color: #dff0d8; +} + +.table-hover .table-success:hover { + background-color: #d0e9c6; +} + +.table-hover .table-success:hover > td, +.table-hover .table-success:hover > th { + background-color: #d0e9c6; +} + +.table-info, +.table-info > th, +.table-info > td { + background-color: #d9edf7; +} + +.table-hover .table-info:hover { + background-color: #c4e3f3; +} + +.table-hover .table-info:hover > td, +.table-hover .table-info:hover > th { + background-color: #c4e3f3; +} + +.table-warning, +.table-warning > th, +.table-warning > td { + background-color: #fcf8e3; +} + +.table-hover .table-warning:hover { + background-color: #faf2cc; +} + +.table-hover .table-warning:hover > td, +.table-hover .table-warning:hover > th { + background-color: #faf2cc; +} + +.table-danger, +.table-danger > th, +.table-danger > td { + background-color: #f2dede; +} + +.table-hover .table-danger:hover { + background-color: #ebcccc; +} + +.table-hover .table-danger:hover > td, +.table-hover .table-danger:hover > th { + background-color: #ebcccc; +} + +.thead-inverse th { + color: #fff; + background-color: #292b2c; +} + +.thead-default th { + color: #464a4c; + background-color: #eceeef; +} + +.table-inverse { + color: #fff; + background-color: #292b2c; +} + +.table-inverse th, +.table-inverse td, +.table-inverse thead th { + border-color: #fff; +} + +.table-inverse.table-bordered { + border: 0; +} + +.table-responsive { + display: block; + width: 100%; + overflow-x: auto; + -ms-overflow-style: -ms-autohiding-scrollbar; +} + +.table-responsive.table-bordered { + border: 0; +} + +.form-control { + display: block; + width: 100%; + padding: 0.5rem 0.75rem; + font-size: 1rem; + line-height: 1.25; + color: #464a4c; + background-color: #fff; + background-image: none; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; + -webkit-transition: border-color ease-in-out 0.15s, -webkit-box-shadow ease-in-out 0.15s; + transition: border-color ease-in-out 0.15s, -webkit-box-shadow ease-in-out 0.15s; + -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s, -webkit-box-shadow ease-in-out 0.15s; +} + +.form-control::-ms-expand { + background-color: transparent; + border: 0; +} + +.form-control:focus { + color: #464a4c; + background-color: #fff; + border-color: #5cb3fd; + outline: none; +} + +.form-control::-webkit-input-placeholder { + color: #636c72; + opacity: 1; +} + +.form-control::-moz-placeholder { + color: #636c72; + opacity: 1; +} + +.form-control:-ms-input-placeholder { + color: #636c72; + opacity: 1; +} + +.form-control::placeholder { + color: #636c72; + opacity: 1; +} + +.form-control:disabled, .form-control[readonly] { + background-color: #eceeef; + opacity: 1; +} + +.form-control:disabled { + cursor: not-allowed; +} + +select.form-control:not([size]):not([multiple]) { + height: calc(2.25rem + 2px); +} + +select.form-control:focus::-ms-value { + color: #464a4c; + background-color: #fff; +} + +.form-control-file, +.form-control-range { + display: block; +} + +.col-form-label { + padding-top: calc(0.5rem - 1px * 2); + padding-bottom: calc(0.5rem - 1px * 2); + margin-bottom: 0; +} + +.col-form-label-lg { + padding-top: calc(0.75rem - 1px * 2); + padding-bottom: calc(0.75rem - 1px * 2); + font-size: 1.25rem; +} + +.col-form-label-sm { + padding-top: calc(0.25rem - 1px * 2); + padding-bottom: calc(0.25rem - 1px * 2); + font-size: 0.875rem; +} + +.col-form-legend { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + margin-bottom: 0; + font-size: 1rem; +} + +.form-control-static { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + margin-bottom: 0; + line-height: 1.25; + border: solid transparent; + border-width: 1px 0; +} + +.form-control-static.form-control-sm, .input-group-sm > .form-control-static.form-control, +.input-group-sm > .form-control-static.input-group-addon, +.input-group-sm > .input-group-btn > .form-control-static.btn, .form-control-static.form-control-lg, .input-group-lg > .form-control-static.form-control, +.input-group-lg > .form-control-static.input-group-addon, +.input-group-lg > .input-group-btn > .form-control-static.btn { + padding-right: 0; + padding-left: 0; +} + +.form-control-sm, .input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: 0.2rem; +} + +select.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]), +.input-group-sm > select.input-group-addon:not([size]):not([multiple]), +.input-group-sm > .input-group-btn > select.btn:not([size]):not([multiple]) { + height: 1.8125rem; +} + +.form-control-lg, .input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + padding: 0.75rem 1.5rem; + font-size: 1.25rem; + border-radius: 0.3rem; +} + +select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]), +.input-group-lg > select.input-group-addon:not([size]):not([multiple]), +.input-group-lg > .input-group-btn > select.btn:not([size]):not([multiple]) { + height: 3.166667rem; +} + +.form-group { + margin-bottom: 1rem; +} + +.form-text { + display: block; + margin-top: 0.25rem; +} + +.form-check { + position: relative; + display: block; + margin-bottom: 0.5rem; +} + +.form-check.disabled .form-check-label { + color: #636c72; + cursor: not-allowed; +} + +.form-check-label { + padding-left: 1.25rem; + margin-bottom: 0; + cursor: pointer; +} + +.form-check-input { + position: absolute; + margin-top: 0.25rem; + margin-left: -1.25rem; +} + +.form-check-input:only-child { + position: static; +} + +.form-check-inline { + display: inline-block; +} + +.form-check-inline .form-check-label { + vertical-align: middle; +} + +.form-check-inline + .form-check-inline { + margin-left: 0.75rem; +} + +.form-control-feedback { + margin-top: 0.25rem; +} + +.form-control-success, +.form-control-warning, +.form-control-danger { + padding-right: 2.25rem; + background-repeat: no-repeat; + background-position: center right 0.5625rem; + -webkit-background-size: 1.125rem 1.125rem; + background-size: 1.125rem 1.125rem; +} + +.has-success .form-control-feedback, +.has-success .form-control-label, +.has-success .col-form-label, +.has-success .form-check-label, +.has-success .custom-control { + color: #5cb85c; +} + +.has-success .form-control { + border-color: #5cb85c; +} + +.has-success .input-group-addon { + color: #5cb85c; + border-color: #5cb85c; + background-color: #eaf6ea; +} + +.has-success .form-control-success { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%235cb85c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E"); +} + +.has-warning .form-control-feedback, +.has-warning .form-control-label, +.has-warning .col-form-label, +.has-warning .form-check-label, +.has-warning .custom-control { + color: #f0ad4e; +} + +.has-warning .form-control { + border-color: #f0ad4e; +} + +.has-warning .input-group-addon { + color: #f0ad4e; + border-color: #f0ad4e; + background-color: white; +} + +.has-warning .form-control-warning { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23f0ad4e' d='M4.4 5.324h-.8v-2.46h.8zm0 1.42h-.8V5.89h.8zM3.76.63L.04 7.075c-.115.2.016.425.26.426h7.397c.242 0 .372-.226.258-.426C6.726 4.924 5.47 2.79 4.253.63c-.113-.174-.39-.174-.494 0z'/%3E%3C/svg%3E"); +} + +.has-danger .form-control-feedback, +.has-danger .form-control-label, +.has-danger .col-form-label, +.has-danger .form-check-label, +.has-danger .custom-control { + color: #d9534f; +} + +.has-danger .form-control { + border-color: #d9534f; +} + +.has-danger .input-group-addon { + color: #d9534f; + border-color: #d9534f; + background-color: #fdf7f7; +} + +.has-danger .form-control-danger { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23d9534f' viewBox='-2 -2 7 7'%3E%3Cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3E%3Ccircle r='.5'/%3E%3Ccircle cx='3' r='.5'/%3E%3Ccircle cy='3' r='.5'/%3E%3Ccircle cx='3' cy='3' r='.5'/%3E%3C/svg%3E"); +} + +.form-inline { + 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; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; +} + +.form-inline .form-check { + width: 100%; +} + +@media (min-width: 576px) { + .form-inline label { + 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: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + margin-bottom: 0; + } + .form-inline .form-group { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -webkit-flex-flow: row wrap; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + margin-bottom: 0; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + width: auto; + } + .form-inline .form-control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-check { + 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: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + width: auto; + margin-top: 0; + margin-bottom: 0; + } + .form-inline .form-check-label { + padding-left: 0; + } + .form-inline .form-check-input { + position: relative; + margin-top: 0; + margin-right: 0.25rem; + margin-left: 0; + } + .form-inline .custom-control { + 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: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + padding-left: 0; + } + .form-inline .custom-control-indicator { + position: static; + display: inline-block; + margin-right: 0.25rem; + vertical-align: text-bottom; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} + +.btn { + display: inline-block; + font-weight: normal; + line-height: 1.25; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: 1px solid transparent; + padding: 0.5rem 1rem; + font-size: 1rem; + border-radius: 0.25rem; + -webkit-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +.btn:focus, .btn:hover { + text-decoration: none; +} + +.btn:focus, .btn.focus { + outline: 0; + -webkit-box-shadow: 0 0 0 2px rgba(2, 117, 216, 0.25); + box-shadow: 0 0 0 2px rgba(2, 117, 216, 0.25); +} + +.btn.disabled, .btn:disabled { + cursor: not-allowed; + opacity: .65; +} + +.btn:active, .btn.active { + background-image: none; +} + +a.btn.disabled, +fieldset[disabled] a.btn { + pointer-events: none; +} + +.btn-primary { + color: #fff; + background-color: #0275d8; + border-color: #0275d8; +} + +.btn-primary:hover { + color: #fff; + background-color: #025aa5; + border-color: #01549b; +} + +.btn-primary:focus, .btn-primary.focus { + -webkit-box-shadow: 0 0 0 2px rgba(2, 117, 216, 0.5); + box-shadow: 0 0 0 2px rgba(2, 117, 216, 0.5); +} + +.btn-primary.disabled, .btn-primary:disabled { + background-color: #0275d8; + border-color: #0275d8; +} + +.btn-primary:active, .btn-primary.active, +.show > .btn-primary.dropdown-toggle { + color: #fff; + background-color: #025aa5; + background-image: none; + border-color: #01549b; +} + +.btn-secondary { + color: #292b2c; + background-color: #fff; + border-color: #ccc; +} + +.btn-secondary:hover { + color: #292b2c; + background-color: #e6e6e6; + border-color: #adadad; +} + +.btn-secondary:focus, .btn-secondary.focus { + -webkit-box-shadow: 0 0 0 2px rgba(204, 204, 204, 0.5); + box-shadow: 0 0 0 2px rgba(204, 204, 204, 0.5); +} + +.btn-secondary.disabled, .btn-secondary:disabled { + background-color: #fff; + border-color: #ccc; +} + +.btn-secondary:active, .btn-secondary.active, +.show > .btn-secondary.dropdown-toggle { + color: #292b2c; + background-color: #e6e6e6; + background-image: none; + border-color: #adadad; +} + +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #5bc0de; +} + +.btn-info:hover { + color: #fff; + background-color: #31b0d5; + border-color: #2aabd2; +} + +.btn-info:focus, .btn-info.focus { + -webkit-box-shadow: 0 0 0 2px rgba(91, 192, 222, 0.5); + box-shadow: 0 0 0 2px rgba(91, 192, 222, 0.5); +} + +.btn-info.disabled, .btn-info:disabled { + background-color: #5bc0de; + border-color: #5bc0de; +} + +.btn-info:active, .btn-info.active, +.show > .btn-info.dropdown-toggle { + color: #fff; + background-color: #31b0d5; + background-image: none; + border-color: #2aabd2; +} + +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #5cb85c; +} + +.btn-success:hover { + color: #fff; + background-color: #449d44; + border-color: #419641; +} + +.btn-success:focus, .btn-success.focus { + -webkit-box-shadow: 0 0 0 2px rgba(92, 184, 92, 0.5); + box-shadow: 0 0 0 2px rgba(92, 184, 92, 0.5); +} + +.btn-success.disabled, .btn-success:disabled { + background-color: #5cb85c; + border-color: #5cb85c; +} + +.btn-success:active, .btn-success.active, +.show > .btn-success.dropdown-toggle { + color: #fff; + background-color: #449d44; + background-image: none; + border-color: #419641; +} + +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #f0ad4e; +} + +.btn-warning:hover { + color: #fff; + background-color: #ec971f; + border-color: #eb9316; +} + +.btn-warning:focus, .btn-warning.focus { + -webkit-box-shadow: 0 0 0 2px rgba(240, 173, 78, 0.5); + box-shadow: 0 0 0 2px rgba(240, 173, 78, 0.5); +} + +.btn-warning.disabled, .btn-warning:disabled { + background-color: #f0ad4e; + border-color: #f0ad4e; +} + +.btn-warning:active, .btn-warning.active, +.show > .btn-warning.dropdown-toggle { + color: #fff; + background-color: #ec971f; + background-image: none; + border-color: #eb9316; +} + +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d9534f; +} + +.btn-danger:hover { + color: #fff; + background-color: #c9302c; + border-color: #c12e2a; +} + +.btn-danger:focus, .btn-danger.focus { + -webkit-box-shadow: 0 0 0 2px rgba(217, 83, 79, 0.5); + box-shadow: 0 0 0 2px rgba(217, 83, 79, 0.5); +} + +.btn-danger.disabled, .btn-danger:disabled { + background-color: #d9534f; + border-color: #d9534f; +} + +.btn-danger:active, .btn-danger.active, +.show > .btn-danger.dropdown-toggle { + color: #fff; + background-color: #c9302c; + background-image: none; + border-color: #c12e2a; +} + +.btn-outline-primary { + color: #0275d8; + background-image: none; + background-color: transparent; + border-color: #0275d8; +} + +.btn-outline-primary:hover { + color: #fff; + background-color: #0275d8; + border-color: #0275d8; +} + +.btn-outline-primary:focus, .btn-outline-primary.focus { + -webkit-box-shadow: 0 0 0 2px rgba(2, 117, 216, 0.5); + box-shadow: 0 0 0 2px rgba(2, 117, 216, 0.5); +} + +.btn-outline-primary.disabled, .btn-outline-primary:disabled { + color: #0275d8; + background-color: transparent; +} + +.btn-outline-primary:active, .btn-outline-primary.active, +.show > .btn-outline-primary.dropdown-toggle { + color: #fff; + background-color: #0275d8; + border-color: #0275d8; +} + +.btn-outline-secondary { + color: #ccc; + background-image: none; + background-color: transparent; + border-color: #ccc; +} + +.btn-outline-secondary:hover { + color: #fff; + background-color: #ccc; + border-color: #ccc; +} + +.btn-outline-secondary:focus, .btn-outline-secondary.focus { + -webkit-box-shadow: 0 0 0 2px rgba(204, 204, 204, 0.5); + box-shadow: 0 0 0 2px rgba(204, 204, 204, 0.5); +} + +.btn-outline-secondary.disabled, .btn-outline-secondary:disabled { + color: #ccc; + background-color: transparent; +} + +.btn-outline-secondary:active, .btn-outline-secondary.active, +.show > .btn-outline-secondary.dropdown-toggle { + color: #fff; + background-color: #ccc; + border-color: #ccc; +} + +.btn-outline-info { + color: #5bc0de; + background-image: none; + background-color: transparent; + border-color: #5bc0de; +} + +.btn-outline-info:hover { + color: #fff; + background-color: #5bc0de; + border-color: #5bc0de; +} + +.btn-outline-info:focus, .btn-outline-info.focus { + -webkit-box-shadow: 0 0 0 2px rgba(91, 192, 222, 0.5); + box-shadow: 0 0 0 2px rgba(91, 192, 222, 0.5); +} + +.btn-outline-info.disabled, .btn-outline-info:disabled { + color: #5bc0de; + background-color: transparent; +} + +.btn-outline-info:active, .btn-outline-info.active, +.show > .btn-outline-info.dropdown-toggle { + color: #fff; + background-color: #5bc0de; + border-color: #5bc0de; +} + +.btn-outline-success { + color: #5cb85c; + background-image: none; + background-color: transparent; + border-color: #5cb85c; +} + +.btn-outline-success:hover { + color: #fff; + background-color: #5cb85c; + border-color: #5cb85c; +} + +.btn-outline-success:focus, .btn-outline-success.focus { + -webkit-box-shadow: 0 0 0 2px rgba(92, 184, 92, 0.5); + box-shadow: 0 0 0 2px rgba(92, 184, 92, 0.5); +} + +.btn-outline-success.disabled, .btn-outline-success:disabled { + color: #5cb85c; + background-color: transparent; +} + +.btn-outline-success:active, .btn-outline-success.active, +.show > .btn-outline-success.dropdown-toggle { + color: #fff; + background-color: #5cb85c; + border-color: #5cb85c; +} + +.btn-outline-warning { + color: #f0ad4e; + background-image: none; + background-color: transparent; + border-color: #f0ad4e; +} + +.btn-outline-warning:hover { + color: #fff; + background-color: #f0ad4e; + border-color: #f0ad4e; +} + +.btn-outline-warning:focus, .btn-outline-warning.focus { + -webkit-box-shadow: 0 0 0 2px rgba(240, 173, 78, 0.5); + box-shadow: 0 0 0 2px rgba(240, 173, 78, 0.5); +} + +.btn-outline-warning.disabled, .btn-outline-warning:disabled { + color: #f0ad4e; + background-color: transparent; +} + +.btn-outline-warning:active, .btn-outline-warning.active, +.show > .btn-outline-warning.dropdown-toggle { + color: #fff; + background-color: #f0ad4e; + border-color: #f0ad4e; +} + +.btn-outline-danger { + color: #d9534f; + background-image: none; + background-color: transparent; + border-color: #d9534f; +} + +.btn-outline-danger:hover { + color: #fff; + background-color: #d9534f; + border-color: #d9534f; +} + +.btn-outline-danger:focus, .btn-outline-danger.focus { + -webkit-box-shadow: 0 0 0 2px rgba(217, 83, 79, 0.5); + box-shadow: 0 0 0 2px rgba(217, 83, 79, 0.5); +} + +.btn-outline-danger.disabled, .btn-outline-danger:disabled { + color: #d9534f; + background-color: transparent; +} + +.btn-outline-danger:active, .btn-outline-danger.active, +.show > .btn-outline-danger.dropdown-toggle { + color: #fff; + background-color: #d9534f; + border-color: #d9534f; +} + +.btn-link { + font-weight: normal; + color: #0275d8; + border-radius: 0; +} + +.btn-link, .btn-link:active, .btn-link.active, .btn-link:disabled { + background-color: transparent; +} + +.btn-link, .btn-link:focus, .btn-link:active { + border-color: transparent; +} + +.btn-link:hover { + border-color: transparent; +} + +.btn-link:focus, .btn-link:hover { + color: #014c8c; + text-decoration: underline; + background-color: transparent; +} + +.btn-link:disabled { + color: #636c72; +} + +.btn-link:disabled:focus, .btn-link:disabled:hover { + text-decoration: none; +} + +.btn-lg, .btn-group-lg > .btn { + padding: 0.75rem 1.5rem; + font-size: 1.25rem; + border-radius: 0.3rem; +} + +.btn-sm, .btn-group-sm > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: 0.2rem; +} + +.btn-block { + display: block; + width: 100%; +} + +.btn-block + .btn-block { + margin-top: 0.5rem; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.show { + opacity: 1; +} + +.collapse { + display: none; +} + +.collapse.show { + display: block; +} + +tr.collapse.show { + display: table-row; +} + +tbody.collapse.show { + display: table-row-group; +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +.dropup, +.dropdown { + position: relative; +} + +.dropdown-toggle::after { + display: inline-block; + width: 0; + height: 0; + margin-left: 0.3em; + vertical-align: middle; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-left: 0.3em solid transparent; +} + +.dropdown-toggle:focus { + outline: 0; +} + +.dropup .dropdown-toggle::after { + border-top: 0; + border-bottom: 0.3em solid; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 10rem; + padding: 0.5rem 0; + margin: 0.125rem 0 0; + font-size: 1rem; + color: #292b2c; + text-align: left; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; +} + +.dropdown-divider { + height: 1px; + margin: 0.5rem 0; + overflow: hidden; + background-color: #eceeef; +} + +.dropdown-item { + display: block; + width: 100%; + padding: 3px 1.5rem; + clear: both; + font-weight: normal; + color: #292b2c; + text-align: inherit; + white-space: nowrap; + background: none; + border: 0; +} + +.dropdown-item:focus, .dropdown-item:hover { + color: #1d1e1f; + text-decoration: none; + background-color: #f7f7f9; +} + +.dropdown-item.active, .dropdown-item:active { + color: #fff; + text-decoration: none; + background-color: #0275d8; +} + +.dropdown-item.disabled, .dropdown-item:disabled { + color: #636c72; + cursor: not-allowed; + background-color: transparent; +} + +.show > .dropdown-menu { + display: block; +} + +.show > a { + outline: 0; +} + +.dropdown-menu-right { + right: 0; + left: auto; +} + +.dropdown-menu-left { + right: auto; + left: 0; +} + +.dropdown-header { + display: block; + padding: 0.5rem 1.5rem; + margin-bottom: 0; + font-size: 0.875rem; + color: #636c72; + white-space: nowrap; +} + +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} + +.dropup .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 0.125rem; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + vertical-align: middle; +} + +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + -webkit-box-flex: 0; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; +} + +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover { + z-index: 2; +} + +.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 2; +} + +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group, +.btn-group-vertical .btn + .btn, +.btn-group-vertical .btn + .btn-group, +.btn-group-vertical .btn-group + .btn, +.btn-group-vertical .btn-group + .btn-group { + margin-left: -1px; +} + +.btn-toolbar { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; +} + +.btn-toolbar .input-group { + width: auto; +} + +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} + +.btn-group > .btn:first-child { + margin-left: 0; +} + +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} + +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.btn-group > .btn-group { + float: left; +} + +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} + +.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} + +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; +} + +.btn + .dropdown-toggle-split::after { + margin-left: 0; +} + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { + padding-right: 0.375rem; + padding-left: 0.375rem; +} + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { + padding-right: 1.125rem; + padding-left: 1.125rem; +} + +.btn-group-vertical { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; +} + +.btn-group-vertical .btn, +.btn-group-vertical .btn-group { + width: 100%; +} + +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} + +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} + +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} + +.input-group { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + width: 100%; +} + +.input-group .form-control { + position: relative; + z-index: 2; + -webkit-box-flex: 1; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + width: 1%; + margin-bottom: 0; +} + +.input-group .form-control:focus, .input-group .form-control:active, .input-group .form-control:hover { + z-index: 3; +} + +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; +} + +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} + +.input-group-addon, +.input-group-btn { + white-space: nowrap; + vertical-align: middle; +} + +.input-group-addon { + padding: 0.5rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + font-weight: normal; + line-height: 1.25; + color: #464a4c; + text-align: center; + background-color: #eceeef; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; +} + +.input-group-addon.form-control-sm, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .input-group-addon.btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: 0.2rem; +} + +.input-group-addon.form-control-lg, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .input-group-addon.btn { + padding: 0.75rem 1.5rem; + font-size: 1.25rem; + border-radius: 0.3rem; +} + +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} + +.input-group .form-control:not(:last-child), +.input-group-addon:not(:last-child), +.input-group-btn:not(:last-child) > .btn, +.input-group-btn:not(:last-child) > .btn-group > .btn, +.input-group-btn:not(:last-child) > .dropdown-toggle, +.input-group-btn:not(:first-child) > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:not(:first-child) > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} + +.input-group-addon:not(:last-child) { + border-right: 0; +} + +.input-group .form-control:not(:first-child), +.input-group-addon:not(:first-child), +.input-group-btn:not(:first-child) > .btn, +.input-group-btn:not(:first-child) > .btn-group > .btn, +.input-group-btn:not(:first-child) > .dropdown-toggle, +.input-group-btn:not(:last-child) > .btn:not(:first-child), +.input-group-btn:not(:last-child) > .btn-group:not(:first-child) > .btn { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.form-control + .input-group-addon:not(:first-child) { + border-left: 0; +} + +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} + +.input-group-btn > .btn { + position: relative; + -webkit-box-flex: 1; + -webkit-flex: 1 1 0%; + -ms-flex: 1 1 0%; + flex: 1 1 0%; +} + +.input-group-btn > .btn + .btn { + margin-left: -1px; +} + +.input-group-btn > .btn:focus, .input-group-btn > .btn:active, .input-group-btn > .btn:hover { + z-index: 3; +} + +.input-group-btn:not(:last-child) > .btn, +.input-group-btn:not(:last-child) > .btn-group { + margin-right: -1px; +} + +.input-group-btn:not(:first-child) > .btn, +.input-group-btn:not(:first-child) > .btn-group { + z-index: 2; + margin-left: -1px; +} + +.input-group-btn:not(:first-child) > .btn:focus, .input-group-btn:not(:first-child) > .btn:active, .input-group-btn:not(:first-child) > .btn:hover, +.input-group-btn:not(:first-child) > .btn-group:focus, +.input-group-btn:not(:first-child) > .btn-group:active, +.input-group-btn:not(:first-child) > .btn-group:hover { + z-index: 3; +} + +.custom-control { + position: relative; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + min-height: 1.5rem; + padding-left: 1.5rem; + margin-right: 1rem; + cursor: pointer; +} + +.custom-control-input { + position: absolute; + z-index: -1; + opacity: 0; +} + +.custom-control-input:checked ~ .custom-control-indicator { + color: #fff; + background-color: #0275d8; +} + +.custom-control-input:focus ~ .custom-control-indicator { + -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 3px #0275d8; + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #0275d8; +} + +.custom-control-input:active ~ .custom-control-indicator { + color: #fff; + background-color: #8fcafe; +} + +.custom-control-input:disabled ~ .custom-control-indicator { + cursor: not-allowed; + background-color: #eceeef; +} + +.custom-control-input:disabled ~ .custom-control-description { + color: #636c72; + cursor: not-allowed; +} + +.custom-control-indicator { + position: absolute; + top: 0.25rem; + left: 0; + display: block; + width: 1rem; + height: 1rem; + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-color: #ddd; + background-repeat: no-repeat; + background-position: center center; + -webkit-background-size: 50% 50%; + background-size: 50% 50%; +} + +.custom-checkbox .custom-control-indicator { + border-radius: 0.25rem; +} + +.custom-checkbox .custom-control-input:checked ~ .custom-control-indicator { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E"); +} + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-indicator { + background-color: #0275d8; + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E"); +} + +.custom-radio .custom-control-indicator { + border-radius: 50%; +} + +.custom-radio .custom-control-input:checked ~ .custom-control-indicator { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E"); +} + +.custom-controls-stacked { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.custom-controls-stacked .custom-control { + margin-bottom: 0.25rem; +} + +.custom-controls-stacked .custom-control + .custom-control { + margin-left: 0; +} + +.custom-select { + display: inline-block; + max-width: 100%; + height: calc(2.25rem + 2px); + padding: 0.375rem 1.75rem 0.375rem 0.75rem; + line-height: 1.25; + color: #464a4c; + vertical-align: middle; + background: #fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center; + -webkit-background-size: 8px 10px; + background-size: 8px 10px; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; + -moz-appearance: none; + -webkit-appearance: none; +} + +.custom-select:focus { + border-color: #5cb3fd; + outline: none; +} + +.custom-select:focus::-ms-value { + color: #464a4c; + background-color: #fff; +} + +.custom-select:disabled { + color: #636c72; + cursor: not-allowed; + background-color: #eceeef; +} + +.custom-select::-ms-expand { + opacity: 0; +} + +.custom-select-sm { + padding-top: 0.375rem; + padding-bottom: 0.375rem; + font-size: 75%; +} + +.custom-file { + position: relative; + display: inline-block; + max-width: 100%; + height: 2.5rem; + margin-bottom: 0; + cursor: pointer; +} + +.custom-file-input { + min-width: 14rem; + max-width: 100%; + height: 2.5rem; + margin: 0; + filter: alpha(opacity=0); + opacity: 0; +} + +.custom-file-control { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 5; + height: 2.5rem; + padding: 0.5rem 1rem; + line-height: 1.5; + color: #464a4c; + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; +} + +.custom-file-control:lang(en)::after { + content: "Choose file..."; +} + +.custom-file-control::before { + position: absolute; + top: -1px; + right: -1px; + bottom: -1px; + z-index: 6; + display: block; + height: 2.5rem; + padding: 0.5rem 1rem; + line-height: 1.5; + color: #464a4c; + background-color: #eceeef; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0 0.25rem 0.25rem 0; +} + +.custom-file-control:lang(en)::before { + content: "Browse"; +} + +.nav { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav-link { + display: block; + padding: 0.5em 1em; +} + +.nav-link:focus, .nav-link:hover { + text-decoration: none; +} + +.nav-link.disabled { + color: #636c72; + cursor: not-allowed; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} + +.nav-tabs .nav-item { + margin-bottom: -1px; +} + +.nav-tabs .nav-link { + border: 1px solid transparent; + border-top-right-radius: 0.25rem; + border-top-left-radius: 0.25rem; +} + +.nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover { + border-color: #eceeef #eceeef #ddd; +} + +.nav-tabs .nav-link.disabled { + color: #636c72; + background-color: transparent; + border-color: transparent; +} + +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + color: #464a4c; + background-color: #fff; + border-color: #ddd #ddd #fff; +} + +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.nav-pills .nav-link { + border-radius: 0.25rem; +} + +.nav-pills .nav-link.active, +.nav-pills .nav-item.show .nav-link { + color: #fff; + cursor: default; + background-color: #0275d8; +} + +.nav-fill .nav-item { + -webkit-box-flex: 1; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + text-align: center; +} + +.nav-justified .nav-item { + -webkit-box-flex: 1; + -webkit-flex: 1 1 100%; + -ms-flex: 1 1 100%; + flex: 1 1 100%; + text-align: center; +} + +.tab-content > .tab-pane { + display: none; +} + +.tab-content > .active { + display: block; +} + +.navbar { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding: 0.5rem 1rem; +} + +.navbar-brand { + display: inline-block; + padding-top: .25rem; + padding-bottom: .25rem; + margin-right: 1rem; + font-size: 1.25rem; + line-height: inherit; + white-space: nowrap; +} + +.navbar-brand:focus, .navbar-brand:hover { + text-decoration: none; +} + +.navbar-nav { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.navbar-nav .nav-link { + padding-right: 0; + padding-left: 0; +} + +.navbar-text { + display: inline-block; + padding-top: .425rem; + padding-bottom: .425rem; +} + +.navbar-toggler { + -webkit-align-self: flex-start; + -ms-flex-item-align: start; + align-self: flex-start; + padding: 0.25rem 0.75rem; + font-size: 1.25rem; + line-height: 1; + background: transparent; + border: 1px solid transparent; + border-radius: 0.25rem; +} + +.navbar-toggler:focus, .navbar-toggler:hover { + text-decoration: none; +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + content: ""; + background: no-repeat center center; + -webkit-background-size: 100% 100%; + background-size: 100% 100%; +} + +.navbar-toggler-left { + position: absolute; + left: 1rem; +} + +.navbar-toggler-right { + position: absolute; + right: 1rem; +} + +@media (max-width: 575px) { + .navbar-toggleable .navbar-nav .dropdown-menu { + position: static; + float: none; + } + .navbar-toggleable > .container { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 576px) { + .navbar-toggleable { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -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; + } + .navbar-toggleable .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-toggleable .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem; + } + .navbar-toggleable > .container { + 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; + } + .navbar-toggleable .navbar-collapse { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + width: 100%; + } + .navbar-toggleable .navbar-toggler { + display: none; + } +} + +@media (max-width: 767px) { + .navbar-toggleable-sm .navbar-nav .dropdown-menu { + position: static; + float: none; + } + .navbar-toggleable-sm > .container { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 768px) { + .navbar-toggleable-sm { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -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; + } + .navbar-toggleable-sm .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-toggleable-sm .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem; + } + .navbar-toggleable-sm > .container { + 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; + } + .navbar-toggleable-sm .navbar-collapse { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + width: 100%; + } + .navbar-toggleable-sm .navbar-toggler { + display: none; + } +} + +@media (max-width: 991px) { + .navbar-toggleable-md .navbar-nav .dropdown-menu { + position: static; + float: none; + } + .navbar-toggleable-md > .container { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 992px) { + .navbar-toggleable-md { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -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; + } + .navbar-toggleable-md .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-toggleable-md .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem; + } + .navbar-toggleable-md > .container { + 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; + } + .navbar-toggleable-md .navbar-collapse { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + width: 100%; + } + .navbar-toggleable-md .navbar-toggler { + display: none; + } +} + +@media (max-width: 1199px) { + .navbar-toggleable-lg .navbar-nav .dropdown-menu { + position: static; + float: none; + } + .navbar-toggleable-lg > .container { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 1200px) { + .navbar-toggleable-lg { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -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; + } + .navbar-toggleable-lg .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-toggleable-lg .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem; + } + .navbar-toggleable-lg > .container { + 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; + } + .navbar-toggleable-lg .navbar-collapse { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + width: 100%; + } + .navbar-toggleable-lg .navbar-toggler { + display: none; + } +} + +.navbar-toggleable-xl { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -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; +} + +.navbar-toggleable-xl .navbar-nav .dropdown-menu { + position: static; + float: none; +} + +.navbar-toggleable-xl > .container { + padding-right: 0; + padding-left: 0; +} + +.navbar-toggleable-xl .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; +} + +.navbar-toggleable-xl .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem; +} + +.navbar-toggleable-xl > .container { + 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; +} + +.navbar-toggleable-xl .navbar-collapse { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + width: 100%; +} + +.navbar-toggleable-xl .navbar-toggler { + display: none; +} + +.navbar-light .navbar-brand, +.navbar-light .navbar-toggler { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-brand:focus, .navbar-light .navbar-brand:hover, +.navbar-light .navbar-toggler:focus, +.navbar-light .navbar-toggler:hover { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-nav .nav-link { + color: rgba(0, 0, 0, 0.5); +} + +.navbar-light .navbar-nav .nav-link:focus, .navbar-light .navbar-nav .nav-link:hover { + color: rgba(0, 0, 0, 0.7); +} + +.navbar-light .navbar-nav .nav-link.disabled { + color: rgba(0, 0, 0, 0.3); +} + +.navbar-light .navbar-nav .open > .nav-link, +.navbar-light .navbar-nav .active > .nav-link, +.navbar-light .navbar-nav .nav-link.open, +.navbar-light .navbar-nav .nav-link.active { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-toggler { + border-color: rgba(0, 0, 0, 0.1); +} + +.navbar-light .navbar-toggler-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E"); +} + +.navbar-light .navbar-text { + color: rgba(0, 0, 0, 0.5); +} + +.navbar-inverse .navbar-brand, +.navbar-inverse .navbar-toggler { + color: white; +} + +.navbar-inverse .navbar-brand:focus, .navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-toggler:focus, +.navbar-inverse .navbar-toggler:hover { + color: white; +} + +.navbar-inverse .navbar-nav .nav-link { + color: rgba(255, 255, 255, 0.5); +} + +.navbar-inverse .navbar-nav .nav-link:focus, .navbar-inverse .navbar-nav .nav-link:hover { + color: rgba(255, 255, 255, 0.75); +} + +.navbar-inverse .navbar-nav .nav-link.disabled { + color: rgba(255, 255, 255, 0.25); +} + +.navbar-inverse .navbar-nav .open > .nav-link, +.navbar-inverse .navbar-nav .active > .nav-link, +.navbar-inverse .navbar-nav .nav-link.open, +.navbar-inverse .navbar-nav .nav-link.active { + color: white; +} + +.navbar-inverse .navbar-toggler { + border-color: rgba(255, 255, 255, 0.1); +} + +.navbar-inverse .navbar-toggler-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E"); +} + +.navbar-inverse .navbar-text { + color: rgba(255, 255, 255, 0.5); +} + +.card { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.125); + border-radius: 0.25rem; +} + +.card-block { + -webkit-box-flex: 1; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + padding: 1.25rem; +} + +.card-title { + margin-bottom: 0.75rem; +} + +.card-subtitle { + margin-top: -0.375rem; + margin-bottom: 0; +} + +.card-text:last-child { + margin-bottom: 0; +} + +.card-link:hover { + text-decoration: none; +} + +.card-link + .card-link { + margin-left: 1.25rem; +} + +.card > .list-group:first-child .list-group-item:first-child { + border-top-right-radius: 0.25rem; + border-top-left-radius: 0.25rem; +} + +.card > .list-group:last-child .list-group-item:last-child { + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} + +.card-header { + padding: 0.75rem 1.25rem; + margin-bottom: 0; + background-color: #f7f7f9; + border-bottom: 1px solid rgba(0, 0, 0, 0.125); +} + +.card-header:first-child { + border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; +} + +.card-footer { + padding: 0.75rem 1.25rem; + background-color: #f7f7f9; + border-top: 1px solid rgba(0, 0, 0, 0.125); +} + +.card-footer:last-child { + border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); +} + +.card-header-tabs { + margin-right: -0.625rem; + margin-bottom: -0.75rem; + margin-left: -0.625rem; + border-bottom: 0; +} + +.card-header-pills { + margin-right: -0.625rem; + margin-left: -0.625rem; +} + +.card-primary { + background-color: #0275d8; + border-color: #0275d8; +} + +.card-primary .card-header, +.card-primary .card-footer { + background-color: transparent; +} + +.card-success { + background-color: #5cb85c; + border-color: #5cb85c; +} + +.card-success .card-header, +.card-success .card-footer { + background-color: transparent; +} + +.card-info { + background-color: #5bc0de; + border-color: #5bc0de; +} + +.card-info .card-header, +.card-info .card-footer { + background-color: transparent; +} + +.card-warning { + background-color: #f0ad4e; + border-color: #f0ad4e; +} + +.card-warning .card-header, +.card-warning .card-footer { + background-color: transparent; +} + +.card-danger { + background-color: #d9534f; + border-color: #d9534f; +} + +.card-danger .card-header, +.card-danger .card-footer { + background-color: transparent; +} + +.card-outline-primary { + background-color: transparent; + border-color: #0275d8; +} + +.card-outline-secondary { + background-color: transparent; + border-color: #ccc; +} + +.card-outline-info { + background-color: transparent; + border-color: #5bc0de; +} + +.card-outline-success { + background-color: transparent; + border-color: #5cb85c; +} + +.card-outline-warning { + background-color: transparent; + border-color: #f0ad4e; +} + +.card-outline-danger { + background-color: transparent; + border-color: #d9534f; +} + +.card-inverse { + color: rgba(255, 255, 255, 0.65); +} + +.card-inverse .card-header, +.card-inverse .card-footer { + background-color: transparent; + border-color: rgba(255, 255, 255, 0.2); +} + +.card-inverse .card-header, +.card-inverse .card-footer, +.card-inverse .card-title, +.card-inverse .card-blockquote { + color: #fff; +} + +.card-inverse .card-link, +.card-inverse .card-text, +.card-inverse .card-subtitle, +.card-inverse .card-blockquote .blockquote-footer { + color: rgba(255, 255, 255, 0.65); +} + +.card-inverse .card-link:focus, .card-inverse .card-link:hover { + color: #fff; +} + +.card-blockquote { + padding: 0; + margin-bottom: 0; + border-left: 0; +} + +.card-img { + border-radius: calc(0.25rem - 1px); +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 1.25rem; +} + +.card-img-top { + border-top-right-radius: calc(0.25rem - 1px); + border-top-left-radius: calc(0.25rem - 1px); +} + +.card-img-bottom { + border-bottom-right-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px); +} + +@media (min-width: 576px) { + .card-deck { + 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; + } + .card-deck .card { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -webkit-flex: 1 0 0%; + -ms-flex: 1 0 0%; + flex: 1 0 0%; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + } + .card-deck .card:not(:first-child) { + margin-left: 15px; + } + .card-deck .card:not(:last-child) { + margin-right: 15px; + } +} + +@media (min-width: 576px) { + .card-group { + 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; + } + .card-group .card { + -webkit-box-flex: 1; + -webkit-flex: 1 0 0%; + -ms-flex: 1 0 0%; + flex: 1 0 0%; + } + .card-group .card + .card { + margin-left: 0; + border-left: 0; + } + .card-group .card:first-child { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + } + .card-group .card:first-child .card-img-top { + border-top-right-radius: 0; + } + .card-group .card:first-child .card-img-bottom { + border-bottom-right-radius: 0; + } + .card-group .card:last-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + } + .card-group .card:last-child .card-img-top { + border-top-left-radius: 0; + } + .card-group .card:last-child .card-img-bottom { + border-bottom-left-radius: 0; + } + .card-group .card:not(:first-child):not(:last-child) { + border-radius: 0; + } + .card-group .card:not(:first-child):not(:last-child) .card-img-top, + .card-group .card:not(:first-child):not(:last-child) .card-img-bottom { + border-radius: 0; + } +} + +@media (min-width: 576px) { + .card-columns { + -webkit-column-count: 3; + -moz-column-count: 3; + column-count: 3; + -webkit-column-gap: 1.25rem; + -moz-column-gap: 1.25rem; + column-gap: 1.25rem; + } + .card-columns .card { + display: inline-block; + width: 100%; + margin-bottom: 0.75rem; + } +} + +.breadcrumb { + padding: 0.75rem 1rem; + margin-bottom: 1rem; + list-style: none; + background-color: #eceeef; + border-radius: 0.25rem; +} + +.breadcrumb::after { + display: block; + content: ""; + clear: both; +} + +.breadcrumb-item { + float: left; +} + +.breadcrumb-item + .breadcrumb-item::before { + display: inline-block; + padding-right: 0.5rem; + padding-left: 0.5rem; + color: #636c72; + content: "/"; +} + +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: underline; +} + +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: none; +} + +.breadcrumb-item.active { + color: #636c72; +} + +.pagination { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + padding-left: 0; + list-style: none; + border-radius: 0.25rem; +} + +.page-item:first-child .page-link { + margin-left: 0; + border-bottom-left-radius: 0.25rem; + border-top-left-radius: 0.25rem; +} + +.page-item:last-child .page-link { + border-bottom-right-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} + +.page-item.active .page-link { + z-index: 2; + color: #fff; + background-color: #0275d8; + border-color: #0275d8; +} + +.page-item.disabled .page-link { + color: #636c72; + pointer-events: none; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; +} + +.page-link { + position: relative; + display: block; + padding: 0.5rem 0.75rem; + margin-left: -1px; + line-height: 1.25; + color: #0275d8; + background-color: #fff; + border: 1px solid #ddd; +} + +.page-link:focus, .page-link:hover { + color: #014c8c; + text-decoration: none; + background-color: #eceeef; + border-color: #ddd; +} + +.pagination-lg .page-link { + padding: 0.75rem 1.5rem; + font-size: 1.25rem; +} + +.pagination-lg .page-item:first-child .page-link { + border-bottom-left-radius: 0.3rem; + border-top-left-radius: 0.3rem; +} + +.pagination-lg .page-item:last-child .page-link { + border-bottom-right-radius: 0.3rem; + border-top-right-radius: 0.3rem; +} + +.pagination-sm .page-link { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; +} + +.pagination-sm .page-item:first-child .page-link { + border-bottom-left-radius: 0.2rem; + border-top-left-radius: 0.2rem; +} + +.pagination-sm .page-item:last-child .page-link { + border-bottom-right-radius: 0.2rem; + border-top-right-radius: 0.2rem; +} + +.badge { + display: inline-block; + padding: 0.25em 0.4em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: 0.25rem; +} + +.badge:empty { + display: none; +} + +.btn .badge { + position: relative; + top: -1px; +} + +a.badge:focus, a.badge:hover { + color: #fff; + text-decoration: none; + cursor: pointer; +} + +.badge-pill { + padding-right: 0.6em; + padding-left: 0.6em; + border-radius: 10rem; +} + +.badge-default { + background-color: #636c72; +} + +.badge-default[href]:focus, .badge-default[href]:hover { + background-color: #4b5257; +} + +.badge-primary { + background-color: #0275d8; +} + +.badge-primary[href]:focus, .badge-primary[href]:hover { + background-color: #025aa5; +} + +.badge-success { + background-color: #5cb85c; +} + +.badge-success[href]:focus, .badge-success[href]:hover { + background-color: #449d44; +} + +.badge-info { + background-color: #5bc0de; +} + +.badge-info[href]:focus, .badge-info[href]:hover { + background-color: #31b0d5; +} + +.badge-warning { + background-color: #f0ad4e; +} + +.badge-warning[href]:focus, .badge-warning[href]:hover { + background-color: #ec971f; +} + +.badge-danger { + background-color: #d9534f; +} + +.badge-danger[href]:focus, .badge-danger[href]:hover { + background-color: #c9302c; +} + +.jumbotron { + padding: 2rem 1rem; + margin-bottom: 2rem; + background-color: #eceeef; + border-radius: 0.3rem; +} + +@media (min-width: 576px) { + .jumbotron { + padding: 4rem 2rem; + } +} + +.jumbotron-hr { + border-top-color: #d0d5d8; +} + +.jumbotron-fluid { + padding-right: 0; + padding-left: 0; + border-radius: 0; +} + +.alert { + padding: 0.75rem 1.25rem; + margin-bottom: 1rem; + border: 1px solid transparent; + border-radius: 0.25rem; +} + +.alert-heading { + color: inherit; +} + +.alert-link { + font-weight: bold; +} + +.alert-dismissible .close { + position: relative; + top: -0.75rem; + right: -1.25rem; + padding: 0.75rem 1.25rem; + color: inherit; +} + +.alert-success { + background-color: #dff0d8; + border-color: #d0e9c6; + color: #3c763d; +} + +.alert-success hr { + border-top-color: #c1e2b3; +} + +.alert-success .alert-link { + color: #2b542c; +} + +.alert-info { + background-color: #d9edf7; + border-color: #bcdff1; + color: #31708f; +} + +.alert-info hr { + border-top-color: #a6d5ec; +} + +.alert-info .alert-link { + color: #245269; +} + +.alert-warning { + background-color: #fcf8e3; + border-color: #faf2cc; + color: #8a6d3b; +} + +.alert-warning hr { + border-top-color: #f7ecb5; +} + +.alert-warning .alert-link { + color: #66512c; +} + +.alert-danger { + background-color: #f2dede; + border-color: #ebcccc; + color: #a94442; +} + +.alert-danger hr { + border-top-color: #e4b9b9; +} + +.alert-danger .alert-link { + color: #843534; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} + +.progress { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + overflow: hidden; + font-size: 0.75rem; + line-height: 1rem; + text-align: center; + background-color: #eceeef; + border-radius: 0.25rem; +} + +.progress-bar { + height: 1rem; + color: #fff; + background-color: #0275d8; +} + +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 1rem 1rem; + background-size: 1rem 1rem; +} + +.progress-bar-animated { + -webkit-animation: progress-bar-stripes 1s linear infinite; + -o-animation: progress-bar-stripes 1s linear infinite; + animation: progress-bar-stripes 1s linear infinite; +} + +.media { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; +} + +.media-body { + -webkit-box-flex: 1; + -webkit-flex: 1 1 0%; + -ms-flex: 1 1 0%; + flex: 1 1 0%; +} + +.list-group { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; +} + +.list-group-item-action { + width: 100%; + color: #464a4c; + text-align: inherit; +} + +.list-group-item-action .list-group-item-heading { + color: #292b2c; +} + +.list-group-item-action:focus, .list-group-item-action:hover { + color: #464a4c; + text-decoration: none; + background-color: #f7f7f9; +} + +.list-group-item-action:active { + color: #292b2c; + background-color: #eceeef; +} + +.list-group-item { + position: relative; + 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; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + padding: 0.75rem 1.25rem; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.125); +} + +.list-group-item:first-child { + border-top-right-radius: 0.25rem; + border-top-left-radius: 0.25rem; +} + +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} + +.list-group-item:focus, .list-group-item:hover { + text-decoration: none; +} + +.list-group-item.disabled, .list-group-item:disabled { + color: #636c72; + cursor: not-allowed; + background-color: #fff; +} + +.list-group-item.disabled .list-group-item-heading, .list-group-item:disabled .list-group-item-heading { + color: inherit; +} + +.list-group-item.disabled .list-group-item-text, .list-group-item:disabled .list-group-item-text { + color: #636c72; +} + +.list-group-item.active { + z-index: 2; + color: #fff; + background-color: #0275d8; + border-color: #0275d8; +} + +.list-group-item.active .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small { + color: inherit; +} + +.list-group-item.active .list-group-item-text { + color: #daeeff; +} + +.list-group-flush .list-group-item { + border-right: 0; + border-left: 0; + border-radius: 0; +} + +.list-group-flush:first-child .list-group-item:first-child { + border-top: 0; +} + +.list-group-flush:last-child .list-group-item:last-child { + border-bottom: 0; +} + +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} + +a.list-group-item-success, +button.list-group-item-success { + color: #3c763d; +} + +a.list-group-item-success .list-group-item-heading, +button.list-group-item-success .list-group-item-heading { + color: inherit; +} + +a.list-group-item-success:focus, a.list-group-item-success:hover, +button.list-group-item-success:focus, +button.list-group-item-success:hover { + color: #3c763d; + background-color: #d0e9c6; +} + +a.list-group-item-success.active, +button.list-group-item-success.active { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} + +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} + +a.list-group-item-info, +button.list-group-item-info { + color: #31708f; +} + +a.list-group-item-info .list-group-item-heading, +button.list-group-item-info .list-group-item-heading { + color: inherit; +} + +a.list-group-item-info:focus, a.list-group-item-info:hover, +button.list-group-item-info:focus, +button.list-group-item-info:hover { + color: #31708f; + background-color: #c4e3f3; +} + +a.list-group-item-info.active, +button.list-group-item-info.active { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} + +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} + +a.list-group-item-warning, +button.list-group-item-warning { + color: #8a6d3b; +} + +a.list-group-item-warning .list-group-item-heading, +button.list-group-item-warning .list-group-item-heading { + color: inherit; +} + +a.list-group-item-warning:focus, a.list-group-item-warning:hover, +button.list-group-item-warning:focus, +button.list-group-item-warning:hover { + color: #8a6d3b; + background-color: #faf2cc; +} + +a.list-group-item-warning.active, +button.list-group-item-warning.active { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} + +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} + +a.list-group-item-danger, +button.list-group-item-danger { + color: #a94442; +} + +a.list-group-item-danger .list-group-item-heading, +button.list-group-item-danger .list-group-item-heading { + color: inherit; +} + +a.list-group-item-danger:focus, a.list-group-item-danger:hover, +button.list-group-item-danger:focus, +button.list-group-item-danger:hover { + color: #a94442; + background-color: #ebcccc; +} + +a.list-group-item-danger.active, +button.list-group-item-danger.active { + color: #fff; + background-color: #a94442; + border-color: #a94442; +} + +.embed-responsive { + position: relative; + display: block; + width: 100%; + padding: 0; + overflow: hidden; +} + +.embed-responsive::before { + display: block; + content: ""; +} + +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} + +.embed-responsive-21by9::before { + padding-top: 42.857143%; +} + +.embed-responsive-16by9::before { + padding-top: 56.25%; +} + +.embed-responsive-4by3::before { + padding-top: 75%; +} + +.embed-responsive-1by1::before { + padding-top: 100%; +} + +.close { + float: right; + font-size: 1.5rem; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + opacity: .5; +} + +.close:focus, .close:hover { + color: #000; + text-decoration: none; + cursor: pointer; + opacity: .75; +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.modal-open { + overflow: hidden; +} + +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: hidden; + outline: 0; +} + +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform 0.3s ease-out; + transition: -webkit-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; + transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out, -o-transform 0.3s ease-out; + -webkit-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); +} + +.modal.show .modal-dialog { + -webkit-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} + +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} + +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} + +.modal-content { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; + outline: 0; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop.show { + opacity: 0.5; +} + +.modal-header { + 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; + padding: 15px; + border-bottom: 1px solid #eceeef; +} + +.modal-title { + margin-bottom: 0; + line-height: 1.5; +} + +.modal-body { + position: relative; + -webkit-box-flex: 1; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + padding: 15px; +} + +.modal-footer { + 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: end; + -webkit-justify-content: flex-end; + -ms-flex-pack: end; + justify-content: flex-end; + padding: 15px; + border-top: 1px solid #eceeef; +} + +.modal-footer > :not(:first-child) { + margin-left: .25rem; +} + +.modal-footer > :not(:last-child) { + margin-right: .25rem; +} + +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} + +@media (min-width: 576px) { + .modal-dialog { + max-width: 500px; + margin: 30px auto; + } + .modal-sm { + max-width: 300px; + } +} + +@media (min-width: 992px) { + .modal-lg { + max-width: 800px; + } +} + +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + font-style: normal; + font-weight: normal; + letter-spacing: normal; + line-break: auto; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + white-space: normal; + word-break: normal; + word-spacing: normal; + font-size: 0.875rem; + word-wrap: break-word; + opacity: 0; +} + +.tooltip.show { + opacity: 0.9; +} + +.tooltip.tooltip-top, .tooltip.bs-tether-element-attached-bottom { + padding: 5px 0; + margin-top: -3px; +} + +.tooltip.tooltip-top .tooltip-inner::before, .tooltip.bs-tether-element-attached-bottom .tooltip-inner::before { + bottom: 0; + left: 50%; + margin-left: -5px; + content: ""; + border-width: 5px 5px 0; + border-top-color: #000; +} + +.tooltip.tooltip-right, .tooltip.bs-tether-element-attached-left { + padding: 0 5px; + margin-left: 3px; +} + +.tooltip.tooltip-right .tooltip-inner::before, .tooltip.bs-tether-element-attached-left .tooltip-inner::before { + top: 50%; + left: 0; + margin-top: -5px; + content: ""; + border-width: 5px 5px 5px 0; + border-right-color: #000; +} + +.tooltip.tooltip-bottom, .tooltip.bs-tether-element-attached-top { + padding: 5px 0; + margin-top: 3px; +} + +.tooltip.tooltip-bottom .tooltip-inner::before, .tooltip.bs-tether-element-attached-top .tooltip-inner::before { + top: 0; + left: 50%; + margin-left: -5px; + content: ""; + border-width: 0 5px 5px; + border-bottom-color: #000; +} + +.tooltip.tooltip-left, .tooltip.bs-tether-element-attached-right { + padding: 0 5px; + margin-left: -3px; +} + +.tooltip.tooltip-left .tooltip-inner::before, .tooltip.bs-tether-element-attached-right .tooltip-inner::before { + top: 50%; + right: 0; + margin-top: -5px; + content: ""; + border-width: 5px 0 5px 5px; + border-left-color: #000; +} + +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 0.25rem; +} + +.tooltip-inner::before { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: block; + max-width: 276px; + padding: 1px; + font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + font-style: normal; + font-weight: normal; + letter-spacing: normal; + line-break: auto; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + white-space: normal; + word-break: normal; + word-spacing: normal; + font-size: 0.875rem; + word-wrap: break-word; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; +} + +.popover.popover-top, .popover.bs-tether-element-attached-bottom { + margin-top: -10px; +} + +.popover.popover-top::before, .popover.popover-top::after, .popover.bs-tether-element-attached-bottom::before, .popover.bs-tether-element-attached-bottom::after { + left: 50%; + border-bottom-width: 0; +} + +.popover.popover-top::before, .popover.bs-tether-element-attached-bottom::before { + bottom: -11px; + margin-left: -11px; + border-top-color: rgba(0, 0, 0, 0.25); +} + +.popover.popover-top::after, .popover.bs-tether-element-attached-bottom::after { + bottom: -10px; + margin-left: -10px; + border-top-color: #fff; +} + +.popover.popover-right, .popover.bs-tether-element-attached-left { + margin-left: 10px; +} + +.popover.popover-right::before, .popover.popover-right::after, .popover.bs-tether-element-attached-left::before, .popover.bs-tether-element-attached-left::after { + top: 50%; + border-left-width: 0; +} + +.popover.popover-right::before, .popover.bs-tether-element-attached-left::before { + left: -11px; + margin-top: -11px; + border-right-color: rgba(0, 0, 0, 0.25); +} + +.popover.popover-right::after, .popover.bs-tether-element-attached-left::after { + left: -10px; + margin-top: -10px; + border-right-color: #fff; +} + +.popover.popover-bottom, .popover.bs-tether-element-attached-top { + margin-top: 10px; +} + +.popover.popover-bottom::before, .popover.popover-bottom::after, .popover.bs-tether-element-attached-top::before, .popover.bs-tether-element-attached-top::after { + left: 50%; + border-top-width: 0; +} + +.popover.popover-bottom::before, .popover.bs-tether-element-attached-top::before { + top: -11px; + margin-left: -11px; + border-bottom-color: rgba(0, 0, 0, 0.25); +} + +.popover.popover-bottom::after, .popover.bs-tether-element-attached-top::after { + top: -10px; + margin-left: -10px; + border-bottom-color: #f7f7f7; +} + +.popover.popover-bottom .popover-title::before, .popover.bs-tether-element-attached-top .popover-title::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: 20px; + margin-left: -10px; + content: ""; + border-bottom: 1px solid #f7f7f7; +} + +.popover.popover-left, .popover.bs-tether-element-attached-right { + margin-left: -10px; +} + +.popover.popover-left::before, .popover.popover-left::after, .popover.bs-tether-element-attached-right::before, .popover.bs-tether-element-attached-right::after { + top: 50%; + border-right-width: 0; +} + +.popover.popover-left::before, .popover.bs-tether-element-attached-right::before { + right: -11px; + margin-top: -11px; + border-left-color: rgba(0, 0, 0, 0.25); +} + +.popover.popover-left::after, .popover.bs-tether-element-attached-right::after { + right: -10px; + margin-top: -10px; + border-left-color: #fff; +} + +.popover-title { + padding: 8px 14px; + margin-bottom: 0; + font-size: 1rem; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-top-right-radius: calc(0.3rem - 1px); + border-top-left-radius: calc(0.3rem - 1px); +} + +.popover-title:empty { + display: none; +} + +.popover-content { + padding: 9px 14px; +} + +.popover::before, +.popover::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover::before { + content: ""; + border-width: 11px; +} + +.popover::after { + content: ""; + border-width: 10px; +} + +.carousel { + position: relative; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-item { + position: relative; + display: none; + width: 100%; +} + +@media (-webkit-transform-3d) { + .carousel-item { + -webkit-transition: -webkit-transform 0.6s ease-in-out; + transition: -webkit-transform 0.6s ease-in-out; + -o-transition: -o-transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out, -o-transform 0.6s ease-in-out; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000px; + perspective: 1000px; + } +} + +@supports ((-webkit-transform: translate3d(0, 0, 0)) or (transform: translate3d(0, 0, 0))) { + .carousel-item { + -webkit-transition: -webkit-transform 0.6s ease-in-out; + transition: -webkit-transform 0.6s ease-in-out; + -o-transition: -o-transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out, -o-transform 0.6s ease-in-out; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000px; + perspective: 1000px; + } +} + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} + +.carousel-item-next, +.carousel-item-prev { + position: absolute; + top: 0; +} + +@media (-webkit-transform-3d) { + .carousel-item-next.carousel-item-left, + .carousel-item-prev.carousel-item-right { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + .carousel-item-next, + .active.carousel-item-right { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + .carousel-item-prev, + .active.carousel-item-left { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +@supports ((-webkit-transform: translate3d(0, 0, 0)) or (transform: translate3d(0, 0, 0))) { + .carousel-item-next.carousel-item-left, + .carousel-item-prev.carousel-item-right { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + .carousel-item-next, + .active.carousel-item-right { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + .carousel-item-prev, + .active.carousel-item-left { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + 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: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + width: 15%; + color: #fff; + text-align: center; + opacity: 0.5; +} + +.carousel-control-prev:focus, .carousel-control-prev:hover, +.carousel-control-next:focus, +.carousel-control-next:hover { + color: #fff; + text-decoration: none; + outline: 0; + opacity: .9; +} + +.carousel-control-prev { + left: 0; +} + +.carousel-control-next { + right: 0; +} + +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: 20px; + height: 20px; + background: transparent no-repeat center center; + -webkit-background-size: 100% 100%; + background-size: 100% 100%; +} + +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M4 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E"); +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M1.5 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E"); +} + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 10px; + left: 0; + z-index: 15; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + padding-left: 0; + margin-right: 15%; + margin-left: 15%; + list-style: none; +} + +.carousel-indicators li { + position: relative; + -webkit-box-flex: 1; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + max-width: 30px; + height: 3px; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: rgba(255, 255, 255, 0.5); +} + +.carousel-indicators li::before { + position: absolute; + top: -10px; + left: 0; + display: inline-block; + width: 100%; + height: 10px; + content: ""; +} + +.carousel-indicators li::after { + position: absolute; + bottom: -10px; + left: 0; + display: inline-block; + width: 100%; + height: 10px; + content: ""; +} + +.carousel-indicators .active { + background-color: #fff; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; +} + +.align-baseline { + vertical-align: baseline !important; +} + +.align-top { + vertical-align: top !important; +} + +.align-middle { + vertical-align: middle !important; +} + +.align-bottom { + vertical-align: bottom !important; +} + +.align-text-bottom { + vertical-align: text-bottom !important; +} + +.align-text-top { + vertical-align: text-top !important; +} + +.bg-faded { + background-color: #f7f7f7; +} + +.bg-primary { + background-color: #0275d8 !important; +} + +a.bg-primary:focus, a.bg-primary:hover { + background-color: #025aa5 !important; +} + +.bg-success { + background-color: #5cb85c !important; +} + +a.bg-success:focus, a.bg-success:hover { + background-color: #449d44 !important; +} + +.bg-info { + background-color: #5bc0de !important; +} + +a.bg-info:focus, a.bg-info:hover { + background-color: #31b0d5 !important; +} + +.bg-warning { + background-color: #f0ad4e !important; +} + +a.bg-warning:focus, a.bg-warning:hover { + background-color: #ec971f !important; +} + +.bg-danger { + background-color: #d9534f !important; +} + +a.bg-danger:focus, a.bg-danger:hover { + background-color: #c9302c !important; +} + +.bg-inverse { + background-color: #292b2c !important; +} + +a.bg-inverse:focus, a.bg-inverse:hover { + background-color: #101112 !important; +} + +.border-0 { + border: 0 !important; +} + +.border-top-0 { + border-top: 0 !important; +} + +.border-right-0 { + border-right: 0 !important; +} + +.border-bottom-0 { + border-bottom: 0 !important; +} + +.border-left-0 { + border-left: 0 !important; +} + +.rounded { + border-radius: 0.25rem; +} + +.rounded-top { + border-top-right-radius: 0.25rem; + border-top-left-radius: 0.25rem; +} + +.rounded-right { + border-bottom-right-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} + +.rounded-bottom { + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} + +.rounded-left { + border-bottom-left-radius: 0.25rem; + border-top-left-radius: 0.25rem; +} + +.rounded-circle { + border-radius: 50%; +} + +.rounded-0 { + border-radius: 0; +} + +.clearfix::after { + display: block; + content: ""; + clear: both; +} + +.d-none { + display: none !important; +} + +.d-inline { + display: inline !important; +} + +.d-inline-block { + display: inline-block !important; +} + +.d-block { + display: block !important; +} + +.d-table { + display: table !important; +} + +.d-table-cell { + display: table-cell !important; +} + +.d-flex { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; +} + +.d-inline-flex { + display: -webkit-inline-box !important; + display: -webkit-inline-flex !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; +} + +@media (min-width: 576px) { + .d-sm-none { + display: none !important; + } + .d-sm-inline { + display: inline !important; + } + .d-sm-inline-block { + display: inline-block !important; + } + .d-sm-block { + display: block !important; + } + .d-sm-table { + display: table !important; + } + .d-sm-table-cell { + display: table-cell !important; + } + .d-sm-flex { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + } + .d-sm-inline-flex { + display: -webkit-inline-box !important; + display: -webkit-inline-flex !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +@media (min-width: 768px) { + .d-md-none { + display: none !important; + } + .d-md-inline { + display: inline !important; + } + .d-md-inline-block { + display: inline-block !important; + } + .d-md-block { + display: block !important; + } + .d-md-table { + display: table !important; + } + .d-md-table-cell { + display: table-cell !important; + } + .d-md-flex { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + } + .d-md-inline-flex { + display: -webkit-inline-box !important; + display: -webkit-inline-flex !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +@media (min-width: 992px) { + .d-lg-none { + display: none !important; + } + .d-lg-inline { + display: inline !important; + } + .d-lg-inline-block { + display: inline-block !important; + } + .d-lg-block { + display: block !important; + } + .d-lg-table { + display: table !important; + } + .d-lg-table-cell { + display: table-cell !important; + } + .d-lg-flex { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + } + .d-lg-inline-flex { + display: -webkit-inline-box !important; + display: -webkit-inline-flex !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +@media (min-width: 1200px) { + .d-xl-none { + display: none !important; + } + .d-xl-inline { + display: inline !important; + } + .d-xl-inline-block { + display: inline-block !important; + } + .d-xl-block { + display: block !important; + } + .d-xl-table { + display: table !important; + } + .d-xl-table-cell { + display: table-cell !important; + } + .d-xl-flex { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + } + .d-xl-inline-flex { + display: -webkit-inline-box !important; + display: -webkit-inline-flex !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +.flex-first { + -webkit-box-ordinal-group: 0; + -webkit-order: -1; + -ms-flex-order: -1; + order: -1; +} + +.flex-last { + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; +} + +.flex-unordered { + -webkit-box-ordinal-group: 1; + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; +} + +.flex-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: row !important; + -ms-flex-direction: row !important; + flex-direction: row !important; +} + +.flex-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: column !important; + -ms-flex-direction: column !important; + flex-direction: column !important; +} + +.flex-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: row-reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; +} + +.flex-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: column-reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; +} + +.flex-wrap { + -webkit-flex-wrap: wrap !important; + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; +} + +.flex-nowrap { + -webkit-flex-wrap: nowrap !important; + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; +} + +.flex-wrap-reverse { + -webkit-flex-wrap: wrap-reverse !important; + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; +} + +.justify-content-start { + -webkit-box-pack: start !important; + -webkit-justify-content: flex-start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; +} + +.justify-content-end { + -webkit-box-pack: end !important; + -webkit-justify-content: flex-end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; +} + +.justify-content-center { + -webkit-box-pack: center !important; + -webkit-justify-content: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; +} + +.justify-content-between { + -webkit-box-pack: justify !important; + -webkit-justify-content: space-between !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; +} + +.justify-content-around { + -webkit-justify-content: space-around !important; + -ms-flex-pack: distribute !important; + justify-content: space-around !important; +} + +.align-items-start { + -webkit-box-align: start !important; + -webkit-align-items: flex-start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; +} + +.align-items-end { + -webkit-box-align: end !important; + -webkit-align-items: flex-end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; +} + +.align-items-center { + -webkit-box-align: center !important; + -webkit-align-items: center !important; + -ms-flex-align: center !important; + align-items: center !important; +} + +.align-items-baseline { + -webkit-box-align: baseline !important; + -webkit-align-items: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; +} + +.align-items-stretch { + -webkit-box-align: stretch !important; + -webkit-align-items: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; +} + +.align-content-start { + -webkit-align-content: flex-start !important; + -ms-flex-line-pack: start !important; + align-content: flex-start !important; +} + +.align-content-end { + -webkit-align-content: flex-end !important; + -ms-flex-line-pack: end !important; + align-content: flex-end !important; +} + +.align-content-center { + -webkit-align-content: center !important; + -ms-flex-line-pack: center !important; + align-content: center !important; +} + +.align-content-between { + -webkit-align-content: space-between !important; + -ms-flex-line-pack: justify !important; + align-content: space-between !important; +} + +.align-content-around { + -webkit-align-content: space-around !important; + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; +} + +.align-content-stretch { + -webkit-align-content: stretch !important; + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; +} + +.align-self-auto { + -webkit-align-self: auto !important; + -ms-flex-item-align: auto !important; + -ms-grid-row-align: auto !important; + align-self: auto !important; +} + +.align-self-start { + -webkit-align-self: flex-start !important; + -ms-flex-item-align: start !important; + align-self: flex-start !important; +} + +.align-self-end { + -webkit-align-self: flex-end !important; + -ms-flex-item-align: end !important; + align-self: flex-end !important; +} + +.align-self-center { + -webkit-align-self: center !important; + -ms-flex-item-align: center !important; + -ms-grid-row-align: center !important; + align-self: center !important; +} + +.align-self-baseline { + -webkit-align-self: baseline !important; + -ms-flex-item-align: baseline !important; + align-self: baseline !important; +} + +.align-self-stretch { + -webkit-align-self: stretch !important; + -ms-flex-item-align: stretch !important; + -ms-grid-row-align: stretch !important; + align-self: stretch !important; +} + +@media (min-width: 576px) { + .flex-sm-first { + -webkit-box-ordinal-group: 0; + -webkit-order: -1; + -ms-flex-order: -1; + order: -1; + } + .flex-sm-last { + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; + } + .flex-sm-unordered { + -webkit-box-ordinal-group: 1; + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + } + .flex-sm-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: row !important; + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-sm-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: column !important; + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-sm-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: row-reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: column-reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-sm-wrap { + -webkit-flex-wrap: wrap !important; + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-sm-nowrap { + -webkit-flex-wrap: nowrap !important; + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-sm-wrap-reverse { + -webkit-flex-wrap: wrap-reverse !important; + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .justify-content-sm-start { + -webkit-box-pack: start !important; + -webkit-justify-content: flex-start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-sm-end { + -webkit-box-pack: end !important; + -webkit-justify-content: flex-end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-sm-center { + -webkit-box-pack: center !important; + -webkit-justify-content: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-sm-between { + -webkit-box-pack: justify !important; + -webkit-justify-content: space-between !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-sm-around { + -webkit-justify-content: space-around !important; + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-sm-start { + -webkit-box-align: start !important; + -webkit-align-items: flex-start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-sm-end { + -webkit-box-align: end !important; + -webkit-align-items: flex-end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-sm-center { + -webkit-box-align: center !important; + -webkit-align-items: center !important; + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-sm-baseline { + -webkit-box-align: baseline !important; + -webkit-align-items: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-sm-stretch { + -webkit-box-align: stretch !important; + -webkit-align-items: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-sm-start { + -webkit-align-content: flex-start !important; + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-sm-end { + -webkit-align-content: flex-end !important; + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-sm-center { + -webkit-align-content: center !important; + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-sm-between { + -webkit-align-content: space-between !important; + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-sm-around { + -webkit-align-content: space-around !important; + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-sm-stretch { + -webkit-align-content: stretch !important; + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-sm-auto { + -webkit-align-self: auto !important; + -ms-flex-item-align: auto !important; + -ms-grid-row-align: auto !important; + align-self: auto !important; + } + .align-self-sm-start { + -webkit-align-self: flex-start !important; + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-sm-end { + -webkit-align-self: flex-end !important; + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-sm-center { + -webkit-align-self: center !important; + -ms-flex-item-align: center !important; + -ms-grid-row-align: center !important; + align-self: center !important; + } + .align-self-sm-baseline { + -webkit-align-self: baseline !important; + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-sm-stretch { + -webkit-align-self: stretch !important; + -ms-flex-item-align: stretch !important; + -ms-grid-row-align: stretch !important; + align-self: stretch !important; + } +} + +@media (min-width: 768px) { + .flex-md-first { + -webkit-box-ordinal-group: 0; + -webkit-order: -1; + -ms-flex-order: -1; + order: -1; + } + .flex-md-last { + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; + } + .flex-md-unordered { + -webkit-box-ordinal-group: 1; + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + } + .flex-md-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: row !important; + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-md-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: column !important; + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-md-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: row-reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-md-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: column-reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-md-wrap { + -webkit-flex-wrap: wrap !important; + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-md-nowrap { + -webkit-flex-wrap: nowrap !important; + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-md-wrap-reverse { + -webkit-flex-wrap: wrap-reverse !important; + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .justify-content-md-start { + -webkit-box-pack: start !important; + -webkit-justify-content: flex-start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-md-end { + -webkit-box-pack: end !important; + -webkit-justify-content: flex-end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-md-center { + -webkit-box-pack: center !important; + -webkit-justify-content: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-md-between { + -webkit-box-pack: justify !important; + -webkit-justify-content: space-between !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-md-around { + -webkit-justify-content: space-around !important; + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-md-start { + -webkit-box-align: start !important; + -webkit-align-items: flex-start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-md-end { + -webkit-box-align: end !important; + -webkit-align-items: flex-end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-md-center { + -webkit-box-align: center !important; + -webkit-align-items: center !important; + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-md-baseline { + -webkit-box-align: baseline !important; + -webkit-align-items: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-md-stretch { + -webkit-box-align: stretch !important; + -webkit-align-items: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-md-start { + -webkit-align-content: flex-start !important; + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-md-end { + -webkit-align-content: flex-end !important; + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-md-center { + -webkit-align-content: center !important; + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-md-between { + -webkit-align-content: space-between !important; + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-md-around { + -webkit-align-content: space-around !important; + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-md-stretch { + -webkit-align-content: stretch !important; + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-md-auto { + -webkit-align-self: auto !important; + -ms-flex-item-align: auto !important; + -ms-grid-row-align: auto !important; + align-self: auto !important; + } + .align-self-md-start { + -webkit-align-self: flex-start !important; + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-md-end { + -webkit-align-self: flex-end !important; + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-md-center { + -webkit-align-self: center !important; + -ms-flex-item-align: center !important; + -ms-grid-row-align: center !important; + align-self: center !important; + } + .align-self-md-baseline { + -webkit-align-self: baseline !important; + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-md-stretch { + -webkit-align-self: stretch !important; + -ms-flex-item-align: stretch !important; + -ms-grid-row-align: stretch !important; + align-self: stretch !important; + } +} + +@media (min-width: 992px) { + .flex-lg-first { + -webkit-box-ordinal-group: 0; + -webkit-order: -1; + -ms-flex-order: -1; + order: -1; + } + .flex-lg-last { + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; + } + .flex-lg-unordered { + -webkit-box-ordinal-group: 1; + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + } + .flex-lg-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: row !important; + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-lg-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: column !important; + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-lg-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: row-reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-lg-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: column-reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-lg-wrap { + -webkit-flex-wrap: wrap !important; + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-lg-nowrap { + -webkit-flex-wrap: nowrap !important; + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-lg-wrap-reverse { + -webkit-flex-wrap: wrap-reverse !important; + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .justify-content-lg-start { + -webkit-box-pack: start !important; + -webkit-justify-content: flex-start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-lg-end { + -webkit-box-pack: end !important; + -webkit-justify-content: flex-end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-lg-center { + -webkit-box-pack: center !important; + -webkit-justify-content: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-lg-between { + -webkit-box-pack: justify !important; + -webkit-justify-content: space-between !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-lg-around { + -webkit-justify-content: space-around !important; + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-lg-start { + -webkit-box-align: start !important; + -webkit-align-items: flex-start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-lg-end { + -webkit-box-align: end !important; + -webkit-align-items: flex-end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-lg-center { + -webkit-box-align: center !important; + -webkit-align-items: center !important; + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-lg-baseline { + -webkit-box-align: baseline !important; + -webkit-align-items: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-lg-stretch { + -webkit-box-align: stretch !important; + -webkit-align-items: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-lg-start { + -webkit-align-content: flex-start !important; + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-lg-end { + -webkit-align-content: flex-end !important; + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-lg-center { + -webkit-align-content: center !important; + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-lg-between { + -webkit-align-content: space-between !important; + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-lg-around { + -webkit-align-content: space-around !important; + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-lg-stretch { + -webkit-align-content: stretch !important; + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-lg-auto { + -webkit-align-self: auto !important; + -ms-flex-item-align: auto !important; + -ms-grid-row-align: auto !important; + align-self: auto !important; + } + .align-self-lg-start { + -webkit-align-self: flex-start !important; + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-lg-end { + -webkit-align-self: flex-end !important; + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-lg-center { + -webkit-align-self: center !important; + -ms-flex-item-align: center !important; + -ms-grid-row-align: center !important; + align-self: center !important; + } + .align-self-lg-baseline { + -webkit-align-self: baseline !important; + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-lg-stretch { + -webkit-align-self: stretch !important; + -ms-flex-item-align: stretch !important; + -ms-grid-row-align: stretch !important; + align-self: stretch !important; + } +} + +@media (min-width: 1200px) { + .flex-xl-first { + -webkit-box-ordinal-group: 0; + -webkit-order: -1; + -ms-flex-order: -1; + order: -1; + } + .flex-xl-last { + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; + } + .flex-xl-unordered { + -webkit-box-ordinal-group: 1; + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + } + .flex-xl-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: row !important; + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-xl-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: column !important; + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-xl-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: row-reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: column-reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-xl-wrap { + -webkit-flex-wrap: wrap !important; + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-xl-nowrap { + -webkit-flex-wrap: nowrap !important; + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-xl-wrap-reverse { + -webkit-flex-wrap: wrap-reverse !important; + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .justify-content-xl-start { + -webkit-box-pack: start !important; + -webkit-justify-content: flex-start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-xl-end { + -webkit-box-pack: end !important; + -webkit-justify-content: flex-end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-xl-center { + -webkit-box-pack: center !important; + -webkit-justify-content: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-xl-between { + -webkit-box-pack: justify !important; + -webkit-justify-content: space-between !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-xl-around { + -webkit-justify-content: space-around !important; + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-xl-start { + -webkit-box-align: start !important; + -webkit-align-items: flex-start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-xl-end { + -webkit-box-align: end !important; + -webkit-align-items: flex-end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-xl-center { + -webkit-box-align: center !important; + -webkit-align-items: center !important; + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-xl-baseline { + -webkit-box-align: baseline !important; + -webkit-align-items: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-xl-stretch { + -webkit-box-align: stretch !important; + -webkit-align-items: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-xl-start { + -webkit-align-content: flex-start !important; + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-xl-end { + -webkit-align-content: flex-end !important; + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-xl-center { + -webkit-align-content: center !important; + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-xl-between { + -webkit-align-content: space-between !important; + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-xl-around { + -webkit-align-content: space-around !important; + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-xl-stretch { + -webkit-align-content: stretch !important; + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-xl-auto { + -webkit-align-self: auto !important; + -ms-flex-item-align: auto !important; + -ms-grid-row-align: auto !important; + align-self: auto !important; + } + .align-self-xl-start { + -webkit-align-self: flex-start !important; + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-xl-end { + -webkit-align-self: flex-end !important; + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-xl-center { + -webkit-align-self: center !important; + -ms-flex-item-align: center !important; + -ms-grid-row-align: center !important; + align-self: center !important; + } + .align-self-xl-baseline { + -webkit-align-self: baseline !important; + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-xl-stretch { + -webkit-align-self: stretch !important; + -ms-flex-item-align: stretch !important; + -ms-grid-row-align: stretch !important; + align-self: stretch !important; + } +} + +.float-left { + float: left !important; +} + +.float-right { + float: right !important; +} + +.float-none { + float: none !important; +} + +@media (min-width: 576px) { + .float-sm-left { + float: left !important; + } + .float-sm-right { + float: right !important; + } + .float-sm-none { + float: none !important; + } +} + +@media (min-width: 768px) { + .float-md-left { + float: left !important; + } + .float-md-right { + float: right !important; + } + .float-md-none { + float: none !important; + } +} + +@media (min-width: 992px) { + .float-lg-left { + float: left !important; + } + .float-lg-right { + float: right !important; + } + .float-lg-none { + float: none !important; + } +} + +@media (min-width: 1200px) { + .float-xl-left { + float: left !important; + } + .float-xl-right { + float: right !important; + } + .float-xl-none { + float: none !important; + } +} + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; +} + +.sticky-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1030; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} + +.sr-only-focusable:active, .sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} + +.w-25 { + width: 25% !important; +} + +.w-50 { + width: 50% !important; +} + +.w-75 { + width: 75% !important; +} + +.w-100 { + width: 100% !important; +} + +.h-25 { + height: 25% !important; +} + +.h-50 { + height: 50% !important; +} + +.h-75 { + height: 75% !important; +} + +.h-100 { + height: 100% !important; +} + +.mw-100 { + max-width: 100% !important; +} + +.mh-100 { + max-height: 100% !important; +} + +.m-0 { + margin: 0 0 !important; +} + +.mt-0 { + margin-top: 0 !important; +} + +.mr-0 { + margin-right: 0 !important; +} + +.mb-0 { + margin-bottom: 0 !important; +} + +.ml-0 { + margin-left: 0 !important; +} + +.mx-0 { + margin-right: 0 !important; + margin-left: 0 !important; +} + +.my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.m-1 { + margin: 0.25rem 0.25rem !important; +} + +.mt-1 { + margin-top: 0.25rem !important; +} + +.mr-1 { + margin-right: 0.25rem !important; +} + +.mb-1 { + margin-bottom: 0.25rem !important; +} + +.ml-1 { + margin-left: 0.25rem !important; +} + +.mx-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; +} + +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem 0.5rem !important; +} + +.mt-2 { + margin-top: 0.5rem !important; +} + +.mr-2 { + margin-right: 0.5rem !important; +} + +.mb-2 { + margin-bottom: 0.5rem !important; +} + +.ml-2 { + margin-left: 0.5rem !important; +} + +.mx-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; +} + +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; +} + +.m-3 { + margin: 1rem 1rem !important; +} + +.mt-3 { + margin-top: 1rem !important; +} + +.mr-3 { + margin-right: 1rem !important; +} + +.mb-3 { + margin-bottom: 1rem !important; +} + +.ml-3 { + margin-left: 1rem !important; +} + +.mx-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; +} + +.my-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; +} + +.m-4 { + margin: 1.5rem 1.5rem !important; +} + +.mt-4 { + margin-top: 1.5rem !important; +} + +.mr-4 { + margin-right: 1.5rem !important; +} + +.mb-4 { + margin-bottom: 1.5rem !important; +} + +.ml-4 { + margin-left: 1.5rem !important; +} + +.mx-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; +} + +.my-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; +} + +.m-5 { + margin: 3rem 3rem !important; +} + +.mt-5 { + margin-top: 3rem !important; +} + +.mr-5 { + margin-right: 3rem !important; +} + +.mb-5 { + margin-bottom: 3rem !important; +} + +.ml-5 { + margin-left: 3rem !important; +} + +.mx-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; +} + +.my-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; +} + +.p-0 { + padding: 0 0 !important; +} + +.pt-0 { + padding-top: 0 !important; +} + +.pr-0 { + padding-right: 0 !important; +} + +.pb-0 { + padding-bottom: 0 !important; +} + +.pl-0 { + padding-left: 0 !important; +} + +.px-0 { + padding-right: 0 !important; + padding-left: 0 !important; +} + +.py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.p-1 { + padding: 0.25rem 0.25rem !important; +} + +.pt-1 { + padding-top: 0.25rem !important; +} + +.pr-1 { + padding-right: 0.25rem !important; +} + +.pb-1 { + padding-bottom: 0.25rem !important; +} + +.pl-1 { + padding-left: 0.25rem !important; +} + +.px-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; +} + +.py-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem 0.5rem !important; +} + +.pt-2 { + padding-top: 0.5rem !important; +} + +.pr-2 { + padding-right: 0.5rem !important; +} + +.pb-2 { + padding-bottom: 0.5rem !important; +} + +.pl-2 { + padding-left: 0.5rem !important; +} + +.px-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; +} + +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; +} + +.p-3 { + padding: 1rem 1rem !important; +} + +.pt-3 { + padding-top: 1rem !important; +} + +.pr-3 { + padding-right: 1rem !important; +} + +.pb-3 { + padding-bottom: 1rem !important; +} + +.pl-3 { + padding-left: 1rem !important; +} + +.px-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; +} + +.py-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} + +.p-4 { + padding: 1.5rem 1.5rem !important; +} + +.pt-4 { + padding-top: 1.5rem !important; +} + +.pr-4 { + padding-right: 1.5rem !important; +} + +.pb-4 { + padding-bottom: 1.5rem !important; +} + +.pl-4 { + padding-left: 1.5rem !important; +} + +.px-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; +} + +.py-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; +} + +.p-5 { + padding: 3rem 3rem !important; +} + +.pt-5 { + padding-top: 3rem !important; +} + +.pr-5 { + padding-right: 3rem !important; +} + +.pb-5 { + padding-bottom: 3rem !important; +} + +.pl-5 { + padding-left: 3rem !important; +} + +.px-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; +} + +.py-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mt-auto { + margin-top: auto !important; +} + +.mr-auto { + margin-right: auto !important; +} + +.mb-auto { + margin-bottom: auto !important; +} + +.ml-auto { + margin-left: auto !important; +} + +.mx-auto { + margin-right: auto !important; + margin-left: auto !important; +} + +.my-auto { + margin-top: auto !important; + margin-bottom: auto !important; +} + +@media (min-width: 576px) { + .m-sm-0 { + margin: 0 0 !important; + } + .mt-sm-0 { + margin-top: 0 !important; + } + .mr-sm-0 { + margin-right: 0 !important; + } + .mb-sm-0 { + margin-bottom: 0 !important; + } + .ml-sm-0 { + margin-left: 0 !important; + } + .mx-sm-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .my-sm-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .m-sm-1 { + margin: 0.25rem 0.25rem !important; + } + .mt-sm-1 { + margin-top: 0.25rem !important; + } + .mr-sm-1 { + margin-right: 0.25rem !important; + } + .mb-sm-1 { + margin-bottom: 0.25rem !important; + } + .ml-sm-1 { + margin-left: 0.25rem !important; + } + .mx-sm-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .my-sm-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem 0.5rem !important; + } + .mt-sm-2 { + margin-top: 0.5rem !important; + } + .mr-sm-2 { + margin-right: 0.5rem !important; + } + .mb-sm-2 { + margin-bottom: 0.5rem !important; + } + .ml-sm-2 { + margin-left: 0.5rem !important; + } + .mx-sm-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .my-sm-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .m-sm-3 { + margin: 1rem 1rem !important; + } + .mt-sm-3 { + margin-top: 1rem !important; + } + .mr-sm-3 { + margin-right: 1rem !important; + } + .mb-sm-3 { + margin-bottom: 1rem !important; + } + .ml-sm-3 { + margin-left: 1rem !important; + } + .mx-sm-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .my-sm-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .m-sm-4 { + margin: 1.5rem 1.5rem !important; + } + .mt-sm-4 { + margin-top: 1.5rem !important; + } + .mr-sm-4 { + margin-right: 1.5rem !important; + } + .mb-sm-4 { + margin-bottom: 1.5rem !important; + } + .ml-sm-4 { + margin-left: 1.5rem !important; + } + .mx-sm-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .my-sm-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .m-sm-5 { + margin: 3rem 3rem !important; + } + .mt-sm-5 { + margin-top: 3rem !important; + } + .mr-sm-5 { + margin-right: 3rem !important; + } + .mb-sm-5 { + margin-bottom: 3rem !important; + } + .ml-sm-5 { + margin-left: 3rem !important; + } + .mx-sm-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .my-sm-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .p-sm-0 { + padding: 0 0 !important; + } + .pt-sm-0 { + padding-top: 0 !important; + } + .pr-sm-0 { + padding-right: 0 !important; + } + .pb-sm-0 { + padding-bottom: 0 !important; + } + .pl-sm-0 { + padding-left: 0 !important; + } + .px-sm-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .py-sm-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .p-sm-1 { + padding: 0.25rem 0.25rem !important; + } + .pt-sm-1 { + padding-top: 0.25rem !important; + } + .pr-sm-1 { + padding-right: 0.25rem !important; + } + .pb-sm-1 { + padding-bottom: 0.25rem !important; + } + .pl-sm-1 { + padding-left: 0.25rem !important; + } + .px-sm-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .py-sm-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem 0.5rem !important; + } + .pt-sm-2 { + padding-top: 0.5rem !important; + } + .pr-sm-2 { + padding-right: 0.5rem !important; + } + .pb-sm-2 { + padding-bottom: 0.5rem !important; + } + .pl-sm-2 { + padding-left: 0.5rem !important; + } + .px-sm-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .py-sm-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .p-sm-3 { + padding: 1rem 1rem !important; + } + .pt-sm-3 { + padding-top: 1rem !important; + } + .pr-sm-3 { + padding-right: 1rem !important; + } + .pb-sm-3 { + padding-bottom: 1rem !important; + } + .pl-sm-3 { + padding-left: 1rem !important; + } + .px-sm-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .py-sm-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .p-sm-4 { + padding: 1.5rem 1.5rem !important; + } + .pt-sm-4 { + padding-top: 1.5rem !important; + } + .pr-sm-4 { + padding-right: 1.5rem !important; + } + .pb-sm-4 { + padding-bottom: 1.5rem !important; + } + .pl-sm-4 { + padding-left: 1.5rem !important; + } + .px-sm-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .py-sm-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .p-sm-5 { + padding: 3rem 3rem !important; + } + .pt-sm-5 { + padding-top: 3rem !important; + } + .pr-sm-5 { + padding-right: 3rem !important; + } + .pb-sm-5 { + padding-bottom: 3rem !important; + } + .pl-sm-5 { + padding-left: 3rem !important; + } + .px-sm-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-sm-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mt-sm-auto { + margin-top: auto !important; + } + .mr-sm-auto { + margin-right: auto !important; + } + .mb-sm-auto { + margin-bottom: auto !important; + } + .ml-sm-auto { + margin-left: auto !important; + } + .mx-sm-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-sm-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } +} + +@media (min-width: 768px) { + .m-md-0 { + margin: 0 0 !important; + } + .mt-md-0 { + margin-top: 0 !important; + } + .mr-md-0 { + margin-right: 0 !important; + } + .mb-md-0 { + margin-bottom: 0 !important; + } + .ml-md-0 { + margin-left: 0 !important; + } + .mx-md-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .my-md-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .m-md-1 { + margin: 0.25rem 0.25rem !important; + } + .mt-md-1 { + margin-top: 0.25rem !important; + } + .mr-md-1 { + margin-right: 0.25rem !important; + } + .mb-md-1 { + margin-bottom: 0.25rem !important; + } + .ml-md-1 { + margin-left: 0.25rem !important; + } + .mx-md-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .my-md-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem 0.5rem !important; + } + .mt-md-2 { + margin-top: 0.5rem !important; + } + .mr-md-2 { + margin-right: 0.5rem !important; + } + .mb-md-2 { + margin-bottom: 0.5rem !important; + } + .ml-md-2 { + margin-left: 0.5rem !important; + } + .mx-md-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .my-md-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .m-md-3 { + margin: 1rem 1rem !important; + } + .mt-md-3 { + margin-top: 1rem !important; + } + .mr-md-3 { + margin-right: 1rem !important; + } + .mb-md-3 { + margin-bottom: 1rem !important; + } + .ml-md-3 { + margin-left: 1rem !important; + } + .mx-md-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .my-md-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .m-md-4 { + margin: 1.5rem 1.5rem !important; + } + .mt-md-4 { + margin-top: 1.5rem !important; + } + .mr-md-4 { + margin-right: 1.5rem !important; + } + .mb-md-4 { + margin-bottom: 1.5rem !important; + } + .ml-md-4 { + margin-left: 1.5rem !important; + } + .mx-md-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .my-md-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .m-md-5 { + margin: 3rem 3rem !important; + } + .mt-md-5 { + margin-top: 3rem !important; + } + .mr-md-5 { + margin-right: 3rem !important; + } + .mb-md-5 { + margin-bottom: 3rem !important; + } + .ml-md-5 { + margin-left: 3rem !important; + } + .mx-md-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .my-md-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .p-md-0 { + padding: 0 0 !important; + } + .pt-md-0 { + padding-top: 0 !important; + } + .pr-md-0 { + padding-right: 0 !important; + } + .pb-md-0 { + padding-bottom: 0 !important; + } + .pl-md-0 { + padding-left: 0 !important; + } + .px-md-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .py-md-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .p-md-1 { + padding: 0.25rem 0.25rem !important; + } + .pt-md-1 { + padding-top: 0.25rem !important; + } + .pr-md-1 { + padding-right: 0.25rem !important; + } + .pb-md-1 { + padding-bottom: 0.25rem !important; + } + .pl-md-1 { + padding-left: 0.25rem !important; + } + .px-md-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .py-md-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem 0.5rem !important; + } + .pt-md-2 { + padding-top: 0.5rem !important; + } + .pr-md-2 { + padding-right: 0.5rem !important; + } + .pb-md-2 { + padding-bottom: 0.5rem !important; + } + .pl-md-2 { + padding-left: 0.5rem !important; + } + .px-md-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .py-md-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .p-md-3 { + padding: 1rem 1rem !important; + } + .pt-md-3 { + padding-top: 1rem !important; + } + .pr-md-3 { + padding-right: 1rem !important; + } + .pb-md-3 { + padding-bottom: 1rem !important; + } + .pl-md-3 { + padding-left: 1rem !important; + } + .px-md-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .py-md-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .p-md-4 { + padding: 1.5rem 1.5rem !important; + } + .pt-md-4 { + padding-top: 1.5rem !important; + } + .pr-md-4 { + padding-right: 1.5rem !important; + } + .pb-md-4 { + padding-bottom: 1.5rem !important; + } + .pl-md-4 { + padding-left: 1.5rem !important; + } + .px-md-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .py-md-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .p-md-5 { + padding: 3rem 3rem !important; + } + .pt-md-5 { + padding-top: 3rem !important; + } + .pr-md-5 { + padding-right: 3rem !important; + } + .pb-md-5 { + padding-bottom: 3rem !important; + } + .pl-md-5 { + padding-left: 3rem !important; + } + .px-md-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-md-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .m-md-auto { + margin: auto !important; + } + .mt-md-auto { + margin-top: auto !important; + } + .mr-md-auto { + margin-right: auto !important; + } + .mb-md-auto { + margin-bottom: auto !important; + } + .ml-md-auto { + margin-left: auto !important; + } + .mx-md-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-md-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } +} + +@media (min-width: 992px) { + .m-lg-0 { + margin: 0 0 !important; + } + .mt-lg-0 { + margin-top: 0 !important; + } + .mr-lg-0 { + margin-right: 0 !important; + } + .mb-lg-0 { + margin-bottom: 0 !important; + } + .ml-lg-0 { + margin-left: 0 !important; + } + .mx-lg-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .my-lg-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .m-lg-1 { + margin: 0.25rem 0.25rem !important; + } + .mt-lg-1 { + margin-top: 0.25rem !important; + } + .mr-lg-1 { + margin-right: 0.25rem !important; + } + .mb-lg-1 { + margin-bottom: 0.25rem !important; + } + .ml-lg-1 { + margin-left: 0.25rem !important; + } + .mx-lg-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .my-lg-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem 0.5rem !important; + } + .mt-lg-2 { + margin-top: 0.5rem !important; + } + .mr-lg-2 { + margin-right: 0.5rem !important; + } + .mb-lg-2 { + margin-bottom: 0.5rem !important; + } + .ml-lg-2 { + margin-left: 0.5rem !important; + } + .mx-lg-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .my-lg-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .m-lg-3 { + margin: 1rem 1rem !important; + } + .mt-lg-3 { + margin-top: 1rem !important; + } + .mr-lg-3 { + margin-right: 1rem !important; + } + .mb-lg-3 { + margin-bottom: 1rem !important; + } + .ml-lg-3 { + margin-left: 1rem !important; + } + .mx-lg-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .my-lg-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .m-lg-4 { + margin: 1.5rem 1.5rem !important; + } + .mt-lg-4 { + margin-top: 1.5rem !important; + } + .mr-lg-4 { + margin-right: 1.5rem !important; + } + .mb-lg-4 { + margin-bottom: 1.5rem !important; + } + .ml-lg-4 { + margin-left: 1.5rem !important; + } + .mx-lg-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .my-lg-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .m-lg-5 { + margin: 3rem 3rem !important; + } + .mt-lg-5 { + margin-top: 3rem !important; + } + .mr-lg-5 { + margin-right: 3rem !important; + } + .mb-lg-5 { + margin-bottom: 3rem !important; + } + .ml-lg-5 { + margin-left: 3rem !important; + } + .mx-lg-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .my-lg-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .p-lg-0 { + padding: 0 0 !important; + } + .pt-lg-0 { + padding-top: 0 !important; + } + .pr-lg-0 { + padding-right: 0 !important; + } + .pb-lg-0 { + padding-bottom: 0 !important; + } + .pl-lg-0 { + padding-left: 0 !important; + } + .px-lg-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .py-lg-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .p-lg-1 { + padding: 0.25rem 0.25rem !important; + } + .pt-lg-1 { + padding-top: 0.25rem !important; + } + .pr-lg-1 { + padding-right: 0.25rem !important; + } + .pb-lg-1 { + padding-bottom: 0.25rem !important; + } + .pl-lg-1 { + padding-left: 0.25rem !important; + } + .px-lg-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .py-lg-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem 0.5rem !important; + } + .pt-lg-2 { + padding-top: 0.5rem !important; + } + .pr-lg-2 { + padding-right: 0.5rem !important; + } + .pb-lg-2 { + padding-bottom: 0.5rem !important; + } + .pl-lg-2 { + padding-left: 0.5rem !important; + } + .px-lg-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .py-lg-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .p-lg-3 { + padding: 1rem 1rem !important; + } + .pt-lg-3 { + padding-top: 1rem !important; + } + .pr-lg-3 { + padding-right: 1rem !important; + } + .pb-lg-3 { + padding-bottom: 1rem !important; + } + .pl-lg-3 { + padding-left: 1rem !important; + } + .px-lg-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .py-lg-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .p-lg-4 { + padding: 1.5rem 1.5rem !important; + } + .pt-lg-4 { + padding-top: 1.5rem !important; + } + .pr-lg-4 { + padding-right: 1.5rem !important; + } + .pb-lg-4 { + padding-bottom: 1.5rem !important; + } + .pl-lg-4 { + padding-left: 1.5rem !important; + } + .px-lg-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .py-lg-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .p-lg-5 { + padding: 3rem 3rem !important; + } + .pt-lg-5 { + padding-top: 3rem !important; + } + .pr-lg-5 { + padding-right: 3rem !important; + } + .pb-lg-5 { + padding-bottom: 3rem !important; + } + .pl-lg-5 { + padding-left: 3rem !important; + } + .px-lg-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-lg-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .m-lg-auto { + margin: auto !important; + } + .mt-lg-auto { + margin-top: auto !important; + } + .mr-lg-auto { + margin-right: auto !important; + } + .mb-lg-auto { + margin-bottom: auto !important; + } + .ml-lg-auto { + margin-left: auto !important; + } + .mx-lg-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-lg-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } +} + +@media (min-width: 1200px) { + .m-xl-0 { + margin: 0 0 !important; + } + .mt-xl-0 { + margin-top: 0 !important; + } + .mr-xl-0 { + margin-right: 0 !important; + } + .mb-xl-0 { + margin-bottom: 0 !important; + } + .ml-xl-0 { + margin-left: 0 !important; + } + .mx-xl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .my-xl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .m-xl-1 { + margin: 0.25rem 0.25rem !important; + } + .mt-xl-1 { + margin-top: 0.25rem !important; + } + .mr-xl-1 { + margin-right: 0.25rem !important; + } + .mb-xl-1 { + margin-bottom: 0.25rem !important; + } + .ml-xl-1 { + margin-left: 0.25rem !important; + } + .mx-xl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .my-xl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem 0.5rem !important; + } + .mt-xl-2 { + margin-top: 0.5rem !important; + } + .mr-xl-2 { + margin-right: 0.5rem !important; + } + .mb-xl-2 { + margin-bottom: 0.5rem !important; + } + .ml-xl-2 { + margin-left: 0.5rem !important; + } + .mx-xl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .my-xl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .m-xl-3 { + margin: 1rem 1rem !important; + } + .mt-xl-3 { + margin-top: 1rem !important; + } + .mr-xl-3 { + margin-right: 1rem !important; + } + .mb-xl-3 { + margin-bottom: 1rem !important; + } + .ml-xl-3 { + margin-left: 1rem !important; + } + .mx-xl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .my-xl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .m-xl-4 { + margin: 1.5rem 1.5rem !important; + } + .mt-xl-4 { + margin-top: 1.5rem !important; + } + .mr-xl-4 { + margin-right: 1.5rem !important; + } + .mb-xl-4 { + margin-bottom: 1.5rem !important; + } + .ml-xl-4 { + margin-left: 1.5rem !important; + } + .mx-xl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .my-xl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .m-xl-5 { + margin: 3rem 3rem !important; + } + .mt-xl-5 { + margin-top: 3rem !important; + } + .mr-xl-5 { + margin-right: 3rem !important; + } + .mb-xl-5 { + margin-bottom: 3rem !important; + } + .ml-xl-5 { + margin-left: 3rem !important; + } + .mx-xl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .my-xl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .p-xl-0 { + padding: 0 0 !important; + } + .pt-xl-0 { + padding-top: 0 !important; + } + .pr-xl-0 { + padding-right: 0 !important; + } + .pb-xl-0 { + padding-bottom: 0 !important; + } + .pl-xl-0 { + padding-left: 0 !important; + } + .px-xl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .py-xl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .p-xl-1 { + padding: 0.25rem 0.25rem !important; + } + .pt-xl-1 { + padding-top: 0.25rem !important; + } + .pr-xl-1 { + padding-right: 0.25rem !important; + } + .pb-xl-1 { + padding-bottom: 0.25rem !important; + } + .pl-xl-1 { + padding-left: 0.25rem !important; + } + .px-xl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .py-xl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem 0.5rem !important; + } + .pt-xl-2 { + padding-top: 0.5rem !important; + } + .pr-xl-2 { + padding-right: 0.5rem !important; + } + .pb-xl-2 { + padding-bottom: 0.5rem !important; + } + .pl-xl-2 { + padding-left: 0.5rem !important; + } + .px-xl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .py-xl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .p-xl-3 { + padding: 1rem 1rem !important; + } + .pt-xl-3 { + padding-top: 1rem !important; + } + .pr-xl-3 { + padding-right: 1rem !important; + } + .pb-xl-3 { + padding-bottom: 1rem !important; + } + .pl-xl-3 { + padding-left: 1rem !important; + } + .px-xl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .py-xl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .p-xl-4 { + padding: 1.5rem 1.5rem !important; + } + .pt-xl-4 { + padding-top: 1.5rem !important; + } + .pr-xl-4 { + padding-right: 1.5rem !important; + } + .pb-xl-4 { + padding-bottom: 1.5rem !important; + } + .pl-xl-4 { + padding-left: 1.5rem !important; + } + .px-xl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .py-xl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .p-xl-5 { + padding: 3rem 3rem !important; + } + .pt-xl-5 { + padding-top: 3rem !important; + } + .pr-xl-5 { + padding-right: 3rem !important; + } + .pb-xl-5 { + padding-bottom: 3rem !important; + } + .pl-xl-5 { + padding-left: 3rem !important; + } + .px-xl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-xl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mt-xl-auto { + margin-top: auto !important; + } + .mr-xl-auto { + margin-right: auto !important; + } + .mb-xl-auto { + margin-bottom: auto !important; + } + .ml-xl-auto { + margin-left: auto !important; + } + .mx-xl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } +} + +.text-justify { + text-align: justify !important; +} + +.text-nowrap { + white-space: nowrap !important; +} + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.text-left { + text-align: left !important; +} + +.text-right { + text-align: right !important; +} + +.text-center { + text-align: center !important; +} + +@media (min-width: 576px) { + .text-sm-left { + text-align: left !important; + } + .text-sm-right { + text-align: right !important; + } + .text-sm-center { + text-align: center !important; + } +} + +@media (min-width: 768px) { + .text-md-left { + text-align: left !important; + } + .text-md-right { + text-align: right !important; + } + .text-md-center { + text-align: center !important; + } +} + +@media (min-width: 992px) { + .text-lg-left { + text-align: left !important; + } + .text-lg-right { + text-align: right !important; + } + .text-lg-center { + text-align: center !important; + } +} + +@media (min-width: 1200px) { + .text-xl-left { + text-align: left !important; + } + .text-xl-right { + text-align: right !important; + } + .text-xl-center { + text-align: center !important; + } +} + +.text-lowercase { + text-transform: lowercase !important; +} + +.text-uppercase { + text-transform: uppercase !important; +} + +.text-capitalize { + text-transform: capitalize !important; +} + +.font-weight-normal { + font-weight: normal; +} + +.font-weight-bold { + font-weight: bold; +} + +.font-italic { + font-style: italic; +} + +.text-white { + color: #fff !important; +} + +.text-muted { + color: #636c72 !important; +} + +a.text-muted:focus, a.text-muted:hover { + color: #4b5257 !important; +} + +.text-primary { + color: #0275d8 !important; +} + +a.text-primary:focus, a.text-primary:hover { + color: #025aa5 !important; +} + +.text-success { + color: #5cb85c !important; +} + +a.text-success:focus, a.text-success:hover { + color: #449d44 !important; +} + +.text-info { + color: #5bc0de !important; +} + +a.text-info:focus, a.text-info:hover { + color: #31b0d5 !important; +} + +.text-warning { + color: #f0ad4e !important; +} + +a.text-warning:focus, a.text-warning:hover { + color: #ec971f !important; +} + +.text-danger { + color: #d9534f !important; +} + +a.text-danger:focus, a.text-danger:hover { + color: #c9302c !important; +} + +.text-gray-dark { + color: #292b2c !important; +} + +a.text-gray-dark:focus, a.text-gray-dark:hover { + color: #101112 !important; +} + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.invisible { + visibility: hidden !important; +} + +.hidden-xs-up { + display: none !important; +} + +@media (max-width: 575px) { + .hidden-xs-down { + display: none !important; + } +} + +@media (min-width: 576px) { + .hidden-sm-up { + display: none !important; + } +} + +@media (max-width: 767px) { + .hidden-sm-down { + display: none !important; + } +} + +@media (min-width: 768px) { + .hidden-md-up { + display: none !important; + } +} + +@media (max-width: 991px) { + .hidden-md-down { + display: none !important; + } +} + +@media (min-width: 992px) { + .hidden-lg-up { + display: none !important; + } +} + +@media (max-width: 1199px) { + .hidden-lg-down { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-xl-up { + display: none !important; + } +} + +.hidden-xl-down { + display: none !important; +} + +.visible-print-block { + display: none !important; +} + +@media print { + .visible-print-block { + display: block !important; + } +} + +.visible-print-inline { + display: none !important; +} + +@media print { + .visible-print-inline { + display: inline !important; + } +} + +.visible-print-inline-block { + display: none !important; +} + +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} + +@media print { + .hidden-print { + display: none !important; + } +} +/*# sourceMappingURL=bootstrap.css.map */ \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap.css.map b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap.css.map new file mode 100644 index 0000000..09b7cf1 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_normalize.scss","bootstrap.css","../../scss/_print.scss","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_mixins.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_tables.scss","../../scss/mixins/_table-row.scss","../../scss/_forms.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_nav-divider.scss","../../scss/_button-group.scss","../../scss/_input-group.scss","../../scss/_custom-forms.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/mixins/_cards.scss","../../scss/_breadcrumb.scss","../../scss/mixins/_clearfix.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/mixins/_badge.scss","../../scss/_jumbotron.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/mixins/_gradients.scss","../../scss/_media.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_responsive-embed.scss","../../scss/_close.scss","../../scss/_modal.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_transforms.scss","../../scss/utilities/_align.scss","../../scss/utilities/_background.scss","../../scss/mixins/_background-variant.scss","../../scss/utilities/_borders.scss","../../scss/utilities/_display.scss","../../scss/utilities/_flex.scss","../../scss/utilities/_float.scss","../../scss/mixins/_float.scss","../../scss/utilities/_position.scss","../../scss/utilities/_screenreaders.scss","../../scss/mixins/_screen-reader.scss","../../scss/utilities/_sizing.scss","../../scss/utilities/_spacing.scss","../../scss/utilities/_text.scss","../../scss/mixins/_text-truncate.scss","../../scss/mixins/_text-emphasis.scss","../../scss/mixins/_text-hide.scss","../../scss/utilities/_visibility.scss","../../scss/mixins/_visibility.scss"],"names":[],"mappings":"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CE,uBR25BiC;EQ15BjC,eRy5B+B;EQx5B/B,YRkEW;EQjEX,0BR6EiC;EMtG/B,sBN8T0B;CQ3R7B;;AAdD;EASI,WAAU;EACV,gBAAe;EACf,kBR6NmB;CQ3NpB;;AAIH;EACE,eAAc;EACd,cAAa;EACb,oBAAmB;EACnB,eRs4B+B;EQr4B/B,eR2DiC;CQjDlC;;AAfD;EASI,WAAU;EACV,mBAAkB;EAClB,eAAc;EACd,8BAA6B;EAC7B,iBAAgB;CACjB;;AAIH;EACE,kBRm4BiC;EQl4BjC,mBAAkB;CACnB;;AC1DC;ECAA,mBAAkB;EAClB,kBAAiB;EACjB,mBAAkB;EAKd,oBAA4B;EAC5B,mBAA4B;CDL/B;;AEgDC;EFnDF;ICOI,oBAA4B;IAC5B,mBAA4B;GDL/B;CZgvBF;;AchsBG;EFnDF;ICOI,oBAA4B;IAC5B,mBAA4B;GDL/B;CZuvBF;;AcvsBG;EFnDF;ICOI,oBAA4B;IAC5B,mBAA4B;GDL/B;CZ8vBF;;Ac9sBG;EFnDF;ICOI,oBAA4B;IAC5B,mBAA4B;GDL/B;CZqwBF;;AcrtBG;EFnDF;ICkBI,aVqMK;IUpML,gBAAe;GDhBlB;CZ4wBF;;Ac5tBG;EFnDF;ICkBI,aVsMK;IUrML,gBAAe;GDhBlB;CZmxBF;;AcnuBG;EFnDF;ICkBI,aVuMK;IUtML,gBAAe;GDhBlB;CZ0xBF;;Ac1uBG;EFnDF;ICkBI,cVwMM;IUvMN,gBAAe;GDhBlB;CZiyBF;;AYxxBC;ECZA,mBAAkB;EAClB,kBAAiB;EACjB,mBAAkB;EAKd,oBAA4B;EAC5B,mBAA4B;CDM/B;;AEqCC;EFvCF;ICLI,oBAA4B;IAC5B,mBAA4B;GDM/B;CZqyBF;;AchwBG;EFvCF;ICLI,oBAA4B;IAC5B,mBAA4B;GDM/B;CZ4yBF;;AcvwBG;EFvCF;ICLI,oBAA4B;IAC5B,mBAA4B;GDM/B;CZmzBF;;Ac9wBG;EFvCF;ICLI,oBAA4B;IAC5B,mBAA4B;GDM/B;CZ0zBF;;AYlzBC;ECaA,qBAAa;EAAb,sBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,wBAAe;MAAf,oBAAe;UAAf,gBAAe;EAKX,oBAA4B;EAC5B,mBAA4B;CDlB/B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EY;EkBlEZ,sBlBkEY;CkBjEb;;AAED;;EAGE,YlBsDS;EkBrDT,0BAnC0C;EAoC1C,uBAAsB;EACtB,sBApCkC;CAsCnC;;ADYH;EChDE,elBiGiC;EkBhGjC,uBlBoFW;EkBnFX,mBlB4WmC;CiB5TpC;;AhBjDG;EiBMA,elB0F+B;EkBzF/B,0BAX0C;EAY1C,sBAXkC;CjBGb;;AiBUvB;EAMI,uDlB6V+B;UkB7V/B,+ClB6V+B;CkB3VlC;;AAGD;EAEE,uBlB6DS;EkB5DT,mBlBqViC;CkBpVlC;;AAED;;EAGE,elBkE+B;EkBjE/B,0BAnC0C;EAoC1C,uBAAsB;EACtB,sBApCkC;CAsCnC;;ADeH;ECnDE,YlBqFW;EkBpFX,0BlB2Fc;EkB1Fd,sBlB0Fc;CiBvCf;;AhBpDG;EiBMA,YlB8ES;EkB7ET,0BAX0C;EAY1C,sBAXkC;CjBGb;;AiBUvB;EAMI,sDlB2EU;UkB3EV,8ClB2EU;CkBzEb;;AAGD;EAEE,0BlBoEY;EkBnEZ,sBlBmEY;CkBlEb;;AAED;;EAGE,YlBsDS;EkBrDT,0BAnC0C;EAoC1C,uBAAsB;EACtB,sBApCkC;CAsCnC;;ADkBH;ECtDE,YlBqFW;EkBpFX,0BlByFc;EkBxFd,sBlBwFc;CiBlCf;;AhBvDG;EiBMA,YlB8ES;EkB7ET,0BAX0C;EAY1C,sBAXkC;CjBGb;;AiBUvB;EAMI,qDlByEU;UkBzEV,6ClByEU;CkBvEb;;AAGD;EAEE,0BlBkEY;EkBjEZ,sBlBiEY;CkBhEb;;AAED;;EAGE,YlBsDS;EkBrDT,0BAnC0C;EAoC1C,uBAAsB;EACtB,sBApCkC;CAsCnC;;ADqBH;ECzDE,YlBqFW;EkBpFX,0BlBuFc;EkBtFd,sBlBsFc;CiB7Bf;;AhB1DG;EiBMA,YlB8ES;EkB7ET,0BAX0C;EAY1C,sBAXkC;CjBGb;;AiBUvB;EAMI,sDlBuEU;UkBvEV,8ClBuEU;CkBrEb;;AAGD;EAEE,0BlBgEY;EkB/DZ,sBlB+DY;CkB9Db;;AAED;;EAGE,YlBsDS;EkBrDT,0BAnC0C;EAoC1C,uBAAsB;EACtB,sBApCkC;CAsCnC;;ADwBH;EC5DE,YlBqFW;EkBpFX,0BlBsFc;EkBrFd,sBlBqFc;CiBzBf;;AhB7DG;EiBMA,YlB8ES;EkB7ET,0BAX0C;EAY1C,sBAXkC;CjBGb;;AiBUvB;EAMI,qDlBsEU;UkBtEV,6ClBsEU;CkBpEb;;AAGD;EAEE,0BlB+DY;EkB9DZ,sBlB8DY;CkB7Db;;AAED;;EAGE,YlBsDS;EkBrDT,0BAnC0C;EAoC1C,uBAAsB;EACtB,sBApCkC;CAsCnC;;AD6BH;ECzBE,elBmDc;EkBlDd,uBAAsB;EACtB,8BAA6B;EAC7B,sBlBgDc;CiBxBf;;AhBlEG;EiB6CA,YAPoD;EAQpD,0BlB4CY;EkB3CZ,sBlB2CY;CC1FS;;AiBkDvB;EAEE,qDlBsCY;UkBtCZ,6ClBsCY;CkBrCb;;AAED;EAEE,elBiCY;EkBhCZ,8BAA6B;CAC9B;;AAED;;EAGE,YA1BoD;EA2BpD,0BlByBY;EkBxBZ,sBlBwBY;CkBvBb;;ADAH;EC5BE,YlBsUmC;EkBrUnC,uBAAsB;EACtB,8BAA6B;EAC7B,mBlBmUmC;CiBxSpC;;AhBrEG;EiB6CA,YAPoD;EAQpD,uBlB+TiC;EkB9TjC,mBlB8TiC;CC7WZ;;AiBkDvB;EAEE,uDlByTiC;UkBzTjC,+ClByTiC;CkBxTlC;;AAED;EAEE,YlBoTiC;EkBnTjC,8BAA6B;CAC9B;;AAED;;EAGE,YA1BoD;EA2BpD,uBlB4SiC;EkB3SjC,mBlB2SiC;CkB1SlC;;ADGH;EC/BE,elBoDc;EkBnDd,uBAAsB;EACtB,8BAA6B;EAC7B,sBlBiDc;CiBnBf;;AhBxEG;EiB6CA,YAPoD;EAQpD,0BlB6CY;EkB5CZ,sBlB4CY;CC3FS;;AiBkDvB;EAEE,sDlBuCY;UkBvCZ,8ClBuCY;CkBtCb;;AAED;EAEE,elBkCY;EkBjCZ,8BAA6B;CAC9B;;AAED;;EAGE,YA1BoD;EA2BpD,0BlB0BY;EkBzBZ,sBlByBY;CkBxBb;;ADMH;EClCE,elBkDc;EkBjDd,uBAAsB;EACtB,8BAA6B;EAC7B,sBlB+Cc;CiBdf;;AhB3EG;EiB6CA,YAPoD;EAQpD,0BlB2CY;EkB1CZ,sBlB0CY;CCzFS;;AiBkDvB;EAEE,qDlBqCY;UkBrCZ,6ClBqCY;CkBpCb;;AAED;EAEE,elBgCY;EkB/BZ,8BAA6B;CAC9B;;AAED;;EAGE,YA1BoD;EA2BpD,0BlBwBY;EkBvBZ,sBlBuBY;CkBtBb;;ADSH;ECrCE,elBgDc;EkB/Cd,uBAAsB;EACtB,8BAA6B;EAC7B,sBlB6Cc;CiBTf;;AhB9EG;EiB6CA,YAPoD;EAQpD,0BlByCY;EkBxCZ,sBlBwCY;CCvFS;;AiBkDvB;EAEE,sDlBmCY;UkBnCZ,8ClBmCY;CkBlCb;;AAED;EAEE,elB8BY;EkB7BZ,8BAA6B;CAC9B;;AAED;;EAGE,YA1BoD;EA2BpD,0BlBsBY;EkBrBZ,sBlBqBY;CkBpBb;;ADYH;ECxCE,elB+Cc;EkB9Cd,uBAAsB;EACtB,8BAA6B;EAC7B,sBlB4Cc;CiBLf;;AhBjFG;EiB6CA,YAPoD;EAQpD,0BlBwCY;EkBvCZ,sBlBuCY;CCtFS;;AiBkDvB;EAEE,qDlBkCY;UkBlCZ,6ClBkCY;CkBjCb;;AAED;EAEE,elB6BY;EkB5BZ,8BAA6B;CAC9B;;AAED;;EAGE,YA1BoD;EA2BpD,0BlBqBY;EkBpBZ,sBlBoBY;CkBnBb;;ADsBH;EACE,oBjB4JyB;EiB3JzB,ejBDc;EiBEd,iBAAgB;CA6BjB;;AAhCD;EASI,8BAA6B;CAE9B;;AAXH;EAeI,0BAAyB;CAC1B;;AhBzGC;EgB2GA,0BAAyB;ChB3GJ;;AAUrB;EgBoGA,ejB2E4C;EiB1E5C,2BjB2E6B;EiB1E7B,8BAA6B;ChBnG5B;;AgB4EL;EA0BI,ejBjB+B;CiBsBhC;;AhB9GC;EgB4GE,sBAAqB;ChBzGtB;;AgBmHL;ECxDE,wBlB4TqC;EkB3TrC,mBlByKsB;EMxPpB,sBN6T0B;CiBpL7B;;AACD;EC5DE,wBlByToC;EkBxTpC,oBlB0KsB;EMzPpB,sBN8T0B;CiBjL7B;;AAOD;EACE,eAAc;EACd,YAAW;CACZ;;AAGD;EACE,mBjBkPoC;CiBjPrC;;AAGD;;;EAII,YAAW;CACZ;;AExKH;EACE,WAAU;EZcN,yCP2TsC;EO3TtC,oCP2TsC;EO3TtC,iCP2TsC;CmBnU3C;;AAPD;EAKI,WAAU;CACX;;AAGH;EACE,cAAa;CAId;;AALD;EAGI,eAAc;CACf;;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S2B;C+BnT1B;;AALL;EzBSI,oCN+S2B;EM9S3B,iCN8S2B;C+B9S1B;;AAVL;EAcI,WAAU;EACV,Y/BuES;E+BtET,0B/B4EY;E+B3EZ,sB/B2EY;C+B1Eb;;AAlBH;EAqBI,e/B+E+B;E+B9E/B,qBAAoB;EACpB,oB/BibwC;E+BhbxC,uB/B8DS;E+B7DT,mB/BmoBuC;C+BloBxC;;AAGH;EACE,mBAAkB;EAClB,eAAc;EACd,wB/BqmB0C;E+BpmB1C,kBAAiB;EACjB,kB/BymBwC;E+BxmBxC,e/ByDc;E+BxDd,uB/BkDW;E+BjDX,uB/B2mByC;C+BnmB1C;;A9BjCG;E8B4BA,e/BmJ4C;E+BlJ5C,sBAAqB;EACrB,0B/B2D+B;E+B1D/B,mB/BymBuC;CCroBtC;;A+BpBH;EACE,wBhC6oBwC;EgC5oBxC,mBhCuPoB;CgCtPrB;;AAIG;E1BqBF,kCNkS0B;EMjS1B,+BNiS0B;CgCrTvB;;AAGD;E1BEF,mCNgT0B;EM/S1B,gCN+S0B;CgChTvB;;AAdL;EACE,wBhC2oBuC;EgC1oBvC,oBhCwPoB;CgCvPrB;;AAIG;E1BqBF,kCNmS0B;EMlS1B,+BNkS0B;CgCtTvB;;AAGD;E1BEF,mCNiT0B;EMhT1B,gCNgT0B;CgCjTvB;;ACZP;EACE,sBAAqB;EACrB,sBjCowBgC;EiCnwBhC,ejCiwB+B;EiChwB/B,kBjCwPqB;EiCvPrB,eAAc;EACd,YjCmFW;EiClFX,mBAAkB;EAClB,oBAAmB;EACnB,yBAAwB;E3BVtB,uBN4T2B;CiC3S9B;;AAhBD;EAcI,cAAa;CACd;;AAIH;EACE,mBAAkB;EAClB,UAAS;CACV;;AhCPG;EgCaA,YjC6DS;EiC5DT,sBAAqB;EACrB,gBAAe;ChCZd;;AgCqBL;EACE,qBjCiuBgC;EiChuBhC,oBjCguBgC;EM1wB9B,qBN6wB+B;CiCjuBlC;;AAMD;ECnDE,0BlCyGiC;CiCpDlC;;AhCpCG;EiCbE,0BAAqC;CjCgBtC;;AgCmCL;ECvDE,0BlCiGc;CiCxCf;;AhCxCG;EiCbE,0BAAqC;CjCgBtC;;AgCuCL;EC3DE,0BlCgGc;CiCnCf;;AhC5CG;EiCbE,0BAAqC;CjCgBtC;;AgC2CL;EC/DE,0BlCkGc;CiCjCf;;AhChDG;EiCbE,0BAAqC;CjCgBtC;;AgC+CL;ECnEE,0BlC8Fc;CiCzBf;;AhCpDG;EiCbE,0BAAqC;CjCgBtC;;AgCmDL;ECvEE,0BlC6Fc;CiCpBf;;AhCxDG;EiCbE,0BAAqC;CjCgBtC;;AkCvBL;EACE,mBAAoD;EACpD,oBnCuqBmC;EmCtqBnC,0BnC0GiC;EMzG/B,sBN6T0B;CmCxT7B;;AxB+CG;EwBxDJ;IAOI,mBnCkqBiC;GmChqBpC;CtCowIA;;AsClwID;EACE,0BAA4C;CAC7C;;AAED;EACE,iBAAgB;EAChB,gBAAe;E7Bbb,iB6BcsB;CACzB;;ACfD;EACE,yBpCkzBmC;EoCjzBnC,oBpCsIa;EoCrIb,8BAA6C;E9BH3C,uBN4T2B;CoCvT9B;;AAGD;EAEE,eAAc;CACf;;AAGD;EACE,kBpC8OqB;CoC7OtB;;AAOD;EAGI,mBAAkB;EAClB,cpCyxBgC;EoCxxBhC,gBpCuxBiC;EoCtxBjC,yBpCsxBiC;EoCrxBjC,eAAc;CACf;;AAQH;ECxCE,0BrC+qBsC;EqC9qBtC,sBrC+qB4D;EqC9qB5D,erC4qBsC;CoCpoBvC;;ACtCC;EACE,0BAAqC;CACtC;;AACD;EACE,eAA+B;CAChC;;ADkCH;EC3CE,0BrCmrBsC;EqClrBtC,sBrCmrByD;EqClrBzD,erCgrBsC;CoCroBvC;;ACzCC;EACE,0BAAqC;CACtC;;AACD;EACE,eAA+B;CAChC;;ADqCH;EC9CE,0BrCurBsC;EqCtrBtC,sBrCwrB4D;EqCvrB5D,erCorBsC;CoCtoBvC;;AC5CC;EACE,0BAAqC;CACtC;;AACD;EACE,eAA+B;CAChC;;ADwCH;ECjDE,0BrC4rBsC;EqC3rBtC,sBrC4rB2D;EqC3rB3D,erCyrBsC;CoCxoBvC;;AC/CC;EACE,0BAAqC;CACtC;;AACD;EACE,eAA+B;CAChC;;ACXH;EACE;IAAO,4BAAuC;GzCy2I7C;EyCx2ID;IAAK,yBAAwB;GzC22I5B;CACF;;AyC92ID;EACE;IAAO,4BAAuC;GzCy2I7C;EyCx2ID;IAAK,yBAAwB;GzC22I5B;CACF;;AyC92ID;EACE;IAAO,4BAAuC;GzCy2I7C;EyCx2ID;IAAK,yBAAwB;GzC22I5B;CACF;;AyCx2ID;EACE,qBAAa;EAAb,sBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,iBAAgB;EAChB,mBtCw0BoC;EsCv0BpC,kBtCs0BkC;EsCr0BlC,mBAAkB;EAClB,0BtCgGiC;EMzG/B,uBN4T2B;CsCjT9B;;AACD;EACE,atCg0BkC;EsC/zBlC,YtC4EW;EsC3EX,0BtCiFc;CsChFf;;AAGD;ECYE,8MAA6I;EAA7I,yMAA6I;EAA7I,sMAA6I;EDV7I,mCtCwzBkC;UsCxzBlC,2BtCwzBkC;CsCvzBnC;;AAGD;EACE,2DtC0zBgD;OsC1zBhD,sDtC0zBgD;UsC1zBhD,mDtC0zBgD;CsCzzBjD;;AE/BD;EACE,qBAAa;EAAb,sBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,yBAAuB;EAAvB,gCAAuB;MAAvB,sBAAuB;UAAvB,wBAAuB;CACxB;;AAED;EACE,oBAAO;EAAP,qBAAO;MAAP,iBAAO;UAAP,aAAO;CACR;;ACHD;EACE,qBAAa;EAAb,sBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,6BAAsB;EAAtB,8BAAsB;EAAtB,+BAAsB;MAAtB,2BAAsB;UAAtB,uBAAsB;EAGtB,gBAAe;EACf,iBAAgB;CACjB;;AAQD;EACE,YAAW;EACX,ezCsFiC;EyCrFjC,oBAAmB;CAiBpB;;AApBD;EAMI,ezCiF+B;CyChFhC;;AxCNC;EwCUA,ezC6E+B;EyC5E/B,sBAAqB;EACrB,0BzC8E+B;CCvF9B;;AwCJL;EAiBI,ezCsE+B;EyCrE/B,0BzCwE+B;CyCvEhC;;AAQH;EACE,mBAAkB;EAClB,qBAAa;EAAb,sBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,4BAAmB;MAAnB,wBAAmB;UAAnB,oBAAmB;EACnB,0BAAmB;EAAnB,4BAAmB;MAAnB,uBAAmB;UAAnB,oBAAmB;EACnB,yBzC+yBsC;EyC7yBtC,oBzCoHgB;EyCnHhB,uBzCwCW;EyCvCX,uCzCwCW;CyCQZ;;AAzDD;EnCpCI,iCNsT2B;EMrT3B,gCNqT2B;CyCrQ5B;;AAbH;EAgBI,iBAAgB;EnCtChB,oCNwS2B;EMvS3B,mCNuS2B;CyChQ5B;;AxC5CC;EwC+CA,sBAAqB;CxC5CpB;;AwCuBL;EA0BI,ezCoC+B;EyCnC/B,oBzCuYwC;EyCtYxC,uBzCoBS;CyCXV;;AArCH;EAgCM,eAAc;CACf;;AAjCL;EAmCM,ezC2B6B;CyC1B9B;;AApCL;EAyCI,WAAU;EACV,YzCMS;EyCLT,0BzCWY;EyCVZ,sBzCUY;CyCEb;;AAxDH;;;EAkDM,eAAc;CACf;;AAnDL;EAsDM,ezCqwB8D;CyCpwB/D;;AAUL;EAEI,gBAAe;EACf,eAAc;EACd,iBAAgB;CACjB;;AALH;EASM,cAAa;CACd;;AAVL;EAeM,iBAAgB;CACjB;;AC5HH;EACE,e1C6qBoC;E0C5qBpC,0B1C6qBoC;C0C5qBrC;;AAED;;EACE,e1CwqBoC;C0CxpBrC;;AAjBD;;EAII,eAAc;CACf;;AzCOD;;;EyCJE,e1CiqBkC;E0ChqBlC,0BAAyC;CzCM1C;;AyCfH;;EAaI,YAAW;EACX,0B1C2pBkC;E0C1pBlC,sB1C0pBkC;C0CzpBnC;;AArBH;EACE,e1CirBoC;E0ChrBpC,0B1CirBoC;C0ChrBrC;;AAED;;EACE,e1C4qBoC;C0C5pBrC;;AAjBD;;EAII,eAAc;CACf;;AzCOD;;;EyCJE,e1CqqBkC;E0CpqBlC,0BAAyC;CzCM1C;;AyCfH;;EAaI,YAAW;EACX,0B1C+pBkC;E0C9pBlC,sB1C8pBkC;C0C7pBnC;;AArBH;EACE,e1CqrBoC;E0CprBpC,0B1CqrBoC;C0CprBrC;;AAED;;EACE,e1CgrBoC;C0ChqBrC;;AAjBD;;EAII,eAAc;CACf;;AzCOD;;;EyCJE,e1CyqBkC;E0CxqBlC,0BAAyC;CzCM1C;;AyCfH;;EAaI,YAAW;EACX,0B1CmqBkC;E0ClqBlC,sB1CkqBkC;C0CjqBnC;;AArBH;EACE,e1C0rBoC;E0CzrBpC,0B1C0rBoC;C0CzrBrC;;AAED;;EACE,e1CqrBoC;C0CrqBrC;;AAjBD;;EAII,eAAc;CACf;;AzCOD;;;EyCJE,e1C8qBkC;E0C7qBlC,0BAAyC;CzCM1C;;AyCfH;;EAaI,YAAW;EACX,0B1Cw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","file":"bootstrap.css","sourcesContent":[null,null,"/*!\n * Bootstrap v4.0.0-alpha.6 (https://getbootstrap.com)\n * Copyright 2011-2017 The Bootstrap Authors\n * Copyright 2011-2017 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\n\nbody {\n margin: 0;\n}\n\narticle,\naside,\nfooter,\nheader,\nnav,\nsection {\n display: block;\n}\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\nfigcaption,\nfigure,\nmain {\n display: block;\n}\n\nfigure {\n margin: 1em 40px;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\npre {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\na {\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:active,\na:hover {\n outline-width: 0;\n}\n\nabbr[title] {\n border-bottom: none;\n text-decoration: underline;\n text-decoration: underline dotted;\n}\n\nb,\nstrong {\n font-weight: inherit;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\ndfn {\n font-style: italic;\n}\n\nmark {\n background-color: #ff0;\n color: #000;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\naudio,\nvideo {\n display: inline-block;\n}\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\nimg {\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: sans-serif;\n font-size: 100%;\n line-height: 1.15;\n margin: 0;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\nlegend {\n box-sizing: border-box;\n color: inherit;\n display: table;\n max-width: 100%;\n padding: 0;\n white-space: normal;\n}\n\nprogress {\n display: inline-block;\n vertical-align: baseline;\n}\n\ntextarea {\n overflow: auto;\n}\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n -webkit-appearance: button;\n font: inherit;\n}\n\ndetails,\nmenu {\n display: block;\n}\n\nsummary {\n display: list-item;\n}\n\ncanvas {\n display: inline-block;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none;\n}\n\n@media print {\n *,\n *::before,\n *::after,\n p::first-letter,\n div::first-letter,\n blockquote::first-letter,\n li::first-letter,\n p::first-line,\n div::first-line,\n blockquote::first-line,\n li::first-line {\n text-shadow: none !important;\n box-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n pre {\n white-space: pre-wrap !important;\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .badge {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n\nhtml {\n box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\nhtml {\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\nbody {\n font-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-size: 1rem;\n font-weight: normal;\n line-height: 1.5;\n color: #292b2c;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: none !important;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: .5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: bold;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\na {\n color: #0275d8;\n text-decoration: none;\n}\n\na:focus, a:hover {\n color: #014c8c;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n}\n\n[role=\"button\"] {\n cursor: pointer;\n}\n\na,\narea,\nbutton,\n[role=\"button\"],\ninput,\nlabel,\nselect,\nsummary,\ntextarea {\n touch-action: manipulation;\n}\n\ntable {\n border-collapse: collapse;\n background-color: transparent;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #636c72;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: left;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\ntextarea {\n line-height: inherit;\n}\n\ninput[type=\"radio\"]:disabled,\ninput[type=\"checkbox\"]:disabled {\n cursor: not-allowed;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n}\n\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n\noutput {\n display: inline-block;\n}\n\n[hidden] {\n display: none !important;\n}\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\n\nh1, .h1 {\n font-size: 2.5rem;\n}\n\nh2, .h2 {\n font-size: 2rem;\n}\n\nh3, .h3 {\n font-size: 1.75rem;\n}\n\nh4, .h4 {\n font-size: 1.5rem;\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\nhr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\nsmall,\n.small {\n font-size: 80%;\n font-weight: normal;\n}\n\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n margin-right: 5px;\n}\n\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n.blockquote {\n padding: 0.5rem 1rem;\n margin-bottom: 1rem;\n font-size: 1.25rem;\n border-left: 0.25rem solid #eceeef;\n}\n\n.blockquote-footer {\n display: block;\n font-size: 80%;\n color: #636c72;\n}\n\n.blockquote-footer::before {\n content: \"\\2014 \\00A0\";\n}\n\n.blockquote-reverse {\n padding-right: 1rem;\n padding-left: 0;\n text-align: right;\n border-right: 0.25rem solid #eceeef;\n border-left: 0;\n}\n\n.blockquote-reverse .blockquote-footer::before {\n content: \"\";\n}\n\n.blockquote-reverse .blockquote-footer::after {\n content: \"\\00A0 \\2014\";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n padding: 0.25rem;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 0.25rem;\n transition: all 0.2s ease-in-out;\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 90%;\n color: #636c72;\n}\n\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\ncode {\n padding: 0.2rem 0.4rem;\n font-size: 90%;\n color: #bd4147;\n background-color: #f7f7f9;\n border-radius: 0.25rem;\n}\n\na > code {\n padding: 0;\n color: inherit;\n background-color: inherit;\n}\n\nkbd {\n padding: 0.2rem 0.4rem;\n font-size: 90%;\n color: #fff;\n background-color: #292b2c;\n border-radius: 0.2rem;\n}\n\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n}\n\npre {\n display: block;\n margin-top: 0;\n margin-bottom: 1rem;\n font-size: 90%;\n color: #292b2c;\n}\n\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n background-color: transparent;\n border-radius: 0;\n}\n\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n\n.container {\n position: relative;\n margin-left: auto;\n margin-right: auto;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 576px) {\n .container {\n width: 540px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n width: 720px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n width: 960px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n width: 1140px;\n max-width: 100%;\n }\n}\n\n.container-fluid {\n position: relative;\n margin-left: auto;\n margin-right: auto;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n.row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n@media (min-width: 576px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 768px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 992px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 1200px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl {\n position: relative;\n width: 100%;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n.col {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.pull-0 {\n right: auto;\n}\n\n.pull-1 {\n right: 8.333333%;\n}\n\n.pull-2 {\n right: 16.666667%;\n}\n\n.pull-3 {\n right: 25%;\n}\n\n.pull-4 {\n right: 33.333333%;\n}\n\n.pull-5 {\n right: 41.666667%;\n}\n\n.pull-6 {\n right: 50%;\n}\n\n.pull-7 {\n right: 58.333333%;\n}\n\n.pull-8 {\n right: 66.666667%;\n}\n\n.pull-9 {\n right: 75%;\n}\n\n.pull-10 {\n right: 83.333333%;\n}\n\n.pull-11 {\n right: 91.666667%;\n}\n\n.pull-12 {\n right: 100%;\n}\n\n.push-0 {\n left: auto;\n}\n\n.push-1 {\n left: 8.333333%;\n}\n\n.push-2 {\n left: 16.666667%;\n}\n\n.push-3 {\n left: 25%;\n}\n\n.push-4 {\n left: 33.333333%;\n}\n\n.push-5 {\n left: 41.666667%;\n}\n\n.push-6 {\n left: 50%;\n}\n\n.push-7 {\n left: 58.333333%;\n}\n\n.push-8 {\n left: 66.666667%;\n}\n\n.push-9 {\n left: 75%;\n}\n\n.push-10 {\n left: 83.333333%;\n}\n\n.push-11 {\n left: 91.666667%;\n}\n\n.push-12 {\n left: 100%;\n}\n\n.offset-1 {\n margin-left: 8.333333%;\n}\n\n.offset-2 {\n margin-left: 16.666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.333333%;\n}\n\n.offset-5 {\n margin-left: 41.666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.333333%;\n}\n\n.offset-8 {\n margin-left: 66.666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.333333%;\n}\n\n.offset-11 {\n margin-left: 91.666667%;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-sm-0 {\n right: auto;\n }\n .pull-sm-1 {\n right: 8.333333%;\n }\n .pull-sm-2 {\n right: 16.666667%;\n }\n .pull-sm-3 {\n right: 25%;\n }\n .pull-sm-4 {\n right: 33.333333%;\n }\n .pull-sm-5 {\n right: 41.666667%;\n }\n .pull-sm-6 {\n right: 50%;\n }\n .pull-sm-7 {\n right: 58.333333%;\n }\n .pull-sm-8 {\n right: 66.666667%;\n }\n .pull-sm-9 {\n right: 75%;\n }\n .pull-sm-10 {\n right: 83.333333%;\n }\n .pull-sm-11 {\n right: 91.666667%;\n }\n .pull-sm-12 {\n right: 100%;\n }\n .push-sm-0 {\n left: auto;\n }\n .push-sm-1 {\n left: 8.333333%;\n }\n .push-sm-2 {\n left: 16.666667%;\n }\n .push-sm-3 {\n left: 25%;\n }\n .push-sm-4 {\n left: 33.333333%;\n }\n .push-sm-5 {\n left: 41.666667%;\n }\n .push-sm-6 {\n left: 50%;\n }\n .push-sm-7 {\n left: 58.333333%;\n }\n .push-sm-8 {\n left: 66.666667%;\n }\n .push-sm-9 {\n left: 75%;\n }\n .push-sm-10 {\n left: 83.333333%;\n }\n .push-sm-11 {\n left: 91.666667%;\n }\n .push-sm-12 {\n left: 100%;\n }\n .offset-sm-0 {\n margin-left: 0%;\n }\n .offset-sm-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-md-0 {\n right: auto;\n }\n .pull-md-1 {\n right: 8.333333%;\n }\n .pull-md-2 {\n right: 16.666667%;\n }\n .pull-md-3 {\n right: 25%;\n }\n .pull-md-4 {\n right: 33.333333%;\n }\n .pull-md-5 {\n right: 41.666667%;\n }\n .pull-md-6 {\n right: 50%;\n }\n .pull-md-7 {\n right: 58.333333%;\n }\n .pull-md-8 {\n right: 66.666667%;\n }\n .pull-md-9 {\n right: 75%;\n }\n .pull-md-10 {\n right: 83.333333%;\n }\n .pull-md-11 {\n right: 91.666667%;\n }\n .pull-md-12 {\n right: 100%;\n }\n .push-md-0 {\n left: auto;\n }\n .push-md-1 {\n left: 8.333333%;\n }\n .push-md-2 {\n left: 16.666667%;\n }\n .push-md-3 {\n left: 25%;\n }\n .push-md-4 {\n left: 33.333333%;\n }\n .push-md-5 {\n left: 41.666667%;\n }\n .push-md-6 {\n left: 50%;\n }\n .push-md-7 {\n left: 58.333333%;\n }\n .push-md-8 {\n left: 66.666667%;\n }\n .push-md-9 {\n left: 75%;\n }\n .push-md-10 {\n left: 83.333333%;\n }\n .push-md-11 {\n left: 91.666667%;\n }\n .push-md-12 {\n left: 100%;\n }\n .offset-md-0 {\n margin-left: 0%;\n }\n .offset-md-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-lg-0 {\n right: auto;\n }\n .pull-lg-1 {\n right: 8.333333%;\n }\n .pull-lg-2 {\n right: 16.666667%;\n }\n .pull-lg-3 {\n right: 25%;\n }\n .pull-lg-4 {\n right: 33.333333%;\n }\n .pull-lg-5 {\n right: 41.666667%;\n }\n .pull-lg-6 {\n right: 50%;\n }\n .pull-lg-7 {\n right: 58.333333%;\n }\n .pull-lg-8 {\n right: 66.666667%;\n }\n .pull-lg-9 {\n right: 75%;\n }\n .pull-lg-10 {\n right: 83.333333%;\n }\n .pull-lg-11 {\n right: 91.666667%;\n }\n .pull-lg-12 {\n right: 100%;\n }\n .push-lg-0 {\n left: auto;\n }\n .push-lg-1 {\n left: 8.333333%;\n }\n .push-lg-2 {\n left: 16.666667%;\n }\n .push-lg-3 {\n left: 25%;\n }\n .push-lg-4 {\n left: 33.333333%;\n }\n .push-lg-5 {\n left: 41.666667%;\n }\n .push-lg-6 {\n left: 50%;\n }\n .push-lg-7 {\n left: 58.333333%;\n }\n .push-lg-8 {\n left: 66.666667%;\n }\n .push-lg-9 {\n left: 75%;\n }\n .push-lg-10 {\n left: 83.333333%;\n }\n .push-lg-11 {\n left: 91.666667%;\n }\n .push-lg-12 {\n left: 100%;\n }\n .offset-lg-0 {\n margin-left: 0%;\n }\n .offset-lg-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-xl-0 {\n right: auto;\n }\n .pull-xl-1 {\n right: 8.333333%;\n }\n .pull-xl-2 {\n right: 16.666667%;\n }\n .pull-xl-3 {\n right: 25%;\n }\n .pull-xl-4 {\n right: 33.333333%;\n }\n .pull-xl-5 {\n right: 41.666667%;\n }\n .pull-xl-6 {\n right: 50%;\n }\n .pull-xl-7 {\n right: 58.333333%;\n }\n .pull-xl-8 {\n right: 66.666667%;\n }\n .pull-xl-9 {\n right: 75%;\n }\n .pull-xl-10 {\n right: 83.333333%;\n }\n .pull-xl-11 {\n right: 91.666667%;\n }\n .pull-xl-12 {\n right: 100%;\n }\n .push-xl-0 {\n left: auto;\n }\n .push-xl-1 {\n left: 8.333333%;\n }\n .push-xl-2 {\n left: 16.666667%;\n }\n .push-xl-3 {\n left: 25%;\n }\n .push-xl-4 {\n left: 33.333333%;\n }\n .push-xl-5 {\n left: 41.666667%;\n }\n .push-xl-6 {\n left: 50%;\n }\n .push-xl-7 {\n left: 58.333333%;\n }\n .push-xl-8 {\n left: 66.666667%;\n }\n .push-xl-9 {\n left: 75%;\n }\n .push-xl-10 {\n left: 83.333333%;\n }\n .push-xl-11 {\n left: 91.666667%;\n }\n .push-xl-12 {\n left: 100%;\n }\n .offset-xl-0 {\n margin-left: 0%;\n }\n .offset-xl-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11 {\n margin-left: 91.666667%;\n }\n}\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 1rem;\n}\n\n.table th,\n.table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #eceeef;\n}\n\n.table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #eceeef;\n}\n\n.table tbody + tbody {\n border-top: 2px solid #eceeef;\n}\n\n.table .table {\n background-color: #fff;\n}\n\n.table-sm th,\n.table-sm td {\n padding: 0.3rem;\n}\n\n.table-bordered {\n border: 1px solid #eceeef;\n}\n\n.table-bordered th,\n.table-bordered td {\n border: 1px solid #eceeef;\n}\n\n.table-bordered thead th,\n.table-bordered thead td {\n border-bottom-width: 2px;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.table-hover tbody tr:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n background-color: #dff0d8;\n}\n\n.table-hover .table-success:hover {\n background-color: #d0e9c6;\n}\n\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n background-color: #d0e9c6;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n background-color: #d9edf7;\n}\n\n.table-hover .table-info:hover {\n background-color: #c4e3f3;\n}\n\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n background-color: #c4e3f3;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n background-color: #fcf8e3;\n}\n\n.table-hover .table-warning:hover {\n background-color: #faf2cc;\n}\n\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n background-color: #faf2cc;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n background-color: #f2dede;\n}\n\n.table-hover .table-danger:hover {\n background-color: #ebcccc;\n}\n\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n background-color: #ebcccc;\n}\n\n.thead-inverse th {\n color: #fff;\n background-color: #292b2c;\n}\n\n.thead-default th {\n color: #464a4c;\n background-color: #eceeef;\n}\n\n.table-inverse {\n color: #fff;\n background-color: #292b2c;\n}\n\n.table-inverse th,\n.table-inverse td,\n.table-inverse thead th {\n border-color: #fff;\n}\n\n.table-inverse.table-bordered {\n border: 0;\n}\n\n.table-responsive {\n display: block;\n width: 100%;\n overflow-x: auto;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n}\n\n.table-responsive.table-bordered {\n border: 0;\n}\n\n.form-control {\n display: block;\n width: 100%;\n padding: 0.5rem 0.75rem;\n font-size: 1rem;\n line-height: 1.25;\n color: #464a4c;\n background-color: #fff;\n background-image: none;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n}\n\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n\n.form-control:focus {\n color: #464a4c;\n background-color: #fff;\n border-color: #5cb3fd;\n outline: none;\n}\n\n.form-control::placeholder {\n color: #636c72;\n opacity: 1;\n}\n\n.form-control:disabled, .form-control[readonly] {\n background-color: #eceeef;\n opacity: 1;\n}\n\n.form-control:disabled {\n cursor: not-allowed;\n}\n\nselect.form-control:not([size]):not([multiple]) {\n height: calc(2.25rem + 2px);\n}\n\nselect.form-control:focus::-ms-value {\n color: #464a4c;\n background-color: #fff;\n}\n\n.form-control-file,\n.form-control-range {\n display: block;\n}\n\n.col-form-label {\n padding-top: calc(0.5rem - 1px * 2);\n padding-bottom: calc(0.5rem - 1px * 2);\n margin-bottom: 0;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.75rem - 1px * 2);\n padding-bottom: calc(0.75rem - 1px * 2);\n font-size: 1.25rem;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem - 1px * 2);\n padding-bottom: calc(0.25rem - 1px * 2);\n font-size: 0.875rem;\n}\n\n.col-form-legend {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n margin-bottom: 0;\n font-size: 1rem;\n}\n\n.form-control-static {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n margin-bottom: 0;\n line-height: 1.25;\n border: solid transparent;\n border-width: 1px 0;\n}\n\n.form-control-static.form-control-sm, .input-group-sm > .form-control-static.form-control,\n.input-group-sm > .form-control-static.input-group-addon,\n.input-group-sm > .input-group-btn > .form-control-static.btn, .form-control-static.form-control-lg, .input-group-lg > .form-control-static.form-control,\n.input-group-lg > .form-control-static.input-group-addon,\n.input-group-lg > .input-group-btn > .form-control-static.btn {\n padding-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm, .input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: 0.2rem;\n}\n\nselect.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]),\n.input-group-sm > select.input-group-addon:not([size]):not([multiple]),\n.input-group-sm > .input-group-btn > select.btn:not([size]):not([multiple]) {\n height: 1.8125rem;\n}\n\n.form-control-lg, .input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n border-radius: 0.3rem;\n}\n\nselect.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]),\n.input-group-lg > select.input-group-addon:not([size]):not([multiple]),\n.input-group-lg > .input-group-btn > select.btn:not([size]):not([multiple]) {\n height: 3.166667rem;\n}\n\n.form-group {\n margin-bottom: 1rem;\n}\n\n.form-text {\n display: block;\n margin-top: 0.25rem;\n}\n\n.form-check {\n position: relative;\n display: block;\n margin-bottom: 0.5rem;\n}\n\n.form-check.disabled .form-check-label {\n color: #636c72;\n cursor: not-allowed;\n}\n\n.form-check-label {\n padding-left: 1.25rem;\n margin-bottom: 0;\n cursor: pointer;\n}\n\n.form-check-input {\n position: absolute;\n margin-top: 0.25rem;\n margin-left: -1.25rem;\n}\n\n.form-check-input:only-child {\n position: static;\n}\n\n.form-check-inline {\n display: inline-block;\n}\n\n.form-check-inline .form-check-label {\n vertical-align: middle;\n}\n\n.form-check-inline + .form-check-inline {\n margin-left: 0.75rem;\n}\n\n.form-control-feedback {\n margin-top: 0.25rem;\n}\n\n.form-control-success,\n.form-control-warning,\n.form-control-danger {\n padding-right: 2.25rem;\n background-repeat: no-repeat;\n background-position: center right 0.5625rem;\n background-size: 1.125rem 1.125rem;\n}\n\n.has-success .form-control-feedback,\n.has-success .form-control-label,\n.has-success .col-form-label,\n.has-success .form-check-label,\n.has-success .custom-control {\n color: #5cb85c;\n}\n\n.has-success .form-control {\n border-color: #5cb85c;\n}\n\n.has-success .input-group-addon {\n color: #5cb85c;\n border-color: #5cb85c;\n background-color: #eaf6ea;\n}\n\n.has-success .form-control-success {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%235cb85c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E\");\n}\n\n.has-warning .form-control-feedback,\n.has-warning .form-control-label,\n.has-warning .col-form-label,\n.has-warning .form-check-label,\n.has-warning .custom-control {\n color: #f0ad4e;\n}\n\n.has-warning .form-control {\n border-color: #f0ad4e;\n}\n\n.has-warning .input-group-addon {\n color: #f0ad4e;\n border-color: #f0ad4e;\n background-color: white;\n}\n\n.has-warning .form-control-warning {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23f0ad4e' d='M4.4 5.324h-.8v-2.46h.8zm0 1.42h-.8V5.89h.8zM3.76.63L.04 7.075c-.115.2.016.425.26.426h7.397c.242 0 .372-.226.258-.426C6.726 4.924 5.47 2.79 4.253.63c-.113-.174-.39-.174-.494 0z'/%3E%3C/svg%3E\");\n}\n\n.has-danger .form-control-feedback,\n.has-danger .form-control-label,\n.has-danger .col-form-label,\n.has-danger .form-check-label,\n.has-danger .custom-control {\n color: #d9534f;\n}\n\n.has-danger .form-control {\n border-color: #d9534f;\n}\n\n.has-danger .input-group-addon {\n color: #d9534f;\n border-color: #d9534f;\n background-color: #fdf7f7;\n}\n\n.has-danger .form-control-danger {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23d9534f' viewBox='-2 -2 7 7'%3E%3Cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3E%3Ccircle r='.5'/%3E%3Ccircle cx='3' r='.5'/%3E%3Ccircle cy='3' r='.5'/%3E%3Ccircle cx='3' cy='3' r='.5'/%3E%3C/svg%3E\");\n}\n\n.form-inline {\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n}\n\n.form-inline .form-check {\n width: 100%;\n}\n\n@media (min-width: 576px) {\n .form-inline label {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 0;\n }\n .form-inline .form-group {\n display: flex;\n flex: 0 0 auto;\n flex-flow: row wrap;\n align-items: center;\n margin-bottom: 0;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n width: auto;\n }\n .form-inline .form-control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-check {\n display: flex;\n align-items: center;\n justify-content: center;\n width: auto;\n margin-top: 0;\n margin-bottom: 0;\n }\n .form-inline .form-check-label {\n padding-left: 0;\n }\n .form-inline .form-check-input {\n position: relative;\n margin-top: 0;\n margin-right: 0.25rem;\n margin-left: 0;\n }\n .form-inline .custom-control {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-left: 0;\n }\n .form-inline .custom-control-indicator {\n position: static;\n display: inline-block;\n margin-right: 0.25rem;\n vertical-align: text-bottom;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n\n.btn {\n display: inline-block;\n font-weight: normal;\n line-height: 1.25;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n user-select: none;\n border: 1px solid transparent;\n padding: 0.5rem 1rem;\n font-size: 1rem;\n border-radius: 0.25rem;\n transition: all 0.2s ease-in-out;\n}\n\n.btn:focus, .btn:hover {\n text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 2px rgba(2, 117, 216, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n cursor: not-allowed;\n opacity: .65;\n}\n\n.btn:active, .btn.active {\n background-image: none;\n}\n\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n\n.btn-primary {\n color: #fff;\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.btn-primary:hover {\n color: #fff;\n background-color: #025aa5;\n border-color: #01549b;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n box-shadow: 0 0 0 2px rgba(2, 117, 216, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.btn-primary:active, .btn-primary.active,\n.show > .btn-primary.dropdown-toggle {\n color: #fff;\n background-color: #025aa5;\n background-image: none;\n border-color: #01549b;\n}\n\n.btn-secondary {\n color: #292b2c;\n background-color: #fff;\n border-color: #ccc;\n}\n\n.btn-secondary:hover {\n color: #292b2c;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n box-shadow: 0 0 0 2px rgba(204, 204, 204, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n background-color: #fff;\n border-color: #ccc;\n}\n\n.btn-secondary:active, .btn-secondary.active,\n.show > .btn-secondary.dropdown-toggle {\n color: #292b2c;\n background-color: #e6e6e6;\n background-image: none;\n border-color: #adadad;\n}\n\n.btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #5bc0de;\n}\n\n.btn-info:hover {\n color: #fff;\n background-color: #31b0d5;\n border-color: #2aabd2;\n}\n\n.btn-info:focus, .btn-info.focus {\n box-shadow: 0 0 0 2px rgba(91, 192, 222, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n background-color: #5bc0de;\n border-color: #5bc0de;\n}\n\n.btn-info:active, .btn-info.active,\n.show > .btn-info.dropdown-toggle {\n color: #fff;\n background-color: #31b0d5;\n background-image: none;\n border-color: #2aabd2;\n}\n\n.btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #5cb85c;\n}\n\n.btn-success:hover {\n color: #fff;\n background-color: #449d44;\n border-color: #419641;\n}\n\n.btn-success:focus, .btn-success.focus {\n box-shadow: 0 0 0 2px rgba(92, 184, 92, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n background-color: #5cb85c;\n border-color: #5cb85c;\n}\n\n.btn-success:active, .btn-success.active,\n.show > .btn-success.dropdown-toggle {\n color: #fff;\n background-color: #449d44;\n background-image: none;\n border-color: #419641;\n}\n\n.btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #f0ad4e;\n}\n\n.btn-warning:hover {\n color: #fff;\n background-color: #ec971f;\n border-color: #eb9316;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n box-shadow: 0 0 0 2px rgba(240, 173, 78, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n background-color: #f0ad4e;\n border-color: #f0ad4e;\n}\n\n.btn-warning:active, .btn-warning.active,\n.show > .btn-warning.dropdown-toggle {\n color: #fff;\n background-color: #ec971f;\n background-image: none;\n border-color: #eb9316;\n}\n\n.btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d9534f;\n}\n\n.btn-danger:hover {\n color: #fff;\n background-color: #c9302c;\n border-color: #c12e2a;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n box-shadow: 0 0 0 2px rgba(217, 83, 79, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n background-color: #d9534f;\n border-color: #d9534f;\n}\n\n.btn-danger:active, .btn-danger.active,\n.show > .btn-danger.dropdown-toggle {\n color: #fff;\n background-color: #c9302c;\n background-image: none;\n border-color: #c12e2a;\n}\n\n.btn-outline-primary {\n color: #0275d8;\n background-image: none;\n background-color: transparent;\n border-color: #0275d8;\n}\n\n.btn-outline-primary:hover {\n color: #fff;\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n box-shadow: 0 0 0 2px rgba(2, 117, 216, 0.5);\n}\n\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n color: #0275d8;\n background-color: transparent;\n}\n\n.btn-outline-primary:active, .btn-outline-primary.active,\n.show > .btn-outline-primary.dropdown-toggle {\n color: #fff;\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.btn-outline-secondary {\n color: #ccc;\n background-image: none;\n background-color: transparent;\n border-color: #ccc;\n}\n\n.btn-outline-secondary:hover {\n color: #fff;\n background-color: #ccc;\n border-color: #ccc;\n}\n\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n box-shadow: 0 0 0 2px rgba(204, 204, 204, 0.5);\n}\n\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n color: #ccc;\n background-color: transparent;\n}\n\n.btn-outline-secondary:active, .btn-outline-secondary.active,\n.show > .btn-outline-secondary.dropdown-toggle {\n color: #fff;\n background-color: #ccc;\n border-color: #ccc;\n}\n\n.btn-outline-info {\n color: #5bc0de;\n background-image: none;\n background-color: transparent;\n border-color: #5bc0de;\n}\n\n.btn-outline-info:hover {\n color: #fff;\n background-color: #5bc0de;\n border-color: #5bc0de;\n}\n\n.btn-outline-info:focus, .btn-outline-info.focus {\n box-shadow: 0 0 0 2px rgba(91, 192, 222, 0.5);\n}\n\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n color: #5bc0de;\n background-color: transparent;\n}\n\n.btn-outline-info:active, .btn-outline-info.active,\n.show > .btn-outline-info.dropdown-toggle {\n color: #fff;\n background-color: #5bc0de;\n border-color: #5bc0de;\n}\n\n.btn-outline-success {\n color: #5cb85c;\n background-image: none;\n background-color: transparent;\n border-color: #5cb85c;\n}\n\n.btn-outline-success:hover {\n color: #fff;\n background-color: #5cb85c;\n border-color: #5cb85c;\n}\n\n.btn-outline-success:focus, .btn-outline-success.focus {\n box-shadow: 0 0 0 2px rgba(92, 184, 92, 0.5);\n}\n\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n color: #5cb85c;\n background-color: transparent;\n}\n\n.btn-outline-success:active, .btn-outline-success.active,\n.show > .btn-outline-success.dropdown-toggle {\n color: #fff;\n background-color: #5cb85c;\n border-color: #5cb85c;\n}\n\n.btn-outline-warning {\n color: #f0ad4e;\n background-image: none;\n background-color: transparent;\n border-color: #f0ad4e;\n}\n\n.btn-outline-warning:hover {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #f0ad4e;\n}\n\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n box-shadow: 0 0 0 2px rgba(240, 173, 78, 0.5);\n}\n\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n color: #f0ad4e;\n background-color: transparent;\n}\n\n.btn-outline-warning:active, .btn-outline-warning.active,\n.show > .btn-outline-warning.dropdown-toggle {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #f0ad4e;\n}\n\n.btn-outline-danger {\n color: #d9534f;\n background-image: none;\n background-color: transparent;\n border-color: #d9534f;\n}\n\n.btn-outline-danger:hover {\n color: #fff;\n background-color: #d9534f;\n border-color: #d9534f;\n}\n\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n box-shadow: 0 0 0 2px rgba(217, 83, 79, 0.5);\n}\n\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n color: #d9534f;\n background-color: transparent;\n}\n\n.btn-outline-danger:active, .btn-outline-danger.active,\n.show > .btn-outline-danger.dropdown-toggle {\n color: #fff;\n background-color: #d9534f;\n border-color: #d9534f;\n}\n\n.btn-link {\n font-weight: normal;\n color: #0275d8;\n border-radius: 0;\n}\n\n.btn-link, .btn-link:active, .btn-link.active, .btn-link:disabled {\n background-color: transparent;\n}\n\n.btn-link, .btn-link:focus, .btn-link:active {\n border-color: transparent;\n}\n\n.btn-link:hover {\n border-color: transparent;\n}\n\n.btn-link:focus, .btn-link:hover {\n color: #014c8c;\n text-decoration: underline;\n background-color: transparent;\n}\n\n.btn-link:disabled {\n color: #636c72;\n}\n\n.btn-link:disabled:focus, .btn-link:disabled:hover {\n text-decoration: none;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: 0.2rem;\n}\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n.btn-block + .btn-block {\n margin-top: 0.5rem;\n}\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n\n.fade {\n opacity: 0;\n transition: opacity 0.15s linear;\n}\n\n.fade.show {\n opacity: 1;\n}\n\n.collapse {\n display: none;\n}\n\n.collapse.show {\n display: block;\n}\n\ntr.collapse.show {\n display: table-row;\n}\n\ntbody.collapse.show {\n display: table-row-group;\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n\n.dropup,\n.dropdown {\n position: relative;\n}\n\n.dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.3em;\n vertical-align: middle;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-left: 0.3em solid transparent;\n}\n\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n.dropup .dropdown-toggle::after {\n border-top: 0;\n border-bottom: 0.3em solid;\n}\n\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 10rem;\n padding: 0.5rem 0;\n margin: 0.125rem 0 0;\n font-size: 1rem;\n color: #292b2c;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.dropdown-divider {\n height: 1px;\n margin: 0.5rem 0;\n overflow: hidden;\n background-color: #eceeef;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: 3px 1.5rem;\n clear: both;\n font-weight: normal;\n color: #292b2c;\n text-align: inherit;\n white-space: nowrap;\n background: none;\n border: 0;\n}\n\n.dropdown-item:focus, .dropdown-item:hover {\n color: #1d1e1f;\n text-decoration: none;\n background-color: #f7f7f9;\n}\n\n.dropdown-item.active, .dropdown-item:active {\n color: #fff;\n text-decoration: none;\n background-color: #0275d8;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: #636c72;\n cursor: not-allowed;\n background-color: transparent;\n}\n\n.show > .dropdown-menu {\n display: block;\n}\n\n.show > a {\n outline: 0;\n}\n\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n\n.dropdown-header {\n display: block;\n padding: 0.5rem 1.5rem;\n margin-bottom: 0;\n font-size: 0.875rem;\n color: #636c72;\n white-space: nowrap;\n}\n\n.dropdown-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 990;\n}\n\n.dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 0.125rem;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n}\n\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n flex: 0 1 auto;\n}\n\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n z-index: 2;\n}\n\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group,\n.btn-group-vertical .btn + .btn,\n.btn-group-vertical .btn + .btn-group,\n.btn-group-vertical .btn-group + .btn,\n.btn-group-vertical .btn-group + .btn-group {\n margin-left: -1px;\n}\n\n.btn-toolbar {\n display: flex;\n justify-content: flex-start;\n}\n\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n\n.btn-group > .btn-group {\n float: left;\n}\n\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n.btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn + .dropdown-toggle-split::after {\n margin-left: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 1.125rem;\n padding-left: 1.125rem;\n}\n\n.btn-group-vertical {\n display: inline-flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n\n.btn-group-vertical .btn,\n.btn-group-vertical .btn-group {\n width: 100%;\n}\n\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n\n.input-group {\n position: relative;\n display: flex;\n width: 100%;\n}\n\n.input-group .form-control {\n position: relative;\n z-index: 2;\n flex: 1 1 auto;\n width: 1%;\n margin-bottom: 0;\n}\n\n.input-group .form-control:focus, .input-group .form-control:active, .input-group .form-control:hover {\n z-index: 3;\n}\n\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n\n.input-group-addon,\n.input-group-btn {\n white-space: nowrap;\n vertical-align: middle;\n}\n\n.input-group-addon {\n padding: 0.5rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n font-weight: normal;\n line-height: 1.25;\n color: #464a4c;\n text-align: center;\n background-color: #eceeef;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.input-group-addon.form-control-sm,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .input-group-addon.btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: 0.2rem;\n}\n\n.input-group-addon.form-control-lg,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .input-group-addon.btn {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n border-radius: 0.3rem;\n}\n\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n\n.input-group .form-control:not(:last-child),\n.input-group-addon:not(:last-child),\n.input-group-btn:not(:last-child) > .btn,\n.input-group-btn:not(:last-child) > .btn-group > .btn,\n.input-group-btn:not(:last-child) > .dropdown-toggle,\n.input-group-btn:not(:first-child) > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:not(:first-child) > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n\n.input-group-addon:not(:last-child) {\n border-right: 0;\n}\n\n.input-group .form-control:not(:first-child),\n.input-group-addon:not(:first-child),\n.input-group-btn:not(:first-child) > .btn,\n.input-group-btn:not(:first-child) > .btn-group > .btn,\n.input-group-btn:not(:first-child) > .dropdown-toggle,\n.input-group-btn:not(:last-child) > .btn:not(:first-child),\n.input-group-btn:not(:last-child) > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n\n.form-control + .input-group-addon:not(:first-child) {\n border-left: 0;\n}\n\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n\n.input-group-btn > .btn {\n position: relative;\n flex: 1;\n}\n\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n\n.input-group-btn > .btn:focus, .input-group-btn > .btn:active, .input-group-btn > .btn:hover {\n z-index: 3;\n}\n\n.input-group-btn:not(:last-child) > .btn,\n.input-group-btn:not(:last-child) > .btn-group {\n margin-right: -1px;\n}\n\n.input-group-btn:not(:first-child) > .btn,\n.input-group-btn:not(:first-child) > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n\n.input-group-btn:not(:first-child) > .btn:focus, .input-group-btn:not(:first-child) > .btn:active, .input-group-btn:not(:first-child) > .btn:hover,\n.input-group-btn:not(:first-child) > .btn-group:focus,\n.input-group-btn:not(:first-child) > .btn-group:active,\n.input-group-btn:not(:first-child) > .btn-group:hover {\n z-index: 3;\n}\n\n.custom-control {\n position: relative;\n display: inline-flex;\n min-height: 1.5rem;\n padding-left: 1.5rem;\n margin-right: 1rem;\n cursor: pointer;\n}\n\n.custom-control-input {\n position: absolute;\n z-index: -1;\n opacity: 0;\n}\n\n.custom-control-input:checked ~ .custom-control-indicator {\n color: #fff;\n background-color: #0275d8;\n}\n\n.custom-control-input:focus ~ .custom-control-indicator {\n box-shadow: 0 0 0 1px #fff, 0 0 0 3px #0275d8;\n}\n\n.custom-control-input:active ~ .custom-control-indicator {\n color: #fff;\n background-color: #8fcafe;\n}\n\n.custom-control-input:disabled ~ .custom-control-indicator {\n cursor: not-allowed;\n background-color: #eceeef;\n}\n\n.custom-control-input:disabled ~ .custom-control-description {\n color: #636c72;\n cursor: not-allowed;\n}\n\n.custom-control-indicator {\n position: absolute;\n top: 0.25rem;\n left: 0;\n display: block;\n width: 1rem;\n height: 1rem;\n pointer-events: none;\n user-select: none;\n background-color: #ddd;\n background-repeat: no-repeat;\n background-position: center center;\n background-size: 50% 50%;\n}\n\n.custom-checkbox .custom-control-indicator {\n border-radius: 0.25rem;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-indicator {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-indicator {\n background-color: #0275d8;\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\");\n}\n\n.custom-radio .custom-control-indicator {\n border-radius: 50%;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-indicator {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\");\n}\n\n.custom-controls-stacked {\n display: flex;\n flex-direction: column;\n}\n\n.custom-controls-stacked .custom-control {\n margin-bottom: 0.25rem;\n}\n\n.custom-controls-stacked .custom-control + .custom-control {\n margin-left: 0;\n}\n\n.custom-select {\n display: inline-block;\n max-width: 100%;\n height: calc(2.25rem + 2px);\n padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n line-height: 1.25;\n color: #464a4c;\n vertical-align: middle;\n background: #fff url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right 0.75rem center;\n background-size: 8px 10px;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n -moz-appearance: none;\n -webkit-appearance: none;\n}\n\n.custom-select:focus {\n border-color: #5cb3fd;\n outline: none;\n}\n\n.custom-select:focus::-ms-value {\n color: #464a4c;\n background-color: #fff;\n}\n\n.custom-select:disabled {\n color: #636c72;\n cursor: not-allowed;\n background-color: #eceeef;\n}\n\n.custom-select::-ms-expand {\n opacity: 0;\n}\n\n.custom-select-sm {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n font-size: 75%;\n}\n\n.custom-file {\n position: relative;\n display: inline-block;\n max-width: 100%;\n height: 2.5rem;\n margin-bottom: 0;\n cursor: pointer;\n}\n\n.custom-file-input {\n min-width: 14rem;\n max-width: 100%;\n height: 2.5rem;\n margin: 0;\n filter: alpha(opacity=0);\n opacity: 0;\n}\n\n.custom-file-control {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 5;\n height: 2.5rem;\n padding: 0.5rem 1rem;\n line-height: 1.5;\n color: #464a4c;\n pointer-events: none;\n user-select: none;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.custom-file-control:lang(en)::after {\n content: \"Choose file...\";\n}\n\n.custom-file-control::before {\n position: absolute;\n top: -1px;\n right: -1px;\n bottom: -1px;\n z-index: 6;\n display: block;\n height: 2.5rem;\n padding: 0.5rem 1rem;\n line-height: 1.5;\n color: #464a4c;\n background-color: #eceeef;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.custom-file-control:lang(en)::before {\n content: \"Browse\";\n}\n\n.nav {\n display: flex;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: 0.5em 1em;\n}\n\n.nav-link:focus, .nav-link:hover {\n text-decoration: none;\n}\n\n.nav-link.disabled {\n color: #636c72;\n cursor: not-allowed;\n}\n\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n\n.nav-tabs .nav-item {\n margin-bottom: -1px;\n}\n\n.nav-tabs .nav-link {\n border: 1px solid transparent;\n border-top-right-radius: 0.25rem;\n border-top-left-radius: 0.25rem;\n}\n\n.nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover {\n border-color: #eceeef #eceeef #ddd;\n}\n\n.nav-tabs .nav-link.disabled {\n color: #636c72;\n background-color: transparent;\n border-color: transparent;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: #464a4c;\n background-color: #fff;\n border-color: #ddd #ddd #fff;\n}\n\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n\n.nav-pills .nav-link {\n border-radius: 0.25rem;\n}\n\n.nav-pills .nav-link.active,\n.nav-pills .nav-item.show .nav-link {\n color: #fff;\n cursor: default;\n background-color: #0275d8;\n}\n\n.nav-fill .nav-item {\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified .nav-item {\n flex: 1 1 100%;\n text-align: center;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n position: relative;\n display: flex;\n flex-direction: column;\n padding: 0.5rem 1rem;\n}\n\n.navbar-brand {\n display: inline-block;\n padding-top: .25rem;\n padding-bottom: .25rem;\n margin-right: 1rem;\n font-size: 1.25rem;\n line-height: inherit;\n white-space: nowrap;\n}\n\n.navbar-brand:focus, .navbar-brand:hover {\n text-decoration: none;\n}\n\n.navbar-nav {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.navbar-nav .nav-link {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-text {\n display: inline-block;\n padding-top: .425rem;\n padding-bottom: .425rem;\n}\n\n.navbar-toggler {\n align-self: flex-start;\n padding: 0.25rem 0.75rem;\n font-size: 1.25rem;\n line-height: 1;\n background: transparent;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.navbar-toggler:focus, .navbar-toggler:hover {\n text-decoration: none;\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n\n.navbar-toggler-left {\n position: absolute;\n left: 1rem;\n}\n\n.navbar-toggler-right {\n position: absolute;\n right: 1rem;\n}\n\n@media (max-width: 575px) {\n .navbar-toggleable .navbar-nav .dropdown-menu {\n position: static;\n float: none;\n }\n .navbar-toggleable > .container {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 576px) {\n .navbar-toggleable {\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n }\n .navbar-toggleable .navbar-nav {\n flex-direction: row;\n }\n .navbar-toggleable .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-toggleable > .container {\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n }\n .navbar-toggleable .navbar-collapse {\n display: flex !important;\n width: 100%;\n }\n .navbar-toggleable .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 767px) {\n .navbar-toggleable-sm .navbar-nav .dropdown-menu {\n position: static;\n float: none;\n }\n .navbar-toggleable-sm > .container {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 768px) {\n .navbar-toggleable-sm {\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n }\n .navbar-toggleable-sm .navbar-nav {\n flex-direction: row;\n }\n .navbar-toggleable-sm .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-toggleable-sm > .container {\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n }\n .navbar-toggleable-sm .navbar-collapse {\n display: flex !important;\n width: 100%;\n }\n .navbar-toggleable-sm .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 991px) {\n .navbar-toggleable-md .navbar-nav .dropdown-menu {\n position: static;\n float: none;\n }\n .navbar-toggleable-md > .container {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 992px) {\n .navbar-toggleable-md {\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n }\n .navbar-toggleable-md .navbar-nav {\n flex-direction: row;\n }\n .navbar-toggleable-md .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-toggleable-md > .container {\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n }\n .navbar-toggleable-md .navbar-collapse {\n display: flex !important;\n width: 100%;\n }\n .navbar-toggleable-md .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 1199px) {\n .navbar-toggleable-lg .navbar-nav .dropdown-menu {\n position: static;\n float: none;\n }\n .navbar-toggleable-lg > .container {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .navbar-toggleable-lg {\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n }\n .navbar-toggleable-lg .navbar-nav {\n flex-direction: row;\n }\n .navbar-toggleable-lg .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-toggleable-lg > .container {\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n }\n .navbar-toggleable-lg .navbar-collapse {\n display: flex !important;\n width: 100%;\n }\n .navbar-toggleable-lg .navbar-toggler {\n display: none;\n }\n}\n\n.navbar-toggleable-xl {\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n}\n\n.navbar-toggleable-xl .navbar-nav .dropdown-menu {\n position: static;\n float: none;\n}\n\n.navbar-toggleable-xl > .container {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-toggleable-xl .navbar-nav {\n flex-direction: row;\n}\n\n.navbar-toggleable-xl .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n}\n\n.navbar-toggleable-xl > .container {\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n}\n\n.navbar-toggleable-xl .navbar-collapse {\n display: flex !important;\n width: 100%;\n}\n\n.navbar-toggleable-xl .navbar-toggler {\n display: none;\n}\n\n.navbar-light .navbar-brand,\n.navbar-light .navbar-toggler {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-brand:focus, .navbar-light .navbar-brand:hover,\n.navbar-light .navbar-toggler:focus,\n.navbar-light .navbar-toggler:hover {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-nav .nav-link {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-nav .nav-link:focus, .navbar-light .navbar-nav .nav-link:hover {\n color: rgba(0, 0, 0, 0.7);\n}\n\n.navbar-light .navbar-nav .nav-link.disabled {\n color: rgba(0, 0, 0, 0.3);\n}\n\n.navbar-light .navbar-nav .open > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.open,\n.navbar-light .navbar-nav .nav-link.active {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-toggler {\n border-color: rgba(0, 0, 0, 0.1);\n}\n\n.navbar-light .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E\");\n}\n\n.navbar-light .navbar-text {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-toggler {\n color: white;\n}\n\n.navbar-inverse .navbar-brand:focus, .navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-toggler:focus,\n.navbar-inverse .navbar-toggler:hover {\n color: white;\n}\n\n.navbar-inverse .navbar-nav .nav-link {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-inverse .navbar-nav .nav-link:focus, .navbar-inverse .navbar-nav .nav-link:hover {\n color: rgba(255, 255, 255, 0.75);\n}\n\n.navbar-inverse .navbar-nav .nav-link.disabled {\n color: rgba(255, 255, 255, 0.25);\n}\n\n.navbar-inverse .navbar-nav .open > .nav-link,\n.navbar-inverse .navbar-nav .active > .nav-link,\n.navbar-inverse .navbar-nav .nav-link.open,\n.navbar-inverse .navbar-nav .nav-link.active {\n color: white;\n}\n\n.navbar-inverse .navbar-toggler {\n border-color: rgba(255, 255, 255, 0.1);\n}\n\n.navbar-inverse .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E\");\n}\n\n.navbar-inverse .navbar-text {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.card {\n position: relative;\n display: flex;\n flex-direction: column;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n\n.card-block {\n flex: 1 1 auto;\n padding: 1.25rem;\n}\n\n.card-title {\n margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link:hover {\n text-decoration: none;\n}\n\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n border-top-right-radius: 0.25rem;\n border-top-left-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: #f7f7f9;\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: #f7f7f9;\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n\n.card-primary {\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.card-primary .card-header,\n.card-primary .card-footer {\n background-color: transparent;\n}\n\n.card-success {\n background-color: #5cb85c;\n border-color: #5cb85c;\n}\n\n.card-success .card-header,\n.card-success .card-footer {\n background-color: transparent;\n}\n\n.card-info {\n background-color: #5bc0de;\n border-color: #5bc0de;\n}\n\n.card-info .card-header,\n.card-info .card-footer {\n background-color: transparent;\n}\n\n.card-warning {\n background-color: #f0ad4e;\n border-color: #f0ad4e;\n}\n\n.card-warning .card-header,\n.card-warning .card-footer {\n background-color: transparent;\n}\n\n.card-danger {\n background-color: #d9534f;\n border-color: #d9534f;\n}\n\n.card-danger .card-header,\n.card-danger .card-footer {\n background-color: transparent;\n}\n\n.card-outline-primary {\n background-color: transparent;\n border-color: #0275d8;\n}\n\n.card-outline-secondary {\n background-color: transparent;\n border-color: #ccc;\n}\n\n.card-outline-info {\n background-color: transparent;\n border-color: #5bc0de;\n}\n\n.card-outline-success {\n background-color: transparent;\n border-color: #5cb85c;\n}\n\n.card-outline-warning {\n background-color: transparent;\n border-color: #f0ad4e;\n}\n\n.card-outline-danger {\n background-color: transparent;\n border-color: #d9534f;\n}\n\n.card-inverse {\n color: rgba(255, 255, 255, 0.65);\n}\n\n.card-inverse .card-header,\n.card-inverse .card-footer {\n background-color: transparent;\n border-color: rgba(255, 255, 255, 0.2);\n}\n\n.card-inverse .card-header,\n.card-inverse .card-footer,\n.card-inverse .card-title,\n.card-inverse .card-blockquote {\n color: #fff;\n}\n\n.card-inverse .card-link,\n.card-inverse .card-text,\n.card-inverse .card-subtitle,\n.card-inverse .card-blockquote .blockquote-footer {\n color: rgba(255, 255, 255, 0.65);\n}\n\n.card-inverse .card-link:focus, .card-inverse .card-link:hover {\n color: #fff;\n}\n\n.card-blockquote {\n padding: 0;\n margin-bottom: 0;\n border-left: 0;\n}\n\n.card-img {\n border-radius: calc(0.25rem - 1px);\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n}\n\n.card-img-top {\n border-top-right-radius: calc(0.25rem - 1px);\n border-top-left-radius: calc(0.25rem - 1px);\n}\n\n.card-img-bottom {\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n@media (min-width: 576px) {\n .card-deck {\n display: flex;\n flex-flow: row wrap;\n }\n .card-deck .card {\n display: flex;\n flex: 1 0 0;\n flex-direction: column;\n }\n .card-deck .card:not(:first-child) {\n margin-left: 15px;\n }\n .card-deck .card:not(:last-child) {\n margin-right: 15px;\n }\n}\n\n@media (min-width: 576px) {\n .card-group {\n display: flex;\n flex-flow: row wrap;\n }\n .card-group .card {\n flex: 1 0 0;\n }\n .card-group .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group .card:first-child {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n }\n .card-group .card:first-child .card-img-top {\n border-top-right-radius: 0;\n }\n .card-group .card:first-child .card-img-bottom {\n border-bottom-right-radius: 0;\n }\n .card-group .card:last-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n }\n .card-group .card:last-child .card-img-top {\n border-top-left-radius: 0;\n }\n .card-group .card:last-child .card-img-bottom {\n border-bottom-left-radius: 0;\n }\n .card-group .card:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n .card-group .card:not(:first-child):not(:last-child) .card-img-top,\n .card-group .card:not(:first-child):not(:last-child) .card-img-bottom {\n border-radius: 0;\n }\n}\n\n@media (min-width: 576px) {\n .card-columns {\n column-count: 3;\n column-gap: 1.25rem;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n margin-bottom: 0.75rem;\n }\n}\n\n.breadcrumb {\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n list-style: none;\n background-color: #eceeef;\n border-radius: 0.25rem;\n}\n\n.breadcrumb::after {\n display: block;\n content: \"\";\n clear: both;\n}\n\n.breadcrumb-item {\n float: left;\n}\n\n.breadcrumb-item + .breadcrumb-item::before {\n display: inline-block;\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n color: #636c72;\n content: \"/\";\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: underline;\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: none;\n}\n\n.breadcrumb-item.active {\n color: #636c72;\n}\n\n.pagination {\n display: flex;\n padding-left: 0;\n list-style: none;\n border-radius: 0.25rem;\n}\n\n.page-item:first-child .page-link {\n margin-left: 0;\n border-bottom-left-radius: 0.25rem;\n border-top-left-radius: 0.25rem;\n}\n\n.page-item:last-child .page-link {\n border-bottom-right-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.page-item.active .page-link {\n z-index: 2;\n color: #fff;\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.page-item.disabled .page-link {\n color: #636c72;\n pointer-events: none;\n cursor: not-allowed;\n background-color: #fff;\n border-color: #ddd;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #0275d8;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n\n.page-link:focus, .page-link:hover {\n color: #014c8c;\n text-decoration: none;\n background-color: #eceeef;\n border-color: #ddd;\n}\n\n.pagination-lg .page-link {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n}\n\n.pagination-lg .page-item:first-child .page-link {\n border-bottom-left-radius: 0.3rem;\n border-top-left-radius: 0.3rem;\n}\n\n.pagination-lg .page-item:last-child .page-link {\n border-bottom-right-radius: 0.3rem;\n border-top-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n}\n\n.pagination-sm .page-item:first-child .page-link {\n border-bottom-left-radius: 0.2rem;\n border-top-left-radius: 0.2rem;\n}\n\n.pagination-sm .page-item:last-child .page-link {\n border-bottom-right-radius: 0.2rem;\n border-top-right-radius: 0.2rem;\n}\n\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n}\n\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\na.badge:focus, a.badge:hover {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n\n.badge-default {\n background-color: #636c72;\n}\n\n.badge-default[href]:focus, .badge-default[href]:hover {\n background-color: #4b5257;\n}\n\n.badge-primary {\n background-color: #0275d8;\n}\n\n.badge-primary[href]:focus, .badge-primary[href]:hover {\n background-color: #025aa5;\n}\n\n.badge-success {\n background-color: #5cb85c;\n}\n\n.badge-success[href]:focus, .badge-success[href]:hover {\n background-color: #449d44;\n}\n\n.badge-info {\n background-color: #5bc0de;\n}\n\n.badge-info[href]:focus, .badge-info[href]:hover {\n background-color: #31b0d5;\n}\n\n.badge-warning {\n background-color: #f0ad4e;\n}\n\n.badge-warning[href]:focus, .badge-warning[href]:hover {\n background-color: #ec971f;\n}\n\n.badge-danger {\n background-color: #d9534f;\n}\n\n.badge-danger[href]:focus, .badge-danger[href]:hover {\n background-color: #c9302c;\n}\n\n.jumbotron {\n padding: 2rem 1rem;\n margin-bottom: 2rem;\n background-color: #eceeef;\n border-radius: 0.3rem;\n}\n\n@media (min-width: 576px) {\n .jumbotron {\n padding: 4rem 2rem;\n }\n}\n\n.jumbotron-hr {\n border-top-color: #d0d5d8;\n}\n\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n border-radius: 0;\n}\n\n.alert {\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: bold;\n}\n\n.alert-dismissible .close {\n position: relative;\n top: -0.75rem;\n right: -1.25rem;\n padding: 0.75rem 1.25rem;\n color: inherit;\n}\n\n.alert-success {\n background-color: #dff0d8;\n border-color: #d0e9c6;\n color: #3c763d;\n}\n\n.alert-success hr {\n border-top-color: #c1e2b3;\n}\n\n.alert-success .alert-link {\n color: #2b542c;\n}\n\n.alert-info {\n background-color: #d9edf7;\n border-color: #bcdff1;\n color: #31708f;\n}\n\n.alert-info hr {\n border-top-color: #a6d5ec;\n}\n\n.alert-info .alert-link {\n color: #245269;\n}\n\n.alert-warning {\n background-color: #fcf8e3;\n border-color: #faf2cc;\n color: #8a6d3b;\n}\n\n.alert-warning hr {\n border-top-color: #f7ecb5;\n}\n\n.alert-warning .alert-link {\n color: #66512c;\n}\n\n.alert-danger {\n background-color: #f2dede;\n border-color: #ebcccc;\n color: #a94442;\n}\n\n.alert-danger hr {\n border-top-color: #e4b9b9;\n}\n\n.alert-danger .alert-link {\n color: #843534;\n}\n\n@keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n\n.progress {\n display: flex;\n overflow: hidden;\n font-size: 0.75rem;\n line-height: 1rem;\n text-align: center;\n background-color: #eceeef;\n border-radius: 0.25rem;\n}\n\n.progress-bar {\n height: 1rem;\n color: #fff;\n background-color: #0275d8;\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n animation: progress-bar-stripes 1s linear infinite;\n}\n\n.media {\n display: flex;\n align-items: flex-start;\n}\n\n.media-body {\n flex: 1;\n}\n\n.list-group {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n}\n\n.list-group-item-action {\n width: 100%;\n color: #464a4c;\n text-align: inherit;\n}\n\n.list-group-item-action .list-group-item-heading {\n color: #292b2c;\n}\n\n.list-group-item-action:focus, .list-group-item-action:hover {\n color: #464a4c;\n text-decoration: none;\n background-color: #f7f7f9;\n}\n\n.list-group-item-action:active {\n color: #292b2c;\n background-color: #eceeef;\n}\n\n.list-group-item {\n position: relative;\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n padding: 0.75rem 1.25rem;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.list-group-item:first-child {\n border-top-right-radius: 0.25rem;\n border-top-left-radius: 0.25rem;\n}\n\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.list-group-item:focus, .list-group-item:hover {\n text-decoration: none;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n color: #636c72;\n cursor: not-allowed;\n background-color: #fff;\n}\n\n.list-group-item.disabled .list-group-item-heading, .list-group-item:disabled .list-group-item-heading {\n color: inherit;\n}\n\n.list-group-item.disabled .list-group-item-text, .list-group-item:disabled .list-group-item-text {\n color: #636c72;\n}\n\n.list-group-item.active {\n z-index: 2;\n color: #fff;\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small {\n color: inherit;\n}\n\n.list-group-item.active .list-group-item-text {\n color: #daeeff;\n}\n\n.list-group-flush .list-group-item {\n border-right: 0;\n border-left: 0;\n border-radius: 0;\n}\n\n.list-group-flush:first-child .list-group-item:first-child {\n border-top: 0;\n}\n\n.list-group-flush:last-child .list-group-item:last-child {\n border-bottom: 0;\n}\n\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\n\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\n\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\n\na.list-group-item-success:focus, a.list-group-item-success:hover,\nbutton.list-group-item-success:focus,\nbutton.list-group-item-success:hover {\n color: #3c763d;\n background-color: #d0e9c6;\n}\n\na.list-group-item-success.active,\nbutton.list-group-item-success.active {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\n\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\n\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\n\na.list-group-item-info:focus, a.list-group-item-info:hover,\nbutton.list-group-item-info:focus,\nbutton.list-group-item-info:hover {\n color: #31708f;\n background-color: #c4e3f3;\n}\n\na.list-group-item-info.active,\nbutton.list-group-item-info.active {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\n\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\n\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\n\na.list-group-item-warning:focus, a.list-group-item-warning:hover,\nbutton.list-group-item-warning:focus,\nbutton.list-group-item-warning:hover {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\n\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\n\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\n\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\n\na.list-group-item-danger:focus, a.list-group-item-danger:hover,\nbutton.list-group-item-danger:focus,\nbutton.list-group-item-danger:hover {\n color: #a94442;\n background-color: #ebcccc;\n}\n\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n}\n\n.embed-responsive::before {\n display: block;\n content: \"\";\n}\n\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n\n.embed-responsive-21by9::before {\n padding-top: 42.857143%;\n}\n\n.embed-responsive-16by9::before {\n padding-top: 56.25%;\n}\n\n.embed-responsive-4by3::before {\n padding-top: 75%;\n}\n\n.embed-responsive-1by1::before {\n padding-top: 100%;\n}\n\n.close {\n float: right;\n font-size: 1.5rem;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: .5;\n}\n\n.close:focus, .close:hover {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n opacity: .75;\n}\n\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n\n.modal-open {\n overflow: hidden;\n}\n\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n outline: 0;\n}\n\n.modal.fade .modal-dialog {\n transition: transform 0.3s ease-out;\n transform: translate(0, -25%);\n}\n\n.modal.show .modal-dialog {\n transform: translate(0, 0);\n}\n\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0;\n}\n\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n\n.modal-backdrop.fade {\n opacity: 0;\n}\n\n.modal-backdrop.show {\n opacity: 0.5;\n}\n\n.modal-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 15px;\n border-bottom: 1px solid #eceeef;\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: 1.5;\n}\n\n.modal-body {\n position: relative;\n flex: 1 1 auto;\n padding: 15px;\n}\n\n.modal-footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 15px;\n border-top: 1px solid #eceeef;\n}\n\n.modal-footer > :not(:first-child) {\n margin-left: .25rem;\n}\n\n.modal-footer > :not(:last-child) {\n margin-right: .25rem;\n}\n\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n@media (min-width: 576px) {\n .modal-dialog {\n max-width: 500px;\n margin: 30px auto;\n }\n .modal-sm {\n max-width: 300px;\n }\n}\n\n@media (min-width: 992px) {\n .modal-lg {\n max-width: 800px;\n }\n}\n\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n font-size: 0.875rem;\n word-wrap: break-word;\n opacity: 0;\n}\n\n.tooltip.show {\n opacity: 0.9;\n}\n\n.tooltip.tooltip-top, .tooltip.bs-tether-element-attached-bottom {\n padding: 5px 0;\n margin-top: -3px;\n}\n\n.tooltip.tooltip-top .tooltip-inner::before, .tooltip.bs-tether-element-attached-bottom .tooltip-inner::before {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n content: \"\";\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n\n.tooltip.tooltip-right, .tooltip.bs-tether-element-attached-left {\n padding: 0 5px;\n margin-left: 3px;\n}\n\n.tooltip.tooltip-right .tooltip-inner::before, .tooltip.bs-tether-element-attached-left .tooltip-inner::before {\n top: 50%;\n left: 0;\n margin-top: -5px;\n content: \"\";\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n\n.tooltip.tooltip-bottom, .tooltip.bs-tether-element-attached-top {\n padding: 5px 0;\n margin-top: 3px;\n}\n\n.tooltip.tooltip-bottom .tooltip-inner::before, .tooltip.bs-tether-element-attached-top .tooltip-inner::before {\n top: 0;\n left: 50%;\n margin-left: -5px;\n content: \"\";\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n\n.tooltip.tooltip-left, .tooltip.bs-tether-element-attached-right {\n padding: 0 5px;\n margin-left: -3px;\n}\n\n.tooltip.tooltip-left .tooltip-inner::before, .tooltip.bs-tether-element-attached-right .tooltip-inner::before {\n top: 50%;\n right: 0;\n margin-top: -5px;\n content: \"\";\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 0.25rem;\n}\n\n.tooltip-inner::before {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: block;\n max-width: 276px;\n padding: 1px;\n font-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n font-size: 0.875rem;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n}\n\n.popover.popover-top, .popover.bs-tether-element-attached-bottom {\n margin-top: -10px;\n}\n\n.popover.popover-top::before, .popover.popover-top::after, .popover.bs-tether-element-attached-bottom::before, .popover.bs-tether-element-attached-bottom::after {\n left: 50%;\n border-bottom-width: 0;\n}\n\n.popover.popover-top::before, .popover.bs-tether-element-attached-bottom::before {\n bottom: -11px;\n margin-left: -11px;\n border-top-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.popover-top::after, .popover.bs-tether-element-attached-bottom::after {\n bottom: -10px;\n margin-left: -10px;\n border-top-color: #fff;\n}\n\n.popover.popover-right, .popover.bs-tether-element-attached-left {\n margin-left: 10px;\n}\n\n.popover.popover-right::before, .popover.popover-right::after, .popover.bs-tether-element-attached-left::before, .popover.bs-tether-element-attached-left::after {\n top: 50%;\n border-left-width: 0;\n}\n\n.popover.popover-right::before, .popover.bs-tether-element-attached-left::before {\n left: -11px;\n margin-top: -11px;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.popover-right::after, .popover.bs-tether-element-attached-left::after {\n left: -10px;\n margin-top: -10px;\n border-right-color: #fff;\n}\n\n.popover.popover-bottom, .popover.bs-tether-element-attached-top {\n margin-top: 10px;\n}\n\n.popover.popover-bottom::before, .popover.popover-bottom::after, .popover.bs-tether-element-attached-top::before, .popover.bs-tether-element-attached-top::after {\n left: 50%;\n border-top-width: 0;\n}\n\n.popover.popover-bottom::before, .popover.bs-tether-element-attached-top::before {\n top: -11px;\n margin-left: -11px;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.popover-bottom::after, .popover.bs-tether-element-attached-top::after {\n top: -10px;\n margin-left: -10px;\n border-bottom-color: #f7f7f7;\n}\n\n.popover.popover-bottom .popover-title::before, .popover.bs-tether-element-attached-top .popover-title::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 20px;\n margin-left: -10px;\n content: \"\";\n border-bottom: 1px solid #f7f7f7;\n}\n\n.popover.popover-left, .popover.bs-tether-element-attached-right {\n margin-left: -10px;\n}\n\n.popover.popover-left::before, .popover.popover-left::after, .popover.bs-tether-element-attached-right::before, .popover.bs-tether-element-attached-right::after {\n top: 50%;\n border-right-width: 0;\n}\n\n.popover.popover-left::before, .popover.bs-tether-element-attached-right::before {\n right: -11px;\n margin-top: -11px;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.popover-left::after, .popover.bs-tether-element-attached-right::after {\n right: -10px;\n margin-top: -10px;\n border-left-color: #fff;\n}\n\n.popover-title {\n padding: 8px 14px;\n margin-bottom: 0;\n font-size: 1rem;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-top-right-radius: calc(0.3rem - 1px);\n border-top-left-radius: calc(0.3rem - 1px);\n}\n\n.popover-title:empty {\n display: none;\n}\n\n.popover-content {\n padding: 9px 14px;\n}\n\n.popover::before,\n.popover::after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n\n.popover::before {\n content: \"\";\n border-width: 11px;\n}\n\n.popover::after {\n content: \"\";\n border-width: 10px;\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-item {\n position: relative;\n display: none;\n width: 100%;\n}\n\n@media (-webkit-transform-3d) {\n .carousel-item {\n transition: transform 0.6s ease-in-out;\n backface-visibility: hidden;\n perspective: 1000px;\n }\n}\n\n@supports (transform: translate3d(0, 0, 0)) {\n .carousel-item {\n transition: transform 0.6s ease-in-out;\n backface-visibility: hidden;\n perspective: 1000px;\n }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: flex;\n}\n\n.carousel-item-next,\n.carousel-item-prev {\n position: absolute;\n top: 0;\n}\n\n@media (-webkit-transform-3d) {\n .carousel-item-next.carousel-item-left,\n .carousel-item-prev.carousel-item-right {\n transform: translate3d(0, 0, 0);\n }\n .carousel-item-next,\n .active.carousel-item-right {\n transform: translate3d(100%, 0, 0);\n }\n .carousel-item-prev,\n .active.carousel-item-left {\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n@supports (transform: translate3d(0, 0, 0)) {\n .carousel-item-next.carousel-item-left,\n .carousel-item-prev.carousel-item-right {\n transform: translate3d(0, 0, 0);\n }\n .carousel-item-next,\n .active.carousel-item-right {\n transform: translate3d(100%, 0, 0);\n }\n .carousel-item-prev,\n .active.carousel-item-left {\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 15%;\n color: #fff;\n text-align: center;\n opacity: 0.5;\n}\n\n.carousel-control-prev:focus, .carousel-control-prev:hover,\n.carousel-control-next:focus,\n.carousel-control-next:hover {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: .9;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n background: transparent no-repeat center center;\n background-size: 100% 100%;\n}\n\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M4 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\");\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M1.5 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\");\n}\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 10px;\n left: 0;\n z-index: 15;\n display: flex;\n justify-content: center;\n padding-left: 0;\n margin-right: 15%;\n margin-left: 15%;\n list-style: none;\n}\n\n.carousel-indicators li {\n position: relative;\n flex: 1 0 auto;\n max-width: 30px;\n height: 3px;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n cursor: pointer;\n background-color: rgba(255, 255, 255, 0.5);\n}\n\n.carousel-indicators li::before {\n position: absolute;\n top: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n}\n\n.carousel-indicators li::after {\n position: absolute;\n bottom: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n}\n\n.carousel-indicators .active {\n background-color: #fff;\n}\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.bg-faded {\n background-color: #f7f7f7;\n}\n\n.bg-primary {\n background-color: #0275d8 !important;\n}\n\na.bg-primary:focus, a.bg-primary:hover {\n background-color: #025aa5 !important;\n}\n\n.bg-success {\n background-color: #5cb85c !important;\n}\n\na.bg-success:focus, a.bg-success:hover {\n background-color: #449d44 !important;\n}\n\n.bg-info {\n background-color: #5bc0de !important;\n}\n\na.bg-info:focus, a.bg-info:hover {\n background-color: #31b0d5 !important;\n}\n\n.bg-warning {\n background-color: #f0ad4e !important;\n}\n\na.bg-warning:focus, a.bg-warning:hover {\n background-color: #ec971f !important;\n}\n\n.bg-danger {\n background-color: #d9534f !important;\n}\n\na.bg-danger:focus, a.bg-danger:hover {\n background-color: #c9302c !important;\n}\n\n.bg-inverse {\n background-color: #292b2c !important;\n}\n\na.bg-inverse:focus, a.bg-inverse:hover {\n background-color: #101112 !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-right-0 {\n border-right: 0 !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-left-0 {\n border-left: 0 !important;\n}\n\n.rounded {\n border-radius: 0.25rem;\n}\n\n.rounded-top {\n border-top-right-radius: 0.25rem;\n border-top-left-radius: 0.25rem;\n}\n\n.rounded-right {\n border-bottom-right-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.rounded-left {\n border-bottom-left-radius: 0.25rem;\n border-top-left-radius: 0.25rem;\n}\n\n.rounded-circle {\n border-radius: 50%;\n}\n\n.rounded-0 {\n border-radius: 0;\n}\n\n.clearfix::after {\n display: block;\n content: \"\";\n clear: both;\n}\n\n.d-none {\n display: none !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-none {\n display: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 768px) {\n .d-md-none {\n display: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 992px) {\n .d-lg-none {\n display: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 1200px) {\n .d-xl-none {\n display: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n}\n\n.flex-first {\n order: -1;\n}\n\n.flex-last {\n order: 1;\n}\n\n.flex-unordered {\n order: 0;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n .flex-sm-first {\n order: -1;\n }\n .flex-sm-last {\n order: 1;\n }\n .flex-sm-unordered {\n order: 0;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 768px) {\n .flex-md-first {\n order: -1;\n }\n .flex-md-last {\n order: 1;\n }\n .flex-md-unordered {\n order: 0;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 992px) {\n .flex-lg-first {\n order: -1;\n }\n .flex-lg-last {\n order: 1;\n }\n .flex-lg-unordered {\n order: 0;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 1200px) {\n .flex-xl-first {\n order: -1;\n }\n .flex-xl-last {\n order: 1;\n }\n .flex-xl-unordered {\n order: 0;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n}\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-left {\n float: left !important;\n }\n .float-sm-right {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n}\n\n@media (min-width: 768px) {\n .float-md-left {\n float: left !important;\n }\n .float-md-right {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n}\n\n@media (min-width: 992px) {\n .float-lg-left {\n float: left !important;\n }\n .float-lg-right {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n}\n\n@media (min-width: 1200px) {\n .float-xl-left {\n float: left !important;\n }\n .float-xl-right {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n\n.sticky-top {\n position: sticky;\n top: 0;\n z-index: 1030;\n}\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.m-0 {\n margin: 0 0 !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mr-0 {\n margin-right: 0 !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.ml-0 {\n margin-left: 0 !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem 0.25rem !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mr-1 {\n margin-right: 0.25rem !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.ml-1 {\n margin-left: 0.25rem !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem 0.5rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mr-2 {\n margin-right: 0.5rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.ml-2 {\n margin-left: 0.5rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem 1rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mr-3 {\n margin-right: 1rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.ml-3 {\n margin-left: 1rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem 1.5rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mr-4 {\n margin-right: 1.5rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.ml-4 {\n margin-left: 1.5rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem 3rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mr-5 {\n margin-right: 3rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.ml-5 {\n margin-left: 3rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.p-0 {\n padding: 0 0 !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pr-0 {\n padding-right: 0 !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pl-0 {\n padding-left: 0 !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem 0.25rem !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pr-1 {\n padding-right: 0.25rem !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pl-1 {\n padding-left: 0.25rem !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem 0.5rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pr-2 {\n padding-right: 0.5rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pl-2 {\n padding-left: 0.5rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem 1rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pr-3 {\n padding-right: 1rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pl-3 {\n padding-left: 1rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem 1.5rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pr-4 {\n padding-right: 1.5rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pl-4 {\n padding-left: 1.5rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem 3rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pr-5 {\n padding-right: 3rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.pl-5 {\n padding-left: 3rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.mr-auto {\n margin-right: auto !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ml-auto {\n margin-left: auto !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n@media (min-width: 576px) {\n .m-sm-0 {\n margin: 0 0 !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mr-sm-0 {\n margin-right: 0 !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .ml-sm-0 {\n margin-left: 0 !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem 0.25rem !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mr-sm-1 {\n margin-right: 0.25rem !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-sm-1 {\n margin-left: 0.25rem !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem 0.5rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mr-sm-2 {\n margin-right: 0.5rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-sm-2 {\n margin-left: 0.5rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem 1rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mr-sm-3 {\n margin-right: 1rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .ml-sm-3 {\n margin-left: 1rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem 1.5rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mr-sm-4 {\n margin-right: 1.5rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-sm-4 {\n margin-left: 1.5rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem 3rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mr-sm-5 {\n margin-right: 3rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .ml-sm-5 {\n margin-left: 3rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-sm-0 {\n padding: 0 0 !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pr-sm-0 {\n padding-right: 0 !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pl-sm-0 {\n padding-left: 0 !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem 0.25rem !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pr-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-sm-1 {\n padding-left: 0.25rem !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem 0.5rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pr-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-sm-2 {\n padding-left: 0.5rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem 1rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pr-sm-3 {\n padding-right: 1rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pl-sm-3 {\n padding-left: 1rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem 1.5rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pr-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-sm-4 {\n padding-left: 1.5rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem 3rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pr-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .pl-sm-5 {\n padding-left: 3rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .mr-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ml-sm-auto {\n margin-left: auto !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n@media (min-width: 768px) {\n .m-md-0 {\n margin: 0 0 !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mr-md-0 {\n margin-right: 0 !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .ml-md-0 {\n margin-left: 0 !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem 0.25rem !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mr-md-1 {\n margin-right: 0.25rem !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-md-1 {\n margin-left: 0.25rem !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem 0.5rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mr-md-2 {\n margin-right: 0.5rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-md-2 {\n margin-left: 0.5rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem 1rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mr-md-3 {\n margin-right: 1rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .ml-md-3 {\n margin-left: 1rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem 1.5rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mr-md-4 {\n margin-right: 1.5rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-md-4 {\n margin-left: 1.5rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem 3rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mr-md-5 {\n margin-right: 3rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .ml-md-5 {\n margin-left: 3rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-md-0 {\n padding: 0 0 !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pr-md-0 {\n padding-right: 0 !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pl-md-0 {\n padding-left: 0 !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem 0.25rem !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pr-md-1 {\n padding-right: 0.25rem !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-md-1 {\n padding-left: 0.25rem !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem 0.5rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pr-md-2 {\n padding-right: 0.5rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-md-2 {\n padding-left: 0.5rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem 1rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pr-md-3 {\n padding-right: 1rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pl-md-3 {\n padding-left: 1rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem 1.5rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pr-md-4 {\n padding-right: 1.5rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-md-4 {\n padding-left: 1.5rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem 3rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pr-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .pl-md-5 {\n padding-left: 3rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .mr-md-auto {\n margin-right: auto !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ml-md-auto {\n margin-left: auto !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n@media (min-width: 992px) {\n .m-lg-0 {\n margin: 0 0 !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mr-lg-0 {\n margin-right: 0 !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .ml-lg-0 {\n margin-left: 0 !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem 0.25rem !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mr-lg-1 {\n margin-right: 0.25rem !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-lg-1 {\n margin-left: 0.25rem !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem 0.5rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mr-lg-2 {\n margin-right: 0.5rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-lg-2 {\n margin-left: 0.5rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem 1rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mr-lg-3 {\n margin-right: 1rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .ml-lg-3 {\n margin-left: 1rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem 1.5rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mr-lg-4 {\n margin-right: 1.5rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-lg-4 {\n margin-left: 1.5rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem 3rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mr-lg-5 {\n margin-right: 3rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .ml-lg-5 {\n margin-left: 3rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-lg-0 {\n padding: 0 0 !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pr-lg-0 {\n padding-right: 0 !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pl-lg-0 {\n padding-left: 0 !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem 0.25rem !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pr-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-lg-1 {\n padding-left: 0.25rem !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem 0.5rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pr-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-lg-2 {\n padding-left: 0.5rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem 1rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pr-lg-3 {\n padding-right: 1rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pl-lg-3 {\n padding-left: 1rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem 1.5rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pr-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-lg-4 {\n padding-left: 1.5rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem 3rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pr-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .pl-lg-5 {\n padding-left: 3rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .mr-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ml-lg-auto {\n margin-left: auto !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n@media (min-width: 1200px) {\n .m-xl-0 {\n margin: 0 0 !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mr-xl-0 {\n margin-right: 0 !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .ml-xl-0 {\n margin-left: 0 !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem 0.25rem !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mr-xl-1 {\n margin-right: 0.25rem !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-xl-1 {\n margin-left: 0.25rem !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem 0.5rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mr-xl-2 {\n margin-right: 0.5rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-xl-2 {\n margin-left: 0.5rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem 1rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mr-xl-3 {\n margin-right: 1rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .ml-xl-3 {\n margin-left: 1rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem 1.5rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mr-xl-4 {\n margin-right: 1.5rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-xl-4 {\n margin-left: 1.5rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem 3rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mr-xl-5 {\n margin-right: 3rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .ml-xl-5 {\n margin-left: 3rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-xl-0 {\n padding: 0 0 !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pr-xl-0 {\n padding-right: 0 !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pl-xl-0 {\n padding-left: 0 !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem 0.25rem !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pr-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-xl-1 {\n padding-left: 0.25rem !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem 0.5rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pr-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-xl-2 {\n padding-left: 0.5rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem 1rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pr-xl-3 {\n padding-right: 1rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pl-xl-3 {\n padding-left: 1rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem 1.5rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pr-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-xl-4 {\n padding-left: 1.5rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem 3rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pr-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .pl-xl-5 {\n padding-left: 3rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .mr-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ml-xl-auto {\n margin-left: auto !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n.text-justify {\n text-align: justify !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n@media (min-width: 576px) {\n .text-sm-left {\n text-align: left !important;\n }\n .text-sm-right {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 768px) {\n .text-md-left {\n text-align: left !important;\n }\n .text-md-right {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 992px) {\n .text-lg-left {\n text-align: left !important;\n }\n .text-lg-right {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 1200px) {\n .text-xl-left {\n text-align: left !important;\n }\n .text-xl-right {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.font-weight-normal {\n font-weight: normal;\n}\n\n.font-weight-bold {\n font-weight: bold;\n}\n\n.font-italic {\n font-style: italic;\n}\n\n.text-white {\n color: #fff !important;\n}\n\n.text-muted {\n color: #636c72 !important;\n}\n\na.text-muted:focus, a.text-muted:hover {\n color: #4b5257 !important;\n}\n\n.text-primary {\n color: #0275d8 !important;\n}\n\na.text-primary:focus, a.text-primary:hover {\n color: #025aa5 !important;\n}\n\n.text-success {\n color: #5cb85c !important;\n}\n\na.text-success:focus, a.text-success:hover {\n color: #449d44 !important;\n}\n\n.text-info {\n color: #5bc0de !important;\n}\n\na.text-info:focus, a.text-info:hover {\n color: #31b0d5 !important;\n}\n\n.text-warning {\n color: #f0ad4e !important;\n}\n\na.text-warning:focus, a.text-warning:hover {\n color: #ec971f !important;\n}\n\n.text-danger {\n color: #d9534f !important;\n}\n\na.text-danger:focus, a.text-danger:hover {\n color: #c9302c !important;\n}\n\n.text-gray-dark {\n color: #292b2c !important;\n}\n\na.text-gray-dark:focus, a.text-gray-dark:hover {\n color: #101112 !important;\n}\n\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n.hidden-xs-up {\n display: none !important;\n}\n\n@media (max-width: 575px) {\n .hidden-xs-down {\n display: none !important;\n }\n}\n\n@media (min-width: 576px) {\n .hidden-sm-up {\n display: none !important;\n }\n}\n\n@media (max-width: 767px) {\n .hidden-sm-down {\n display: none !important;\n }\n}\n\n@media (min-width: 768px) {\n .hidden-md-up {\n display: none !important;\n }\n}\n\n@media (max-width: 991px) {\n .hidden-md-down {\n display: none !important;\n }\n}\n\n@media (min-width: 992px) {\n .hidden-lg-up {\n display: none !important;\n }\n}\n\n@media (max-width: 1199px) {\n .hidden-lg-down {\n display: none !important;\n }\n}\n\n@media (min-width: 1200px) {\n .hidden-xl-up {\n display: none !important;\n }\n}\n\n.hidden-xl-down {\n display: none !important;\n}\n\n.visible-print-block {\n display: none !important;\n}\n\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n\n.visible-print-inline {\n display: none !important;\n}\n\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n\n.visible-print-inline-block {\n display: none !important;\n}\n\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap.css.map */",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]} \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap.min.css b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap.min.css new file mode 100644 index 0000000..c81ad69 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v4.0.0-alpha.6 (https://getbootstrap.com) + * Copyright 2011-2017 The Bootstrap Authors + * Copyright 2011-2017 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none}@media print{*,::after,::before,blockquote::first-letter,blockquote::first-line,div::first-letter,div::first-line,li::first-letter,li::first-line,p::first-letter,p::first-line{text-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}html{-webkit-box-sizing:border-box;box-sizing:border-box}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}@-ms-viewport{width:device-width}html{-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}body{font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#292b2c;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{cursor:help}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}a{color:#0275d8;text-decoration:none}a:focus,a:hover{color:#014c8c;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle}[role=button]{cursor:pointer}[role=button],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse;background-color:transparent}caption{padding-top:.75rem;padding-bottom:.75rem;color:#636c72;text-align:left;caption-side:bottom}th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,select,textarea{line-height:inherit}input[type=checkbox]:disabled,input[type=radio]:disabled{cursor:not-allowed}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit}input[type=search]{-webkit-appearance:none}output{display:inline-block}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.1}.display-2{font-size:5.5rem;font-weight:300;line-height:1.1}.display-3{font-size:4.5rem;font-weight:300;line-height:1.1}.display-4{font-size:3.5rem;font-weight:300;line-height:1.1}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:5px}.initialism{font-size:90%;text-transform:uppercase}.blockquote{padding:.5rem 1rem;margin-bottom:1rem;font-size:1.25rem;border-left:.25rem solid #eceeef}.blockquote-footer{display:block;font-size:80%;color:#636c72}.blockquote-footer::before{content:"\2014 \00A0"}.blockquote-reverse{padding-right:1rem;padding-left:0;text-align:right;border-right:.25rem solid #eceeef;border-left:0}.blockquote-reverse .blockquote-footer::before{content:""}.blockquote-reverse .blockquote-footer::after{content:"\00A0 \2014"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:.25rem;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#636c72}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{padding:.2rem .4rem;font-size:90%;color:#bd4147;background-color:#f7f7f9;border-radius:.25rem}a>code{padding:0;color:inherit;background-color:inherit}kbd{padding:.2rem .4rem;font-size:90%;color:#fff;background-color:#292b2c;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;margin-top:0;margin-bottom:1rem;font-size:90%;color:#292b2c}pre code{padding:0;font-size:inherit;color:inherit;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{position:relative;margin-left:auto;margin-right:auto;padding-right:15px;padding-left:15px}@media (min-width:576px){.container{padding-right:15px;padding-left:15px}}@media (min-width:768px){.container{padding-right:15px;padding-left:15px}}@media (min-width:992px){.container{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.container{padding-right:15px;padding-left:15px}}@media (min-width:576px){.container{width:540px;max-width:100%}}@media (min-width:768px){.container{width:720px;max-width:100%}}@media (min-width:992px){.container{width:960px;max-width:100%}}@media (min-width:1200px){.container{width:1140px;max-width:100%}}.container-fluid{position:relative;margin-left:auto;margin-right:auto;padding-right:15px;padding-left:15px}@media (min-width:576px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:768px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:992px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.container-fluid{padding-right:15px;padding-left:15px}}.row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}@media (min-width:576px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:768px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:992px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:1200px){.row{margin-right:-15px;margin-left:-15px}}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}@media (min-width:576px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{padding-right:15px;padding-left:15px}}@media (min-width:768px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{padding-right:15px;padding-left:15px}}@media (min-width:992px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{padding-right:15px;padding-left:15px}}.col{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-0{right:auto}.pull-1{right:8.333333%}.pull-2{right:16.666667%}.pull-3{right:25%}.pull-4{right:33.333333%}.pull-5{right:41.666667%}.pull-6{right:50%}.pull-7{right:58.333333%}.pull-8{right:66.666667%}.pull-9{right:75%}.pull-10{right:83.333333%}.pull-11{right:91.666667%}.pull-12{right:100%}.push-0{left:auto}.push-1{left:8.333333%}.push-2{left:16.666667%}.push-3{left:25%}.push-4{left:33.333333%}.push-5{left:41.666667%}.push-6{left:50%}.push-7{left:58.333333%}.push-8{left:66.666667%}.push-9{left:75%}.push-10{left:83.333333%}.push-11{left:91.666667%}.push-12{left:100%}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-sm-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-sm-0{right:auto}.pull-sm-1{right:8.333333%}.pull-sm-2{right:16.666667%}.pull-sm-3{right:25%}.pull-sm-4{right:33.333333%}.pull-sm-5{right:41.666667%}.pull-sm-6{right:50%}.pull-sm-7{right:58.333333%}.pull-sm-8{right:66.666667%}.pull-sm-9{right:75%}.pull-sm-10{right:83.333333%}.pull-sm-11{right:91.666667%}.pull-sm-12{right:100%}.push-sm-0{left:auto}.push-sm-1{left:8.333333%}.push-sm-2{left:16.666667%}.push-sm-3{left:25%}.push-sm-4{left:33.333333%}.push-sm-5{left:41.666667%}.push-sm-6{left:50%}.push-sm-7{left:58.333333%}.push-sm-8{left:66.666667%}.push-sm-9{left:75%}.push-sm-10{left:83.333333%}.push-sm-11{left:91.666667%}.push-sm-12{left:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-md-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-md-0{right:auto}.pull-md-1{right:8.333333%}.pull-md-2{right:16.666667%}.pull-md-3{right:25%}.pull-md-4{right:33.333333%}.pull-md-5{right:41.666667%}.pull-md-6{right:50%}.pull-md-7{right:58.333333%}.pull-md-8{right:66.666667%}.pull-md-9{right:75%}.pull-md-10{right:83.333333%}.pull-md-11{right:91.666667%}.pull-md-12{right:100%}.push-md-0{left:auto}.push-md-1{left:8.333333%}.push-md-2{left:16.666667%}.push-md-3{left:25%}.push-md-4{left:33.333333%}.push-md-5{left:41.666667%}.push-md-6{left:50%}.push-md-7{left:58.333333%}.push-md-8{left:66.666667%}.push-md-9{left:75%}.push-md-10{left:83.333333%}.push-md-11{left:91.666667%}.push-md-12{left:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-lg-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-lg-0{right:auto}.pull-lg-1{right:8.333333%}.pull-lg-2{right:16.666667%}.pull-lg-3{right:25%}.pull-lg-4{right:33.333333%}.pull-lg-5{right:41.666667%}.pull-lg-6{right:50%}.pull-lg-7{right:58.333333%}.pull-lg-8{right:66.666667%}.pull-lg-9{right:75%}.pull-lg-10{right:83.333333%}.pull-lg-11{right:91.666667%}.pull-lg-12{right:100%}.push-lg-0{left:auto}.push-lg-1{left:8.333333%}.push-lg-2{left:16.666667%}.push-lg-3{left:25%}.push-lg-4{left:33.333333%}.push-lg-5{left:41.666667%}.push-lg-6{left:50%}.push-lg-7{left:58.333333%}.push-lg-8{left:66.666667%}.push-lg-9{left:75%}.push-lg-10{left:83.333333%}.push-lg-11{left:91.666667%}.push-lg-12{left:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-xl-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-xl-0{right:auto}.pull-xl-1{right:8.333333%}.pull-xl-2{right:16.666667%}.pull-xl-3{right:25%}.pull-xl-4{right:33.333333%}.pull-xl-5{right:41.666667%}.pull-xl-6{right:50%}.pull-xl-7{right:58.333333%}.pull-xl-8{right:66.666667%}.pull-xl-9{right:75%}.pull-xl-10{right:83.333333%}.pull-xl-11{right:91.666667%}.pull-xl-12{right:100%}.push-xl-0{left:auto}.push-xl-1{left:8.333333%}.push-xl-2{left:16.666667%}.push-xl-3{left:25%}.push-xl-4{left:33.333333%}.push-xl-5{left:41.666667%}.push-xl-6{left:50%}.push-xl-7{left:58.333333%}.push-xl-8{left:66.666667%}.push-xl-9{left:75%}.push-xl-10{left:83.333333%}.push-xl-11{left:91.666667%}.push-xl-12{left:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;max-width:100%;margin-bottom:1rem}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #eceeef}.table thead th{vertical-align:bottom;border-bottom:2px solid #eceeef}.table tbody+tbody{border-top:2px solid #eceeef}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #eceeef}.table-bordered td,.table-bordered th{border:1px solid #eceeef}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table-success,.table-success>td,.table-success>th{background-color:#dff0d8}.table-hover .table-success:hover{background-color:#d0e9c6}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#d0e9c6}.table-info,.table-info>td,.table-info>th{background-color:#d9edf7}.table-hover .table-info:hover{background-color:#c4e3f3}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#c4e3f3}.table-warning,.table-warning>td,.table-warning>th{background-color:#fcf8e3}.table-hover .table-warning:hover{background-color:#faf2cc}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#faf2cc}.table-danger,.table-danger>td,.table-danger>th{background-color:#f2dede}.table-hover .table-danger:hover{background-color:#ebcccc}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#ebcccc}.thead-inverse th{color:#fff;background-color:#292b2c}.thead-default th{color:#464a4c;background-color:#eceeef}.table-inverse{color:#fff;background-color:#292b2c}.table-inverse td,.table-inverse th,.table-inverse thead th{border-color:#fff}.table-inverse.table-bordered{border:0}.table-responsive{display:block;width:100%;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive.table-bordered{border:0}.form-control{display:block;width:100%;padding:.5rem .75rem;font-size:1rem;line-height:1.25;color:#464a4c;background-color:#fff;background-image:none;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem;-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#464a4c;background-color:#fff;border-color:#5cb3fd;outline:0}.form-control::-webkit-input-placeholder{color:#636c72;opacity:1}.form-control::-moz-placeholder{color:#636c72;opacity:1}.form-control:-ms-input-placeholder{color:#636c72;opacity:1}.form-control::placeholder{color:#636c72;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#eceeef;opacity:1}.form-control:disabled{cursor:not-allowed}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#464a4c;background-color:#fff}.form-control-file,.form-control-range{display:block}.col-form-label{padding-top:calc(.5rem - 1px * 2);padding-bottom:calc(.5rem - 1px * 2);margin-bottom:0}.col-form-label-lg{padding-top:calc(.75rem - 1px * 2);padding-bottom:calc(.75rem - 1px * 2);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem - 1px * 2);padding-bottom:calc(.25rem - 1px * 2);font-size:.875rem}.col-form-legend{padding-top:.5rem;padding-bottom:.5rem;margin-bottom:0;font-size:1rem}.form-control-static{padding-top:.5rem;padding-bottom:.5rem;margin-bottom:0;line-height:1.25;border:solid transparent;border-width:1px 0}.form-control-static.form-control-lg,.form-control-static.form-control-sm,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-sm>.input-group-btn>select.btn:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),.input-group-sm>select.input-group-addon:not([size]):not([multiple]),select.form-control-sm:not([size]):not([multiple]){height:1.8125rem}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{padding:.75rem 1.5rem;font-size:1.25rem;border-radius:.3rem}.input-group-lg>.input-group-btn>select.btn:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),.input-group-lg>select.input-group-addon:not([size]):not([multiple]),select.form-control-lg:not([size]):not([multiple]){height:3.166667rem}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-check{position:relative;display:block;margin-bottom:.5rem}.form-check.disabled .form-check-label{color:#636c72;cursor:not-allowed}.form-check-label{padding-left:1.25rem;margin-bottom:0;cursor:pointer}.form-check-input{position:absolute;margin-top:.25rem;margin-left:-1.25rem}.form-check-input:only-child{position:static}.form-check-inline{display:inline-block}.form-check-inline .form-check-label{vertical-align:middle}.form-check-inline+.form-check-inline{margin-left:.75rem}.form-control-feedback{margin-top:.25rem}.form-control-danger,.form-control-success,.form-control-warning{padding-right:2.25rem;background-repeat:no-repeat;background-position:center right .5625rem;-webkit-background-size:1.125rem 1.125rem;background-size:1.125rem 1.125rem}.has-success .col-form-label,.has-success .custom-control,.has-success .form-check-label,.has-success .form-control-feedback,.has-success .form-control-label{color:#5cb85c}.has-success .form-control{border-color:#5cb85c}.has-success .input-group-addon{color:#5cb85c;border-color:#5cb85c;background-color:#eaf6ea}.has-success .form-control-success{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%235cb85c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E")}.has-warning .col-form-label,.has-warning .custom-control,.has-warning .form-check-label,.has-warning .form-control-feedback,.has-warning .form-control-label{color:#f0ad4e}.has-warning .form-control{border-color:#f0ad4e}.has-warning .input-group-addon{color:#f0ad4e;border-color:#f0ad4e;background-color:#fff}.has-warning .form-control-warning{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23f0ad4e' d='M4.4 5.324h-.8v-2.46h.8zm0 1.42h-.8V5.89h.8zM3.76.63L.04 7.075c-.115.2.016.425.26.426h7.397c.242 0 .372-.226.258-.426C6.726 4.924 5.47 2.79 4.253.63c-.113-.174-.39-.174-.494 0z'/%3E%3C/svg%3E")}.has-danger .col-form-label,.has-danger .custom-control,.has-danger .form-check-label,.has-danger .form-control-feedback,.has-danger .form-control-label{color:#d9534f}.has-danger .form-control{border-color:#d9534f}.has-danger .input-group-addon{color:#d9534f;border-color:#d9534f;background-color:#fdf7f7}.has-danger .form-control-danger{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23d9534f' viewBox='-2 -2 7 7'%3E%3Cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3E%3Ccircle r='.5'/%3E%3Ccircle cx='3' r='.5'/%3E%3Ccircle cy='3' r='.5'/%3E%3Ccircle cx='3' cy='3' r='.5'/%3E%3C/svg%3E")}.form-inline{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;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{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:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{width:auto}.form-inline .form-control-label{margin-bottom:0;vertical-align:middle}.form-inline .form-check{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:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;width:auto;margin-top:0;margin-bottom:0}.form-inline .form-check-label{padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{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:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-left:0}.form-inline .custom-control-indicator{position:static;display:inline-block;margin-right:.25rem;vertical-align:text-bottom}.form-inline .has-feedback .form-control-feedback{top:0}}.btn{display:inline-block;font-weight:400;line-height:1.25;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.5rem 1rem;font-size:1rem;border-radius:.25rem;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.btn:focus,.btn:hover{text-decoration:none}.btn.focus,.btn:focus{outline:0;-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.25);box-shadow:0 0 0 2px rgba(2,117,216,.25)}.btn.disabled,.btn:disabled{cursor:not-allowed;opacity:.65}.btn.active,.btn:active{background-image:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#0275d8;border-color:#0275d8}.btn-primary:hover{color:#fff;background-color:#025aa5;border-color:#01549b}.btn-primary.focus,.btn-primary:focus{-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.5);box-shadow:0 0 0 2px rgba(2,117,216,.5)}.btn-primary.disabled,.btn-primary:disabled{background-color:#0275d8;border-color:#0275d8}.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#025aa5;background-image:none;border-color:#01549b}.btn-secondary{color:#292b2c;background-color:#fff;border-color:#ccc}.btn-secondary:hover{color:#292b2c;background-color:#e6e6e6;border-color:#adadad}.btn-secondary.focus,.btn-secondary:focus{-webkit-box-shadow:0 0 0 2px rgba(204,204,204,.5);box-shadow:0 0 0 2px rgba(204,204,204,.5)}.btn-secondary.disabled,.btn-secondary:disabled{background-color:#fff;border-color:#ccc}.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#292b2c;background-color:#e6e6e6;background-image:none;border-color:#adadad}.btn-info{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#2aabd2}.btn-info.focus,.btn-info:focus{-webkit-box-shadow:0 0 0 2px rgba(91,192,222,.5);box-shadow:0 0 0 2px rgba(91,192,222,.5)}.btn-info.disabled,.btn-info:disabled{background-color:#5bc0de;border-color:#5bc0de}.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;background-image:none;border-color:#2aabd2}.btn-success{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#419641}.btn-success.focus,.btn-success:focus{-webkit-box-shadow:0 0 0 2px rgba(92,184,92,.5);box-shadow:0 0 0 2px rgba(92,184,92,.5)}.btn-success.disabled,.btn-success:disabled{background-color:#5cb85c;border-color:#5cb85c}.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;background-image:none;border-color:#419641}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#eb9316}.btn-warning.focus,.btn-warning:focus{-webkit-box-shadow:0 0 0 2px rgba(240,173,78,.5);box-shadow:0 0 0 2px rgba(240,173,78,.5)}.btn-warning.disabled,.btn-warning:disabled{background-color:#f0ad4e;border-color:#f0ad4e}.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;background-image:none;border-color:#eb9316}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#c12e2a}.btn-danger.focus,.btn-danger:focus{-webkit-box-shadow:0 0 0 2px rgba(217,83,79,.5);box-shadow:0 0 0 2px rgba(217,83,79,.5)}.btn-danger.disabled,.btn-danger:disabled{background-color:#d9534f;border-color:#d9534f}.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;background-image:none;border-color:#c12e2a}.btn-outline-primary{color:#0275d8;background-image:none;background-color:transparent;border-color:#0275d8}.btn-outline-primary:hover{color:#fff;background-color:#0275d8;border-color:#0275d8}.btn-outline-primary.focus,.btn-outline-primary:focus{-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.5);box-shadow:0 0 0 2px rgba(2,117,216,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0275d8;background-color:transparent}.btn-outline-primary.active,.btn-outline-primary:active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#0275d8;border-color:#0275d8}.btn-outline-secondary{color:#ccc;background-image:none;background-color:transparent;border-color:#ccc}.btn-outline-secondary:hover{color:#fff;background-color:#ccc;border-color:#ccc}.btn-outline-secondary.focus,.btn-outline-secondary:focus{-webkit-box-shadow:0 0 0 2px rgba(204,204,204,.5);box-shadow:0 0 0 2px rgba(204,204,204,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#ccc;background-color:transparent}.btn-outline-secondary.active,.btn-outline-secondary:active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#ccc;border-color:#ccc}.btn-outline-info{color:#5bc0de;background-image:none;background-color:transparent;border-color:#5bc0de}.btn-outline-info:hover{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.btn-outline-info.focus,.btn-outline-info:focus{-webkit-box-shadow:0 0 0 2px rgba(91,192,222,.5);box-shadow:0 0 0 2px rgba(91,192,222,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#5bc0de;background-color:transparent}.btn-outline-info.active,.btn-outline-info:active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.btn-outline-success{color:#5cb85c;background-image:none;background-color:transparent;border-color:#5cb85c}.btn-outline-success:hover{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-outline-success.focus,.btn-outline-success:focus{-webkit-box-shadow:0 0 0 2px rgba(92,184,92,.5);box-shadow:0 0 0 2px rgba(92,184,92,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#5cb85c;background-color:transparent}.btn-outline-success.active,.btn-outline-success:active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-outline-warning{color:#f0ad4e;background-image:none;background-color:transparent;border-color:#f0ad4e}.btn-outline-warning:hover{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-outline-warning.focus,.btn-outline-warning:focus{-webkit-box-shadow:0 0 0 2px rgba(240,173,78,.5);box-shadow:0 0 0 2px rgba(240,173,78,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#f0ad4e;background-color:transparent}.btn-outline-warning.active,.btn-outline-warning:active,.show>.btn-outline-warning.dropdown-toggle{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-outline-danger{color:#d9534f;background-image:none;background-color:transparent;border-color:#d9534f}.btn-outline-danger:hover{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-outline-danger.focus,.btn-outline-danger:focus{-webkit-box-shadow:0 0 0 2px rgba(217,83,79,.5);box-shadow:0 0 0 2px rgba(217,83,79,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#d9534f;background-color:transparent}.btn-outline-danger.active,.btn-outline-danger:active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-link{font-weight:400;color:#0275d8;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link:disabled{background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus{border-color:transparent}.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#014c8c;text-decoration:underline;background-color:transparent}.btn-link:disabled{color:#636c72}.btn-link:disabled:focus,.btn-link:disabled:hover{text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:.75rem 1.5rem;font-size:1.25rem;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.dropdown,.dropup{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.3em;vertical-align:middle;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-left:.3em solid transparent}.dropdown-toggle:focus{outline:0}.dropup .dropdown-toggle::after{border-top:0;border-bottom:.3em solid}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#292b2c;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-divider{height:1px;margin:.5rem 0;overflow:hidden;background-color:#eceeef}.dropdown-item{display:block;width:100%;padding:3px 1.5rem;clear:both;font-weight:400;color:#292b2c;text-align:inherit;white-space:nowrap;background:0 0;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1d1e1f;text-decoration:none;background-color:#f7f7f9}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0275d8}.dropdown-item.disabled,.dropdown-item:disabled{color:#636c72;cursor:not-allowed;background-color:transparent}.show>.dropdown-menu{display:block}.show>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#636c72;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.dropup .dropdown-menu{top:auto;bottom:100%;margin-bottom:.125rem}.btn-group,.btn-group-vertical{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:2}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn+.dropdown-toggle-split::after{margin-left:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:1.125rem;padding-left:1.125rem}.btn-group-vertical{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%}.input-group .form-control{position:relative;z-index:2;-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group .form-control:active,.input-group .form-control:focus,.input-group .form-control:hover{z-index:3}.input-group .form-control,.input-group-addon,.input-group-btn{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{white-space:nowrap;vertical-align:middle}.input-group-addon{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.25;color:#464a4c;text-align:center;background-color:#eceeef;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.input-group-addon.form-control-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-addon.form-control-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:.75rem 1.5rem;font-size:1.25rem;border-radius:.3rem}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:not(:last-child),.input-group-addon:not(:last-child),.input-group-btn:not(:first-child)>.btn-group:not(:last-child)>.btn,.input-group-btn:not(:first-child)>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:not(:last-child)>.btn,.input-group-btn:not(:last-child)>.btn-group>.btn,.input-group-btn:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:not(:last-child){border-right:0}.input-group .form-control:not(:first-child),.input-group-addon:not(:first-child),.input-group-btn:not(:first-child)>.btn,.input-group-btn:not(:first-child)>.btn-group>.btn,.input-group-btn:not(:first-child)>.dropdown-toggle,.input-group-btn:not(:last-child)>.btn-group:not(:first-child)>.btn,.input-group-btn:not(:last-child)>.btn:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.form-control+.input-group-addon:not(:first-child){border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative;-webkit-box-flex:1;-webkit-flex:1 1 0%;-ms-flex:1 1 0%;flex:1 1 0%}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:3}.input-group-btn:not(:last-child)>.btn,.input-group-btn:not(:last-child)>.btn-group{margin-right:-1px}.input-group-btn:not(:first-child)>.btn,.input-group-btn:not(:first-child)>.btn-group{z-index:2;margin-left:-1px}.input-group-btn:not(:first-child)>.btn-group:active,.input-group-btn:not(:first-child)>.btn-group:focus,.input-group-btn:not(:first-child)>.btn-group:hover,.input-group-btn:not(:first-child)>.btn:active,.input-group-btn:not(:first-child)>.btn:focus,.input-group-btn:not(:first-child)>.btn:hover{z-index:3}.custom-control{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;min-height:1.5rem;padding-left:1.5rem;margin-right:1rem;cursor:pointer}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-indicator{color:#fff;background-color:#0275d8}.custom-control-input:focus~.custom-control-indicator{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #0275d8;box-shadow:0 0 0 1px #fff,0 0 0 3px #0275d8}.custom-control-input:active~.custom-control-indicator{color:#fff;background-color:#8fcafe}.custom-control-input:disabled~.custom-control-indicator{cursor:not-allowed;background-color:#eceeef}.custom-control-input:disabled~.custom-control-description{color:#636c72;cursor:not-allowed}.custom-control-indicator{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#ddd;background-repeat:no-repeat;background-position:center center;-webkit-background-size:50% 50%;background-size:50% 50%}.custom-checkbox .custom-control-indicator{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-indicator{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-indicator{background-color:#0275d8;background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-radio .custom-control-indicator{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-indicator{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-controls-stacked{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.custom-controls-stacked .custom-control{margin-bottom:.25rem}.custom-controls-stacked .custom-control+.custom-control{margin-left:0}.custom-select{display:inline-block;max-width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.25;color:#464a4c;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;-webkit-background-size:8px 10px;background-size:8px 10px;border:1px solid rgba(0,0,0,.15);border-radius:.25rem;-moz-appearance:none;-webkit-appearance:none}.custom-select:focus{border-color:#5cb3fd;outline:0}.custom-select:focus::-ms-value{color:#464a4c;background-color:#fff}.custom-select:disabled{color:#636c72;cursor:not-allowed;background-color:#eceeef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-file{position:relative;display:inline-block;max-width:100%;height:2.5rem;margin-bottom:0;cursor:pointer}.custom-file-input{min-width:14rem;max-width:100%;height:2.5rem;margin:0;filter:alpha(opacity=0);opacity:0}.custom-file-control{position:absolute;top:0;right:0;left:0;z-index:5;height:2.5rem;padding:.5rem 1rem;line-height:1.5;color:#464a4c;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.custom-file-control:lang(en)::after{content:"Choose file..."}.custom-file-control::before{position:absolute;top:-1px;right:-1px;bottom:-1px;z-index:6;display:block;height:2.5rem;padding:.5rem 1rem;line-height:1.5;color:#464a4c;background-color:#eceeef;border:1px solid rgba(0,0,0,.15);border-radius:0 .25rem .25rem 0}.custom-file-control:lang(en)::before{content:"Browse"}.nav{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5em 1em}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#636c72;cursor:not-allowed}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-right-radius:.25rem;border-top-left-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#eceeef #eceeef #ddd}.nav-tabs .nav-link.disabled{color:#636c72;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#464a4c;background-color:#fff;border-color:#ddd #ddd #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-item.show .nav-link,.nav-pills .nav-link.active{color:#fff;cursor:default;background-color:#0275d8}.nav-fill .nav-item{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-webkit-box-flex:1;-webkit-flex:1 1 100%;-ms-flex:1 1 100%;flex:1 1 100%;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding:.5rem 1rem}.navbar-brand{display:inline-block;padding-top:.25rem;padding-bottom:.25rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-text{display:inline-block;padding-top:.425rem;padding-bottom:.425rem}.navbar-toggler{-webkit-align-self:flex-start;-ms-flex-item-align:start;align-self:flex-start;padding:.25rem .75rem;font-size:1.25rem;line-height:1;background:0 0;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;-webkit-background-size:100% 100%;background-size:100% 100%}.navbar-toggler-left{position:absolute;left:1rem}.navbar-toggler-right{position:absolute;right:1rem}@media (max-width:575px){.navbar-toggleable .navbar-nav .dropdown-menu{position:static;float:none}.navbar-toggleable>.container{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-toggleable{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-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}.navbar-toggleable .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.navbar-toggleable .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-toggleable>.container{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}.navbar-toggleable .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;width:100%}.navbar-toggleable .navbar-toggler{display:none}}@media (max-width:767px){.navbar-toggleable-sm .navbar-nav .dropdown-menu{position:static;float:none}.navbar-toggleable-sm>.container{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-toggleable-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-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}.navbar-toggleable-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.navbar-toggleable-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-toggleable-sm>.container{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}.navbar-toggleable-sm .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;width:100%}.navbar-toggleable-sm .navbar-toggler{display:none}}@media (max-width:991px){.navbar-toggleable-md .navbar-nav .dropdown-menu{position:static;float:none}.navbar-toggleable-md>.container{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-toggleable-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-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}.navbar-toggleable-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.navbar-toggleable-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-toggleable-md>.container{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}.navbar-toggleable-md .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;width:100%}.navbar-toggleable-md .navbar-toggler{display:none}}@media (max-width:1199px){.navbar-toggleable-lg .navbar-nav .dropdown-menu{position:static;float:none}.navbar-toggleable-lg>.container{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-toggleable-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-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}.navbar-toggleable-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.navbar-toggleable-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-toggleable-lg>.container{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}.navbar-toggleable-lg .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;width:100%}.navbar-toggleable-lg .navbar-toggler{display:none}}.navbar-toggleable-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-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}.navbar-toggleable-xl .navbar-nav .dropdown-menu{position:static;float:none}.navbar-toggleable-xl>.container{padding-right:0;padding-left:0}.navbar-toggleable-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.navbar-toggleable-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-toggleable-xl>.container{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}.navbar-toggleable-xl .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;width:100%}.navbar-toggleable-xl .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-toggler{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover,.navbar-light .navbar-toggler:focus,.navbar-light .navbar-toggler:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.open,.navbar-light .navbar-nav .open>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-toggler{color:#fff}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-toggler:focus,.navbar-inverse .navbar-toggler:hover{color:#fff}.navbar-inverse .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-inverse .navbar-nav .nav-link:focus,.navbar-inverse .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-inverse .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-inverse .navbar-nav .active>.nav-link,.navbar-inverse .navbar-nav .nav-link.active,.navbar-inverse .navbar-nav .nav-link.open,.navbar-inverse .navbar-nav .open>.nav-link{color:#fff}.navbar-inverse .navbar-toggler{border-color:rgba(255,255,255,.1)}.navbar-inverse .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E")}.navbar-inverse .navbar-text{color:rgba(255,255,255,.5)}.card{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;background-color:#fff;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card-block{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card>.list-group:first-child .list-group-item:first-child{border-top-right-radius:.25rem;border-top-left-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:#f7f7f9;border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:#f7f7f9;border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-primary{background-color:#0275d8;border-color:#0275d8}.card-primary .card-footer,.card-primary .card-header{background-color:transparent}.card-success{background-color:#5cb85c;border-color:#5cb85c}.card-success .card-footer,.card-success .card-header{background-color:transparent}.card-info{background-color:#5bc0de;border-color:#5bc0de}.card-info .card-footer,.card-info .card-header{background-color:transparent}.card-warning{background-color:#f0ad4e;border-color:#f0ad4e}.card-warning .card-footer,.card-warning .card-header{background-color:transparent}.card-danger{background-color:#d9534f;border-color:#d9534f}.card-danger .card-footer,.card-danger .card-header{background-color:transparent}.card-outline-primary{background-color:transparent;border-color:#0275d8}.card-outline-secondary{background-color:transparent;border-color:#ccc}.card-outline-info{background-color:transparent;border-color:#5bc0de}.card-outline-success{background-color:transparent;border-color:#5cb85c}.card-outline-warning{background-color:transparent;border-color:#f0ad4e}.card-outline-danger{background-color:transparent;border-color:#d9534f}.card-inverse{color:rgba(255,255,255,.65)}.card-inverse .card-footer,.card-inverse .card-header{background-color:transparent;border-color:rgba(255,255,255,.2)}.card-inverse .card-blockquote,.card-inverse .card-footer,.card-inverse .card-header,.card-inverse .card-title{color:#fff}.card-inverse .card-blockquote .blockquote-footer,.card-inverse .card-link,.card-inverse .card-subtitle,.card-inverse .card-text{color:rgba(255,255,255,.65)}.card-inverse .card-link:focus,.card-inverse .card-link:hover{color:#fff}.card-blockquote{padding:0;margin-bottom:0;border-left:0}.card-img{border-radius:calc(.25rem - 1px)}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img-top{border-top-right-radius:calc(.25rem - 1px);border-top-left-radius:calc(.25rem - 1px)}.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}@media (min-width:576px){.card-deck{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}.card-deck .card{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1 0 0%;-ms-flex:1 0 0%;flex:1 0 0%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.card-deck .card:not(:first-child){margin-left:15px}.card-deck .card:not(:last-child){margin-right:15px}}@media (min-width:576px){.card-group{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}.card-group .card{-webkit-box-flex:1;-webkit-flex:1 0 0%;-ms-flex:1 0 0%;flex:1 0 0%}.card-group .card+.card{margin-left:0;border-left:0}.card-group .card:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.card-group .card:first-child .card-img-top{border-top-right-radius:0}.card-group .card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group .card:last-child{border-bottom-left-radius:0;border-top-left-radius:0}.card-group .card:last-child .card-img-top{border-top-left-radius:0}.card-group .card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group .card:not(:first-child):not(:last-child){border-radius:0}.card-group .card:not(:first-child):not(:last-child) .card-img-bottom,.card-group .card:not(:first-child):not(:last-child) .card-img-top{border-radius:0}}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%;margin-bottom:.75rem}}.breadcrumb{padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#eceeef;border-radius:.25rem}.breadcrumb::after{display:block;content:"";clear:both}.breadcrumb-item{float:left}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#636c72;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#636c72}.pagination{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-item:first-child .page-link{margin-left:0;border-bottom-left-radius:.25rem;border-top-left-radius:.25rem}.page-item:last-child .page-link{border-bottom-right-radius:.25rem;border-top-right-radius:.25rem}.page-item.active .page-link{z-index:2;color:#fff;background-color:#0275d8;border-color:#0275d8}.page-item.disabled .page-link{color:#636c72;pointer-events:none;cursor:not-allowed;background-color:#fff;border-color:#ddd}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#0275d8;background-color:#fff;border:1px solid #ddd}.page-link:focus,.page-link:hover{color:#014c8c;text-decoration:none;background-color:#eceeef;border-color:#ddd}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-bottom-left-radius:.3rem;border-top-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-bottom-right-radius:.3rem;border-top-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-bottom-left-radius:.2rem;border-top-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-bottom-right-radius:.2rem;border-top-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-default{background-color:#636c72}.badge-default[href]:focus,.badge-default[href]:hover{background-color:#4b5257}.badge-primary{background-color:#0275d8}.badge-primary[href]:focus,.badge-primary[href]:hover{background-color:#025aa5}.badge-success{background-color:#5cb85c}.badge-success[href]:focus,.badge-success[href]:hover{background-color:#449d44}.badge-info{background-color:#5bc0de}.badge-info[href]:focus,.badge-info[href]:hover{background-color:#31b0d5}.badge-warning{background-color:#f0ad4e}.badge-warning[href]:focus,.badge-warning[href]:hover{background-color:#ec971f}.badge-danger{background-color:#d9534f}.badge-danger[href]:focus,.badge-danger[href]:hover{background-color:#c9302c}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#eceeef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-hr{border-top-color:#d0d5d8}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible .close{position:relative;top:-.75rem;right:-1.25rem;padding:.75rem 1.25rem;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d0e9c6;color:#3c763d}.alert-success hr{border-top-color:#c1e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bcdff1;color:#31708f}.alert-info hr{border-top-color:#a6d5ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faf2cc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7ecb5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebcccc;color:#a94442}.alert-danger hr{border-top-color:#e4b9b9}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow:hidden;font-size:.75rem;line-height:1rem;text-align:center;background-color:#eceeef;border-radius:.25rem}.progress-bar{height:1rem;color:#fff;background-color:#0275d8}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:1rem 1rem;background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;-o-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.media-body{-webkit-box-flex:1;-webkit-flex:1 1 0%;-ms-flex:1 1 0%;flex:1 1 0%}.list-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#464a4c;text-align:inherit}.list-group-item-action .list-group-item-heading{color:#292b2c}.list-group-item-action:focus,.list-group-item-action:hover{color:#464a4c;text-decoration:none;background-color:#f7f7f9}.list-group-item-action:active{color:#292b2c;background-color:#eceeef}.list-group-item{position:relative;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;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-right-radius:.25rem;border-top-left-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:focus,.list-group-item:hover{text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#636c72;cursor:not-allowed;background-color:#fff}.list-group-item.disabled .list-group-item-heading,.list-group-item:disabled .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item:disabled .list-group-item-text{color:#636c72}.list-group-item.active{z-index:2;color:#fff;background-color:#0275d8;border-color:#0275d8}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text{color:#daeeff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active{color:#fff;background-color:#a94442;border-color:#a94442}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.75}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out;-webkit-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.show .modal-dialog{-webkit-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{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;padding:15px;border-bottom:1px solid #eceeef}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;padding:15px}.modal-footer{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:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;padding:15px;border-top:1px solid #eceeef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:30px auto}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip.bs-tether-element-attached-bottom,.tooltip.tooltip-top{padding:5px 0;margin-top:-3px}.tooltip.bs-tether-element-attached-bottom .tooltip-inner::before,.tooltip.tooltip-top .tooltip-inner::before{bottom:0;left:50%;margin-left:-5px;content:"";border-width:5px 5px 0;border-top-color:#000}.tooltip.bs-tether-element-attached-left,.tooltip.tooltip-right{padding:0 5px;margin-left:3px}.tooltip.bs-tether-element-attached-left .tooltip-inner::before,.tooltip.tooltip-right .tooltip-inner::before{top:50%;left:0;margin-top:-5px;content:"";border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.bs-tether-element-attached-top,.tooltip.tooltip-bottom{padding:5px 0;margin-top:3px}.tooltip.bs-tether-element-attached-top .tooltip-inner::before,.tooltip.tooltip-bottom .tooltip-inner::before{top:0;left:50%;margin-left:-5px;content:"";border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bs-tether-element-attached-right,.tooltip.tooltip-left{padding:0 5px;margin-left:-3px}.tooltip.bs-tether-element-attached-right .tooltip-inner::before,.tooltip.tooltip-left .tooltip-inner::before{top:50%;right:0;margin-top:-5px;content:"";border-width:5px 0 5px 5px;border-left-color:#000}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.tooltip-inner::before{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;padding:1px;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;font-size:.875rem;word-wrap:break-word;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover.bs-tether-element-attached-bottom,.popover.popover-top{margin-top:-10px}.popover.bs-tether-element-attached-bottom::after,.popover.bs-tether-element-attached-bottom::before,.popover.popover-top::after,.popover.popover-top::before{left:50%;border-bottom-width:0}.popover.bs-tether-element-attached-bottom::before,.popover.popover-top::before{bottom:-11px;margin-left:-11px;border-top-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-bottom::after,.popover.popover-top::after{bottom:-10px;margin-left:-10px;border-top-color:#fff}.popover.bs-tether-element-attached-left,.popover.popover-right{margin-left:10px}.popover.bs-tether-element-attached-left::after,.popover.bs-tether-element-attached-left::before,.popover.popover-right::after,.popover.popover-right::before{top:50%;border-left-width:0}.popover.bs-tether-element-attached-left::before,.popover.popover-right::before{left:-11px;margin-top:-11px;border-right-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-left::after,.popover.popover-right::after{left:-10px;margin-top:-10px;border-right-color:#fff}.popover.bs-tether-element-attached-top,.popover.popover-bottom{margin-top:10px}.popover.bs-tether-element-attached-top::after,.popover.bs-tether-element-attached-top::before,.popover.popover-bottom::after,.popover.popover-bottom::before{left:50%;border-top-width:0}.popover.bs-tether-element-attached-top::before,.popover.popover-bottom::before{top:-11px;margin-left:-11px;border-bottom-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-top::after,.popover.popover-bottom::after{top:-10px;margin-left:-10px;border-bottom-color:#f7f7f7}.popover.bs-tether-element-attached-top .popover-title::before,.popover.popover-bottom .popover-title::before{position:absolute;top:0;left:50%;display:block;width:20px;margin-left:-10px;content:"";border-bottom:1px solid #f7f7f7}.popover.bs-tether-element-attached-right,.popover.popover-left{margin-left:-10px}.popover.bs-tether-element-attached-right::after,.popover.bs-tether-element-attached-right::before,.popover.popover-left::after,.popover.popover-left::before{top:50%;border-right-width:0}.popover.bs-tether-element-attached-right::before,.popover.popover-left::before{right:-11px;margin-top:-11px;border-left-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-right::after,.popover.popover-left::after{right:-10px;margin-top:-10px;border-left-color:#fff}.popover-title{padding:8px 14px;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-right-radius:calc(.3rem - 1px);border-top-left-radius:calc(.3rem - 1px)}.popover-title:empty{display:none}.popover-content{padding:9px 14px}.popover::after,.popover::before{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover::before{content:"";border-width:11px}.popover::after{content:"";border-width:10px}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;width:100%}@media (-webkit-transform-3d){.carousel-item{-webkit-transition:-webkit-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out,-o-transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}}@supports ((-webkit-transform:translate3d(0,0,0)) or (transform:translate3d(0,0,0))){.carousel-item{-webkit-transition:-webkit-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out,-o-transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}@media (-webkit-transform-3d){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.active.carousel-item-right,.carousel-item-next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@supports ((-webkit-transform:translate3d(0,0,0)) or (transform:translate3d(0,0,0))){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.active.carousel-item-right,.carousel-item-next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;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:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;-webkit-background-size:100% 100%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M4 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M1.5 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;max-width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:rgba(255,255,255,.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-faded{background-color:#f7f7f7}.bg-primary{background-color:#0275d8!important}a.bg-primary:focus,a.bg-primary:hover{background-color:#025aa5!important}.bg-success{background-color:#5cb85c!important}a.bg-success:focus,a.bg-success:hover{background-color:#449d44!important}.bg-info{background-color:#5bc0de!important}a.bg-info:focus,a.bg-info:hover{background-color:#31b0d5!important}.bg-warning{background-color:#f0ad4e!important}a.bg-warning:focus,a.bg-warning:hover{background-color:#ec971f!important}.bg-danger{background-color:#d9534f!important}a.bg-danger:focus,a.bg-danger:hover{background-color:#c9302c!important}.bg-inverse{background-color:#292b2c!important}a.bg-inverse:focus,a.bg-inverse:hover{background-color:#101112!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.rounded{border-radius:.25rem}.rounded-top{border-top-right-radius:.25rem;border-top-left-radius:.25rem}.rounded-right{border-bottom-right-radius:.25rem;border-top-right-radius:.25rem}.rounded-bottom{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-left{border-bottom-left-radius:.25rem;border-top-left-radius:.25rem}.rounded-circle{border-radius:50%}.rounded-0{border-radius:0}.clearfix::after{display:block;content:"";clear:both}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-cell{display:table-cell!important}.d-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}.flex-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.flex-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.flex-unordered{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.flex-sm-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.flex-sm-unordered{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-sm-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-sm-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-sm-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-sm-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.flex-md-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.flex-md-unordered{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-md-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-md-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-md-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-md-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.flex-lg-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.flex-lg-unordered{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-lg-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-lg-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-lg-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-lg-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.flex-xl-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.flex-xl-unordered{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-xl-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xl-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-xl-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-xl-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1030}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.m-0{margin:0 0!important}.mt-0{margin-top:0!important}.mr-0{margin-right:0!important}.mb-0{margin-bottom:0!important}.ml-0{margin-left:0!important}.mx-0{margin-right:0!important;margin-left:0!important}.my-0{margin-top:0!important;margin-bottom:0!important}.m-1{margin:.25rem .25rem!important}.mt-1{margin-top:.25rem!important}.mr-1{margin-right:.25rem!important}.mb-1{margin-bottom:.25rem!important}.ml-1{margin-left:.25rem!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-2{margin:.5rem .5rem!important}.mt-2{margin-top:.5rem!important}.mr-2{margin-right:.5rem!important}.mb-2{margin-bottom:.5rem!important}.ml-2{margin-left:.5rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-3{margin:1rem 1rem!important}.mt-3{margin-top:1rem!important}.mr-3{margin-right:1rem!important}.mb-3{margin-bottom:1rem!important}.ml-3{margin-left:1rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-4{margin:1.5rem 1.5rem!important}.mt-4{margin-top:1.5rem!important}.mr-4{margin-right:1.5rem!important}.mb-4{margin-bottom:1.5rem!important}.ml-4{margin-left:1.5rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-5{margin:3rem 3rem!important}.mt-5{margin-top:3rem!important}.mr-5{margin-right:3rem!important}.mb-5{margin-bottom:3rem!important}.ml-5{margin-left:3rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-0{padding:0 0!important}.pt-0{padding-top:0!important}.pr-0{padding-right:0!important}.pb-0{padding-bottom:0!important}.pl-0{padding-left:0!important}.px-0{padding-right:0!important;padding-left:0!important}.py-0{padding-top:0!important;padding-bottom:0!important}.p-1{padding:.25rem .25rem!important}.pt-1{padding-top:.25rem!important}.pr-1{padding-right:.25rem!important}.pb-1{padding-bottom:.25rem!important}.pl-1{padding-left:.25rem!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-2{padding:.5rem .5rem!important}.pt-2{padding-top:.5rem!important}.pr-2{padding-right:.5rem!important}.pb-2{padding-bottom:.5rem!important}.pl-2{padding-left:.5rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-3{padding:1rem 1rem!important}.pt-3{padding-top:1rem!important}.pr-3{padding-right:1rem!important}.pb-3{padding-bottom:1rem!important}.pl-3{padding-left:1rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-4{padding:1.5rem 1.5rem!important}.pt-4{padding-top:1.5rem!important}.pr-4{padding-right:1.5rem!important}.pb-4{padding-bottom:1.5rem!important}.pl-4{padding-left:1.5rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-5{padding:3rem 3rem!important}.pt-5{padding-top:3rem!important}.pr-5{padding-right:3rem!important}.pb-5{padding-bottom:3rem!important}.pl-5{padding-left:3rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-auto{margin:auto!important}.mt-auto{margin-top:auto!important}.mr-auto{margin-right:auto!important}.mb-auto{margin-bottom:auto!important}.ml-auto{margin-left:auto!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}@media (min-width:576px){.m-sm-0{margin:0 0!important}.mt-sm-0{margin-top:0!important}.mr-sm-0{margin-right:0!important}.mb-sm-0{margin-bottom:0!important}.ml-sm-0{margin-left:0!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.m-sm-1{margin:.25rem .25rem!important}.mt-sm-1{margin-top:.25rem!important}.mr-sm-1{margin-right:.25rem!important}.mb-sm-1{margin-bottom:.25rem!important}.ml-sm-1{margin-left:.25rem!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-sm-2{margin:.5rem .5rem!important}.mt-sm-2{margin-top:.5rem!important}.mr-sm-2{margin-right:.5rem!important}.mb-sm-2{margin-bottom:.5rem!important}.ml-sm-2{margin-left:.5rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-sm-3{margin:1rem 1rem!important}.mt-sm-3{margin-top:1rem!important}.mr-sm-3{margin-right:1rem!important}.mb-sm-3{margin-bottom:1rem!important}.ml-sm-3{margin-left:1rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-sm-4{margin:1.5rem 1.5rem!important}.mt-sm-4{margin-top:1.5rem!important}.mr-sm-4{margin-right:1.5rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.ml-sm-4{margin-left:1.5rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-sm-5{margin:3rem 3rem!important}.mt-sm-5{margin-top:3rem!important}.mr-sm-5{margin-right:3rem!important}.mb-sm-5{margin-bottom:3rem!important}.ml-sm-5{margin-left:3rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-sm-0{padding:0 0!important}.pt-sm-0{padding-top:0!important}.pr-sm-0{padding-right:0!important}.pb-sm-0{padding-bottom:0!important}.pl-sm-0{padding-left:0!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.p-sm-1{padding:.25rem .25rem!important}.pt-sm-1{padding-top:.25rem!important}.pr-sm-1{padding-right:.25rem!important}.pb-sm-1{padding-bottom:.25rem!important}.pl-sm-1{padding-left:.25rem!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-sm-2{padding:.5rem .5rem!important}.pt-sm-2{padding-top:.5rem!important}.pr-sm-2{padding-right:.5rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pl-sm-2{padding-left:.5rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-sm-3{padding:1rem 1rem!important}.pt-sm-3{padding-top:1rem!important}.pr-sm-3{padding-right:1rem!important}.pb-sm-3{padding-bottom:1rem!important}.pl-sm-3{padding-left:1rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-sm-4{padding:1.5rem 1.5rem!important}.pt-sm-4{padding-top:1.5rem!important}.pr-sm-4{padding-right:1.5rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pl-sm-4{padding-left:1.5rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-sm-5{padding:3rem 3rem!important}.pt-sm-5{padding-top:3rem!important}.pr-sm-5{padding-right:3rem!important}.pb-sm-5{padding-bottom:3rem!important}.pl-sm-5{padding-left:3rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto{margin-top:auto!important}.mr-sm-auto{margin-right:auto!important}.mb-sm-auto{margin-bottom:auto!important}.ml-sm-auto{margin-left:auto!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}}@media (min-width:768px){.m-md-0{margin:0 0!important}.mt-md-0{margin-top:0!important}.mr-md-0{margin-right:0!important}.mb-md-0{margin-bottom:0!important}.ml-md-0{margin-left:0!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.m-md-1{margin:.25rem .25rem!important}.mt-md-1{margin-top:.25rem!important}.mr-md-1{margin-right:.25rem!important}.mb-md-1{margin-bottom:.25rem!important}.ml-md-1{margin-left:.25rem!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-md-2{margin:.5rem .5rem!important}.mt-md-2{margin-top:.5rem!important}.mr-md-2{margin-right:.5rem!important}.mb-md-2{margin-bottom:.5rem!important}.ml-md-2{margin-left:.5rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-md-3{margin:1rem 1rem!important}.mt-md-3{margin-top:1rem!important}.mr-md-3{margin-right:1rem!important}.mb-md-3{margin-bottom:1rem!important}.ml-md-3{margin-left:1rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-md-4{margin:1.5rem 1.5rem!important}.mt-md-4{margin-top:1.5rem!important}.mr-md-4{margin-right:1.5rem!important}.mb-md-4{margin-bottom:1.5rem!important}.ml-md-4{margin-left:1.5rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-md-5{margin:3rem 3rem!important}.mt-md-5{margin-top:3rem!important}.mr-md-5{margin-right:3rem!important}.mb-md-5{margin-bottom:3rem!important}.ml-md-5{margin-left:3rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-md-0{padding:0 0!important}.pt-md-0{padding-top:0!important}.pr-md-0{padding-right:0!important}.pb-md-0{padding-bottom:0!important}.pl-md-0{padding-left:0!important}.px-md-0{padding-right:0!important;padding-left:0!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.p-md-1{padding:.25rem .25rem!important}.pt-md-1{padding-top:.25rem!important}.pr-md-1{padding-right:.25rem!important}.pb-md-1{padding-bottom:.25rem!important}.pl-md-1{padding-left:.25rem!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-md-2{padding:.5rem .5rem!important}.pt-md-2{padding-top:.5rem!important}.pr-md-2{padding-right:.5rem!important}.pb-md-2{padding-bottom:.5rem!important}.pl-md-2{padding-left:.5rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-md-3{padding:1rem 1rem!important}.pt-md-3{padding-top:1rem!important}.pr-md-3{padding-right:1rem!important}.pb-md-3{padding-bottom:1rem!important}.pl-md-3{padding-left:1rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-md-4{padding:1.5rem 1.5rem!important}.pt-md-4{padding-top:1.5rem!important}.pr-md-4{padding-right:1.5rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pl-md-4{padding-left:1.5rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-md-5{padding:3rem 3rem!important}.pt-md-5{padding-top:3rem!important}.pr-md-5{padding-right:3rem!important}.pb-md-5{padding-bottom:3rem!important}.pl-md-5{padding-left:3rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto{margin-top:auto!important}.mr-md-auto{margin-right:auto!important}.mb-md-auto{margin-bottom:auto!important}.ml-md-auto{margin-left:auto!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}}@media (min-width:992px){.m-lg-0{margin:0 0!important}.mt-lg-0{margin-top:0!important}.mr-lg-0{margin-right:0!important}.mb-lg-0{margin-bottom:0!important}.ml-lg-0{margin-left:0!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.m-lg-1{margin:.25rem .25rem!important}.mt-lg-1{margin-top:.25rem!important}.mr-lg-1{margin-right:.25rem!important}.mb-lg-1{margin-bottom:.25rem!important}.ml-lg-1{margin-left:.25rem!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-lg-2{margin:.5rem .5rem!important}.mt-lg-2{margin-top:.5rem!important}.mr-lg-2{margin-right:.5rem!important}.mb-lg-2{margin-bottom:.5rem!important}.ml-lg-2{margin-left:.5rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-lg-3{margin:1rem 1rem!important}.mt-lg-3{margin-top:1rem!important}.mr-lg-3{margin-right:1rem!important}.mb-lg-3{margin-bottom:1rem!important}.ml-lg-3{margin-left:1rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-lg-4{margin:1.5rem 1.5rem!important}.mt-lg-4{margin-top:1.5rem!important}.mr-lg-4{margin-right:1.5rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.ml-lg-4{margin-left:1.5rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-lg-5{margin:3rem 3rem!important}.mt-lg-5{margin-top:3rem!important}.mr-lg-5{margin-right:3rem!important}.mb-lg-5{margin-bottom:3rem!important}.ml-lg-5{margin-left:3rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-lg-0{padding:0 0!important}.pt-lg-0{padding-top:0!important}.pr-lg-0{padding-right:0!important}.pb-lg-0{padding-bottom:0!important}.pl-lg-0{padding-left:0!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.p-lg-1{padding:.25rem .25rem!important}.pt-lg-1{padding-top:.25rem!important}.pr-lg-1{padding-right:.25rem!important}.pb-lg-1{padding-bottom:.25rem!important}.pl-lg-1{padding-left:.25rem!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-lg-2{padding:.5rem .5rem!important}.pt-lg-2{padding-top:.5rem!important}.pr-lg-2{padding-right:.5rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pl-lg-2{padding-left:.5rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-lg-3{padding:1rem 1rem!important}.pt-lg-3{padding-top:1rem!important}.pr-lg-3{padding-right:1rem!important}.pb-lg-3{padding-bottom:1rem!important}.pl-lg-3{padding-left:1rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-lg-4{padding:1.5rem 1.5rem!important}.pt-lg-4{padding-top:1.5rem!important}.pr-lg-4{padding-right:1.5rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pl-lg-4{padding-left:1.5rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-lg-5{padding:3rem 3rem!important}.pt-lg-5{padding-top:3rem!important}.pr-lg-5{padding-right:3rem!important}.pb-lg-5{padding-bottom:3rem!important}.pl-lg-5{padding-left:3rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto{margin-top:auto!important}.mr-lg-auto{margin-right:auto!important}.mb-lg-auto{margin-bottom:auto!important}.ml-lg-auto{margin-left:auto!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0 0!important}.mt-xl-0{margin-top:0!important}.mr-xl-0{margin-right:0!important}.mb-xl-0{margin-bottom:0!important}.ml-xl-0{margin-left:0!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.m-xl-1{margin:.25rem .25rem!important}.mt-xl-1{margin-top:.25rem!important}.mr-xl-1{margin-right:.25rem!important}.mb-xl-1{margin-bottom:.25rem!important}.ml-xl-1{margin-left:.25rem!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-xl-2{margin:.5rem .5rem!important}.mt-xl-2{margin-top:.5rem!important}.mr-xl-2{margin-right:.5rem!important}.mb-xl-2{margin-bottom:.5rem!important}.ml-xl-2{margin-left:.5rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-xl-3{margin:1rem 1rem!important}.mt-xl-3{margin-top:1rem!important}.mr-xl-3{margin-right:1rem!important}.mb-xl-3{margin-bottom:1rem!important}.ml-xl-3{margin-left:1rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-xl-4{margin:1.5rem 1.5rem!important}.mt-xl-4{margin-top:1.5rem!important}.mr-xl-4{margin-right:1.5rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.ml-xl-4{margin-left:1.5rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-xl-5{margin:3rem 3rem!important}.mt-xl-5{margin-top:3rem!important}.mr-xl-5{margin-right:3rem!important}.mb-xl-5{margin-bottom:3rem!important}.ml-xl-5{margin-left:3rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-xl-0{padding:0 0!important}.pt-xl-0{padding-top:0!important}.pr-xl-0{padding-right:0!important}.pb-xl-0{padding-bottom:0!important}.pl-xl-0{padding-left:0!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.p-xl-1{padding:.25rem .25rem!important}.pt-xl-1{padding-top:.25rem!important}.pr-xl-1{padding-right:.25rem!important}.pb-xl-1{padding-bottom:.25rem!important}.pl-xl-1{padding-left:.25rem!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-xl-2{padding:.5rem .5rem!important}.pt-xl-2{padding-top:.5rem!important}.pr-xl-2{padding-right:.5rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pl-xl-2{padding-left:.5rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-xl-3{padding:1rem 1rem!important}.pt-xl-3{padding-top:1rem!important}.pr-xl-3{padding-right:1rem!important}.pb-xl-3{padding-bottom:1rem!important}.pl-xl-3{padding-left:1rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-xl-4{padding:1.5rem 1.5rem!important}.pt-xl-4{padding-top:1.5rem!important}.pr-xl-4{padding-right:1.5rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pl-xl-4{padding-left:1.5rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-xl-5{padding:3rem 3rem!important}.pt-xl-5{padding-top:3rem!important}.pr-xl-5{padding-right:3rem!important}.pb-xl-5{padding-bottom:3rem!important}.pl-xl-5{padding-left:3rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto{margin-top:auto!important}.mr-xl-auto{margin-right:auto!important}.mb-xl-auto{margin-bottom:auto!important}.ml-xl-auto{margin-left:auto!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-normal{font-weight:400}.font-weight-bold{font-weight:700}.font-italic{font-style:italic}.text-white{color:#fff!important}.text-muted{color:#636c72!important}a.text-muted:focus,a.text-muted:hover{color:#4b5257!important}.text-primary{color:#0275d8!important}a.text-primary:focus,a.text-primary:hover{color:#025aa5!important}.text-success{color:#5cb85c!important}a.text-success:focus,a.text-success:hover{color:#449d44!important}.text-info{color:#5bc0de!important}a.text-info:focus,a.text-info:hover{color:#31b0d5!important}.text-warning{color:#f0ad4e!important}a.text-warning:focus,a.text-warning:hover{color:#ec971f!important}.text-danger{color:#d9534f!important}a.text-danger:focus,a.text-danger:hover{color:#c9302c!important}.text-gray-dark{color:#292b2c!important}a.text-gray-dark:focus,a.text-gray-dark:hover{color:#101112!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.invisible{visibility:hidden!important}.hidden-xs-up{display:none!important}@media (max-width:575px){.hidden-xs-down{display:none!important}}@media (min-width:576px){.hidden-sm-up{display:none!important}}@media (max-width:767px){.hidden-sm-down{display:none!important}}@media (min-width:768px){.hidden-md-up{display:none!important}}@media (max-width:991px){.hidden-md-down{display:none!important}}@media (min-width:992px){.hidden-lg-up{display:none!important}}@media (max-width:1199px){.hidden-lg-down{display:none!important}}@media (min-width:1200px){.hidden-xl-up{display:none!important}}.hidden-xl-down{display:none!important}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap.min.css.map b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap.min.css.map new file mode 100644 index 0000000..74462f2 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/css/bootstrap.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/_normalize.scss","bootstrap.css","../../scss/_print.scss","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_mixins.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_tables.scss","../../scss/mixins/_table-row.scss","../../scss/_forms.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_nav-divider.scss","../../scss/_button-group.scss","../../scss/_input-group.scss","../../scss/_custom-forms.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/mixins/_cards.scss","../../scss/_breadcrumb.scss","../../scss/mixins/_clearfix.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/mixins/_badge.scss","../../scss/_jumbotron.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/mixins/_gradients.scss","../../scss/_media.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_responsive-embed.scss","../../scss/_close.scss","../../scss/_modal.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_transforms.scss","../../scss/utilities/_align.scss","../../scss/utilities/_background.scss","../../scss/mixins/_background-variant.scss","../../scss/utilities/_borders.scss","../../scss/utilities/_display.scss","../../scss/utilities/_flex.scss","../../scss/utilities/_float.scss","../../scss/mixins/_float.scss","../../scss/utilities/_position.scss","../../scss/utilities/_screenreaders.scss","../../scss/mixins/_screen-reader.scss","../../scss/utilities/_sizing.scss","../../scss/utilities/_spacing.scss","../../scss/utilities/_text.scss","../../scss/mixins/_text-truncate.scss","../../scss/mixins/_text-emphasis.scss","../../scss/mixins/_text-hide.scss","../../scss/utilities/_visibility.scss","../../scss/mixins/_visibility.scss"],"names":[],"mappings":";;;;;4EAYA,KACE,YAAA,WACA,YAAA,KACA,qBAAA,KACA,yBAAA,KAUF,KACE,OAAA,EAOF,QAAA,MAAA,OAAA,OAAA,IAAA,QAME,QAAA,MAQF,GACE,UAAA,IACA,OAAA,MAAA,EAWF,WAAA,OAAA,KAGE,QAAA,MAOF,OACE,OAAA,IAAA,KAQF,GACE,mBAAA,YAAA,WAAA,YACA,OAAA,EACA,SAAA,QAQF,IACE,YAAA,UAAA,UACA,UAAA,IAWF,EACE,iBAAA,YACA,6BAAA,QAQF,SAAA,QAEE,cAAA,EAQF,YACE,cAAA,KACA,gBAAA,UACA,gBAAA,UAAA,OAOF,EAAA,OAEE,YAAA,QAOF,EAAA,OAEE,YAAA,OAQF,KAAA,IAAA,KAGE,YAAA,UAAA,UACA,UAAA,IAOF,IACE,WAAA,OAOF,KACE,iBAAA,KACA,MAAA,KAOF,MACE,UAAA,IAQF,IAAA,IAEE,UAAA,IACA,YAAA,EACA,SAAA,SACA,eAAA,SAGF,IACE,OAAA,OAGF,IACE,IAAA,MAUF,MAAA,MAEE,QAAA,aAOF,sBACE,QAAA,KACA,OAAA,EAOF,IACE,aAAA,KAOF,eACE,SAAA,OAWF,OAAA,MAAA,SAAA,OAAA,SAKE,YAAA,WACA,UAAA,KACA,YAAA,KACA,OAAA,EAQF,OAAA,MAEE,SAAA,QAQF,OAAA,OAEE,eAAA,KASF,aAAA,cAAA,OAAA,mBAIE,mBAAA,OAOF,gCAAA,+BAAA,gCAAA,yBAIE,aAAA,KACA,QAAA,EAOF,6BAAA,4BAAA,6BAAA,sBAIE,QAAA,IAAA,OAAA,WAOF,SACE,OAAA,IAAA,MAAA,OACA,OAAA,EAAA,IACA,QAAA,MAAA,OAAA,MAUF,OACE,mBAAA,WAAA,WAAA,WACA,MAAA,QACA,QAAA,MACA,UAAA,KACA,QAAA,EACA,YAAA,OAQF,SACE,QAAA,aACA,eAAA,SAOF,SACE,SAAA,KC/JF,gBAAA,aDyKE,mBAAA,WAAA,WAAA,WACA,QAAA,ECpKF,yCAAA,yCD6KE,OAAA,KCxKF,cDiLE,mBAAA,UACA,eAAA,KC7KF,4CAAA,yCDsLE,mBAAA,KAQF,6BACE,mBAAA,OACA,KAAA,QAWF,QAAA,KAEE,QAAA,MAOF,QACE,QAAA,UAUF,OACE,QAAA,aAOF,SACE,QAAA,KC7MF,SDwNE,QAAA,KEhcA,aACE,EAAA,QAAA,SAAA,yBAAA,uBAAA,kBAAA,gBAAA,iBAAA,eAAA,gBAAA,cAcE,YAAA,eAEA,mBAAA,eAAA,WAAA,eAGF,EAAA,UAEE,gBAAA,UAQF,mBACE,QAA6B,KAA7B,YAA6B,IAc/B,IACE,YAAA,mBAEF,WAAA,IAEE,OAAA,IAAA,MAAA,KACA,kBAAA,MAQF,MACE,QAAA,mBAGF,IAAA,GAEE,kBAAA,MAGF,GAAA,GAAA,EAGE,QAAA,EACA,OAAA,EAGF,GAAA,GAEE,iBAAA,MAMF,QACE,QAAA,KAEF,OACE,OAAA,IAAA,MAAA,KAGF,OACE,gBAAA,mBADF,UAAA,UAKI,iBAAA,eAGJ,mBAAA,mBAGI,OAAA,IAAA,MAAA,gBC3FR,KACE,mBAAA,WAAA,WAAA,WAGF,EAAA,QAAA,SAGE,mBAAA,QAAA,WAAA,QAoBA,cAAgB,MAAA,aAQlB,KAYE,mBAAA,UAGA,4BAAA,YAGF,KACE,YAAA,cAAA,UAAA,mBAAA,WAAA,OC2K4H,iBD3K5H,MAAA,WACA,UAAA,KACA,YAAA,IACA,YAAA,IAEA,MAAA,QAEA,iBAAA,KFmQF,sBE1PE,QAAA,YAYF,GAAI,GAAI,GAAI,GAAI,GAAI,GAClB,WAAA,EACA,cAAA,MAOF,EACE,WAAA,EACA,cAAA,KAIF,0BAAA,YAGE,OAAA,KAGF,QACE,cAAA,KACA,WAAA,OACA,YAAA,QAGF,GAAA,GAAA,GAGE,WAAA,EACA,cAAA,KAGF,MAAA,MAAA,MAAA,MAIE,cAAA,EAGF,GACE,YAAA,IAGF,GACE,cAAA,MACA,YAAA,EAGF,WACE,OAAA,EAAA,EAAA,KAQF,EACE,MAAA,QACA,gBAAA,KEhJE,QAAA,QFmJA,MAAA,QACA,gBAAA,UAUJ,8BACE,MAAA,QACA,gBAAA,KEhKE,oCAAA,oCFmKA,MAAA,QACA,gBAAA,KANJ,oCAUI,QAAA,EASJ,IAEE,WAAA,EAEA,cAAA,KAEA,SAAA,KAQF,OAGE,OAAA,EAAA,EAAA,KAQF,IAGE,eAAA,OF8MF,cEjME,OAAA,QAcF,cAAA,EAAA,KAAA,OAAA,MAAA,MAAA,OAAA,QAAA,SASE,iBAAA,aAAA,aAAA,aAQF,MAEE,gBAAA,SAEA,iBAAA,YAGF,QACE,YAAA,OACA,eAAA,OACA,MAAA,QACA,WAAA,KACA,aAAA,OAGF,GAEE,WAAA,KAQF,MAEE,QAAA,aACA,cAAA,MAOF,aACE,QAAA,IAAA,OACA,QAAA,IAAA,KAAA,yBAGF,OAAA,MAAA,OAAA,SAME,YAAA,QAGF,8BAAA,2BAMI,OAAA,YAKJ,iBAAA,iBAAA,2BAAA,kBASE,mBAAA,QAGF,SAEE,OAAA,SAGF,SAME,UAAA,EAEA,QAAA,EACA,OAAA,EACA,OAAA,EAGF,OAEE,QAAA,MACA,MAAA,KACA,QAAA,EACA,cAAA,MACA,UAAA,OACA,YAAA,QAGF,mBAKE,mBAAA,KAIF,OACE,QAAA,aF8IF,SEtIE,QAAA,eG/XF,IAAK,IAAK,IAAK,IAAK,IAAK,IAAzB,GAAI,GAAI,GAAI,GAAI,GAAI,GAElB,cAAA,MACA,YAAA,QACA,YAAA,IACA,YAAA,IACA,MAAA,QAGE,IAAJ,GAAU,UAAA,OACN,IAAJ,GAAU,UAAA,KACN,IAAJ,GAAU,UAAA,QACN,IAAJ,GAAU,UAAA,OACN,IAAJ,GAAU,UAAA,QACN,IAAJ,GAAU,UAAA,KAEV,MACE,UAAA,QACA,YAAA,IAIF,WACE,UAAA,KACA,YAAA,IACA,YAAA,IAEF,WACE,UAAA,OACA,YAAA,IACA,YAAA,IAEF,WACE,UAAA,OACA,YAAA,IACA,YAAA,IAEF,WACE,UAAA,OACA,YAAA,IACA,YAAA,IAQF,GACE,WAAA,KACA,cAAA,KACA,OAAA,EACA,WAAA,IAAA,MAAA,eAQF,OAAA,MAEE,UAAA,IACA,YAAA,IAGF,MAAA,KAEE,QAAA,KACA,iBAAA,QAQF,eC7EE,aAAA,EACA,WAAA,KDiFF,aClFE,aAAA,EACA,WAAA,KDoFF,kBACE,QAAA,aADF,mCAII,aAAA,IAUJ,YACE,UAAA,IACA,eAAA,UAIF,YACE,QAAA,MAAA,KACA,cAAA,KACA,UAAA,QACA,YAAA,OAAA,MAAA,QAGF,mBACE,QAAA,MACA,UAAA,IACA,MAAA,QAHF,2BAMI,QAAsB,cAK1B,oBACE,cAAA,KACA,aAAA,EACA,WAAA,MACA,aAAA,OAAA,MAAA,QACA,YAAA,EAGF,+CAEI,QAAW,GAFf,8CAKI,QAAsB,cErI1B,WCIE,UAAA,KAGA,OAAA,KDDF,eACE,QAAA,OACA,iBAAA,KACA,OAAA,IAAA,MAAA,KEZE,cAAA,OCWE,mBAAA,IAAA,IAAA,YAAA,cAAA,IAAA,IAAA,YAAA,WAAA,IAAA,IAAA,YFJJ,UAAA,KAGA,OAAA,KDeF,QAEE,QAAA,aAGF,YACE,cAAA,MACA,YAAA,EAGF,gBACE,UAAA,IACA,MAAA,QIxCF,KAAA,IAAA,IAAA,KAIE,YAAA,MAAA,OAAA,SAAA,kBRmP2F,cQnP3F,UAIF,KACE,QAAA,MAAA,MACA,UAAA,IACA,MAAA,QACA,iBAAA,QFTE,cAAA,OEaF,OACE,QAAA,EACA,MAAA,QACA,iBAAA,QAKJ,IACE,QAAA,MAAA,MACA,UAAA,IACA,MAAA,KACA,iBAAA,QFzBE,cAAA,MEqBJ,QASI,QAAA,EACA,UAAA,KACA,YAAA,IAMJ,IACE,QAAA,MACA,WAAA,EACA,cAAA,KACA,UAAA,IACA,MAAA,QALF,SASI,QAAA,EACA,UAAA,QACA,MAAA,QACA,iBAAA,YACA,cAAA,EAKJ,gBACE,WAAA,MACA,WAAA,OCzDA,WCAA,SAAA,SACA,YAAA,KACA,aAAA,KAKI,cAAA,KACA,aAAA,KC2CF,yBFnDF,WCOI,cAAA,KACA,aAAA,MC2CF,yBFnDF,WCOI,cAAA,KACA,aAAA,MC2CF,yBFnDF,WCOI,cAAA,KACA,aAAA,MC2CF,0BFnDF,WCOI,cAAA,KACA,aAAA,MC2CF,yBFnDF,WCkBI,MAAA,MACA,UAAA,MCgCF,yBFnDF,WCkBI,MAAA,MACA,UAAA,MCgCF,yBFnDF,WCkBI,MAAA,MACA,UAAA,MCgCF,0BFnDF,WCkBI,MAAA,OACA,UAAA,MDPJ,iBCZA,SAAA,SACA,YAAA,KACA,aAAA,KAKI,cAAA,KACA,aAAA,KC2CF,yBFvCF,iBCLI,cAAA,KACA,aAAA,MC2CF,yBFvCF,iBCLI,cAAA,KACA,aAAA,MC2CF,yBFvCF,iBCLI,cAAA,KACA,aAAA,MC2CF,0BFvCF,iBCLI,cAAA,KACA,aAAA,MDcJ,KCaA,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,kBAAA,KAAA,cAAA,KAAA,UAAA,KAKI,aAAA,MACA,YAAA,MCSF,yBF7BF,KCmBI,aAAA,MACA,YAAA,OCSF,yBF7BF,KCmBI,aAAA,MACA,YAAA,OCSF,yBF7BF,KCmBI,aAAA,MACA,YAAA,OCSF,0BF7BF,KCmBI,aAAA,MACA,YAAA,ODdJ,YACE,aAAA,EACA,YAAA,EAFF,iBAAA,0BAMI,cAAA,EACA,aAAA,EGjCJ,KAAA,OAAA,QAAA,QAAA,QAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UACE,SAAA,SACA,MAAA,KACA,WAAA,IFuBE,cAAA,KACA,aAAA,KCsBF,yBCjDF,KAAA,OAAA,QAAA,QAAA,QAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UF0BI,cAAA,KACA,aAAA,MCsBF,yBCjDF,KAAA,OAAA,QAAA,QAAA,QAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UF0BI,cAAA,KACA,aAAA,MCsBF,yBCjDF,KAAA,OAAA,QAAA,QAAA,QAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UF0BI,cAAA,KACA,aAAA,MCsBF,0BCjDF,KAAA,OAAA,QAAA,QAAA,QAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,QAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UF0BI,cAAA,KACA,aAAA,MEJA,KACE,mBAAA,EAAA,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,UACE,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KAIA,OF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,UAAA,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAKA,UAAA,UElCM,OF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,OF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,OF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,OF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,OF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,OF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,OF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,OF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,QF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,QF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,QF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAKA,UAAA,KE3BQ,QFuCR,MAAA,KEvCQ,QFuCR,MAAA,UEvCQ,QFuCR,MAAA,WEvCQ,QFuCR,MAAA,IEvCQ,QFuCR,MAAA,WEvCQ,QFuCR,MAAA,WEvCQ,QFuCR,MAAA,IEvCQ,QFuCR,MAAA,WEvCQ,QFuCR,MAAA,WEvCQ,QFuCR,MAAA,IEvCQ,SFuCR,MAAA,WEvCQ,SFuCR,MAAA,WEvCQ,SFuCR,MAAA,KEvCQ,QFmCR,KAAA,KEnCQ,QFmCR,KAAA,UEnCQ,QFmCR,KAAA,WEnCQ,QFmCR,KAAA,IEnCQ,QFmCR,KAAA,WEnCQ,QFmCR,KAAA,WEnCQ,QFmCR,KAAA,IEnCQ,QFmCR,KAAA,WEnCQ,QFmCR,KAAA,WEnCQ,QFmCR,KAAA,IEnCQ,SFmCR,KAAA,WEnCQ,SFmCR,KAAA,WEnCQ,SFmCR,KAAA,KE1BQ,UFsBR,YAAA,UEtBQ,UFsBR,YAAA,WEtBQ,UFsBR,YAAA,IEtBQ,UFsBR,YAAA,WEtBQ,UFsBR,YAAA,WEtBQ,UFsBR,YAAA,IEtBQ,UFsBR,YAAA,WEtBQ,UFsBR,YAAA,WEtBQ,UFsBR,YAAA,IEtBQ,WFsBR,YAAA,WEtBQ,WFsBR,YAAA,WCvBE,yBC1BE,QACE,mBAAA,EAAA,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KAIA,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,UAAA,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAKA,UAAA,UElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,WF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,WF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,WF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAKA,UAAA,KE3BQ,WFuCR,MAAA,KEvCQ,WFuCR,MAAA,UEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,IEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,IEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,IEvCQ,YFuCR,MAAA,WEvCQ,YFuCR,MAAA,WEvCQ,YFuCR,MAAA,KEvCQ,WFmCR,KAAA,KEnCQ,WFmCR,KAAA,UEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,IEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,IEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,IEnCQ,YFmCR,KAAA,WEnCQ,YFmCR,KAAA,WEnCQ,YFmCR,KAAA,KE1BQ,aFsBR,YAAA,EEtBQ,aFsBR,YAAA,UEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,IEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,IEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,IEtBQ,cFsBR,YAAA,WEtBQ,cFsBR,YAAA,YCvBE,yBC1BE,QACE,mBAAA,EAAA,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KAIA,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,UAAA,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAKA,UAAA,UElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,WF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,WF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,WF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAKA,UAAA,KE3BQ,WFuCR,MAAA,KEvCQ,WFuCR,MAAA,UEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,IEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,IEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,IEvCQ,YFuCR,MAAA,WEvCQ,YFuCR,MAAA,WEvCQ,YFuCR,MAAA,KEvCQ,WFmCR,KAAA,KEnCQ,WFmCR,KAAA,UEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,IEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,IEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,IEnCQ,YFmCR,KAAA,WEnCQ,YFmCR,KAAA,WEnCQ,YFmCR,KAAA,KE1BQ,aFsBR,YAAA,EEtBQ,aFsBR,YAAA,UEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,IEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,IEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,IEtBQ,cFsBR,YAAA,WEtBQ,cFsBR,YAAA,YCvBE,yBC1BE,QACE,mBAAA,EAAA,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KAIA,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,UAAA,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAKA,UAAA,UElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,WF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,WF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,WF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAKA,UAAA,KE3BQ,WFuCR,MAAA,KEvCQ,WFuCR,MAAA,UEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,IEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,IEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,IEvCQ,YFuCR,MAAA,WEvCQ,YFuCR,MAAA,WEvCQ,YFuCR,MAAA,KEvCQ,WFmCR,KAAA,KEnCQ,WFmCR,KAAA,UEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,IEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,IEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,IEnCQ,YFmCR,KAAA,WEnCQ,YFmCR,KAAA,WEnCQ,YFmCR,KAAA,KE1BQ,aFsBR,YAAA,EEtBQ,aFsBR,YAAA,UEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,IEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,IEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,IEtBQ,cFsBR,YAAA,WEtBQ,cFsBR,YAAA,YCvBE,0BC1BE,QACE,mBAAA,EAAA,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KAIA,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,UAAA,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAKA,UAAA,UElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,UF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IElCM,WF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,WF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WElCM,WF6BN,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAKA,UAAA,KE3BQ,WFuCR,MAAA,KEvCQ,WFuCR,MAAA,UEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,IEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,IEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,WEvCQ,WFuCR,MAAA,IEvCQ,YFuCR,MAAA,WEvCQ,YFuCR,MAAA,WEvCQ,YFuCR,MAAA,KEvCQ,WFmCR,KAAA,KEnCQ,WFmCR,KAAA,UEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,IEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,IEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,WEnCQ,WFmCR,KAAA,IEnCQ,YFmCR,KAAA,WEnCQ,YFmCR,KAAA,WEnCQ,YFmCR,KAAA,KE1BQ,aFsBR,YAAA,EEtBQ,aFsBR,YAAA,UEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,IEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,IEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,WEtBQ,aFsBR,YAAA,IEtBQ,cFsBR,YAAA,WEtBQ,cFsBR,YAAA,YG3EF,OACE,MAAA,KACA,UAAA,KACA,cAAA,KAHF,UAAA,UAOI,QAAA,OACA,eAAA,IACA,WAAA,IAAA,MAAA,QATJ,gBAaI,eAAA,OACA,cAAA,IAAA,MAAA,QAdJ,mBAkBI,WAAA,IAAA,MAAA,QAlBJ,cAsBI,iBAAA,KASJ,aAAA,aAGI,QAAA,MASJ,gBACE,OAAA,IAAA,MAAA,QADF,mBAAA,mBAKI,OAAA,IAAA,MAAA,QALJ,yBAAA,yBAWM,oBAAA,IAUN,yCAEI,iBAAA,gBASJ,4BAGM,iBAAA,iBC7EJ,cAAA,iBAAA,iBAII,iBAAA,iBAMJ,iCAKM,iBAAA,iBALN,oCAAA,oCASQ,iBAAA,iBAnBR,eAAA,kBAAA,kBAII,iBAAA,QAMJ,kCAKM,iBAAA,QALN,qCAAA,qCASQ,iBAAA,QAnBR,YAAA,eAAA,eAII,iBAAA,QAMJ,+BAKM,iBAAA,QALN,kCAAA,kCASQ,iBAAA,QAnBR,eAAA,kBAAA,kBAII,iBAAA,QAMJ,kCAKM,iBAAA,QALN,qCAAA,qCASQ,iBAAA,QAnBR,cAAA,iBAAA,iBAII,iBAAA,QAMJ,iCAKM,iBAAA,QALN,oCAAA,oCASQ,iBAAA,QDiFV,kBAEI,MAAA,KACA,iBAAA,QAIJ,kBAEI,MAAA,QACA,iBAAA,QAIJ,eACE,MAAA,KACA,iBAAA,QAFF,kBAAA,kBAAA,wBAOI,aAAA,KAPJ,8BAWI,OAAA,EAYJ,kBACE,QAAA,MACA,MAAA,KACA,WAAA,KACA,mBAAA,yBAJF,iCAQI,OAAA,EEhJJ,cACE,QAAA,MACA,MAAA,KAGA,QAAA,MAAA,OACA,UAAA,KACA,YAAA,KACA,MAAA,QACA,iBAAA,KAEA,iBAAA,KACA,wBAAA,YAAA,gBAAA,YACA,OAAA,IAAA,MAAA,gBAKE,cAAA,ORTE,mBAAA,aAAA,YAAA,KAAA,mBAAA,YAAA,KAAA,WAAA,aAAA,YAAA,KAAA,mBAAA,YAAA,KAAA,cAAA,aAAA,YAAA,KAAA,WAAA,YAAA,KAAA,WAAA,aAAA,YAAA,KAAA,WAAA,YAAA,KAAA,WAAA,aAAA,YAAA,KAAA,WAAA,YAAA,KAAA,mBAAA,YAAA,KQTN,0BA6BI,iBAAA,YACA,OAAA,ECSF,oBACE,MAAA,QACA,iBAAA,KACA,aAAA,QACA,QAAA,ED3CJ,yCAsCI,MAAA,QAEA,QAAA,EAxCJ,gCAsCI,MAAA,QAEA,QAAA,EAxCJ,oCAsCI,MAAA,QAEA,QAAA,EAxCJ,2BAsCI,MAAA,QAEA,QAAA,EAxCJ,uBAAwB,wBAkDpB,iBAAA,QAEA,QAAA,EApDJ,uBAwDI,OAAA,YAIJ,gDAGI,OAAA,oBAHJ,qCAYI,MAAA,QACA,iBAAA,KAKJ,mBAAA,oBAEE,QAAA,MAUF,gBACE,YAAA,sBACA,eAAA,sBACA,cAAA,EAGF,mBACE,YAAA,uBACA,eAAA,uBACA,UAAA,QAGF,mBACE,YAAA,uBACA,eAAA,uBACA,UAAA,QAUF,iBACE,YAAA,MACA,eAAA,MACA,cAAA,EACA,UAAA,KASF,qBACE,YAAA,MACA,eAAA,MACA,cAAA,EACA,YAAA,KACA,OAAA,MAAA,YACA,aAAA,IAAA,EAN6D,qCAA/D,qCAAqG,kDAArG,uDAAA,0DAAsC,kDAAtC,uDAAA,0DAUI,cAAA,EACA,aAAA,EAaJ,iBAAkB,8BAAlB,mCAAA,sCACE,QAAA,OAAA,MACA,UAAA,QT5JE,cAAA,MSgKJ,wEAAoD,gEAApD,qEAAA,mDAEI,OAAA,UAIJ,iBAAkB,8BAAlB,mCAAA,sCACE,QAAA,OAAA,OACA,UAAA,QTxKE,cAAA,MS4KJ,wEAAoD,gEAApD,qEAAA,mDAEI,OAAA,YAUJ,YACE,cAAA,KAGF,WACE,QAAA,MACA,WAAA,OAQF,YACE,SAAA,SACA,QAAA,MACA,cAAA,MAHF,uCAOM,MAAA,QACA,OAAA,YAKN,kBACE,aAAA,QACA,cAAA,EACA,OAAA,QAGF,kBACE,SAAA,SACA,WAAA,OACA,YAAA,SAHF,6BAMI,SAAA,OAKJ,mBACE,QAAA,aADF,qCAII,eAAA,OAJJ,sCAQI,YAAA,OASJ,uBACE,WAAA,OAGF,qBAAA,sBAAA,sBAGE,cAAA,QACA,kBAAA,UACA,oBAAA,OAAA,MAAA,SACA,wBAAA,SAAA,SAAA,gBAAA,SAAA,SC5PA,6BAAA,6BAAA,+BAAA,oCAAA,iCAKE,MAAA,QAIF,2BACE,aAAA,QAQF,gCACE,MAAA,QACA,aAAA,QACA,iBAAA,QD2OJ,mCAII,iBAAA,wPCpQF,6BAAA,6BAAA,+BAAA,oCAAA,iCAKE,MAAA,QAIF,2BACE,aAAA,QAQF,gCACE,MAAA,QACA,aAAA,QACA,iBAAA,KDmPJ,mCAII,iBAAA,iUC5QF,4BAAA,4BAAA,8BAAA,mCAAA,gCAKE,MAAA,QAIF,0BACE,aAAA,QAQF,+BACE,MAAA,QACA,aAAA,QACA,iBAAA,QD2PJ,iCAII,iBAAA,kSAcJ,aACE,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,kBAAA,IAAA,KAAA,cAAA,IAAA,KAAA,UAAA,IAAA,KACA,kBAAA,OAAA,oBAAA,OAAA,eAAA,OAAA,YAAA,OAHF,yBASI,MAAA,KJ1PA,yBIiPF,mBAeI,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,kBAAA,OAAA,oBAAA,OAAA,eAAA,OAAA,YAAA,OACA,iBAAA,OAAA,wBAAA,OAAA,cAAA,OAAA,gBAAA,OACA,cAAA,EAlBJ,yBAuBI,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,kBAAA,IAAA,KAAA,cAAA,IAAA,KAAA,UAAA,IAAA,KACA,kBAAA,OAAA,oBAAA,OAAA,eAAA,OAAA,YAAA,OACA,cAAA,EA3BJ,2BAgCI,QAAA,aACA,MAAA,KACA,eAAA,OAlCJ,kCAuCI,QAAA,aAvCJ,0BA2CI,MAAA,KA3CJ,iCA+CI,cAAA,EACA,eAAA,OAhDJ,yBAsDI,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,kBAAA,OAAA,oBAAA,OAAA,eAAA,OAAA,YAAA,OACA,iBAAA,OAAA,wBAAA,OAAA,cAAA,OAAA,gBAAA,OACA,MAAA,KACA,WAAA,EACA,cAAA,EA3DJ,+BA8DI,aAAA,EA9DJ,+BAiEI,SAAA,SACA,WAAA,EACA,aAAA,OACA,YAAA,EApEJ,6BAyEI,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,kBAAA,OAAA,oBAAA,OAAA,eAAA,OAAA,YAAA,OACA,iBAAA,OAAA,wBAAA,OAAA,cAAA,OAAA,gBAAA,OACA,aAAA,EA5EJ,uCA+EI,SAAA,OACA,QAAA,aACA,aAAA,OACA,eAAA,YAlFJ,kDAuFI,IAAA,GE1XN,KACE,QAAA,aACA,YAAA,IACA,YAAA,KACA,WAAA,OACA,YAAA,OACA,eAAA,OACA,oBAAA,KAAA,iBAAA,KAAA,gBAAA,KAAA,YAAA,KACA,OAAA,IAAA,MAAA,YCoEA,QAAA,MAAA,KACA,UAAA,KZ/EE,cAAA,OCWE,mBAAA,IAAA,IAAA,YAAA,cAAA,IAAA,IAAA,YAAA,WAAA,IAAA,IAAA,YNKF,WAAA,WgBAA,gBAAA,KAdQ,WAAZ,WAkBI,QAAA,EACA,mBAAA,EAAA,EAAA,EAAA,IAAA,oBAAA,WAAA,EAAA,EAAA,EAAA,IAAA,oBAnBJ,cAAe,cAyBX,OAAA,YACA,QAAA,IA1BS,YAAb,YAgCI,iBAAA,KAMJ,eAAA,yBAEE,eAAA,KAQF,aC7CE,MAAA,KACA,iBAAA,QACA,aAAA,QjBDE,mBiBMA,MAAA,KACA,iBAAA,QACA,aAAA,QAEF,mBAAA,mBAMI,mBAAA,EAAA,EAAA,EAAA,IAAA,mBAAA,WAAA,EAAA,EAAA,EAAA,IAAA,mBAKJ,sBAAA,sBAEE,iBAAA,QACA,aAAA,QAGF,oBAAA,oBAAA,mCAGE,MAAA,KACA,iBAAA,QACA,iBAAA,KACA,aAAA,QDcJ,eChDE,MAAA,QACA,iBAAA,KACA,aAAA,KjBDE,qBiBMA,MAAA,QACA,iBAAA,QACA,aAAA,QAEF,qBAAA,qBAMI,mBAAA,EAAA,EAAA,EAAA,IAAA,qBAAA,WAAA,EAAA,EAAA,EAAA,IAAA,qBAKJ,wBAAA,wBAEE,iBAAA,KACA,aAAA,KAGF,sBAAA,sBAAA,qCAGE,MAAA,QACA,iBAAA,QACA,iBAAA,KACA,aAAA,QDiBJ,UCnDE,MAAA,KACA,iBAAA,QACA,aAAA,QjBDE,gBiBMA,MAAA,KACA,iBAAA,QACA,aAAA,QAEF,gBAAA,gBAMI,mBAAA,EAAA,EAAA,EAAA,IAAA,oBAAA,WAAA,EAAA,EAAA,EAAA,IAAA,oBAKJ,mBAAA,mBAEE,iBAAA,QACA,aAAA,QAGF,iBAAA,iBAAA,gCAGE,MAAA,KACA,iBAAA,QACA,iBAAA,KACA,aAAA,QDoBJ,aCtDE,MAAA,KACA,iBAAA,QACA,aAAA,QjBDE,mBiBMA,MAAA,KACA,iBAAA,QACA,aAAA,QAEF,mBAAA,mBAMI,mBAAA,EAAA,EAAA,EAAA,IAAA,mBAAA,WAAA,EAAA,EAAA,EAAA,IAAA,mBAKJ,sBAAA,sBAEE,iBAAA,QACA,aAAA,QAGF,oBAAA,oBAAA,mCAGE,MAAA,KACA,iBAAA,QACA,iBAAA,KACA,aAAA,QDuBJ,aCzDE,MAAA,KACA,iBAAA,QACA,aAAA,QjBDE,mBiBMA,MAAA,KACA,iBAAA,QACA,aAAA,QAEF,mBAAA,mBAMI,mBAAA,EAAA,EAAA,EAAA,IAAA,oBAAA,WAAA,EAAA,EAAA,EAAA,IAAA,oBAKJ,sBAAA,sBAEE,iBAAA,QACA,aAAA,QAGF,oBAAA,oBAAA,mCAGE,MAAA,KACA,iBAAA,QACA,iBAAA,KACA,aAAA,QD0BJ,YC5DE,MAAA,KACA,iBAAA,QACA,aAAA,QjBDE,kBiBMA,MAAA,KACA,iBAAA,QACA,aAAA,QAEF,kBAAA,kBAMI,mBAAA,EAAA,EAAA,EAAA,IAAA,mBAAA,WAAA,EAAA,EAAA,EAAA,IAAA,mBAKJ,qBAAA,qBAEE,iBAAA,QACA,aAAA,QAGF,mBAAA,mBAAA,kCAGE,MAAA,KACA,iBAAA,QACA,iBAAA,KACA,aAAA,QD+BJ,qBCzBE,MAAA,QACA,iBAAA,KACA,iBAAA,YACA,aAAA,QjB1CE,2BiB6CA,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,2BAAA,2BAEE,mBAAA,EAAA,EAAA,EAAA,IAAA,mBAAA,WAAA,EAAA,EAAA,EAAA,IAAA,mBAGF,8BAAA,8BAEE,MAAA,QACA,iBAAA,YAGF,4BAAA,4BAAA,2CAGE,MAAA,KACA,iBAAA,QACA,aAAA,QDCJ,uBC5BE,MAAA,KACA,iBAAA,KACA,iBAAA,YACA,aAAA,KjB1CE,6BiB6CA,MAAA,KACA,iBAAA,KACA,aAAA,KAGF,6BAAA,6BAEE,mBAAA,EAAA,EAAA,EAAA,IAAA,qBAAA,WAAA,EAAA,EAAA,EAAA,IAAA,qBAGF,gCAAA,gCAEE,MAAA,KACA,iBAAA,YAGF,8BAAA,8BAAA,6CAGE,MAAA,KACA,iBAAA,KACA,aAAA,KDIJ,kBC/BE,MAAA,QACA,iBAAA,KACA,iBAAA,YACA,aAAA,QjB1CE,wBiB6CA,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,wBAAA,wBAEE,mBAAA,EAAA,EAAA,EAAA,IAAA,oBAAA,WAAA,EAAA,EAAA,EAAA,IAAA,oBAGF,2BAAA,2BAEE,MAAA,QACA,iBAAA,YAGF,yBAAA,yBAAA,wCAGE,MAAA,KACA,iBAAA,QACA,aAAA,QDOJ,qBClCE,MAAA,QACA,iBAAA,KACA,iBAAA,YACA,aAAA,QjB1CE,2BiB6CA,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,2BAAA,2BAEE,mBAAA,EAAA,EAAA,EAAA,IAAA,mBAAA,WAAA,EAAA,EAAA,EAAA,IAAA,mBAGF,8BAAA,8BAEE,MAAA,QACA,iBAAA,YAGF,4BAAA,4BAAA,2CAGE,MAAA,KACA,iBAAA,QACA,aAAA,QDUJ,qBCrCE,MAAA,QACA,iBAAA,KACA,iBAAA,YACA,aAAA,QjB1CE,2BiB6CA,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,2BAAA,2BAEE,mBAAA,EAAA,EAAA,EAAA,IAAA,oBAAA,WAAA,EAAA,EAAA,EAAA,IAAA,oBAGF,8BAAA,8BAEE,MAAA,QACA,iBAAA,YAGF,4BAAA,4BAAA,2CAGE,MAAA,KACA,iBAAA,QACA,aAAA,QDaJ,oBCxCE,MAAA,QACA,iBAAA,KACA,iBAAA,YACA,aAAA,QjB1CE,0BiB6CA,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,0BAAA,0BAEE,mBAAA,EAAA,EAAA,EAAA,IAAA,mBAAA,WAAA,EAAA,EAAA,EAAA,IAAA,mBAGF,6BAAA,6BAEE,MAAA,QACA,iBAAA,YAGF,2BAAA,2BAAA,0CAGE,MAAA,KACA,iBAAA,QACA,aAAA,QDuBJ,UACE,YAAA,IACA,MAAA,QACA,cAAA,EAHF,UAA6B,iBAAlB,iBAAoC,mBAS3C,iBAAA,YATJ,UAA4B,iBAAjB,gBAeP,aAAA,YhBxGA,gBgB2GA,aAAA,YhBjGA,gBAAA,gBgBoGA,MAAA,QACA,gBAAA,UACA,iBAAA,YAvBJ,mBA0BI,MAAA,QhBzGA,yBAAA,yBgB4GE,gBAAA,KAUG,mBAAT,QCxDE,QAAA,OAAA,OACA,UAAA,QZ/EE,cAAA,MW0IK,mBAAT,QC5DE,QAAA,OAAA,MACA,UAAA,QZ/EE,cAAA,MWoJJ,WACE,QAAA,MACA,MAAA,KAIF,sBACE,WAAA,MAIF,6BAAA,4BAAA,6BAII,MAAA,KEvKJ,MACE,QAAA,EZcI,mBAAA,QAAA,KAAA,OAAA,cAAA,QAAA,KAAA,OAAA,WAAA,QAAA,KAAA,OYfN,WAKI,QAAA,EAIJ,UACE,QAAA,KADF,eAGI,QAAA,MAIJ,iBAEI,QAAA,UAIJ,oBAEI,QAAA,gBAIJ,YACE,SAAA,SACA,OAAA,EACA,SAAA,OZhBI,mBAAA,OAAA,KAAA,KAAA,cAAA,OAAA,KAAA,KAAA,WAAA,OAAA,KAAA,KadN,UAAA,QAEE,SAAA,SAGF,wBAGI,QAAA,aACA,MAAA,EACA,OAAA,EACA,YAAA,KACA,eAAA,OACA,QAAW,GACX,WAAA,KAAA,MACA,aAAA,KAAA,MAAA,YACA,YAAA,KAAA,MAAA,YAXJ,uBAgBI,QAAA,EAIJ,gCAGM,WAAA,EACA,cAAA,KAAA,MAMN,eACE,SAAA,SACA,IAAA,KACA,KAAA,EACA,QAAA,KACA,QAAA,KACA,MAAA,KACA,UAAA,MACA,QAAA,MAAA,EACA,OAAA,QAAA,EAAA,EACA,UAAA,KACA,MAAA,QACA,WAAA,KACA,WAAA,KACA,iBAAA,KACA,wBAAA,YAAA,gBAAA,YACA,OAAA,IAAA,MAAA,gBdhDE,cAAA,OcsDJ,kBCrDE,OAAA,IACA,OAAA,MAAA,EACA,SAAA,OACA,iBAAA,QDyDF,eACE,QAAA,MACA,MAAA,KACA,QAAA,IAAA,OACA,MAAA,KACA,YAAA,IACA,MAAA,QACA,WAAA,QACA,YAAA,OACA,WAAA,IACA,OAAA,EnBvDE,qBAAA,qBmB0DA,MAAA,QACA,gBAAA,KACA,iBAAA,QAfJ,sBAAuB,sBAoBnB,MAAA,KACA,gBAAA,KACA,iBAAA,QAtBJ,wBAAyB,wBA2BrB,MAAA,QACA,OAAA,YACA,iBAAA,YASJ,qBAGI,QAAA,MAHJ,QAQI,QAAA,EAQJ,qBACE,MAAA,EACA,KAAA,KAGF,oBACE,MAAA,KACA,KAAA,EAIF,iBACE,QAAA,MACA,QAAA,MAAA,OACA,cAAA,EACA,UAAA,QACA,MAAA,QACA,YAAA,OAIF,mBACE,SAAA,MACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,IAOF,uBAGI,IAAA,KACA,OAAA,KACA,cAAA,QE3JJ,WAAA,oBAEE,SAAA,SACA,QAAA,mBAAA,QAAA,oBAAA,QAAA,mBAAA,QAAA,YACA,eAAA,OAJF,yBAAA,gBAOI,SAAA,SACA,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KARJ,+BAAA,sBAaM,QAAA,EAbN,gCAAA,gCAAA,+BAAmD,uBAA1B,uBAAzB,sBAkBM,QAAA,EAlBN,qBAAA,2BAAA,2BAAA,iCAAA,8BAAA,oCAAA,oCAAA,0CA2BI,YAAA,KAKJ,aACE,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,iBAAA,MAAA,wBAAA,WAAA,cAAA,MAAA,gBAAA,WAFF,0BAKI,MAAA,KAIJ,yEACE,cAAA,EAIF,4BACE,YAAA,EADF,mEhBhCI,2BAAA,EACA,wBAAA,EgBuCJ,6CAAA,8ChB1BI,0BAAA,EACA,uBAAA,EgB+BJ,sBACE,MAAA,KAEF,8DACE,cAAA,EAEF,mEAAA,oEhBpDI,2BAAA,EACA,wBAAA,EgByDJ,oEhB5CI,0BAAA,EACA,uBAAA,EgBgDJ,mCAAA,iCAEE,QAAA,EAgBF,4BACE,cAAA,OACA,aAAA,OAFF,mCAKI,YAAA,EAI8B,0CAAlC,+BACE,cAAA,QACA,aAAA,QAGgC,0CAAlC,+BACE,cAAA,SACA,aAAA,SAoBF,oBACE,QAAA,mBAAA,QAAA,oBAAA,QAAA,mBAAA,QAAA,YACA,mBAAA,SAAA,sBAAA,OAAA,uBAAA,OAAA,mBAAA,OAAA,eAAA,OACA,kBAAA,MAAA,oBAAA,WAAA,eAAA,MAAA,YAAA,WACA,iBAAA,OAAA,wBAAA,OAAA,cAAA,OAAA,gBAAA,OAJF,yBAAA,+BAQI,MAAA,KARJ,8BAAA,oCAAA,oCAAA,0CAeI,WAAA,KACA,YAAA,EAIJ,4DAEI,cAAA,EAFJ,sDhBlII,2BAAA,EACA,0BAAA,EgBiIJ,sDhBhJI,wBAAA,EACA,uBAAA,EgB0JJ,uEACE,cAAA,EAEF,4EAAA,6EhBhJI,2BAAA,EACA,0BAAA,EgBqJJ,6EhBpKI,wBAAA,EACA,uBAAA,ET0gGJ,gDAAA,6CAAA,2DAAA,wDyBj1FM,SAAA,SACA,KAAA,cACA,eAAA,KClMN,aACE,SAAA,SACA,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,MAAA,KAHF,2BAQI,SAAA,SACA,QAAA,EACA,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAGA,MAAA,GACA,cAAA,EAd8B,kCAAlC,iCAAqE,iCAkB/D,QAAA,EAKN,2BAAA,mBAAA,iBAIE,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,mBAAA,SAAA,sBAAA,OAAA,uBAAA,OAAA,mBAAA,OAAA,eAAA,OACA,iBAAA,OAAA,wBAAA,OAAA,cAAA,OAAA,gBAAA,OANF,8DAAA,sDAAA,oDjBvBI,cAAA,EiBoCJ,mBAAA,iBAEE,YAAA,OACA,eAAA,OAyBF,mBACE,QAAA,MAAA,OACA,cAAA,EACA,UAAA,KACA,YAAA,IACA,YAAA,KACA,MAAA,QACA,WAAA,OACA,iBAAA,QACA,OAAA,IAAA,MAAA,gBjBzEE,cAAA,OiBgEJ,mCAAA,mCAAA,wDAcI,QAAA,OAAA,MACA,UAAA,QjB/EA,cAAA,MiBgEJ,mCAAA,mCAAA,wDAmBI,QAAA,OAAA,OACA,UAAA,QjBpFA,cAAA,MiBgEJ,wCAAA,qCA4BI,WAAA,EAUJ,4CAAA,oCAAA,oEAAA,+EAAA,uCAAA,kDAAA,mDjBzFI,2BAAA,EACA,wBAAA,EiBiGJ,oCACE,aAAA,EAEF,6CAAA,qCAAA,wCAAA,mDAAA,oDAAA,oEAAA,yDjBvFI,0BAAA,EACA,uBAAA,EiB+FJ,mDACE,YAAA,EAOF,iBACE,SAAA,SAGA,UAAA,EACA,YAAA,OALF,sBAUI,SAAA,SAEA,iBAAA,EAAA,aAAA,EAAA,EAAA,GAAA,SAAA,EAAA,EAAA,GAAA,KAAA,EAAA,EAAA,GAZJ,2BAeM,YAAA,KAfyB,6BAA/B,4BAA+D,4BAoBzD,QAAA,EApBN,uCAAA,6CA4BM,aAAA,KA5BN,wCAAA,8CAkCM,QAAA,EACA,YAAA,KAnCN,qDAAA,oDAAA,oDAAiD,+CAAjD,8CAAmG,8CAsC3F,QAAA,EClKR,gBACE,SAAA,SACA,QAAA,mBAAA,QAAA,oBAAA,QAAA,mBAAA,QAAA,YACA,WAAA,OACA,aAAA,OACA,aAAA,KACA,OAAA,QAGF,sBACE,SAAA,SACA,QAAA,GACA,QAAA,EAHF,wDAMI,MAAA,KACA,iBAAA,QAPJ,sDAaI,mBAAA,EAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,EAAA,IAAA,QAAA,WAAA,EAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,EAAA,IAAA,QAbJ,uDAiBI,MAAA,KACA,iBAAA,QAlBJ,yDAwBM,OAAA,YACA,iBAAA,QAzBN,2DA6BM,MAAA,QACA,OAAA,YASN,0BACE,SAAA,SACA,IAAA,OACA,KAAA,EACA,QAAA,MACA,MAAA,KACA,OAAA,KACA,eAAA,KACA,oBAAA,KAAA,iBAAA,KAAA,gBAAA,KAAA,YAAA,KACA,iBAAA,KACA,kBAAA,UACA,oBAAA,OAAA,OACA,wBAAA,IAAA,IAAA,gBAAA,IAAA,IAQF,2ClB3EI,cAAA,OkB2EJ,yEAMI,iBAAA,yMANJ,+EAUI,iBAAA,QACA,iBAAA,sJASJ,wCAEI,cAAA,IAFJ,sEAMI,iBAAA,mJAUJ,yBACE,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,mBAAA,SAAA,sBAAA,OAAA,uBAAA,OAAA,mBAAA,OAAA,eAAA,OAFF,yCAKI,cAAA,OALJ,yDAQM,YAAA,EAYN,eACE,QAAA,aACA,UAAA,KAEA,OAAA,oBACA,QAAA,QAAA,QAAA,QAAA,OACA,YAAA,KACA,MAAA,QACA,eAAA,OACA,WAAA,KAAA,oKAAA,UAAA,MAAA,OAAA,OACA,wBAAA,IAAA,KAAA,gBAAA,IAAA,KACA,OAAA,IAAA,MAAA,gBlB9IE,cAAA,OkBiJF,gBAAA,KACA,mBAAA,KAfF,qBAkBI,aAAA,QACA,QAAA,EAnBJ,gCA4BM,MAAA,QACA,iBAAA,KA7BN,wBAkCI,MAAA,QACA,OAAA,YACA,iBAAA,QApCJ,2BAyCI,QAAA,EAIJ,kBACE,YAAA,QACA,eAAA,QACA,UAAA,IAaF,aACE,SAAA,SACA,QAAA,aACA,UAAA,KACA,OAAA,OACA,cAAA,EACA,OAAA,QAGF,mBACE,UAAA,MACA,UAAA,KACA,OAAA,OACA,OAAA,EACA,OAAA,iBACA,QAAA,EAOF,qBACE,SAAA,SACA,IAAA,EACA,MAAA,EACA,KAAA,EACA,QAAA,EACA,OAAA,OACA,QAAA,MAAA,KACA,YAAA,IACA,MAAA,QACA,eAAA,KACA,oBAAA,KAAA,iBAAA,KAAA,gBAAA,KAAA,YAAA,KACA,iBAAA,KACA,OAAA,IAAA,MAAA,gBlBnOE,cAAA,OkBsNJ,qCAmBM,QxB8SkB,iBwBjUxB,6BAwBI,SAAA,SACA,IAAA,KACA,MAAA,KACA,OAAA,KACA,QAAA,EACA,QAAA,MACA,OAAA,OACA,QAAA,MAAA,KACA,YAAA,IACA,MAAA,QACA,iBAAA,QACA,OAAA,IAAA,MAAA,gBlBzPA,cAAA,EAAA,OAAA,OAAA,EkBsNJ,sCAyCM,QxB2RU,SyBzhBhB,KACE,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,aAAA,EACA,cAAA,EACA,WAAA,KAGF,UACE,QAAA,MACA,QAAA,KAAA,IxBME,gBAAA,gBwBHA,gBAAA,KALJ,mBAUI,MAAA,QACA,OAAA,YASJ,UACE,cAAA,IAAA,MAAA,KADF,oBAII,cAAA,KAJJ,oBAQI,OAAA,IAAA,MAAA,YnB9BA,wBAAA,OACA,uBAAA,OmBqBJ,0BAA2B,0BAYrB,aAAA,QAAA,QAAA,KAZN,6BAgBM,MAAA,QACA,iBAAA,YACA,aAAA,YAlBN,mCAAA,2BAwBI,MAAA,QACA,iBAAA,KACA,aAAA,KAAA,KAAA,KA1BJ,yBA+BI,WAAA,KnBrDA,wBAAA,EACA,uBAAA,EmB+DJ,qBnBtEI,cAAA,OmBsEJ,oCAAA,4BAOI,MAAA,KACA,OAAA,QACA,iBAAA,QASJ,oBAEI,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,WAAA,OAIJ,yBAEI,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,WAAA,OASJ,uBAEI,QAAA,KAFJ,qBAKI,QAAA,MCnGJ,QACE,SAAA,SACA,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,mBAAA,SAAA,sBAAA,OAAA,uBAAA,OAAA,mBAAA,OAAA,eAAA,OACA,QAAA,MAAA,KAQF,cACE,QAAA,aACA,YAAA,OACA,eAAA,OACA,aAAA,KACA,UAAA,QACA,YAAA,QACA,YAAA,OzBhBE,oBAAA,oByBmBA,gBAAA,KASJ,YACE,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,mBAAA,SAAA,sBAAA,OAAA,uBAAA,OAAA,mBAAA,OAAA,eAAA,OACA,aAAA,EACA,cAAA,EACA,WAAA,KALF,sBAQI,cAAA,EACA,aAAA,EASJ,aACE,QAAA,aACA,YAAA,QACA,eAAA,QAUF,gBACE,mBAAA,WAAA,oBAAA,MAAA,WAAA,WACA,QAAA,OAAA,OACA,UAAA,QACA,YAAA,EACA,WAAA,IACA,OAAA,IAAA,MAAA,YpBjFE,cAAA,OLgBA,sBAAA,sByBqEA,gBAAA,KAMJ,qBACE,QAAA,aACA,MAAA,MACA,OAAA,MACA,eAAA,OACA,QAAW,GACX,WAAA,UAAA,OAAA,OACA,wBAAA,KAAA,KAAA,gBAAA,KAAA,KAKF,qBACE,SAAA,SACA,KAAA,KAEF,sBACE,SAAA,SACA,MAAA,Kf5CE,yBeiDF,8CASU,SAAA,OACA,MAAA,KAVV,8BAeQ,cAAA,EACA,aAAA,Gf9EN,yBe8DF,mBAqBM,mBAAA,WAAA,sBAAA,OAAA,uBAAA,IAAA,mBAAA,IAAA,eAAA,IACA,kBAAA,OAAA,cAAA,OAAA,UAAA,OACA,kBAAA,OAAA,oBAAA,OAAA,eAAA,OAAA,YAAA,OAvBN,+BA0BQ,mBAAA,WAAA,sBAAA,OAAA,uBAAA,IAAA,mBAAA,IAAA,eAAA,IA1BR,yCA6BU,cAAA,MACA,aAAA,MA9BV,8BAoCQ,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,kBAAA,OAAA,cAAA,OAAA,UAAA,OACA,kBAAA,OAAA,oBAAA,OAAA,eAAA,OAAA,YAAA,OAtCR,oCA2CQ,QAAA,sBAAA,QAAA,uBAAA,QAAA,sBAAA,QAAA,eACA,MAAA,KA5CR,mCAiDQ,QAAA,MflGN,yBesDA,iDAIQ,SAAA,OACA,MAAA,KALR,iCAUM,cAAA,EACA,aAAA,Gf9EN,yBemEA,sBAgBI,mBAAA,WAAA,sBAAA,OAAA,uBAAA,IAAA,mBAAA,IAAA,eAAA,IACA,kBAAA,OAAA,cAAA,OAAA,UAAA,OACA,kBAAA,OAAA,oBAAA,OAAA,eAAA,OAAA,YAAA,OAlBJ,kCAqBM,mBAAA,WAAA,sBAAA,OAAA,uBAAA,IAAA,mBAAA,IAAA,eAAA,IArBN,4CAwBQ,cAAA,MACA,aAAA,MAzBR,iCA+BM,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,kBAAA,OAAA,cAAA,OAAA,UAAA,OACA,kBAAA,OAAA,oBAAA,OAAA,eAAA,OAAA,YAAA,OAjCN,uCAsCM,QAAA,sBAAA,QAAA,uBAAA,QAAA,sBAAA,QAAA,eACA,MAAA,KAvCN,sCA4CM,QAAA,MflGN,yBesDA,iDAIQ,SAAA,OACA,MAAA,KALR,iCAUM,cAAA,EACA,aAAA,Gf9EN,yBemEA,sBAgBI,mBAAA,WAAA,sBAAA,OAAA,uBAAA,IAAA,mBAAA,IAAA,eAAA,IACA,kBAAA,OAAA,cAAA,OAAA,UAAA,OACA,kBAAA,OAAA,oBAAA,OAAA,eAAA,OAAA,YAAA,OAlBJ,kCAqBM,mBAAA,WAAA,sBAAA,OAAA,uBAAA,IAAA,mBAAA,IAAA,eAAA,IArBN,4CAwBQ,cAAA,MACA,aAAA,MAzBR,iCA+BM,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,kBAAA,OAAA,cAAA,OAAA,UAAA,OACA,kBAAA,OAAA,oBAAA,OAAA,eAAA,OAAA,YAAA,OAjCN,uCAsCM,QAAA,sBAAA,QAAA,uBAAA,QAAA,sBAAA,QAAA,eACA,MAAA,KAvCN,sCA4CM,QAAA,MflGN,0BesDA,iDAIQ,SAAA,OACA,MAAA,KALR,iCAUM,cAAA,EACA,aAAA,Gf9EN,0BemEA,sBAgBI,mBAAA,WAAA,sBAAA,OAAA,uBAAA,IAAA,mBAAA,IAAA,eAAA,IACA,kBAAA,OAAA,cAAA,OAAA,UAAA,OACA,kBAAA,OAAA,oBAAA,OAAA,eAAA,OAAA,YAAA,OAlBJ,kCAqBM,mBAAA,WAAA,sBAAA,OAAA,uBAAA,IAAA,mBAAA,IAAA,eAAA,IArBN,4CAwBQ,cAAA,MACA,aAAA,MAzBR,iCA+BM,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,kBAAA,OAAA,cAAA,OAAA,UAAA,OACA,kBAAA,OAAA,oBAAA,OAAA,eAAA,OAAA,YAAA,OAjCN,uCAsCM,QAAA,sBAAA,QAAA,uBAAA,QAAA,sBAAA,QAAA,eACA,MAAA,KAvCN,sCA4CM,QAAA,MA5CN,sBAgBI,mBAAA,WAAA,sBAAA,OAAA,uBAAA,IAAA,mBAAA,IAAA,eAAA,IACA,kBAAA,OAAA,cAAA,OAAA,UAAA,OACA,kBAAA,OAAA,oBAAA,OAAA,eAAA,OAAA,YAAA,OAlBJ,iDAIQ,SAAA,OACA,MAAA,KALR,iCAUM,cAAA,EACA,aAAA,EAXN,kCAqBM,mBAAA,WAAA,sBAAA,OAAA,uBAAA,IAAA,mBAAA,IAAA,eAAA,IArBN,4CAwBQ,cAAA,MACA,aAAA,MAzBR,iCA+BM,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,kBAAA,OAAA,cAAA,OAAA,UAAA,OACA,kBAAA,OAAA,oBAAA,OAAA,eAAA,OAAA,YAAA,OAjCN,uCAsCM,QAAA,sBAAA,QAAA,uBAAA,QAAA,sBAAA,QAAA,eACA,MAAA,KAvCN,sCA4CM,QAAA,KAaV,4BAAA,8BAGI,MAAA,eAHJ,kCAAmC,kCAAnC,oCAAA,oCAMM,MAAA,eANN,oCAYM,MAAA,eAZN,0CAA2C,0CAenC,MAAA,eAfR,6CAmBQ,MAAA,eAnBR,4CAAA,2CAAA,yCAAA,0CA2BM,MAAA,eA3BN,8BAgCI,aAAA,eAhCJ,mCAoCI,iBAAA,oPApCJ,2BAwCI,MAAA,eAKJ,8BAAA,gCAGI,MAAA,KAHJ,oCAAqC,oCAArC,sCAAA,sCAMM,MAAA,KANN,sCAYM,MAAA,qBAZN,4CAA6C,4CAerC,MAAA,sBAfR,+CAmBQ,MAAA,sBAnBR,8CAAA,6CAAA,2CAAA,4CA2BM,MAAA,KA3BN,gCAgCI,aAAA,qBAhCJ,qCAoCI,iBAAA,0PApCJ,6BAwCI,MAAA,qBCrQJ,MACE,SAAA,SACA,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,mBAAA,SAAA,sBAAA,OAAA,uBAAA,OAAA,mBAAA,OAAA,eAAA,OACA,iBAAA,KACA,OAAA,IAAA,MAAA,iBrBLE,cAAA,OqBSJ,YAGE,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,QAAA,QAGF,YACE,cAAA,OAGF,eACE,WAAA,SACA,cAAA,EAGF,sBACE,cAAA,E1BpBE,iB0ByBA,gBAAA,KAFJ,sBAMI,YAAA,QAIJ,2DrBjCI,wBAAA,OACA,uBAAA,OqBgCJ,yDrBnBI,2BAAA,OACA,0BAAA,OqBqCJ,aACE,QAAA,OAAA,QACA,cAAA,EACA,iBAAA,QACA,cAAA,IAAA,MAAA,iBAJF,yBrB1DI,cAAA,mBAAA,mBAAA,EAAA,EqBqEJ,aACE,QAAA,OAAA,QACA,iBAAA,QACA,WAAA,IAAA,MAAA,iBAHF,wBrBrEI,cAAA,EAAA,EAAA,mBAAA,mBqBoFJ,kBACE,aAAA,SACA,cAAA,QACA,YAAA,SACA,cAAA,EAGF,mBACE,aAAA,SACA,YAAA,SAQF,cCtGE,iBAAA,QACA,aAAA,QAEA,2BAAA,2BAEE,iBAAA,YDoGJ,cCzGE,iBAAA,QACA,aAAA,QAEA,2BAAA,2BAEE,iBAAA,YDuGJ,WC5GE,iBAAA,QACA,aAAA,QAEA,wBAAA,wBAEE,iBAAA,YD0GJ,cC/GE,iBAAA,QACA,aAAA,QAEA,2BAAA,2BAEE,iBAAA,YD6GJ,aClHE,iBAAA,QACA,aAAA,QAEA,0BAAA,0BAEE,iBAAA,YDkHJ,sBC7GE,iBAAA,YACA,aAAA,QD+GF,wBChHE,iBAAA,YACA,aAAA,KDkHF,mBCnHE,iBAAA,YACA,aAAA,QDqHF,sBCtHE,iBAAA,YACA,aAAA,QDwHF,sBCzHE,iBAAA,YACA,aAAA,QD2HF,qBC5HE,iBAAA,YACA,aAAA,QDmIF,cC3HE,MAAA,sBAEA,2BAAA,2BAEE,iBAAA,YACA,aAAA,qBAEF,+BAAA,2BAAA,2BAAA,0BAIE,MAAA,KAEF,kDAAA,yBAAA,6BAAA,yBAIE,MAAA,sBAEF,+BAAA,+BAEI,MAAA,KD8GN,iBACE,QAAA,EACA,cAAA,EACA,YAAA,EAIF,UrB5JI,cAAA,mBqBgKJ,kBACE,SAAA,SACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,QAMF,crBtKI,wBAAA,mBACA,uBAAA,mBqBwKJ,iBrB3JI,2BAAA,mBACA,0BAAA,mBK+BA,yBgBmIF,WACE,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,kBAAA,IAAA,KAAA,cAAA,IAAA,KAAA,UAAA,IAAA,KAFF,iBAKI,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,iBAAA,EAAA,aAAA,EAAA,EAAA,GAAA,SAAA,EAAA,EAAA,GAAA,KAAA,EAAA,EAAA,GACA,mBAAA,SAAA,sBAAA,OAAA,uBAAA,OAAA,mBAAA,OAAA,eAAA,OAPJ,mCAY0B,YAAA,KAZ1B,kCAayB,aAAA,MhBhJvB,yBgB2JF,YACE,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,kBAAA,IAAA,KAAA,cAAA,IAAA,KAAA,UAAA,IAAA,KAFF,kBAKI,iBAAA,EAAA,aAAA,EAAA,EAAA,GAAA,SAAA,EAAA,EAAA,GAAA,KAAA,EAAA,EAAA,GALJ,wBAQM,YAAA,EACA,YAAA,EATN,8BrBlME,2BAAA,EACA,wBAAA,EqBiMF,4CAkBU,wBAAA,EAlBV,+CAqBU,2BAAA,EArBV,6BrBpLE,0BAAA,EACA,uBAAA,EqBmLF,2CA4BU,uBAAA,EA5BV,8CA+BU,0BAAA,EA/BV,qDAoCQ,cAAA,EApCR,sEAAA,mEAwCU,cAAA,GhBnMR,yBgBiNF,cACE,qBAAA,EAAA,kBAAA,EAAA,aAAA,EACA,mBAAA,QAAA,gBAAA,QAAA,WAAA,QAFF,oBAKI,QAAA,aACA,MAAA,KACA,cAAA,QEhRN,YACE,QAAA,OAAA,KACA,cAAA,KACA,WAAA,KACA,iBAAA,QvBAE,cAAA,OwBHF,mBACE,QAAA,MACA,QAAW,GACX,MAAA,KDKJ,iBACE,MAAA,KADF,0CAKI,QAAA,aACA,cAAA,MACA,aAAA,MACA,MAAA,QACA,QAAiC,IATrC,gDAmBI,gBAAA,UAnBJ,gDAsBI,gBAAA,KAtBJ,wBA0BI,MAAA,QEnCJ,YACE,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KAEA,aAAA,EACA,WAAA,KzBAE,cAAA,OyBIJ,kCAGM,YAAA,EzBoBF,0BAAA,OACA,uBAAA,OyBxBJ,iCzBSI,2BAAA,OACA,wBAAA,OyBVJ,6BAcI,QAAA,EACA,MAAA,KACA,iBAAA,QACA,aAAA,QAjBJ,+BAqBI,MAAA,QACA,eAAA,KACA,OAAA,YACA,iBAAA,KACA,aAAA,KAIJ,WACE,SAAA,SACA,QAAA,MACA,QAAA,MAAA,OACA,YAAA,KACA,YAAA,KACA,MAAA,QACA,iBAAA,KACA,OAAA,IAAA,MAAA,K9BzBE,iBAAA,iB8B4BA,MAAA,QACA,gBAAA,KACA,iBAAA,QACA,aAAA,KChDF,0BACE,QAAA,OAAA,OACA,UAAA,QAKE,iD1BqBF,0BAAA,MACA,uBAAA,M0BjBE,gD1BEF,2BAAA,MACA,wBAAA,M0BfF,0BACE,QAAA,OAAA,MACA,UAAA,QAKE,iD1BqBF,0BAAA,MACA,uBAAA,M0BjBE,gD1BEF,2BAAA,MACA,wBAAA,M2BbJ,OACE,QAAA,aACA,QAAA,MAAA,KACA,UAAA,IACA,YAAA,IACA,YAAA,EACA,MAAA,KACA,WAAA,OACA,YAAA,OACA,eAAA,S3BVE,cAAA,O2BCJ,aAcI,QAAA,KAKJ,YACE,SAAA,SACA,IAAA,KhCNE,cAAA,cgCaA,MAAA,KACA,gBAAA,KACA,OAAA,QASJ,YACE,cAAA,KACA,aAAA,K3B1CE,cAAA,M2BkDJ,eCnDE,iBAAA,QjCiBE,2BAAA,2BiCbE,iBAAA,QDmDN,eCvDE,iBAAA,QjCiBE,2BAAA,2BiCbE,iBAAA,QDuDN,eC3DE,iBAAA,QjCiBE,2BAAA,2BiCbE,iBAAA,QD2DN,YC/DE,iBAAA,QjCiBE,wBAAA,wBiCbE,iBAAA,QD+DN,eCnEE,iBAAA,QjCiBE,2BAAA,2BiCbE,iBAAA,QDmEN,cCvEE,iBAAA,QjCiBE,0BAAA,0BiCbE,iBAAA,QCPN,WACE,QAAA,KAAA,KACA,cAAA,KACA,iBAAA,Q7BCE,cAAA,MKoDA,yBwBxDF,WAOE,QAAA,KAAA,MAIJ,cACE,iBAAA,QAGF,iBACE,cAAA,EACA,aAAA,E7BbE,cAAA,E8BAJ,OACE,QAAA,OAAA,QACA,cAAA,KACA,OAAA,IAAA,MAAA,Y9BHE,cAAA,O8BQJ,eAEE,MAAA,QAIF,YACE,YAAA,IAQF,0BAGI,SAAA,SACA,IAAA,QACA,MAAA,SACA,QAAA,OAAA,QACA,MAAA,QASJ,eCxCE,iBAAA,QACA,aAAA,QACA,MAAA,QAEA,kBACE,iBAAA,QAEF,2BACE,MAAA,QDmCJ,YC3CE,iBAAA,QACA,aAAA,QACA,MAAA,QAEA,eACE,iBAAA,QAEF,wBACE,MAAA,QDsCJ,eC9CE,iBAAA,QACA,aAAA,QACA,MAAA,QAEA,kBACE,iBAAA,QAEF,2BACE,MAAA,QDyCJ,cCjDE,iBAAA,QACA,aAAA,QACA,MAAA,QAEA,iBACE,iBAAA,QAEF,0BACE,MAAA,QCVJ,wCACE,KAAO,oBAAA,KAAA,EACP,GAAK,oBAAA,EAAA,GAFP,mCACE,KAAO,oBAAA,KAAA,EACP,GAAK,oBAAA,EAAA,GAFP,gCACE,KAAO,oBAAA,KAAA,EACP,GAAK,oBAAA,EAAA,GAIP,UACE,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,SAAA,OACA,UAAA,OACA,YAAA,KACA,WAAA,OACA,iBAAA,QhCTE,cAAA,OgCYJ,cACE,OAAA,KACA,MAAA,KACA,iBAAA,QAIF,sBCYE,iBAAA,yKAAA,iBAAA,oKAAA,iBAAA,iKDVA,wBAAA,KAAA,KAAA,gBAAA,KAAA,KAIF,uBACE,kBAAA,qBAAA,GAAA,OAAA,SAAA,aAAA,qBAAA,GAAA,OAAA,SAAA,UAAA,qBAAA,GAAA,OAAA,SE9BF,OACE,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,kBAAA,MAAA,oBAAA,WAAA,eAAA,MAAA,YAAA,WAGF,YACE,iBAAA,EAAA,aAAA,EAAA,EAAA,GAAA,SAAA,EAAA,EAAA,GAAA,KAAA,EAAA,EAAA,GCFF,YACE,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,mBAAA,SAAA,sBAAA,OAAA,uBAAA,OAAA,mBAAA,OAAA,eAAA,OAGA,aAAA,EACA,cAAA,EASF,wBACE,MAAA,KACA,MAAA,QACA,WAAA,QAHF,iDAMI,MAAA,QxCLA,8BAAA,8BwCUA,MAAA,QACA,gBAAA,KACA,iBAAA,QAbJ,+BAiBI,MAAA,QACA,iBAAA,QASJ,iBACE,SAAA,SACA,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,kBAAA,IAAA,KAAA,cAAA,IAAA,KAAA,UAAA,IAAA,KACA,kBAAA,OAAA,oBAAA,OAAA,eAAA,OAAA,YAAA,OACA,QAAA,OAAA,QAEA,cAAA,KACA,iBAAA,KACA,OAAA,IAAA,MAAA,iBATF,6BnCpCI,wBAAA,OACA,uBAAA,OmCmCJ,4BAgBI,cAAA,EnCtCA,2BAAA,OACA,0BAAA,OLLA,uBAAA,uBwC+CA,gBAAA,KArBJ,0BAA2B,0BA0BvB,MAAA,QACA,OAAA,YACA,iBAAA,KA5BJ,mDAAoD,mDAgC9C,MAAA,QAhCN,gDAAiD,gDAmC3C,MAAA,QAnCN,wBAyCI,QAAA,EACA,MAAA,KACA,iBAAA,QACA,aAAA,QA5CJ,iDAAA,wDAAA,uDAkDM,MAAA,QAlDN,8CAsDM,MAAA,QAWN,mCAEI,aAAA,EACA,YAAA,EACA,cAAA,EAJJ,2DASM,WAAA,EATN,yDAeM,cAAA,EC3HJ,yBACE,MAAA,QACA,iBAAA,QAGF,0BAAA,+BACE,MAAA,QADF,mDAAA,wDAII,MAAA,QzCQF,gCAAA,gCAAA,qCAAA,qCyCJE,MAAA,QACA,iBAAA,QATJ,iCAAA,sCAaI,MAAA,KACA,iBAAA,QACA,aAAA,QApBJ,sBACE,MAAA,QACA,iBAAA,QAGF,uBAAA,4BACE,MAAA,QADF,gDAAA,qDAII,MAAA,QzCQF,6BAAA,6BAAA,kCAAA,kCyCJE,MAAA,QACA,iBAAA,QATJ,8BAAA,mCAaI,MAAA,KACA,iBAAA,QACA,aAAA,QApBJ,yBACE,MAAA,QACA,iBAAA,QAGF,0BAAA,+BACE,MAAA,QADF,mDAAA,wDAII,MAAA,QzCQF,gCAAA,gCAAA,qCAAA,qCyCJE,MAAA,QACA,iBAAA,QATJ,iCAAA,sCAaI,MAAA,KACA,iBAAA,QACA,aAAA,QApBJ,wBACE,MAAA,QACA,iBAAA,QAGF,yBAAA,8BACE,MAAA,QADF,kDAAA,uDAII,MAAA,QzCQF,+BAAA,+BAAA,oCAAA,oCyCJE,MAAA,QACA,iBAAA,QATJ,gCAAA,qCAaI,MAAA,KACA,iBAAA,QACA,aAAA,QCrBN,kBACE,SAAA,SACA,QAAA,MACA,MAAA,KACA,QAAA,EACA,SAAA,OALF,0BAQI,QAAA,MACA,QAAW,GATf,yCAAA,wBAAA,yBAAA,yBAAA,wBAiBI,SAAA,SACA,IAAA,EACA,OAAA,EACA,KAAA,EACA,MAAA,KACA,OAAA,KACA,OAAA,EAIJ,gCAEI,YAAA,WAIJ,gCAEI,YAAA,OAIJ,+BAEI,YAAA,IAIJ,+BAEI,YAAA,KCjDJ,OACE,MAAA,MACA,UAAA,OACA,YAAA,IACA,YAAA,EACA,MAAA,KACA,YAAA,EAAA,IAAA,EAAA,KACA,QAAA,G3CaE,aAAA,a2CVA,MAAA,KACA,gBAAA,KACA,OAAA,QACA,QAAA,IAUJ,aACE,QAAA,EACA,OAAA,QACA,WAAA,IACA,OAAA,EACA,mBAAA,KCrBF,YACE,SAAA,OAIF,OACE,SAAA,MACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,KACA,QAAA,KACA,SAAA,OAGA,QAAA,EAXF,0BtCGM,mBAAA,kBAAA,IAAA,SAAA,WAAA,kBAAA,IAAA,SAAA,cAAA,aAAA,IAAA,SAAA,WAAA,UAAA,IAAA,SAAA,WAAA,UAAA,IAAA,SAAA,kBAAA,IAAA,SAAA,aAAA,IAAA,SsCgBF,kBAAA,kBAAA,aAAA,kBAAA,UAAA,kBAnBJ,0BAqByB,kBAAA,eAAA,aAAA,eAAA,UAAA,eAEzB,mBACE,WAAA,OACA,WAAA,KAIF,cACE,SAAA,SACA,MAAA,KACA,OAAA,KAIF,eACE,SAAA,SACA,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,mBAAA,SAAA,sBAAA,OAAA,uBAAA,OAAA,mBAAA,OAAA,eAAA,OACA,iBAAA,KACA,wBAAA,YAAA,gBAAA,YACA,OAAA,IAAA,MAAA,evClDE,cAAA,MuCsDF,QAAA,EAIF,gBACE,SAAA,MACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,KACA,iBAAA,KAPF,qBAUW,QAAA,EAVX,qBAWW,QAAA,GAKX,cACE,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,kBAAA,OAAA,oBAAA,OAAA,eAAA,OAAA,YAAA,OACA,iBAAA,QAAA,wBAAA,cAAA,cAAA,QAAA,gBAAA,cACA,QAAA,KACA,cAAA,IAAA,MAAA,QAIF,aACE,cAAA,EACA,YAAA,IAKF,YACE,SAAA,SAGA,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,QAAA,KAIF,cACE,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,kBAAA,OAAA,oBAAA,OAAA,eAAA,OAAA,YAAA,OACA,iBAAA,IAAA,wBAAA,SAAA,cAAA,IAAA,gBAAA,SACA,QAAA,KACA,WAAA,IAAA,MAAA,QALF,iCAQyB,YAAA,OARzB,gCASwB,aAAA,OAIxB,yBACE,SAAA,SACA,IAAA,QACA,MAAA,KACA,OAAA,KACA,SAAA,OlCjEE,yBkCuEF,cACE,UAAA,MACA,OAAA,KAAA,KAOF,UAAY,UAAA,OlChFV,yBkCoFF,UAAY,UAAA,OC3Id,SACE,SAAA,SACA,QAAA,KACA,QAAA,MCHA,YAAA,cAAA,UAAA,mBAAA,WAAA,O/CqP4H,iB+CrP5H,MAAA,WAEA,WAAA,OACA,YAAA,IACA,eAAA,OACA,WAAA,KACA,YAAA,IACA,WAAA,KACA,WAAA,MACA,gBAAA,KACA,YAAA,KACA,eAAA,KACA,YAAA,OACA,WAAA,OACA,aAAA,ODPA,UAAA,QAEA,UAAA,WACA,QAAA,EAVF,cAYW,QAAA,GAZW,2CAAtB,qBAgBI,QAAA,IAAA,EACA,WAAA,KAjByC,kEAA7C,4CAoBM,OAAA,EACA,KAAA,IACA,YAAA,KACA,QAAW,GACX,aAAA,IAAA,IAAA,EACA,iBAAA,KAzBkB,yCAAxB,uBA8BI,QAAA,EAAA,IACA,YAAA,IA/B2C,gEAA/C,8CAkCM,IAAA,IACA,KAAA,EACA,WAAA,KACA,QAAW,GACX,aAAA,IAAA,IAAA,IAAA,EACA,mBAAA,KAvCmB,wCAAzB,wBA4CI,QAAA,IAAA,EACA,WAAA,IA7C4C,+DAAhD,+CAgDM,IAAA,EACA,KAAA,IACA,YAAA,KACA,QAAW,GACX,aAAA,EAAA,IAAA,IACA,oBAAA,KArDiB,0CAAvB,sBA0DI,QAAA,EAAA,IACA,YAAA,KA3D0C,iEAA9C,6CA8DM,IAAA,IACA,MAAA,EACA,WAAA,KACA,QAAW,GACX,aAAA,IAAA,EAAA,IAAA,IACA,kBAAA,KAMN,eACE,UAAA,MACA,QAAA,IAAA,IACA,MAAA,KACA,WAAA,OACA,iBAAA,KxC3EE,cAAA,OwCsEJ,uBASI,SAAA,SACA,MAAA,EACA,OAAA,EACA,aAAA,YACA,aAAA,MEvFJ,SACE,SAAA,SACA,IAAA,EACA,KAAA,EACA,QAAA,KACA,QAAA,MACA,UAAA,MACA,QAAA,IDNA,YAAA,cAAA,UAAA,mBAAA,WAAA,O/CqP4H,iB+CrP5H,MAAA,WAEA,WAAA,OACA,YAAA,IACA,eAAA,OACA,WAAA,KACA,YAAA,IACA,WAAA,KACA,WAAA,MACA,gBAAA,KACA,YAAA,KACA,eAAA,KACA,YAAA,OACA,WAAA,OACA,aAAA,OCJA,UAAA,QAEA,UAAA,WACA,iBAAA,KACA,wBAAA,YAAA,gBAAA,YACA,OAAA,IAAA,MAAA,e1CZE,cAAA,M0CJkB,2CAAtB,qBAyBI,WAAA,MAzB2G,kDAApD,mDAA7B,4BAA9B,6BA6BM,KAAA,IACA,oBAAA,EA9BwB,mDAA9B,6BAkCM,OAAA,MACA,YAAA,MACA,iBAAA,gBApCuB,kDAA7B,4BAwCM,OAAA,MACA,YAAA,MACA,iBAAA,KA1CkB,yCAAxB,uBAgDI,YAAA,KAhD6G,gDAAlD,iDAA/B,8BAAhC,+BAoDM,IAAA,IACA,kBAAA,EArD0B,iDAAhC,+BAyDM,KAAA,MACA,WAAA,MACA,mBAAA,gBA3DyB,gDAA/B,8BA+DM,KAAA,MACA,WAAA,MACA,mBAAA,KAjEmB,wCAAzB,wBAuEI,WAAA,KAvE8G,+CAAjD,gDAAhC,+BAAjC,gCA2EM,KAAA,IACA,iBAAA,EA5E2B,gDAAjC,gCAgFM,IAAA,MACA,YAAA,MACA,oBAAA,gBAlF0B,+CAAhC,+BAsFM,IAAA,MACA,YAAA,MACA,oBAAA,QAxF0C,+DAAhD,+CA6FM,SAAA,SACA,IAAA,EACA,KAAA,IACA,QAAA,MACA,MAAA,KACA,YAAA,MACA,QAAW,GACX,cAAA,IAAA,MAAA,QApGiB,0CAAvB,sBA0GI,YAAA,MA1G4G,iDAAnD,kDAA9B,6BAA/B,8BA8GM,IAAA,IACA,mBAAA,EA/GyB,kDAA/B,8BAmHM,MAAA,MACA,WAAA,MACA,kBAAA,gBArHwB,iDAA9B,6BAyHM,MAAA,MACA,WAAA,MACA,kBAAA,KAON,eACE,QAAA,IAAA,KACA,cAAA,EACA,UAAA,KACA,iBAAA,QACA,cAAA,IAAA,MAAA,Q1C7HE,wBAAA,kBACA,uBAAA,kB0CuHJ,qBAUI,QAAA,KAIJ,iBACE,QAAA,IAAA,KAQF,gBAAA,iBAEE,SAAA,SACA,QAAA,MACA,MAAA,EACA,OAAA,EACA,aAAA,YACA,aAAA,MAGF,iBACE,QAAW,GACX,aAAA,KAEF,gBACE,QAAW,GACX,aAAA,KCxKF,UACE,SAAA,SAGF,gBACE,SAAA,SACA,MAAA,KACA,SAAA,OAGF,eACE,SAAA,SACA,QAAA,KACA,MAAA,KCZA,8BDSA,e1CII,mBAAA,kBAAA,IAAA,YAAA,WAAA,kBAAA,IAAA,YAAA,cAAA,aAAA,IAAA,YAAA,WAAA,UAAA,IAAA,YAAA,WAAA,UAAA,IAAA,YAAA,kBAAA,IAAA,YAAA,aAAA,IAAA,Y0CGF,4BAAA,OAAA,oBAAA,OACA,oBAAA,OAAA,YAAA,QCVuC,qFDEzC,e1CII,mBAAA,kBAAA,IAAA,YAAA,WAAA,kBAAA,IAAA,YAAA,cAAA,aAAA,IAAA,YAAA,WAAA,UAAA,IAAA,YAAA,WAAA,UAAA,IAAA,YAAA,kBAAA,IAAA,YAAA,aAAA,IAAA,Y0CGF,4BAAA,OAAA,oBAAA,OACA,oBAAA,OAAA,YAAA,QAIJ,oBAAA,oBAAA,sBAGE,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KAGF,oBAAA,oBAEE,SAAA,SACA,IAAA,EC9BA,8BDmCA,uCAAA,wCAEE,kBAAA,mBAAA,UAAA,mBAGF,4BAAA,oBAEE,kBAAA,sBAAA,UAAA,sBAGF,2BAAA,oBAEE,kBAAA,uBAAA,UAAA,wBCxCuC,qFD4BzC,uCAAA,wCAEE,kBAAA,mBAAA,UAAA,mBAGF,4BAAA,oBAEE,kBAAA,sBAAA,UAAA,sBAGF,2BAAA,oBAEE,kBAAA,uBAAA,UAAA,wBASJ,uBAAA,uBAEE,SAAA,SACA,IAAA,EACA,OAAA,EAEA,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,kBAAA,OAAA,oBAAA,OAAA,eAAA,OAAA,YAAA,OACA,iBAAA,OAAA,wBAAA,OAAA,cAAA,OAAA,gBAAA,OACA,MAAA,IACA,MAAA,KACA,WAAA,OACA,QAAA,GhDlDE,6BAAA,6BAAA,6BAAA,6BgDwDA,MAAA,KACA,gBAAA,KACA,QAAA,EACA,QAAA,GAGJ,uBACE,KAAA,EAEF,uBACE,MAAA,EAIF,4BAAA,4BAEE,QAAA,aACA,MAAA,KACA,OAAA,KACA,WAAA,YAAA,UAAA,OAAA,OACA,wBAAA,KAAA,KAAA,gBAAA,KAAA,KAEF,4BACE,iBAAA,4LAEF,4BACE,iBAAA,8LASF,qBACE,SAAA,SACA,MAAA,EACA,OAAA,KACA,KAAA,EACA,QAAA,GACA,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,iBAAA,OAAA,wBAAA,OAAA,cAAA,OAAA,gBAAA,OACA,aAAA,EAEA,aAAA,IACA,YAAA,IACA,WAAA,KAZF,wBAeI,SAAA,SACA,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,UAAA,KACA,OAAA,IACA,aAAA,IACA,YAAA,IACA,YAAA,OACA,OAAA,QACA,iBAAA,qBAvBJ,gCA2BM,SAAA,SACA,IAAA,MACA,KAAA,EACA,QAAA,aACA,MAAA,KACA,OAAA,KACA,QAAW,GAjCjB,+BAoCM,SAAA,SACA,OAAA,MACA,KAAA,EACA,QAAA,aACA,MAAA,KACA,OAAA,KACA,QAAW,GA1CjB,6BA+CI,iBAAA,KASJ,kBACE,SAAA,SACA,MAAA,IACA,OAAA,KACA,KAAA,IACA,QAAA,GACA,YAAA,KACA,eAAA,KACA,MAAA,KACA,WAAA,OEhLF,gBAAqB,eAAA,mBACrB,WAAqB,eAAA,cACrB,cAAqB,eAAA,iBACrB,cAAqB,eAAA,iBACrB,mBAAqB,eAAA,sBACrB,gBAAqB,eAAA,mBCDrB,UACE,iBAAA,QCFA,YACE,iBAAA,kBpDgBA,mBAAA,mBoDZE,iBAAA,kBALJ,YACE,iBAAA,kBpDgBA,mBAAA,mBoDZE,iBAAA,kBALJ,SACE,iBAAA,kBpDgBA,gBAAA,gBoDZE,iBAAA,kBALJ,YACE,iBAAA,kBpDgBA,mBAAA,mBoDZE,iBAAA,kBALJ,WACE,iBAAA,kBpDgBA,kBAAA,kBoDZE,iBAAA,kBALJ,YACE,iBAAA,kBpDgBA,mBAAA,mBoDZE,iBAAA,kBCJN,UAAmB,OAAA,YACnB,cAAmB,WAAA,YACnB,gBAAmB,aAAA,YACnB,iBAAmB,cAAA,YACnB,eAAmB,YAAA,YAMnB,ShDVI,cAAA,OgDaJ,ahDPI,wBAAA,OACA,uBAAA,OgDSJ,ehDHI,2BAAA,OACA,wBAAA,OgDKJ,gBhDCI,2BAAA,OACA,0BAAA,OgDCJ,chDKI,0BAAA,OACA,uBAAA,OgDFJ,gBACE,cAAA,IAGF,WACE,cAAA,ExBlCA,iBACE,QAAA,MACA,QAAW,GACX,MAAA,KyBIA,QAAE,QAAA,eACF,UAAE,QAAA,iBACF,gBAAE,QAAA,uBACF,SAAE,QAAA,gBACF,SAAE,QAAA,gBACF,cAAE,QAAA,qBACF,QAAE,QAAA,sBAAA,QAAA,uBAAA,QAAA,sBAAA,QAAA,eACF,eAAE,QAAA,6BAAA,QAAA,8BAAA,QAAA,6BAAA,QAAA,sB5CyCF,yB4ChDA,WAAE,QAAA,eACF,aAAE,QAAA,iBACF,mBAAE,QAAA,uBACF,YAAE,QAAA,gBACF,YAAE,QAAA,gBACF,iBAAE,QAAA,qBACF,WAAE,QAAA,sBAAA,QAAA,uBAAA,QAAA,sBAAA,QAAA,eACF,kBAAE,QAAA,6BAAA,QAAA,8BAAA,QAAA,6BAAA,QAAA,uB5CyCF,yB4ChDA,WAAE,QAAA,eACF,aAAE,QAAA,iBACF,mBAAE,QAAA,uBACF,YAAE,QAAA,gBACF,YAAE,QAAA,gBACF,iBAAE,QAAA,qBACF,WAAE,QAAA,sBAAA,QAAA,uBAAA,QAAA,sBAAA,QAAA,eACF,kBAAE,QAAA,6BAAA,QAAA,8BAAA,QAAA,6BAAA,QAAA,uB5CyCF,yB4ChDA,WAAE,QAAA,eACF,aAAE,QAAA,iBACF,mBAAE,QAAA,uBACF,YAAE,QAAA,gBACF,YAAE,QAAA,gBACF,iBAAE,QAAA,qBACF,WAAE,QAAA,sBAAA,QAAA,uBAAA,QAAA,sBAAA,QAAA,eACF,kBAAE,QAAA,6BAAA,QAAA,8BAAA,QAAA,6BAAA,QAAA,uB5CyCF,0B4ChDA,WAAE,QAAA,eACF,aAAE,QAAA,iBACF,mBAAE,QAAA,uBACF,YAAE,QAAA,gBACF,YAAE,QAAA,gBACF,iBAAE,QAAA,qBACF,WAAE,QAAA,sBAAA,QAAA,uBAAA,QAAA,sBAAA,QAAA,eACF,kBAAE,QAAA,6BAAA,QAAA,8BAAA,QAAA,6BAAA,QAAA,uBCPF,YAAE,0BAAA,EAAA,cAAA,GAAA,eAAA,GAAA,MAAA,GACF,WAAE,0BAAA,EAAA,cAAA,EAAA,eAAA,EAAA,MAAA,EACF,gBAAE,0BAAA,EAAA,cAAA,EAAA,eAAA,EAAA,MAAA,EAEF,UAAE,mBAAA,qBAAA,sBAAA,iBAAA,uBAAA,cAAA,mBAAA,cAAA,eAAA,cACF,aAAE,mBAAA,mBAAA,sBAAA,iBAAA,uBAAA,iBAAA,mBAAA,iBAAA,eAAA,iBACF,kBAAE,mBAAA,qBAAA,sBAAA,kBAAA,uBAAA,sBAAA,mBAAA,sBAAA,eAAA,sBACF,qBAAE,mBAAA,mBAAA,sBAAA,kBAAA,uBAAA,yBAAA,mBAAA,yBAAA,eAAA,yBAEF,WAAE,kBAAA,eAAA,cAAA,eAAA,UAAA,eACF,aAAE,kBAAA,iBAAA,cAAA,iBAAA,UAAA,iBACF,mBAAE,kBAAA,uBAAA,cAAA,uBAAA,UAAA,uBAEF,uBAAE,iBAAA,gBAAA,wBAAA,qBAAA,cAAA,gBAAA,gBAAA,qBACF,qBAAE,iBAAA,cAAA,wBAAA,mBAAA,cAAA,cAAA,gBAAA,mBACF,wBAAE,iBAAA,iBAAA,wBAAA,iBAAA,cAAA,iBAAA,gBAAA,iBACF,yBAAE,iBAAA,kBAAA,wBAAA,wBAAA,cAAA,kBAAA,gBAAA,wBACF,wBAAE,wBAAA,uBAAA,cAAA,qBAAA,gBAAA,uBAEF,mBAAE,kBAAA,gBAAA,oBAAA,qBAAA,eAAA,gBAAA,YAAA,qBACF,iBAAE,kBAAA,cAAA,oBAAA,mBAAA,eAAA,cAAA,YAAA,mBACF,oBAAE,kBAAA,iBAAA,oBAAA,iBAAA,eAAA,iBAAA,YAAA,iBACF,sBAAE,kBAAA,mBAAA,oBAAA,mBAAA,eAAA,mBAAA,YAAA,mBACF,qBAAE,kBAAA,kBAAA,oBAAA,kBAAA,eAAA,kBAAA,YAAA,kBAEF,qBAAE,sBAAA,qBAAA,mBAAA,gBAAA,cAAA,qBACF,mBAAE,sBAAA,mBAAA,mBAAA,cAAA,cAAA,mBACF,sBAAE,sBAAA,iBAAA,mBAAA,iBAAA,cAAA,iBACF,uBAAE,sBAAA,wBAAA,mBAAA,kBAAA,cAAA,wBACF,sBAAE,sBAAA,uBAAA,mBAAA,qBAAA,cAAA,uBACF,uBAAE,sBAAA,kBAAA,mBAAA,kBAAA,cAAA,kBAEF,iBAAE,mBAAA,eAAA,oBAAA,eAAA,mBAAA,eAAA,WAAA,eACF,kBAAE,mBAAA,qBAAA,oBAAA,gBAAA,WAAA,qBACF,gBAAE,mBAAA,mBAAA,oBAAA,cAAA,WAAA,mBACF,mBAAE,mBAAA,iBAAA,oBAAA,iBAAA,mBAAA,iBAAA,WAAA,iBACF,qBAAE,mBAAA,mBAAA,oBAAA,mBAAA,WAAA,mBACF,oBAAE,mBAAA,kBAAA,oBAAA,kBAAA,mBAAA,kBAAA,WAAA,kB7CWF,yB6ChDA,eAAE,0BAAA,EAAA,cAAA,GAAA,eAAA,GAAA,MAAA,GACF,cAAE,0BAAA,EAAA,cAAA,EAAA,eAAA,EAAA,MAAA,EACF,mBAAE,0BAAA,EAAA,cAAA,EAAA,eAAA,EAAA,MAAA,EAEF,aAAE,mBAAA,qBAAA,sBAAA,iBAAA,uBAAA,cAAA,mBAAA,cAAA,eAAA,cACF,gBAAE,mBAAA,mBAAA,sBAAA,iBAAA,uBAAA,iBAAA,mBAAA,iBAAA,eAAA,iBACF,qBAAE,mBAAA,qBAAA,sBAAA,kBAAA,uBAAA,sBAAA,mBAAA,sBAAA,eAAA,sBACF,wBAAE,mBAAA,mBAAA,sBAAA,kBAAA,uBAAA,yBAAA,mBAAA,yBAAA,eAAA,yBAEF,cAAE,kBAAA,eAAA,cAAA,eAAA,UAAA,eACF,gBAAE,kBAAA,iBAAA,cAAA,iBAAA,UAAA,iBACF,sBAAE,kBAAA,uBAAA,cAAA,uBAAA,UAAA,uBAEF,0BAAE,iBAAA,gBAAA,wBAAA,qBAAA,cAAA,gBAAA,gBAAA,qBACF,wBAAE,iBAAA,cAAA,wBAAA,mBAAA,cAAA,cAAA,gBAAA,mBACF,2BAAE,iBAAA,iBAAA,wBAAA,iBAAA,cAAA,iBAAA,gBAAA,iBACF,4BAAE,iBAAA,kBAAA,wBAAA,wBAAA,cAAA,kBAAA,gBAAA,wBACF,2BAAE,wBAAA,uBAAA,cAAA,qBAAA,gBAAA,uBAEF,sBAAE,kBAAA,gBAAA,oBAAA,qBAAA,eAAA,gBAAA,YAAA,qBACF,oBAAE,kBAAA,cAAA,oBAAA,mBAAA,eAAA,cAAA,YAAA,mBACF,uBAAE,kBAAA,iBAAA,oBAAA,iBAAA,eAAA,iBAAA,YAAA,iBACF,yBAAE,kBAAA,mBAAA,oBAAA,mBAAA,eAAA,mBAAA,YAAA,mBACF,wBAAE,kBAAA,kBAAA,oBAAA,kBAAA,eAAA,kBAAA,YAAA,kBAEF,wBAAE,sBAAA,qBAAA,mBAAA,gBAAA,cAAA,qBACF,sBAAE,sBAAA,mBAAA,mBAAA,cAAA,cAAA,mBACF,yBAAE,sBAAA,iBAAA,mBAAA,iBAAA,cAAA,iBACF,0BAAE,sBAAA,wBAAA,mBAAA,kBAAA,cAAA,wBACF,yBAAE,sBAAA,uBAAA,mBAAA,qBAAA,cAAA,uBACF,0BAAE,sBAAA,kBAAA,mBAAA,kBAAA,cAAA,kBAEF,oBAAE,mBAAA,eAAA,oBAAA,eAAA,mBAAA,eAAA,WAAA,eACF,qBAAE,mBAAA,qBAAA,oBAAA,gBAAA,WAAA,qBACF,mBAAE,mBAAA,mBAAA,oBAAA,cAAA,WAAA,mBACF,sBAAE,mBAAA,iBAAA,oBAAA,iBAAA,mBAAA,iBAAA,WAAA,iBACF,wBAAE,mBAAA,mBAAA,oBAAA,mBAAA,WAAA,mBACF,uBAAE,mBAAA,kBAAA,oBAAA,kBAAA,mBAAA,kBAAA,WAAA,mB7CWF,yB6ChDA,eAAE,0BAAA,EAAA,cAAA,GAAA,eAAA,GAAA,MAAA,GACF,cAAE,0BAAA,EAAA,cAAA,EAAA,eAAA,EAAA,MAAA,EACF,mBAAE,0BAAA,EAAA,cAAA,EAAA,eAAA,EAAA,MAAA,EAEF,aAAE,mBAAA,qBAAA,sBAAA,iBAAA,uBAAA,cAAA,mBAAA,cAAA,eAAA,cACF,gBAAE,mBAAA,mBAAA,sBAAA,iBAAA,uBAAA,iBAAA,mBAAA,iBAAA,eAAA,iBACF,qBAAE,mBAAA,qBAAA,sBAAA,kBAAA,uBAAA,sBAAA,mBAAA,sBAAA,eAAA,sBACF,wBAAE,mBAAA,mBAAA,sBAAA,kBAAA,uBAAA,yBAAA,mBAAA,yBAAA,eAAA,yBAEF,cAAE,kBAAA,eAAA,cAAA,eAAA,UAAA,eACF,gBAAE,kBAAA,iBAAA,cAAA,iBAAA,UAAA,iBACF,sBAAE,kBAAA,uBAAA,cAAA,uBAAA,UAAA,uBAEF,0BAAE,iBAAA,gBAAA,wBAAA,qBAAA,cAAA,gBAAA,gBAAA,qBACF,wBAAE,iBAAA,cAAA,wBAAA,mBAAA,cAAA,cAAA,gBAAA,mBACF,2BAAE,iBAAA,iBAAA,wBAAA,iBAAA,cAAA,iBAAA,gBAAA,iBACF,4BAAE,iBAAA,kBAAA,wBAAA,wBAAA,cAAA,kBAAA,gBAAA,wBACF,2BAAE,wBAAA,uBAAA,cAAA,qBAAA,gBAAA,uBAEF,sBAAE,kBAAA,gBAAA,oBAAA,qBAAA,eAAA,gBAAA,YAAA,qBACF,oBAAE,kBAAA,cAAA,oBAAA,mBAAA,eAAA,cAAA,YAAA,mBACF,uBAAE,kBAAA,iBAAA,oBAAA,iBAAA,eAAA,iBAAA,YAAA,iBACF,yBAAE,kBAAA,mBAAA,oBAAA,mBAAA,eAAA,mBAAA,YAAA,mBACF,wBAAE,kBAAA,kBAAA,oBAAA,kBAAA,eAAA,kBAAA,YAAA,kBAEF,wBAAE,sBAAA,qBAAA,mBAAA,gBAAA,cAAA,qBACF,sBAAE,sBAAA,mBAAA,mBAAA,cAAA,cAAA,mBACF,yBAAE,sBAAA,iBAAA,mBAAA,iBAAA,cAAA,iBACF,0BAAE,sBAAA,wBAAA,mBAAA,kBAAA,cAAA,wBACF,yBAAE,sBAAA,uBAAA,mBAAA,qBAAA,cAAA,uBACF,0BAAE,sBAAA,kBAAA,mBAAA,kBAAA,cAAA,kBAEF,oBAAE,mBAAA,eAAA,oBAAA,eAAA,mBAAA,eAAA,WAAA,eACF,qBAAE,mBAAA,qBAAA,oBAAA,gBAAA,WAAA,qBACF,mBAAE,mBAAA,mBAAA,oBAAA,cAAA,WAAA,mBACF,sBAAE,mBAAA,iBAAA,oBAAA,iBAAA,mBAAA,iBAAA,WAAA,iBACF,wBAAE,mBAAA,mBAAA,oBAAA,mBAAA,WAAA,mBACF,uBAAE,mBAAA,kBAAA,oBAAA,kBAAA,mBAAA,kBAAA,WAAA,mB7CWF,yB6ChDA,eAAE,0BAAA,EAAA,cAAA,GAAA,eAAA,GAAA,MAAA,GACF,cAAE,0BAAA,EAAA,cAAA,EAAA,eAAA,EAAA,MAAA,EACF,mBAAE,0BAAA,EAAA,cAAA,EAAA,eAAA,EAAA,MAAA,EAEF,aAAE,mBAAA,qBAAA,sBAAA,iBAAA,uBAAA,cAAA,mBAAA,cAAA,eAAA,cACF,gBAAE,mBAAA,mBAAA,sBAAA,iBAAA,uBAAA,iBAAA,mBAAA,iBAAA,eAAA,iBACF,qBAAE,mBAAA,qBAAA,sBAAA,kBAAA,uBAAA,sBAAA,mBAAA,sBAAA,eAAA,sBACF,wBAAE,mBAAA,mBAAA,sBAAA,kBAAA,uBAAA,yBAAA,mBAAA,yBAAA,eAAA,yBAEF,cAAE,kBAAA,eAAA,cAAA,eAAA,UAAA,eACF,gBAAE,kBAAA,iBAAA,cAAA,iBAAA,UAAA,iBACF,sBAAE,kBAAA,uBAAA,cAAA,uBAAA,UAAA,uBAEF,0BAAE,iBAAA,gBAAA,wBAAA,qBAAA,cAAA,gBAAA,gBAAA,qBACF,wBAAE,iBAAA,cAAA,wBAAA,mBAAA,cAAA,cAAA,gBAAA,mBACF,2BAAE,iBAAA,iBAAA,wBAAA,iBAAA,cAAA,iBAAA,gBAAA,iBACF,4BAAE,iBAAA,kBAAA,wBAAA,wBAAA,cAAA,kBAAA,gBAAA,wBACF,2BAAE,wBAAA,uBAAA,cAAA,qBAAA,gBAAA,uBAEF,sBAAE,kBAAA,gBAAA,oBAAA,qBAAA,eAAA,gBAAA,YAAA,qBACF,oBAAE,kBAAA,cAAA,oBAAA,mBAAA,eAAA,cAAA,YAAA,mBACF,uBAAE,kBAAA,iBAAA,oBAAA,iBAAA,eAAA,iBAAA,YAAA,iBACF,yBAAE,kBAAA,mBAAA,oBAAA,mBAAA,eAAA,mBAAA,YAAA,mBACF,wBAAE,kBAAA,kBAAA,oBAAA,kBAAA,eAAA,kBAAA,YAAA,kBAEF,wBAAE,sBAAA,qBAAA,mBAAA,gBAAA,cAAA,qBACF,sBAAE,sBAAA,mBAAA,mBAAA,cAAA,cAAA,mBACF,yBAAE,sBAAA,iBAAA,mBAAA,iBAAA,cAAA,iBACF,0BAAE,sBAAA,wBAAA,mBAAA,kBAAA,cAAA,wBACF,yBAAE,sBAAA,uBAAA,mBAAA,qBAAA,cAAA,uBACF,0BAAE,sBAAA,kBAAA,mBAAA,kBAAA,cAAA,kBAEF,oBAAE,mBAAA,eAAA,oBAAA,eAAA,mBAAA,eAAA,WAAA,eACF,qBAAE,mBAAA,qBAAA,oBAAA,gBAAA,WAAA,qBACF,mBAAE,mBAAA,mBAAA,oBAAA,cAAA,WAAA,mBACF,sBAAE,mBAAA,iBAAA,oBAAA,iBAAA,mBAAA,iBAAA,WAAA,iBACF,wBAAE,mBAAA,mBAAA,oBAAA,mBAAA,WAAA,mBACF,uBAAE,mBAAA,kBAAA,oBAAA,kBAAA,mBAAA,kBAAA,WAAA,mB7CWF,0B6ChDA,eAAE,0BAAA,EAAA,cAAA,GAAA,eAAA,GAAA,MAAA,GACF,cAAE,0BAAA,EAAA,cAAA,EAAA,eAAA,EAAA,MAAA,EACF,mBAAE,0BAAA,EAAA,cAAA,EAAA,eAAA,EAAA,MAAA,EAEF,aAAE,mBAAA,qBAAA,sBAAA,iBAAA,uBAAA,cAAA,mBAAA,cAAA,eAAA,cACF,gBAAE,mBAAA,mBAAA,sBAAA,iBAAA,uBAAA,iBAAA,mBAAA,iBAAA,eAAA,iBACF,qBAAE,mBAAA,qBAAA,sBAAA,kBAAA,uBAAA,sBAAA,mBAAA,sBAAA,eAAA,sBACF,wBAAE,mBAAA,mBAAA,sBAAA,kBAAA,uBAAA,yBAAA,mBAAA,yBAAA,eAAA,yBAEF,cAAE,kBAAA,eAAA,cAAA,eAAA,UAAA,eACF,gBAAE,kBAAA,iBAAA,cAAA,iBAAA,UAAA,iBACF,sBAAE,kBAAA,uBAAA,cAAA,uBAAA,UAAA,uBAEF,0BAAE,iBAAA,gBAAA,wBAAA,qBAAA,cAAA,gBAAA,gBAAA,qBACF,wBAAE,iBAAA,cAAA,wBAAA,mBAAA,cAAA,cAAA,gBAAA,mBACF,2BAAE,iBAAA,iBAAA,wBAAA,iBAAA,cAAA,iBAAA,gBAAA,iBACF,4BAAE,iBAAA,kBAAA,wBAAA,wBAAA,cAAA,kBAAA,gBAAA,wBACF,2BAAE,wBAAA,uBAAA,cAAA,qBAAA,gBAAA,uBAEF,sBAAE,kBAAA,gBAAA,oBAAA,qBAAA,eAAA,gBAAA,YAAA,qBACF,oBAAE,kBAAA,cAAA,oBAAA,mBAAA,eAAA,cAAA,YAAA,mBACF,uBAAE,kBAAA,iBAAA,oBAAA,iBAAA,eAAA,iBAAA,YAAA,iBACF,yBAAE,kBAAA,mBAAA,oBAAA,mBAAA,eAAA,mBAAA,YAAA,mBACF,wBAAE,kBAAA,kBAAA,oBAAA,kBAAA,eAAA,kBAAA,YAAA,kBAEF,wBAAE,sBAAA,qBAAA,mBAAA,gBAAA,cAAA,qBACF,sBAAE,sBAAA,mBAAA,mBAAA,cAAA,cAAA,mBACF,yBAAE,sBAAA,iBAAA,mBAAA,iBAAA,cAAA,iBACF,0BAAE,sBAAA,wBAAA,mBAAA,kBAAA,cAAA,wBACF,yBAAE,sBAAA,uBAAA,mBAAA,qBAAA,cAAA,uBACF,0BAAE,sBAAA,kBAAA,mBAAA,kBAAA,cAAA,kBAEF,oBAAE,mBAAA,eAAA,oBAAA,eAAA,mBAAA,eAAA,WAAA,eACF,qBAAE,mBAAA,qBAAA,oBAAA,gBAAA,WAAA,qBACF,mBAAE,mBAAA,mBAAA,oBAAA,cAAA,WAAA,mBACF,sBAAE,mBAAA,iBAAA,oBAAA,iBAAA,mBAAA,iBAAA,WAAA,iBACF,wBAAE,mBAAA,mBAAA,oBAAA,mBAAA,WAAA,mBACF,uBAAE,mBAAA,kBAAA,oBAAA,kBAAA,mBAAA,kBAAA,WAAA,mBCzCF,YCHF,MAAA,eDIE,aCDF,MAAA,gBDEE,YCCF,MAAA,e/CiDE,yB8CpDA,eCHF,MAAA,eDIE,gBCDF,MAAA,gBDEE,eCCF,MAAA,gB/CiDE,yB8CpDA,eCHF,MAAA,eDIE,gBCDF,MAAA,gBDEE,eCCF,MAAA,gB/CiDE,yB8CpDA,eCHF,MAAA,eDIE,gBCDF,MAAA,gBDEE,eCCF,MAAA,gB/CiDE,0B8CpDA,eCHF,MAAA,eDIE,gBCDF,MAAA,gBDEE,eCCF,MAAA,gBCLF,WACE,SAAA,MACA,IAAA,EACA,MAAA,EACA,KAAA,EACA,QAAA,KAGF,cACE,SAAA,MACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,KAGF,YACE,SAAA,eAAA,SAAA,OACA,IAAA,EACA,QAAA,KCjBF,SCCE,SAAA,SACA,MAAA,IACA,OAAA,IACA,QAAA,EACA,OAAA,KACA,SAAA,OACA,KAAA,cACA,OAAA,EAUA,0BAAA,yBAEE,SAAA,OACA,MAAA,KACA,OAAA,KACA,OAAA,EACA,SAAA,QACA,KAAA,KCzBA,MAAE,MAAA,cAAF,MAAE,MAAA,cAAF,MAAE,MAAA,cAAF,OAAE,MAAA,eAAF,MAAE,OAAA,cAAF,MAAE,OAAA,cAAF,MAAE,OAAA,cAAF,OAAE,OAAA,eAIN,QAAU,UAAA,eACV,QAAU,WAAA,eCEF,KAAE,OAAA,EAAA,YACF,MAAE,WAAA,YACF,MAAE,aAAA,YACF,MAAE,cAAA,YACF,MAAE,YAAA,YACF,MACE,aAAA,YACA,YAAA,YAEF,MACE,WAAA,YACA,cAAA,YAXF,KAAE,OAAA,OAAA,iBACF,MAAE,WAAA,iBACF,MAAE,aAAA,iBACF,MAAE,cAAA,iBACF,MAAE,YAAA,iBACF,MACE,aAAA,iBACA,YAAA,iBAEF,MACE,WAAA,iBACA,cAAA,iBAXF,KAAE,OAAA,MAAA,gBACF,MAAE,WAAA,gBACF,MAAE,aAAA,gBACF,MAAE,cAAA,gBACF,MAAE,YAAA,gBACF,MACE,aAAA,gBACA,YAAA,gBAEF,MACE,WAAA,gBACA,cAAA,gBAXF,KAAE,OAAA,KAAA,eACF,MAAE,WAAA,eACF,MAAE,aAAA,eACF,MAAE,cAAA,eACF,MAAE,YAAA,eACF,MACE,aAAA,eACA,YAAA,eAEF,MACE,WAAA,eACA,cAAA,eAXF,KAAE,OAAA,OAAA,iBACF,MAAE,WAAA,iBACF,MAAE,aAAA,iBACF,MAAE,cAAA,iBACF,MAAE,YAAA,iBACF,MACE,aAAA,iBACA,YAAA,iBAEF,MACE,WAAA,iBACA,cAAA,iBAXF,KAAE,OAAA,KAAA,eACF,MAAE,WAAA,eACF,MAAE,aAAA,eACF,MAAE,cAAA,eACF,MAAE,YAAA,eACF,MACE,aAAA,eACA,YAAA,eAEF,MACE,WAAA,eACA,cAAA,eAXF,KAAE,QAAA,EAAA,YACF,MAAE,YAAA,YACF,MAAE,cAAA,YACF,MAAE,eAAA,YACF,MAAE,aAAA,YACF,MACE,cAAA,YACA,aAAA,YAEF,MACE,YAAA,YACA,eAAA,YAXF,KAAE,QAAA,OAAA,iBACF,MAAE,YAAA,iBACF,MAAE,cAAA,iBACF,MAAE,eAAA,iBACF,MAAE,aAAA,iBACF,MACE,cAAA,iBACA,aAAA,iBAEF,MACE,YAAA,iBACA,eAAA,iBAXF,KAAE,QAAA,MAAA,gBACF,MAAE,YAAA,gBACF,MAAE,cAAA,gBACF,MAAE,eAAA,gBACF,MAAE,aAAA,gBACF,MACE,cAAA,gBACA,aAAA,gBAEF,MACE,YAAA,gBACA,eAAA,gBAXF,KAAE,QAAA,KAAA,eACF,MAAE,YAAA,eACF,MAAE,cAAA,eACF,MAAE,eAAA,eACF,MAAE,aAAA,eACF,MACE,cAAA,eACA,aAAA,eAEF,MACE,YAAA,eACA,eAAA,eAXF,KAAE,QAAA,OAAA,iBACF,MAAE,YAAA,iBACF,MAAE,cAAA,iBACF,MAAE,eAAA,iBACF,MAAE,aAAA,iBACF,MACE,cAAA,iBACA,aAAA,iBAEF,MACE,YAAA,iBACA,eAAA,iBAXF,KAAE,QAAA,KAAA,eACF,MAAE,YAAA,eACF,MAAE,cAAA,eACF,MAAE,eAAA,eACF,MAAE,aAAA,eACF,MACE,cAAA,eACA,aAAA,eAEF,MACE,YAAA,eACA,eAAA,eAMN,QAAE,OAAA,eACF,SAAE,WAAA,eACF,SAAE,aAAA,eACF,SAAE,cAAA,eACF,SAAE,YAAA,eACF,SACE,aAAA,eACA,YAAA,eAEF,SACE,WAAA,eACA,cAAA,epDiBF,yBoD7CI,QAAE,OAAA,EAAA,YACF,SAAE,WAAA,YACF,SAAE,aAAA,YACF,SAAE,cAAA,YACF,SAAE,YAAA,YACF,SACE,aAAA,YACA,YAAA,YAEF,SACE,WAAA,YACA,cAAA,YAXF,QAAE,OAAA,OAAA,iBACF,SAAE,WAAA,iBACF,SAAE,aAAA,iBACF,SAAE,cAAA,iBACF,SAAE,YAAA,iBACF,SACE,aAAA,iBACA,YAAA,iBAEF,SACE,WAAA,iBACA,cAAA,iBAXF,QAAE,OAAA,MAAA,gBACF,SAAE,WAAA,gBACF,SAAE,aAAA,gBACF,SAAE,cAAA,gBACF,SAAE,YAAA,gBACF,SACE,aAAA,gBACA,YAAA,gBAEF,SACE,WAAA,gBACA,cAAA,gBAXF,QAAE,OAAA,KAAA,eACF,SAAE,WAAA,eACF,SAAE,aAAA,eACF,SAAE,cAAA,eACF,SAAE,YAAA,eACF,SACE,aAAA,eACA,YAAA,eAEF,SACE,WAAA,eACA,cAAA,eAXF,QAAE,OAAA,OAAA,iBACF,SAAE,WAAA,iBACF,SAAE,aAAA,iBACF,SAAE,cAAA,iBACF,SAAE,YAAA,iBACF,SACE,aAAA,iBACA,YAAA,iBAEF,SACE,WAAA,iBACA,cAAA,iBAXF,QAAE,OAAA,KAAA,eACF,SAAE,WAAA,eACF,SAAE,aAAA,eACF,SAAE,cAAA,eACF,SAAE,YAAA,eACF,SACE,aAAA,eACA,YAAA,eAEF,SACE,WAAA,eACA,cAAA,eAXF,QAAE,QAAA,EAAA,YACF,SAAE,YAAA,YACF,SAAE,cAAA,YACF,SAAE,eAAA,YACF,SAAE,aAAA,YACF,SACE,cAAA,YACA,aAAA,YAEF,SACE,YAAA,YACA,eAAA,YAXF,QAAE,QAAA,OAAA,iBACF,SAAE,YAAA,iBACF,SAAE,cAAA,iBACF,SAAE,eAAA,iBACF,SAAE,aAAA,iBACF,SACE,cAAA,iBACA,aAAA,iBAEF,SACE,YAAA,iBACA,eAAA,iBAXF,QAAE,QAAA,MAAA,gBACF,SAAE,YAAA,gBACF,SAAE,cAAA,gBACF,SAAE,eAAA,gBACF,SAAE,aAAA,gBACF,SACE,cAAA,gBACA,aAAA,gBAEF,SACE,YAAA,gBACA,eAAA,gBAXF,QAAE,QAAA,KAAA,eACF,SAAE,YAAA,eACF,SAAE,cAAA,eACF,SAAE,eAAA,eACF,SAAE,aAAA,eACF,SACE,cAAA,eACA,aAAA,eAEF,SACE,YAAA,eACA,eAAA,eAXF,QAAE,QAAA,OAAA,iBACF,SAAE,YAAA,iBACF,SAAE,cAAA,iBACF,SAAE,eAAA,iBACF,SAAE,aAAA,iBACF,SACE,cAAA,iBACA,aAAA,iBAEF,SACE,YAAA,iBACA,eAAA,iBAXF,QAAE,QAAA,KAAA,eACF,SAAE,YAAA,eACF,SAAE,cAAA,eACF,SAAE,eAAA,eACF,SAAE,aAAA,eACF,SACE,cAAA,eACA,aAAA,eAEF,SACE,YAAA,eACA,eAAA,eAMN,WAAE,OAAA,eACF,YAAE,WAAA,eACF,YAAE,aAAA,eACF,YAAE,cAAA,eACF,YAAE,YAAA,eACF,YACE,aAAA,eACA,YAAA,eAEF,YACE,WAAA,eACA,cAAA,gBpDiBF,yBoD7CI,QAAE,OAAA,EAAA,YACF,SAAE,WAAA,YACF,SAAE,aAAA,YACF,SAAE,cAAA,YACF,SAAE,YAAA,YACF,SACE,aAAA,YACA,YAAA,YAEF,SACE,WAAA,YACA,cAAA,YAXF,QAAE,OAAA,OAAA,iBACF,SAAE,WAAA,iBACF,SAAE,aAAA,iBACF,SAAE,cAAA,iBACF,SAAE,YAAA,iBACF,SACE,aAAA,iBACA,YAAA,iBAEF,SACE,WAAA,iBACA,cAAA,iBAXF,QAAE,OAAA,MAAA,gBACF,SAAE,WAAA,gBACF,SAAE,aAAA,gBACF,SAAE,cAAA,gBACF,SAAE,YAAA,gBACF,SACE,aAAA,gBACA,YAAA,gBAEF,SACE,WAAA,gBACA,cAAA,gBAXF,QAAE,OAAA,KAAA,eACF,SAAE,WAAA,eACF,SAAE,aAAA,eACF,SAAE,cAAA,eACF,SAAE,YAAA,eACF,SACE,aAAA,eACA,YAAA,eAEF,SACE,WAAA,eACA,cAAA,eAXF,QAAE,OAAA,OAAA,iBACF,SAAE,WAAA,iBACF,SAAE,aAAA,iBACF,SAAE,cAAA,iBACF,SAAE,YAAA,iBACF,SACE,aAAA,iBACA,YAAA,iBAEF,SACE,WAAA,iBACA,cAAA,iBAXF,QAAE,OAAA,KAAA,eACF,SAAE,WAAA,eACF,SAAE,aAAA,eACF,SAAE,cAAA,eACF,SAAE,YAAA,eACF,SACE,aAAA,eACA,YAAA,eAEF,SACE,WAAA,eACA,cAAA,eAXF,QAAE,QAAA,EAAA,YACF,SAAE,YAAA,YACF,SAAE,cAAA,YACF,SAAE,eAAA,YACF,SAAE,aAAA,YACF,SACE,cAAA,YACA,aAAA,YAEF,SACE,YAAA,YACA,eAAA,YAXF,QAAE,QAAA,OAAA,iBACF,SAAE,YAAA,iBACF,SAAE,cAAA,iBACF,SAAE,eAAA,iBACF,SAAE,aAAA,iBACF,SACE,cAAA,iBACA,aAAA,iBAEF,SACE,YAAA,iBACA,eAAA,iBAXF,QAAE,QAAA,MAAA,gBACF,SAAE,YAAA,gBACF,SAAE,cAAA,gBACF,SAAE,eAAA,gBACF,SAAE,aAAA,gBACF,SACE,cAAA,gBACA,aAAA,gBAEF,SACE,YAAA,gBACA,eAAA,gBAXF,QAAE,QAAA,KAAA,eACF,SAAE,YAAA,eACF,SAAE,cAAA,eACF,SAAE,eAAA,eACF,SAAE,aAAA,eACF,SACE,cAAA,eACA,aAAA,eAEF,SACE,YAAA,eACA,eAAA,eAXF,QAAE,QAAA,OAAA,iBACF,SAAE,YAAA,iBACF,SAAE,cAAA,iBACF,SAAE,eAAA,iBACF,SAAE,aAAA,iBACF,SACE,cAAA,iBACA,aAAA,iBAEF,SACE,YAAA,iBACA,eAAA,iBAXF,QAAE,QAAA,KAAA,eACF,SAAE,YAAA,eACF,SAAE,cAAA,eACF,SAAE,eAAA,eACF,SAAE,aAAA,eACF,SACE,cAAA,eACA,aAAA,eAEF,SACE,YAAA,eACA,eAAA,eAMN,WAAE,OAAA,eACF,YAAE,WAAA,eACF,YAAE,aAAA,eACF,YAAE,cAAA,eACF,YAAE,YAAA,eACF,YACE,aAAA,eACA,YAAA,eAEF,YACE,WAAA,eACA,cAAA,gBpDiBF,yBoD7CI,QAAE,OAAA,EAAA,YACF,SAAE,WAAA,YACF,SAAE,aAAA,YACF,SAAE,cAAA,YACF,SAAE,YAAA,YACF,SACE,aAAA,YACA,YAAA,YAEF,SACE,WAAA,YACA,cAAA,YAXF,QAAE,OAAA,OAAA,iBACF,SAAE,WAAA,iBACF,SAAE,aAAA,iBACF,SAAE,cAAA,iBACF,SAAE,YAAA,iBACF,SACE,aAAA,iBACA,YAAA,iBAEF,SACE,WAAA,iBACA,cAAA,iBAXF,QAAE,OAAA,MAAA,gBACF,SAAE,WAAA,gBACF,SAAE,aAAA,gBACF,SAAE,cAAA,gBACF,SAAE,YAAA,gBACF,SACE,aAAA,gBACA,YAAA,gBAEF,SACE,WAAA,gBACA,cAAA,gBAXF,QAAE,OAAA,KAAA,eACF,SAAE,WAAA,eACF,SAAE,aAAA,eACF,SAAE,cAAA,eACF,SAAE,YAAA,eACF,SACE,aAAA,eACA,YAAA,eAEF,SACE,WAAA,eACA,cAAA,eAXF,QAAE,OAAA,OAAA,iBACF,SAAE,WAAA,iBACF,SAAE,aAAA,iBACF,SAAE,cAAA,iBACF,SAAE,YAAA,iBACF,SACE,aAAA,iBACA,YAAA,iBAEF,SACE,WAAA,iBACA,cAAA,iBAXF,QAAE,OAAA,KAAA,eACF,SAAE,WAAA,eACF,SAAE,aAAA,eACF,SAAE,cAAA,eACF,SAAE,YAAA,eACF,SACE,aAAA,eACA,YAAA,eAEF,SACE,WAAA,eACA,cAAA,eAXF,QAAE,QAAA,EAAA,YACF,SAAE,YAAA,YACF,SAAE,cAAA,YACF,SAAE,eAAA,YACF,SAAE,aAAA,YACF,SACE,cAAA,YACA,aAAA,YAEF,SACE,YAAA,YACA,eAAA,YAXF,QAAE,QAAA,OAAA,iBACF,SAAE,YAAA,iBACF,SAAE,cAAA,iBACF,SAAE,eAAA,iBACF,SAAE,aAAA,iBACF,SACE,cAAA,iBACA,aAAA,iBAEF,SACE,YAAA,iBACA,eAAA,iBAXF,QAAE,QAAA,MAAA,gBACF,SAAE,YAAA,gBACF,SAAE,cAAA,gBACF,SAAE,eAAA,gBACF,SAAE,aAAA,gBACF,SACE,cAAA,gBACA,aAAA,gBAEF,SACE,YAAA,gBACA,eAAA,gBAXF,QAAE,QAAA,KAAA,eACF,SAAE,YAAA,eACF,SAAE,cAAA,eACF,SAAE,eAAA,eACF,SAAE,aAAA,eACF,SACE,cAAA,eACA,aAAA,eAEF,SACE,YAAA,eACA,eAAA,eAXF,QAAE,QAAA,OAAA,iBACF,SAAE,YAAA,iBACF,SAAE,cAAA,iBACF,SAAE,eAAA,iBACF,SAAE,aAAA,iBACF,SACE,cAAA,iBACA,aAAA,iBAEF,SACE,YAAA,iBACA,eAAA,iBAXF,QAAE,QAAA,KAAA,eACF,SAAE,YAAA,eACF,SAAE,cAAA,eACF,SAAE,eAAA,eACF,SAAE,aAAA,eACF,SACE,cAAA,eACA,aAAA,eAEF,SACE,YAAA,eACA,eAAA,eAMN,WAAE,OAAA,eACF,YAAE,WAAA,eACF,YAAE,aAAA,eACF,YAAE,cAAA,eACF,YAAE,YAAA,eACF,YACE,aAAA,eACA,YAAA,eAEF,YACE,WAAA,eACA,cAAA,gBpDiBF,0BoD7CI,QAAE,OAAA,EAAA,YACF,SAAE,WAAA,YACF,SAAE,aAAA,YACF,SAAE,cAAA,YACF,SAAE,YAAA,YACF,SACE,aAAA,YACA,YAAA,YAEF,SACE,WAAA,YACA,cAAA,YAXF,QAAE,OAAA,OAAA,iBACF,SAAE,WAAA,iBACF,SAAE,aAAA,iBACF,SAAE,cAAA,iBACF,SAAE,YAAA,iBACF,SACE,aAAA,iBACA,YAAA,iBAEF,SACE,WAAA,iBACA,cAAA,iBAXF,QAAE,OAAA,MAAA,gBACF,SAAE,WAAA,gBACF,SAAE,aAAA,gBACF,SAAE,cAAA,gBACF,SAAE,YAAA,gBACF,SACE,aAAA,gBACA,YAAA,gBAEF,SACE,WAAA,gBACA,cAAA,gBAXF,QAAE,OAAA,KAAA,eACF,SAAE,WAAA,eACF,SAAE,aAAA,eACF,SAAE,cAAA,eACF,SAAE,YAAA,eACF,SACE,aAAA,eACA,YAAA,eAEF,SACE,WAAA,eACA,cAAA,eAXF,QAAE,OAAA,OAAA,iBACF,SAAE,WAAA,iBACF,SAAE,aAAA,iBACF,SAAE,cAAA,iBACF,SAAE,YAAA,iBACF,SACE,aAAA,iBACA,YAAA,iBAEF,SACE,WAAA,iBACA,cAAA,iBAXF,QAAE,OAAA,KAAA,eACF,SAAE,WAAA,eACF,SAAE,aAAA,eACF,SAAE,cAAA,eACF,SAAE,YAAA,eACF,SACE,aAAA,eACA,YAAA,eAEF,SACE,WAAA,eACA,cAAA,eAXF,QAAE,QAAA,EAAA,YACF,SAAE,YAAA,YACF,SAAE,cAAA,YACF,SAAE,eAAA,YACF,SAAE,aAAA,YACF,SACE,cAAA,YACA,aAAA,YAEF,SACE,YAAA,YACA,eAAA,YAXF,QAAE,QAAA,OAAA,iBACF,SAAE,YAAA,iBACF,SAAE,cAAA,iBACF,SAAE,eAAA,iBACF,SAAE,aAAA,iBACF,SACE,cAAA,iBACA,aAAA,iBAEF,SACE,YAAA,iBACA,eAAA,iBAXF,QAAE,QAAA,MAAA,gBACF,SAAE,YAAA,gBACF,SAAE,cAAA,gBACF,SAAE,eAAA,gBACF,SAAE,aAAA,gBACF,SACE,cAAA,gBACA,aAAA,gBAEF,SACE,YAAA,gBACA,eAAA,gBAXF,QAAE,QAAA,KAAA,eACF,SAAE,YAAA,eACF,SAAE,cAAA,eACF,SAAE,eAAA,eACF,SAAE,aAAA,eACF,SACE,cAAA,eACA,aAAA,eAEF,SACE,YAAA,eACA,eAAA,eAXF,QAAE,QAAA,OAAA,iBACF,SAAE,YAAA,iBACF,SAAE,cAAA,iBACF,SAAE,eAAA,iBACF,SAAE,aAAA,iBACF,SACE,cAAA,iBACA,aAAA,iBAEF,SACE,YAAA,iBACA,eAAA,iBAXF,QAAE,QAAA,KAAA,eACF,SAAE,YAAA,eACF,SAAE,cAAA,eACF,SAAE,eAAA,eACF,SAAE,aAAA,eACF,SACE,cAAA,eACA,aAAA,eAEF,SACE,YAAA,eACA,eAAA,eAMN,WAAE,OAAA,eACF,YAAE,WAAA,eACF,YAAE,aAAA,eACF,YAAE,cAAA,eACF,YAAE,YAAA,eACF,YACE,aAAA,eACA,YAAA,eAEF,YACE,WAAA,eACA,cAAA,gBCjCN,cAAiB,WAAA,kBACjB,aAAiB,YAAA,iBACjB,eCJE,SAAA,OACA,cAAA,SACA,YAAA,ODUE,WAAE,WAAA,eACF,YAAE,WAAA,gBACF,aAAE,WAAA,iBrDsCF,yBqDxCA,cAAE,WAAA,eACF,eAAE,WAAA,gBACF,gBAAE,WAAA,kBrDsCF,yBqDxCA,cAAE,WAAA,eACF,eAAE,WAAA,gBACF,gBAAE,WAAA,kBrDsCF,yBqDxCA,cAAE,WAAA,eACF,eAAE,WAAA,gBACF,gBAAE,WAAA,kBrDsCF,0BqDxCA,cAAE,WAAA,eACF,eAAE,WAAA,gBACF,gBAAE,WAAA,kBAMN,gBAAmB,eAAA,oBACnB,gBAAmB,eAAA,oBACnB,iBAAmB,eAAA,qBAInB,oBAAsB,YAAA,IACtB,kBAAsB,YAAA,IACtB,aAAsB,WAAA,OAItB,YACE,MAAA,eElCA,YACE,MAAA,kBjEgBA,mBAAA,mBiEZE,MAAA,kBALJ,cACE,MAAA,kBjEgBA,qBAAA,qBiEZE,MAAA,kBALJ,cACE,MAAA,kBjEgBA,qBAAA,qBiEZE,MAAA,kBALJ,WACE,MAAA,kBjEgBA,kBAAA,kBiEZE,MAAA,kBALJ,cACE,MAAA,kBjEgBA,qBAAA,qBiEZE,MAAA,kBALJ,aACE,MAAA,kBjEgBA,oBAAA,oBiEZE,MAAA,kBALJ,gBACE,MAAA,kBjEgBA,uBAAA,uBiEZE,MAAA,kBFkDN,WGxDE,KAAA,EAAA,EAAA,EACA,MAAA,YACA,YAAA,KACA,iBAAA,YACA,OAAA,ECFF,WCDE,WAAA,iBDQA,cAEI,QAAA,ezDwDF,yByDrDF,gBAEI,QAAA,gBzDsCF,yByD7CF,cAEI,QAAA,gBzDwDF,yByDrDF,gBAEI,QAAA,gBzDsCF,yByD7CF,cAEI,QAAA,gBzDwDF,yByDrDF,gBAEI,QAAA,gBzDsCF,yByD7CF,cAEI,QAAA,gBzDwDF,0ByDrDF,gBAEI,QAAA,gBzDsCF,0ByD7CF,cAEI,QAAA,gBAGJ,gBAEI,QAAA,eAUN,qBACE,QAAA,eAEA,aAHA,qBAIE,QAAA,iBAGJ,sBACE,QAAA,eAEA,aAHA,sBAIE,QAAA,kBAGJ,4BACE,QAAA,eAEA,aAHA,4BAIE,QAAA,wBAKF,aADA,cAEE,QAAA"} \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/js/bootstrap.js b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/js/bootstrap.js new file mode 100644 index 0000000..dec3775 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/js/bootstrap.js @@ -0,0 +1,3535 @@ +/*! + * Bootstrap v4.0.0-alpha.6 (https://getbootstrap.com) + * Copyright 2011-2017 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +if (typeof jQuery === 'undefined') { + throw new Error('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.') +} + ++function ($) { + var version = $.fn.jquery.split(' ')[0].split('.') + if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] >= 4)) { + throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0') + } +}(jQuery); + + ++function () { + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +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 _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): util.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Util = function ($) { + + /** + * ------------------------------------------------------------------------ + * Private TransitionEnd Helpers + * ------------------------------------------------------------------------ + */ + + var transition = false; + + var MAX_UID = 1000000; + + var TransitionEndEvent = { + WebkitTransition: 'webkitTransitionEnd', + MozTransition: 'transitionend', + OTransition: 'oTransitionEnd otransitionend', + transition: 'transitionend' + }; + + // shoutout AngusCroll (https://goo.gl/pxwQGp) + function toType(obj) { + return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase(); + } + + function isElement(obj) { + return (obj[0] || obj).nodeType; + } + + function getSpecialTransitionEndEvent() { + return { + bindType: transition.end, + delegateType: transition.end, + handle: function handle(event) { + if ($(event.target).is(this)) { + return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params + } + return undefined; + } + }; + } + + function transitionEndTest() { + if (window.QUnit) { + return false; + } + + var el = document.createElement('bootstrap'); + + for (var name in TransitionEndEvent) { + if (el.style[name] !== undefined) { + return { + end: TransitionEndEvent[name] + }; + } + } + + return false; + } + + function transitionEndEmulator(duration) { + var _this = this; + + var called = false; + + $(this).one(Util.TRANSITION_END, function () { + called = true; + }); + + setTimeout(function () { + if (!called) { + Util.triggerTransitionEnd(_this); + } + }, duration); + + return this; + } + + function setTransitionEndSupport() { + transition = transitionEndTest(); + + $.fn.emulateTransitionEnd = transitionEndEmulator; + + if (Util.supportsTransitionEnd()) { + $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); + } + } + + /** + * -------------------------------------------------------------------------- + * Public Util Api + * -------------------------------------------------------------------------- + */ + + var Util = { + + TRANSITION_END: 'bsTransitionEnd', + + getUID: function getUID(prefix) { + do { + // eslint-disable-next-line no-bitwise + prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here + } while (document.getElementById(prefix)); + return prefix; + }, + getSelectorFromElement: function getSelectorFromElement(element) { + var selector = element.getAttribute('data-target'); + + if (!selector) { + selector = element.getAttribute('href') || ''; + selector = /^#[a-z]/i.test(selector) ? selector : null; + } + + return selector; + }, + reflow: function reflow(element) { + return element.offsetHeight; + }, + triggerTransitionEnd: function triggerTransitionEnd(element) { + $(element).trigger(transition.end); + }, + supportsTransitionEnd: function supportsTransitionEnd() { + return Boolean(transition); + }, + typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { + for (var property in configTypes) { + if (configTypes.hasOwnProperty(property)) { + var expectedTypes = configTypes[property]; + var value = config[property]; + var valueType = value && isElement(value) ? 'element' : toType(value); + + if (!new RegExp(expectedTypes).test(valueType)) { + throw new Error(componentName.toUpperCase() + ': ' + ('Option "' + property + '" provided type "' + valueType + '" ') + ('but expected type "' + expectedTypes + '".')); + } + } + } + } + }; + + setTransitionEndSupport(); + + return Util; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): alert.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Alert = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'alert'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.alert'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + + var Selector = { + DISMISS: '[data-dismiss="alert"]' + }; + + var Event = { + CLOSE: 'close' + EVENT_KEY, + CLOSED: 'closed' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + ALERT: 'alert', + FADE: 'fade', + SHOW: 'show' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Alert = function () { + function Alert(element) { + _classCallCheck(this, Alert); + + this._element = element; + } + + // getters + + // public + + Alert.prototype.close = function close(element) { + element = element || this._element; + + var rootElement = this._getRootElement(element); + var customEvent = this._triggerCloseEvent(rootElement); + + if (customEvent.isDefaultPrevented()) { + return; + } + + this._removeElement(rootElement); + }; + + Alert.prototype.dispose = function dispose() { + $.removeData(this._element, DATA_KEY); + this._element = null; + }; + + // private + + Alert.prototype._getRootElement = function _getRootElement(element) { + var selector = Util.getSelectorFromElement(element); + var parent = false; + + if (selector) { + parent = $(selector)[0]; + } + + if (!parent) { + parent = $(element).closest('.' + ClassName.ALERT)[0]; + } + + return parent; + }; + + Alert.prototype._triggerCloseEvent = function _triggerCloseEvent(element) { + var closeEvent = $.Event(Event.CLOSE); + + $(element).trigger(closeEvent); + return closeEvent; + }; + + Alert.prototype._removeElement = function _removeElement(element) { + var _this2 = this; + + $(element).removeClass(ClassName.SHOW); + + if (!Util.supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) { + this._destroyElement(element); + return; + } + + $(element).one(Util.TRANSITION_END, function (event) { + return _this2._destroyElement(element, event); + }).emulateTransitionEnd(TRANSITION_DURATION); + }; + + Alert.prototype._destroyElement = function _destroyElement(element) { + $(element).detach().trigger(Event.CLOSED).remove(); + }; + + // static + + Alert._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var $element = $(this); + var data = $element.data(DATA_KEY); + + if (!data) { + data = new Alert(this); + $element.data(DATA_KEY, data); + } + + if (config === 'close') { + data[config](this); + } + }); + }; + + Alert._handleDismiss = function _handleDismiss(alertInstance) { + return function (event) { + if (event) { + event.preventDefault(); + } + + alertInstance.close(this); + }; + }; + + _createClass(Alert, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }]); + + return Alert; + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert())); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Alert._jQueryInterface; + $.fn[NAME].Constructor = Alert; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Alert._jQueryInterface; + }; + + return Alert; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): button.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Button = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'button'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.button'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var ClassName = { + ACTIVE: 'active', + BUTTON: 'btn', + FOCUS: 'focus' + }; + + var Selector = { + DATA_TOGGLE_CARROT: '[data-toggle^="button"]', + DATA_TOGGLE: '[data-toggle="buttons"]', + INPUT: 'input', + ACTIVE: '.active', + BUTTON: '.btn' + }; + + var Event = { + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY, + FOCUS_BLUR_DATA_API: 'focus' + EVENT_KEY + DATA_API_KEY + ' ' + ('blur' + EVENT_KEY + DATA_API_KEY) + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Button = function () { + function Button(element) { + _classCallCheck(this, Button); + + this._element = element; + } + + // getters + + // public + + Button.prototype.toggle = function toggle() { + var triggerChangeEvent = true; + var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0]; + + if (rootElement) { + var input = $(this._element).find(Selector.INPUT)[0]; + + if (input) { + if (input.type === 'radio') { + if (input.checked && $(this._element).hasClass(ClassName.ACTIVE)) { + triggerChangeEvent = false; + } else { + var activeElement = $(rootElement).find(Selector.ACTIVE)[0]; + + if (activeElement) { + $(activeElement).removeClass(ClassName.ACTIVE); + } + } + } + + if (triggerChangeEvent) { + input.checked = !$(this._element).hasClass(ClassName.ACTIVE); + $(input).trigger('change'); + } + + input.focus(); + } + } + + this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE)); + + if (triggerChangeEvent) { + $(this._element).toggleClass(ClassName.ACTIVE); + } + }; + + Button.prototype.dispose = function dispose() { + $.removeData(this._element, DATA_KEY); + this._element = null; + }; + + // static + + Button._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + + if (!data) { + data = new Button(this); + $(this).data(DATA_KEY, data); + } + + if (config === 'toggle') { + data[config](); + } + }); + }; + + _createClass(Button, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }]); + + return Button; + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + event.preventDefault(); + + var button = event.target; + + if (!$(button).hasClass(ClassName.BUTTON)) { + button = $(button).closest(Selector.BUTTON); + } + + Button._jQueryInterface.call($(button), 'toggle'); + }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + var button = $(event.target).closest(Selector.BUTTON)[0]; + $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type)); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Button._jQueryInterface; + $.fn[NAME].Constructor = Button; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Button._jQueryInterface; + }; + + return Button; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): carousel.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Carousel = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'carousel'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.carousel'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 600; + var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key + var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key + + var Default = { + interval: 5000, + keyboard: true, + slide: false, + pause: 'hover', + wrap: true + }; + + var DefaultType = { + interval: '(number|boolean)', + keyboard: 'boolean', + slide: '(boolean|string)', + pause: '(string|boolean)', + wrap: 'boolean' + }; + + var Direction = { + NEXT: 'next', + PREV: 'prev', + LEFT: 'left', + RIGHT: 'right' + }; + + var Event = { + SLIDE: 'slide' + EVENT_KEY, + SLID: 'slid' + EVENT_KEY, + KEYDOWN: 'keydown' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY, + LOAD_DATA_API: 'load' + EVENT_KEY + DATA_API_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + CAROUSEL: 'carousel', + ACTIVE: 'active', + SLIDE: 'slide', + RIGHT: 'carousel-item-right', + LEFT: 'carousel-item-left', + NEXT: 'carousel-item-next', + PREV: 'carousel-item-prev', + ITEM: 'carousel-item' + }; + + var Selector = { + ACTIVE: '.active', + ACTIVE_ITEM: '.active.carousel-item', + ITEM: '.carousel-item', + NEXT_PREV: '.carousel-item-next, .carousel-item-prev', + INDICATORS: '.carousel-indicators', + DATA_SLIDE: '[data-slide], [data-slide-to]', + DATA_RIDE: '[data-ride="carousel"]' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Carousel = function () { + function Carousel(element, config) { + _classCallCheck(this, Carousel); + + this._items = null; + this._interval = null; + this._activeElement = null; + + this._isPaused = false; + this._isSliding = false; + + this._config = this._getConfig(config); + this._element = $(element)[0]; + this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0]; + + this._addEventListeners(); + } + + // getters + + // public + + Carousel.prototype.next = function next() { + if (this._isSliding) { + throw new Error('Carousel is sliding'); + } + this._slide(Direction.NEXT); + }; + + Carousel.prototype.nextWhenVisible = function nextWhenVisible() { + // Don't call next when the page isn't visible + if (!document.hidden) { + this.next(); + } + }; + + Carousel.prototype.prev = function prev() { + if (this._isSliding) { + throw new Error('Carousel is sliding'); + } + this._slide(Direction.PREVIOUS); + }; + + Carousel.prototype.pause = function pause(event) { + if (!event) { + this._isPaused = true; + } + + if ($(this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) { + Util.triggerTransitionEnd(this._element); + this.cycle(true); + } + + clearInterval(this._interval); + this._interval = null; + }; + + Carousel.prototype.cycle = function cycle(event) { + if (!event) { + this._isPaused = false; + } + + if (this._interval) { + clearInterval(this._interval); + this._interval = null; + } + + if (this._config.interval && !this._isPaused) { + this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval); + } + }; + + Carousel.prototype.to = function to(index) { + var _this3 = this; + + this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]; + + var activeIndex = this._getItemIndex(this._activeElement); + + if (index > this._items.length - 1 || index < 0) { + return; + } + + if (this._isSliding) { + $(this._element).one(Event.SLID, function () { + return _this3.to(index); + }); + return; + } + + if (activeIndex === index) { + this.pause(); + this.cycle(); + return; + } + + var direction = index > activeIndex ? Direction.NEXT : Direction.PREVIOUS; + + this._slide(direction, this._items[index]); + }; + + Carousel.prototype.dispose = function dispose() { + $(this._element).off(EVENT_KEY); + $.removeData(this._element, DATA_KEY); + + this._items = null; + this._config = null; + this._element = null; + this._interval = null; + this._isPaused = null; + this._isSliding = null; + this._activeElement = null; + this._indicatorsElement = null; + }; + + // private + + Carousel.prototype._getConfig = function _getConfig(config) { + config = $.extend({}, Default, config); + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + }; + + Carousel.prototype._addEventListeners = function _addEventListeners() { + var _this4 = this; + + if (this._config.keyboard) { + $(this._element).on(Event.KEYDOWN, function (event) { + return _this4._keydown(event); + }); + } + + if (this._config.pause === 'hover' && !('ontouchstart' in document.documentElement)) { + $(this._element).on(Event.MOUSEENTER, function (event) { + return _this4.pause(event); + }).on(Event.MOUSELEAVE, function (event) { + return _this4.cycle(event); + }); + } + }; + + Carousel.prototype._keydown = function _keydown(event) { + if (/input|textarea/i.test(event.target.tagName)) { + return; + } + + switch (event.which) { + case ARROW_LEFT_KEYCODE: + event.preventDefault(); + this.prev(); + break; + case ARROW_RIGHT_KEYCODE: + event.preventDefault(); + this.next(); + break; + default: + return; + } + }; + + Carousel.prototype._getItemIndex = function _getItemIndex(element) { + this._items = $.makeArray($(element).parent().find(Selector.ITEM)); + return this._items.indexOf(element); + }; + + Carousel.prototype._getItemByDirection = function _getItemByDirection(direction, activeElement) { + var isNextDirection = direction === Direction.NEXT; + var isPrevDirection = direction === Direction.PREVIOUS; + var activeIndex = this._getItemIndex(activeElement); + var lastItemIndex = this._items.length - 1; + var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex; + + if (isGoingToWrap && !this._config.wrap) { + return activeElement; + } + + var delta = direction === Direction.PREVIOUS ? -1 : 1; + var itemIndex = (activeIndex + delta) % this._items.length; + + return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; + }; + + Carousel.prototype._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) { + var slideEvent = $.Event(Event.SLIDE, { + relatedTarget: relatedTarget, + direction: eventDirectionName + }); + + $(this._element).trigger(slideEvent); + + return slideEvent; + }; + + Carousel.prototype._setActiveIndicatorElement = function _setActiveIndicatorElement(element) { + if (this._indicatorsElement) { + $(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE); + + var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; + + if (nextIndicator) { + $(nextIndicator).addClass(ClassName.ACTIVE); + } + } + }; + + Carousel.prototype._slide = function _slide(direction, element) { + var _this5 = this; + + var activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]; + var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); + + var isCycling = Boolean(this._interval); + + var directionalClassName = void 0; + var orderClassName = void 0; + var eventDirectionName = void 0; + + if (direction === Direction.NEXT) { + directionalClassName = ClassName.LEFT; + orderClassName = ClassName.NEXT; + eventDirectionName = Direction.LEFT; + } else { + directionalClassName = ClassName.RIGHT; + orderClassName = ClassName.PREV; + eventDirectionName = Direction.RIGHT; + } + + if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) { + this._isSliding = false; + return; + } + + var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); + if (slideEvent.isDefaultPrevented()) { + return; + } + + if (!activeElement || !nextElement) { + // some weirdness is happening, so we bail + return; + } + + this._isSliding = true; + + if (isCycling) { + this.pause(); + } + + this._setActiveIndicatorElement(nextElement); + + var slidEvent = $.Event(Event.SLID, { + relatedTarget: nextElement, + direction: eventDirectionName + }); + + if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.SLIDE)) { + + $(nextElement).addClass(orderClassName); + + Util.reflow(nextElement); + + $(activeElement).addClass(directionalClassName); + $(nextElement).addClass(directionalClassName); + + $(activeElement).one(Util.TRANSITION_END, function () { + $(nextElement).removeClass(directionalClassName + ' ' + orderClassName).addClass(ClassName.ACTIVE); + + $(activeElement).removeClass(ClassName.ACTIVE + ' ' + orderClassName + ' ' + directionalClassName); + + _this5._isSliding = false; + + setTimeout(function () { + return $(_this5._element).trigger(slidEvent); + }, 0); + }).emulateTransitionEnd(TRANSITION_DURATION); + } else { + $(activeElement).removeClass(ClassName.ACTIVE); + $(nextElement).addClass(ClassName.ACTIVE); + + this._isSliding = false; + $(this._element).trigger(slidEvent); + } + + if (isCycling) { + this.cycle(); + } + }; + + // static + + Carousel._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = $.extend({}, Default, $(this).data()); + + if ((typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object') { + $.extend(_config, config); + } + + var action = typeof config === 'string' ? config : _config.slide; + + if (!data) { + data = new Carousel(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'number') { + data.to(config); + } else if (typeof action === 'string') { + if (data[action] === undefined) { + throw new Error('No method named "' + action + '"'); + } + data[action](); + } else if (_config.interval) { + data.pause(); + data.cycle(); + } + }); + }; + + Carousel._dataApiClickHandler = function _dataApiClickHandler(event) { + var selector = Util.getSelectorFromElement(this); + + if (!selector) { + return; + } + + var target = $(selector)[0]; + + if (!target || !$(target).hasClass(ClassName.CAROUSEL)) { + return; + } + + var config = $.extend({}, $(target).data(), $(this).data()); + var slideIndex = this.getAttribute('data-slide-to'); + + if (slideIndex) { + config.interval = false; + } + + Carousel._jQueryInterface.call($(target), config); + + if (slideIndex) { + $(target).data(DATA_KEY).to(slideIndex); + } + + event.preventDefault(); + }; + + _createClass(Carousel, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; + } + }]); + + return Carousel; + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler); + + $(window).on(Event.LOAD_DATA_API, function () { + $(Selector.DATA_RIDE).each(function () { + var $carousel = $(this); + Carousel._jQueryInterface.call($carousel, $carousel.data()); + }); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Carousel._jQueryInterface; + $.fn[NAME].Constructor = Carousel; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Carousel._jQueryInterface; + }; + + return Carousel; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): collapse.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Collapse = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'collapse'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.collapse'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 600; + + var Default = { + toggle: true, + parent: '' + }; + + var DefaultType = { + toggle: 'boolean', + parent: 'string' + }; + + var Event = { + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + SHOW: 'show', + COLLAPSE: 'collapse', + COLLAPSING: 'collapsing', + COLLAPSED: 'collapsed' + }; + + var Dimension = { + WIDTH: 'width', + HEIGHT: 'height' + }; + + var Selector = { + ACTIVES: '.card > .show, .card > .collapsing', + DATA_TOGGLE: '[data-toggle="collapse"]' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Collapse = function () { + function Collapse(element, config) { + _classCallCheck(this, Collapse); + + this._isTransitioning = false; + this._element = element; + this._config = this._getConfig(config); + this._triggerArray = $.makeArray($('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]'))); + + this._parent = this._config.parent ? this._getParent() : null; + + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._element, this._triggerArray); + } + + if (this._config.toggle) { + this.toggle(); + } + } + + // getters + + // public + + Collapse.prototype.toggle = function toggle() { + if ($(this._element).hasClass(ClassName.SHOW)) { + this.hide(); + } else { + this.show(); + } + }; + + Collapse.prototype.show = function show() { + var _this6 = this; + + if (this._isTransitioning) { + throw new Error('Collapse is transitioning'); + } + + if ($(this._element).hasClass(ClassName.SHOW)) { + return; + } + + var actives = void 0; + var activesData = void 0; + + if (this._parent) { + actives = $.makeArray($(this._parent).find(Selector.ACTIVES)); + if (!actives.length) { + actives = null; + } + } + + if (actives) { + activesData = $(actives).data(DATA_KEY); + if (activesData && activesData._isTransitioning) { + return; + } + } + + var startEvent = $.Event(Event.SHOW); + $(this._element).trigger(startEvent); + if (startEvent.isDefaultPrevented()) { + return; + } + + if (actives) { + Collapse._jQueryInterface.call($(actives), 'hide'); + if (!activesData) { + $(actives).data(DATA_KEY, null); + } + } + + var dimension = this._getDimension(); + + $(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING); + + this._element.style[dimension] = 0; + this._element.setAttribute('aria-expanded', true); + + if (this._triggerArray.length) { + $(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true); + } + + this.setTransitioning(true); + + var complete = function complete() { + $(_this6._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW); + + _this6._element.style[dimension] = ''; + + _this6.setTransitioning(false); + + $(_this6._element).trigger(Event.SHOWN); + }; + + if (!Util.supportsTransitionEnd()) { + complete(); + return; + } + + var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); + var scrollSize = 'scroll' + capitalizedDimension; + + $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + + this._element.style[dimension] = this._element[scrollSize] + 'px'; + }; + + Collapse.prototype.hide = function hide() { + var _this7 = this; + + if (this._isTransitioning) { + throw new Error('Collapse is transitioning'); + } + + if (!$(this._element).hasClass(ClassName.SHOW)) { + return; + } + + var startEvent = $.Event(Event.HIDE); + $(this._element).trigger(startEvent); + if (startEvent.isDefaultPrevented()) { + return; + } + + var dimension = this._getDimension(); + var offsetDimension = dimension === Dimension.WIDTH ? 'offsetWidth' : 'offsetHeight'; + + this._element.style[dimension] = this._element[offsetDimension] + 'px'; + + Util.reflow(this._element); + + $(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW); + + this._element.setAttribute('aria-expanded', false); + + if (this._triggerArray.length) { + $(this._triggerArray).addClass(ClassName.COLLAPSED).attr('aria-expanded', false); + } + + this.setTransitioning(true); + + var complete = function complete() { + _this7.setTransitioning(false); + $(_this7._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN); + }; + + this._element.style[dimension] = ''; + + if (!Util.supportsTransitionEnd()) { + complete(); + return; + } + + $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + }; + + Collapse.prototype.setTransitioning = function setTransitioning(isTransitioning) { + this._isTransitioning = isTransitioning; + }; + + Collapse.prototype.dispose = function dispose() { + $.removeData(this._element, DATA_KEY); + + this._config = null; + this._parent = null; + this._element = null; + this._triggerArray = null; + this._isTransitioning = null; + }; + + // private + + Collapse.prototype._getConfig = function _getConfig(config) { + config = $.extend({}, Default, config); + config.toggle = Boolean(config.toggle); // coerce string values + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + }; + + Collapse.prototype._getDimension = function _getDimension() { + var hasWidth = $(this._element).hasClass(Dimension.WIDTH); + return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT; + }; + + Collapse.prototype._getParent = function _getParent() { + var _this8 = this; + + var parent = $(this._config.parent)[0]; + var selector = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]'; + + $(parent).find(selector).each(function (i, element) { + _this8._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); + }); + + return parent; + }; + + Collapse.prototype._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) { + if (element) { + var isOpen = $(element).hasClass(ClassName.SHOW); + element.setAttribute('aria-expanded', isOpen); + + if (triggerArray.length) { + $(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen); + } + } + }; + + // static + + Collapse._getTargetFromElement = function _getTargetFromElement(element) { + var selector = Util.getSelectorFromElement(element); + return selector ? $(selector)[0] : null; + }; + + Collapse._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DATA_KEY); + var _config = $.extend({}, Default, $this.data(), (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config); + + if (!data && _config.toggle && /show|hide/.test(config)) { + _config.toggle = false; + } + + if (!data) { + data = new Collapse(this, _config); + $this.data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); + }; + + _createClass(Collapse, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; + } + }]); + + return Collapse; + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); + + var target = Collapse._getTargetFromElement(this); + var data = $(target).data(DATA_KEY); + var config = data ? 'toggle' : $(this).data(); + + Collapse._jQueryInterface.call($(target), config); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Collapse._jQueryInterface; + $.fn[NAME].Constructor = Collapse; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Collapse._jQueryInterface; + }; + + return Collapse; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): dropdown.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Dropdown = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'dropdown'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.dropdown'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key + var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key + var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key + var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse) + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY, + FOCUSIN_DATA_API: 'focusin' + EVENT_KEY + DATA_API_KEY, + KEYDOWN_DATA_API: 'keydown' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + BACKDROP: 'dropdown-backdrop', + DISABLED: 'disabled', + SHOW: 'show' + }; + + var Selector = { + BACKDROP: '.dropdown-backdrop', + DATA_TOGGLE: '[data-toggle="dropdown"]', + FORM_CHILD: '.dropdown form', + ROLE_MENU: '[role="menu"]', + ROLE_LISTBOX: '[role="listbox"]', + NAVBAR_NAV: '.navbar-nav', + VISIBLE_ITEMS: '[role="menu"] li:not(.disabled) a, ' + '[role="listbox"] li:not(.disabled) a' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Dropdown = function () { + function Dropdown(element) { + _classCallCheck(this, Dropdown); + + this._element = element; + + this._addEventListeners(); + } + + // getters + + // public + + Dropdown.prototype.toggle = function toggle() { + if (this.disabled || $(this).hasClass(ClassName.DISABLED)) { + return false; + } + + var parent = Dropdown._getParentFromElement(this); + var isActive = $(parent).hasClass(ClassName.SHOW); + + Dropdown._clearMenus(); + + if (isActive) { + return false; + } + + if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) { + + // if mobile we use a backdrop because click events don't delegate + var dropdown = document.createElement('div'); + dropdown.className = ClassName.BACKDROP; + $(dropdown).insertBefore(this); + $(dropdown).on('click', Dropdown._clearMenus); + } + + var relatedTarget = { + relatedTarget: this + }; + var showEvent = $.Event(Event.SHOW, relatedTarget); + + $(parent).trigger(showEvent); + + if (showEvent.isDefaultPrevented()) { + return false; + } + + this.focus(); + this.setAttribute('aria-expanded', true); + + $(parent).toggleClass(ClassName.SHOW); + $(parent).trigger($.Event(Event.SHOWN, relatedTarget)); + + return false; + }; + + Dropdown.prototype.dispose = function dispose() { + $.removeData(this._element, DATA_KEY); + $(this._element).off(EVENT_KEY); + this._element = null; + }; + + // private + + Dropdown.prototype._addEventListeners = function _addEventListeners() { + $(this._element).on(Event.CLICK, this.toggle); + }; + + // static + + Dropdown._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + + if (!data) { + data = new Dropdown(this); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config].call(this); + } + }); + }; + + Dropdown._clearMenus = function _clearMenus(event) { + if (event && event.which === RIGHT_MOUSE_BUTTON_WHICH) { + return; + } + + var backdrop = $(Selector.BACKDROP)[0]; + if (backdrop) { + backdrop.parentNode.removeChild(backdrop); + } + + var toggles = $.makeArray($(Selector.DATA_TOGGLE)); + + for (var i = 0; i < toggles.length; i++) { + var parent = Dropdown._getParentFromElement(toggles[i]); + var relatedTarget = { + relatedTarget: toggles[i] + }; + + if (!$(parent).hasClass(ClassName.SHOW)) { + continue; + } + + if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'focusin') && $.contains(parent, event.target)) { + continue; + } + + var hideEvent = $.Event(Event.HIDE, relatedTarget); + $(parent).trigger(hideEvent); + if (hideEvent.isDefaultPrevented()) { + continue; + } + + toggles[i].setAttribute('aria-expanded', 'false'); + + $(parent).removeClass(ClassName.SHOW).trigger($.Event(Event.HIDDEN, relatedTarget)); + } + }; + + Dropdown._getParentFromElement = function _getParentFromElement(element) { + var parent = void 0; + var selector = Util.getSelectorFromElement(element); + + if (selector) { + parent = $(selector)[0]; + } + + return parent || element.parentNode; + }; + + Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) { + if (!/(38|40|27|32)/.test(event.which) || /input|textarea/i.test(event.target.tagName)) { + return; + } + + event.preventDefault(); + event.stopPropagation(); + + if (this.disabled || $(this).hasClass(ClassName.DISABLED)) { + return; + } + + var parent = Dropdown._getParentFromElement(this); + var isActive = $(parent).hasClass(ClassName.SHOW); + + if (!isActive && event.which !== ESCAPE_KEYCODE || isActive && event.which === ESCAPE_KEYCODE) { + + if (event.which === ESCAPE_KEYCODE) { + var toggle = $(parent).find(Selector.DATA_TOGGLE)[0]; + $(toggle).trigger('focus'); + } + + $(this).trigger('click'); + return; + } + + var items = $(parent).find(Selector.VISIBLE_ITEMS).get(); + + if (!items.length) { + return; + } + + var index = items.indexOf(event.target); + + if (event.which === ARROW_UP_KEYCODE && index > 0) { + // up + index--; + } + + if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { + // down + index++; + } + + if (index < 0) { + index = 0; + } + + items[index].focus(); + }; + + _createClass(Dropdown, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }]); + + return Dropdown; + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_MENU, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_LISTBOX, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + ' ' + Event.FOCUSIN_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, Dropdown.prototype.toggle).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) { + e.stopPropagation(); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Dropdown._jQueryInterface; + $.fn[NAME].Constructor = Dropdown; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Dropdown._jQueryInterface; + }; + + return Dropdown; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): modal.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Modal = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'modal'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.modal'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 300; + var BACKDROP_TRANSITION_DURATION = 150; + var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key + + var Default = { + backdrop: true, + keyboard: true, + focus: true, + show: true + }; + + var DefaultType = { + backdrop: '(boolean|string)', + keyboard: 'boolean', + focus: 'boolean', + show: 'boolean' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + RESIZE: 'resize' + EVENT_KEY, + CLICK_DISMISS: 'click.dismiss' + EVENT_KEY, + KEYDOWN_DISMISS: 'keydown.dismiss' + EVENT_KEY, + MOUSEUP_DISMISS: 'mouseup.dismiss' + EVENT_KEY, + MOUSEDOWN_DISMISS: 'mousedown.dismiss' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + SCROLLBAR_MEASURER: 'modal-scrollbar-measure', + BACKDROP: 'modal-backdrop', + OPEN: 'modal-open', + FADE: 'fade', + SHOW: 'show' + }; + + var Selector = { + DIALOG: '.modal-dialog', + DATA_TOGGLE: '[data-toggle="modal"]', + DATA_DISMISS: '[data-dismiss="modal"]', + FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Modal = function () { + function Modal(element, config) { + _classCallCheck(this, Modal); + + this._config = this._getConfig(config); + this._element = element; + this._dialog = $(element).find(Selector.DIALOG)[0]; + this._backdrop = null; + this._isShown = false; + this._isBodyOverflowing = false; + this._ignoreBackdropClick = false; + this._isTransitioning = false; + this._originalBodyPadding = 0; + this._scrollbarWidth = 0; + } + + // getters + + // public + + Modal.prototype.toggle = function toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + }; + + Modal.prototype.show = function show(relatedTarget) { + var _this9 = this; + + if (this._isTransitioning) { + throw new Error('Modal is transitioning'); + } + + if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { + this._isTransitioning = true; + } + var showEvent = $.Event(Event.SHOW, { + relatedTarget: relatedTarget + }); + + $(this._element).trigger(showEvent); + + if (this._isShown || showEvent.isDefaultPrevented()) { + return; + } + + this._isShown = true; + + this._checkScrollbar(); + this._setScrollbar(); + + $(document.body).addClass(ClassName.OPEN); + + this._setEscapeEvent(); + this._setResizeEvent(); + + $(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) { + return _this9.hide(event); + }); + + $(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () { + $(_this9._element).one(Event.MOUSEUP_DISMISS, function (event) { + if ($(event.target).is(_this9._element)) { + _this9._ignoreBackdropClick = true; + } + }); + }); + + this._showBackdrop(function () { + return _this9._showElement(relatedTarget); + }); + }; + + Modal.prototype.hide = function hide(event) { + var _this10 = this; + + if (event) { + event.preventDefault(); + } + + if (this._isTransitioning) { + throw new Error('Modal is transitioning'); + } + + var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE); + if (transition) { + this._isTransitioning = true; + } + + var hideEvent = $.Event(Event.HIDE); + $(this._element).trigger(hideEvent); + + if (!this._isShown || hideEvent.isDefaultPrevented()) { + return; + } + + this._isShown = false; + + this._setEscapeEvent(); + this._setResizeEvent(); + + $(document).off(Event.FOCUSIN); + + $(this._element).removeClass(ClassName.SHOW); + + $(this._element).off(Event.CLICK_DISMISS); + $(this._dialog).off(Event.MOUSEDOWN_DISMISS); + + if (transition) { + $(this._element).one(Util.TRANSITION_END, function (event) { + return _this10._hideModal(event); + }).emulateTransitionEnd(TRANSITION_DURATION); + } else { + this._hideModal(); + } + }; + + Modal.prototype.dispose = function dispose() { + $.removeData(this._element, DATA_KEY); + + $(window, document, this._element, this._backdrop).off(EVENT_KEY); + + this._config = null; + this._element = null; + this._dialog = null; + this._backdrop = null; + this._isShown = null; + this._isBodyOverflowing = null; + this._ignoreBackdropClick = null; + this._originalBodyPadding = null; + this._scrollbarWidth = null; + }; + + // private + + Modal.prototype._getConfig = function _getConfig(config) { + config = $.extend({}, Default, config); + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + }; + + Modal.prototype._showElement = function _showElement(relatedTarget) { + var _this11 = this; + + var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE); + + if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { + // don't move modals dom position + document.body.appendChild(this._element); + } + + this._element.style.display = 'block'; + this._element.removeAttribute('aria-hidden'); + this._element.scrollTop = 0; + + if (transition) { + Util.reflow(this._element); + } + + $(this._element).addClass(ClassName.SHOW); + + if (this._config.focus) { + this._enforceFocus(); + } + + var shownEvent = $.Event(Event.SHOWN, { + relatedTarget: relatedTarget + }); + + var transitionComplete = function transitionComplete() { + if (_this11._config.focus) { + _this11._element.focus(); + } + _this11._isTransitioning = false; + $(_this11._element).trigger(shownEvent); + }; + + if (transition) { + $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + transitionComplete(); + } + }; + + Modal.prototype._enforceFocus = function _enforceFocus() { + var _this12 = this; + + $(document).off(Event.FOCUSIN) // guard against infinite focus loop + .on(Event.FOCUSIN, function (event) { + if (document !== event.target && _this12._element !== event.target && !$(_this12._element).has(event.target).length) { + _this12._element.focus(); + } + }); + }; + + Modal.prototype._setEscapeEvent = function _setEscapeEvent() { + var _this13 = this; + + if (this._isShown && this._config.keyboard) { + $(this._element).on(Event.KEYDOWN_DISMISS, function (event) { + if (event.which === ESCAPE_KEYCODE) { + _this13.hide(); + } + }); + } else if (!this._isShown) { + $(this._element).off(Event.KEYDOWN_DISMISS); + } + }; + + Modal.prototype._setResizeEvent = function _setResizeEvent() { + var _this14 = this; + + if (this._isShown) { + $(window).on(Event.RESIZE, function (event) { + return _this14._handleUpdate(event); + }); + } else { + $(window).off(Event.RESIZE); + } + }; + + Modal.prototype._hideModal = function _hideModal() { + var _this15 = this; + + this._element.style.display = 'none'; + this._element.setAttribute('aria-hidden', 'true'); + this._isTransitioning = false; + this._showBackdrop(function () { + $(document.body).removeClass(ClassName.OPEN); + _this15._resetAdjustments(); + _this15._resetScrollbar(); + $(_this15._element).trigger(Event.HIDDEN); + }); + }; + + Modal.prototype._removeBackdrop = function _removeBackdrop() { + if (this._backdrop) { + $(this._backdrop).remove(); + this._backdrop = null; + } + }; + + Modal.prototype._showBackdrop = function _showBackdrop(callback) { + var _this16 = this; + + var animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : ''; + + if (this._isShown && this._config.backdrop) { + var doAnimate = Util.supportsTransitionEnd() && animate; + + this._backdrop = document.createElement('div'); + this._backdrop.className = ClassName.BACKDROP; + + if (animate) { + $(this._backdrop).addClass(animate); + } + + $(this._backdrop).appendTo(document.body); + + $(this._element).on(Event.CLICK_DISMISS, function (event) { + if (_this16._ignoreBackdropClick) { + _this16._ignoreBackdropClick = false; + return; + } + if (event.target !== event.currentTarget) { + return; + } + if (_this16._config.backdrop === 'static') { + _this16._element.focus(); + } else { + _this16.hide(); + } + }); + + if (doAnimate) { + Util.reflow(this._backdrop); + } + + $(this._backdrop).addClass(ClassName.SHOW); + + if (!callback) { + return; + } + + if (!doAnimate) { + callback(); + return; + } + + $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); + } else if (!this._isShown && this._backdrop) { + $(this._backdrop).removeClass(ClassName.SHOW); + + var callbackRemove = function callbackRemove() { + _this16._removeBackdrop(); + if (callback) { + callback(); + } + }; + + if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { + $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); + } else { + callbackRemove(); + } + } else if (callback) { + callback(); + } + }; + + // ---------------------------------------------------------------------- + // the following methods are used to handle overflowing modals + // todo (fat): these should probably be refactored out of modal.js + // ---------------------------------------------------------------------- + + Modal.prototype._handleUpdate = function _handleUpdate() { + this._adjustDialog(); + }; + + Modal.prototype._adjustDialog = function _adjustDialog() { + var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + + if (!this._isBodyOverflowing && isModalOverflowing) { + this._element.style.paddingLeft = this._scrollbarWidth + 'px'; + } + + if (this._isBodyOverflowing && !isModalOverflowing) { + this._element.style.paddingRight = this._scrollbarWidth + 'px'; + } + }; + + Modal.prototype._resetAdjustments = function _resetAdjustments() { + this._element.style.paddingLeft = ''; + this._element.style.paddingRight = ''; + }; + + Modal.prototype._checkScrollbar = function _checkScrollbar() { + this._isBodyOverflowing = document.body.clientWidth < window.innerWidth; + this._scrollbarWidth = this._getScrollbarWidth(); + }; + + Modal.prototype._setScrollbar = function _setScrollbar() { + var bodyPadding = parseInt($(Selector.FIXED_CONTENT).css('padding-right') || 0, 10); + + this._originalBodyPadding = document.body.style.paddingRight || ''; + + if (this._isBodyOverflowing) { + document.body.style.paddingRight = bodyPadding + this._scrollbarWidth + 'px'; + } + }; + + Modal.prototype._resetScrollbar = function _resetScrollbar() { + document.body.style.paddingRight = this._originalBodyPadding; + }; + + Modal.prototype._getScrollbarWidth = function _getScrollbarWidth() { + // thx d.walsh + var scrollDiv = document.createElement('div'); + scrollDiv.className = ClassName.SCROLLBAR_MEASURER; + document.body.appendChild(scrollDiv); + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); + return scrollbarWidth; + }; + + // static + + Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = $.extend({}, Modal.Default, $(this).data(), (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config); + + if (!data) { + data = new Modal(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](relatedTarget); + } else if (_config.show) { + data.show(relatedTarget); + } + }); + }; + + _createClass(Modal, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; + } + }]); + + return Modal; + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + var _this17 = this; + + var target = void 0; + var selector = Util.getSelectorFromElement(this); + + if (selector) { + target = $(selector)[0]; + } + + var config = $(target).data(DATA_KEY) ? 'toggle' : $.extend({}, $(target).data(), $(this).data()); + + if (this.tagName === 'A' || this.tagName === 'AREA') { + event.preventDefault(); + } + + var $target = $(target).one(Event.SHOW, function (showEvent) { + if (showEvent.isDefaultPrevented()) { + // only register focus restorer if modal will actually get shown + return; + } + + $target.one(Event.HIDDEN, function () { + if ($(_this17).is(':visible')) { + _this17.focus(); + } + }); + }); + + Modal._jQueryInterface.call($(target), config, this); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Modal._jQueryInterface; + $.fn[NAME].Constructor = Modal; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Modal._jQueryInterface; + }; + + return Modal; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): scrollspy.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var ScrollSpy = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'scrollspy'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.scrollspy'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var Default = { + offset: 10, + method: 'auto', + target: '' + }; + + var DefaultType = { + offset: 'number', + method: 'string', + target: '(string|element)' + }; + + var Event = { + ACTIVATE: 'activate' + EVENT_KEY, + SCROLL: 'scroll' + EVENT_KEY, + LOAD_DATA_API: 'load' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + DROPDOWN_ITEM: 'dropdown-item', + DROPDOWN_MENU: 'dropdown-menu', + NAV_LINK: 'nav-link', + NAV: 'nav', + ACTIVE: 'active' + }; + + var Selector = { + DATA_SPY: '[data-spy="scroll"]', + ACTIVE: '.active', + LIST_ITEM: '.list-item', + LI: 'li', + LI_DROPDOWN: 'li.dropdown', + NAV_LINKS: '.nav-link', + DROPDOWN: '.dropdown', + DROPDOWN_ITEMS: '.dropdown-item', + DROPDOWN_TOGGLE: '.dropdown-toggle' + }; + + var OffsetMethod = { + OFFSET: 'offset', + POSITION: 'position' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var ScrollSpy = function () { + function ScrollSpy(element, config) { + var _this18 = this; + + _classCallCheck(this, ScrollSpy); + + this._element = element; + this._scrollElement = element.tagName === 'BODY' ? window : element; + this._config = this._getConfig(config); + this._selector = this._config.target + ' ' + Selector.NAV_LINKS + ',' + (this._config.target + ' ' + Selector.DROPDOWN_ITEMS); + this._offsets = []; + this._targets = []; + this._activeTarget = null; + this._scrollHeight = 0; + + $(this._scrollElement).on(Event.SCROLL, function (event) { + return _this18._process(event); + }); + + this.refresh(); + this._process(); + } + + // getters + + // public + + ScrollSpy.prototype.refresh = function refresh() { + var _this19 = this; + + var autoMethod = this._scrollElement !== this._scrollElement.window ? OffsetMethod.POSITION : OffsetMethod.OFFSET; + + var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; + + var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0; + + this._offsets = []; + this._targets = []; + + this._scrollHeight = this._getScrollHeight(); + + var targets = $.makeArray($(this._selector)); + + targets.map(function (element) { + var target = void 0; + var targetSelector = Util.getSelectorFromElement(element); + + if (targetSelector) { + target = $(targetSelector)[0]; + } + + if (target && (target.offsetWidth || target.offsetHeight)) { + // todo (fat): remove sketch reliance on jQuery position/offset + return [$(target)[offsetMethod]().top + offsetBase, targetSelector]; + } + return null; + }).filter(function (item) { + return item; + }).sort(function (a, b) { + return a[0] - b[0]; + }).forEach(function (item) { + _this19._offsets.push(item[0]); + _this19._targets.push(item[1]); + }); + }; + + ScrollSpy.prototype.dispose = function dispose() { + $.removeData(this._element, DATA_KEY); + $(this._scrollElement).off(EVENT_KEY); + + this._element = null; + this._scrollElement = null; + this._config = null; + this._selector = null; + this._offsets = null; + this._targets = null; + this._activeTarget = null; + this._scrollHeight = null; + }; + + // private + + ScrollSpy.prototype._getConfig = function _getConfig(config) { + config = $.extend({}, Default, config); + + if (typeof config.target !== 'string') { + var id = $(config.target).attr('id'); + if (!id) { + id = Util.getUID(NAME); + $(config.target).attr('id', id); + } + config.target = '#' + id; + } + + Util.typeCheckConfig(NAME, config, DefaultType); + + return config; + }; + + ScrollSpy.prototype._getScrollTop = function _getScrollTop() { + return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; + }; + + ScrollSpy.prototype._getScrollHeight = function _getScrollHeight() { + return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); + }; + + ScrollSpy.prototype._getOffsetHeight = function _getOffsetHeight() { + return this._scrollElement === window ? window.innerHeight : this._scrollElement.offsetHeight; + }; + + ScrollSpy.prototype._process = function _process() { + var scrollTop = this._getScrollTop() + this._config.offset; + var scrollHeight = this._getScrollHeight(); + var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); + + if (this._scrollHeight !== scrollHeight) { + this.refresh(); + } + + if (scrollTop >= maxScroll) { + var target = this._targets[this._targets.length - 1]; + + if (this._activeTarget !== target) { + this._activate(target); + } + return; + } + + if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) { + this._activeTarget = null; + this._clear(); + return; + } + + for (var i = this._offsets.length; i--;) { + var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (this._offsets[i + 1] === undefined || scrollTop < this._offsets[i + 1]); + + if (isActiveTarget) { + this._activate(this._targets[i]); + } + } + }; + + ScrollSpy.prototype._activate = function _activate(target) { + this._activeTarget = target; + + this._clear(); + + var queries = this._selector.split(','); + queries = queries.map(function (selector) { + return selector + '[data-target="' + target + '"],' + (selector + '[href="' + target + '"]'); + }); + + var $link = $(queries.join(',')); + + if ($link.hasClass(ClassName.DROPDOWN_ITEM)) { + $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); + $link.addClass(ClassName.ACTIVE); + } else { + // todo (fat) this is kinda sus... + // recursively add actives to tested nav-links + $link.parents(Selector.LI).find('> ' + Selector.NAV_LINKS).addClass(ClassName.ACTIVE); + } + + $(this._scrollElement).trigger(Event.ACTIVATE, { + relatedTarget: target + }); + }; + + ScrollSpy.prototype._clear = function _clear() { + $(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE); + }; + + // static + + ScrollSpy._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config; + + if (!data) { + data = new ScrollSpy(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); + }; + + _createClass(ScrollSpy, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; + } + }]); + + return ScrollSpy; + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(window).on(Event.LOAD_DATA_API, function () { + var scrollSpys = $.makeArray($(Selector.DATA_SPY)); + + for (var i = scrollSpys.length; i--;) { + var $spy = $(scrollSpys[i]); + ScrollSpy._jQueryInterface.call($spy, $spy.data()); + } + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = ScrollSpy._jQueryInterface; + $.fn[NAME].Constructor = ScrollSpy; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return ScrollSpy._jQueryInterface; + }; + + return ScrollSpy; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): tab.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Tab = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'tab'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.tab'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + DROPDOWN_MENU: 'dropdown-menu', + ACTIVE: 'active', + DISABLED: 'disabled', + FADE: 'fade', + SHOW: 'show' + }; + + var Selector = { + A: 'a', + LI: 'li', + DROPDOWN: '.dropdown', + LIST: 'ul:not(.dropdown-menu), ol:not(.dropdown-menu), nav:not(.dropdown-menu)', + FADE_CHILD: '> .nav-item .fade, > .fade', + ACTIVE: '.active', + ACTIVE_CHILD: '> .nav-item > .active, > .active', + DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"]', + DROPDOWN_TOGGLE: '.dropdown-toggle', + DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Tab = function () { + function Tab(element) { + _classCallCheck(this, Tab); + + this._element = element; + } + + // getters + + // public + + Tab.prototype.show = function show() { + var _this20 = this; + + if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName.ACTIVE) || $(this._element).hasClass(ClassName.DISABLED)) { + return; + } + + var target = void 0; + var previous = void 0; + var listElement = $(this._element).closest(Selector.LIST)[0]; + var selector = Util.getSelectorFromElement(this._element); + + if (listElement) { + previous = $.makeArray($(listElement).find(Selector.ACTIVE)); + previous = previous[previous.length - 1]; + } + + var hideEvent = $.Event(Event.HIDE, { + relatedTarget: this._element + }); + + var showEvent = $.Event(Event.SHOW, { + relatedTarget: previous + }); + + if (previous) { + $(previous).trigger(hideEvent); + } + + $(this._element).trigger(showEvent); + + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) { + return; + } + + if (selector) { + target = $(selector)[0]; + } + + this._activate(this._element, listElement); + + var complete = function complete() { + var hiddenEvent = $.Event(Event.HIDDEN, { + relatedTarget: _this20._element + }); + + var shownEvent = $.Event(Event.SHOWN, { + relatedTarget: previous + }); + + $(previous).trigger(hiddenEvent); + $(_this20._element).trigger(shownEvent); + }; + + if (target) { + this._activate(target, target.parentNode, complete); + } else { + complete(); + } + }; + + Tab.prototype.dispose = function dispose() { + $.removeClass(this._element, DATA_KEY); + this._element = null; + }; + + // private + + Tab.prototype._activate = function _activate(element, container, callback) { + var _this21 = this; + + var active = $(container).find(Selector.ACTIVE_CHILD)[0]; + var isTransitioning = callback && Util.supportsTransitionEnd() && (active && $(active).hasClass(ClassName.FADE) || Boolean($(container).find(Selector.FADE_CHILD)[0])); + + var complete = function complete() { + return _this21._transitionComplete(element, active, isTransitioning, callback); + }; + + if (active && isTransitioning) { + $(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + complete(); + } + + if (active) { + $(active).removeClass(ClassName.SHOW); + } + }; + + Tab.prototype._transitionComplete = function _transitionComplete(element, active, isTransitioning, callback) { + if (active) { + $(active).removeClass(ClassName.ACTIVE); + + var dropdownChild = $(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0]; + + if (dropdownChild) { + $(dropdownChild).removeClass(ClassName.ACTIVE); + } + + active.setAttribute('aria-expanded', false); + } + + $(element).addClass(ClassName.ACTIVE); + element.setAttribute('aria-expanded', true); + + if (isTransitioning) { + Util.reflow(element); + $(element).addClass(ClassName.SHOW); + } else { + $(element).removeClass(ClassName.FADE); + } + + if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) { + + var dropdownElement = $(element).closest(Selector.DROPDOWN)[0]; + if (dropdownElement) { + $(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); + } + + element.setAttribute('aria-expanded', true); + } + + if (callback) { + callback(); + } + }; + + // static + + Tab._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DATA_KEY); + + if (!data) { + data = new Tab(this); + $this.data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); + }; + + _createClass(Tab, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }]); + + return Tab; + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); + Tab._jQueryInterface.call($(this), 'show'); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Tab._jQueryInterface; + $.fn[NAME].Constructor = Tab; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Tab._jQueryInterface; + }; + + return Tab; +}(jQuery); + +/* global Tether */ + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): tooltip.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Tooltip = function ($) { + + /** + * Check for Tether dependency + * Tether - http://tether.io/ + */ + if (typeof Tether === 'undefined') { + throw new Error('Bootstrap tooltips require Tether (http://tether.io/)'); + } + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'tooltip'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.tooltip'; + var EVENT_KEY = '.' + DATA_KEY; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + var CLASS_PREFIX = 'bs-tether'; + + var Default = { + animation: true, + template: '

    ', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + selector: false, + placement: 'top', + offset: '0 0', + constraints: [], + container: false + }; + + var DefaultType = { + animation: 'boolean', + template: 'string', + title: '(string|element|function)', + trigger: 'string', + delay: '(number|object)', + html: 'boolean', + selector: '(string|boolean)', + placement: '(string|function)', + offset: 'string', + constraints: 'array', + container: '(string|element|boolean)' + }; + + var AttachmentMap = { + TOP: 'bottom center', + RIGHT: 'middle left', + BOTTOM: 'top center', + LEFT: 'middle right' + }; + + var HoverState = { + SHOW: 'show', + OUT: 'out' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + INSERTED: 'inserted' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + FOCUSOUT: 'focusout' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY + }; + + var ClassName = { + FADE: 'fade', + SHOW: 'show' + }; + + var Selector = { + TOOLTIP: '.tooltip', + TOOLTIP_INNER: '.tooltip-inner' + }; + + var TetherClass = { + element: false, + enabled: false + }; + + var Trigger = { + HOVER: 'hover', + FOCUS: 'focus', + CLICK: 'click', + MANUAL: 'manual' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Tooltip = function () { + function Tooltip(element, config) { + _classCallCheck(this, Tooltip); + + // private + this._isEnabled = true; + this._timeout = 0; + this._hoverState = ''; + this._activeTrigger = {}; + this._isTransitioning = false; + this._tether = null; + + // protected + this.element = element; + this.config = this._getConfig(config); + this.tip = null; + + this._setListeners(); + } + + // getters + + // public + + Tooltip.prototype.enable = function enable() { + this._isEnabled = true; + }; + + Tooltip.prototype.disable = function disable() { + this._isEnabled = false; + }; + + Tooltip.prototype.toggleEnabled = function toggleEnabled() { + this._isEnabled = !this._isEnabled; + }; + + Tooltip.prototype.toggle = function toggle(event) { + if (event) { + var dataKey = this.constructor.DATA_KEY; + var context = $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + context._activeTrigger.click = !context._activeTrigger.click; + + if (context._isWithActiveTrigger()) { + context._enter(null, context); + } else { + context._leave(null, context); + } + } else { + + if ($(this.getTipElement()).hasClass(ClassName.SHOW)) { + this._leave(null, this); + return; + } + + this._enter(null, this); + } + }; + + Tooltip.prototype.dispose = function dispose() { + clearTimeout(this._timeout); + + this.cleanupTether(); + + $.removeData(this.element, this.constructor.DATA_KEY); + + $(this.element).off(this.constructor.EVENT_KEY); + $(this.element).closest('.modal').off('hide.bs.modal'); + + if (this.tip) { + $(this.tip).remove(); + } + + this._isEnabled = null; + this._timeout = null; + this._hoverState = null; + this._activeTrigger = null; + this._tether = null; + + this.element = null; + this.config = null; + this.tip = null; + }; + + Tooltip.prototype.show = function show() { + var _this22 = this; + + if ($(this.element).css('display') === 'none') { + throw new Error('Please use show on visible elements'); + } + + var showEvent = $.Event(this.constructor.Event.SHOW); + if (this.isWithContent() && this._isEnabled) { + if (this._isTransitioning) { + throw new Error('Tooltip is transitioning'); + } + $(this.element).trigger(showEvent); + + var isInTheDom = $.contains(this.element.ownerDocument.documentElement, this.element); + + if (showEvent.isDefaultPrevented() || !isInTheDom) { + return; + } + + var tip = this.getTipElement(); + var tipId = Util.getUID(this.constructor.NAME); + + tip.setAttribute('id', tipId); + this.element.setAttribute('aria-describedby', tipId); + + this.setContent(); + + if (this.config.animation) { + $(tip).addClass(ClassName.FADE); + } + + var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement; + + var attachment = this._getAttachment(placement); + + var container = this.config.container === false ? document.body : $(this.config.container); + + $(tip).data(this.constructor.DATA_KEY, this).appendTo(container); + + $(this.element).trigger(this.constructor.Event.INSERTED); + + this._tether = new Tether({ + attachment: attachment, + element: tip, + target: this.element, + classes: TetherClass, + classPrefix: CLASS_PREFIX, + offset: this.config.offset, + constraints: this.config.constraints, + addTargetClasses: false + }); + + Util.reflow(tip); + this._tether.position(); + + $(tip).addClass(ClassName.SHOW); + + var complete = function complete() { + var prevHoverState = _this22._hoverState; + _this22._hoverState = null; + _this22._isTransitioning = false; + + $(_this22.element).trigger(_this22.constructor.Event.SHOWN); + + if (prevHoverState === HoverState.OUT) { + _this22._leave(null, _this22); + } + }; + + if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) { + this._isTransitioning = true; + $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION); + return; + } + + complete(); + } + }; + + Tooltip.prototype.hide = function hide(callback) { + var _this23 = this; + + var tip = this.getTipElement(); + var hideEvent = $.Event(this.constructor.Event.HIDE); + if (this._isTransitioning) { + throw new Error('Tooltip is transitioning'); + } + var complete = function complete() { + if (_this23._hoverState !== HoverState.SHOW && tip.parentNode) { + tip.parentNode.removeChild(tip); + } + + _this23.element.removeAttribute('aria-describedby'); + $(_this23.element).trigger(_this23.constructor.Event.HIDDEN); + _this23._isTransitioning = false; + _this23.cleanupTether(); + + if (callback) { + callback(); + } + }; + + $(this.element).trigger(hideEvent); + + if (hideEvent.isDefaultPrevented()) { + return; + } + + $(tip).removeClass(ClassName.SHOW); + + this._activeTrigger[Trigger.CLICK] = false; + this._activeTrigger[Trigger.FOCUS] = false; + this._activeTrigger[Trigger.HOVER] = false; + + if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) { + this._isTransitioning = true; + $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + complete(); + } + + this._hoverState = ''; + }; + + // protected + + Tooltip.prototype.isWithContent = function isWithContent() { + return Boolean(this.getTitle()); + }; + + Tooltip.prototype.getTipElement = function getTipElement() { + return this.tip = this.tip || $(this.config.template)[0]; + }; + + Tooltip.prototype.setContent = function setContent() { + var $tip = $(this.getTipElement()); + + this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle()); + + $tip.removeClass(ClassName.FADE + ' ' + ClassName.SHOW); + + this.cleanupTether(); + }; + + Tooltip.prototype.setElementContent = function setElementContent($element, content) { + var html = this.config.html; + if ((typeof content === 'undefined' ? 'undefined' : _typeof(content)) === 'object' && (content.nodeType || content.jquery)) { + // content is a DOM node or a jQuery + if (html) { + if (!$(content).parent().is($element)) { + $element.empty().append(content); + } + } else { + $element.text($(content).text()); + } + } else { + $element[html ? 'html' : 'text'](content); + } + }; + + Tooltip.prototype.getTitle = function getTitle() { + var title = this.element.getAttribute('data-original-title'); + + if (!title) { + title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title; + } + + return title; + }; + + Tooltip.prototype.cleanupTether = function cleanupTether() { + if (this._tether) { + this._tether.destroy(); + } + }; + + // private + + Tooltip.prototype._getAttachment = function _getAttachment(placement) { + return AttachmentMap[placement.toUpperCase()]; + }; + + Tooltip.prototype._setListeners = function _setListeners() { + var _this24 = this; + + var triggers = this.config.trigger.split(' '); + + triggers.forEach(function (trigger) { + if (trigger === 'click') { + $(_this24.element).on(_this24.constructor.Event.CLICK, _this24.config.selector, function (event) { + return _this24.toggle(event); + }); + } else if (trigger !== Trigger.MANUAL) { + var eventIn = trigger === Trigger.HOVER ? _this24.constructor.Event.MOUSEENTER : _this24.constructor.Event.FOCUSIN; + var eventOut = trigger === Trigger.HOVER ? _this24.constructor.Event.MOUSELEAVE : _this24.constructor.Event.FOCUSOUT; + + $(_this24.element).on(eventIn, _this24.config.selector, function (event) { + return _this24._enter(event); + }).on(eventOut, _this24.config.selector, function (event) { + return _this24._leave(event); + }); + } + + $(_this24.element).closest('.modal').on('hide.bs.modal', function () { + return _this24.hide(); + }); + }); + + if (this.config.selector) { + this.config = $.extend({}, this.config, { + trigger: 'manual', + selector: '' + }); + } else { + this._fixTitle(); + } + }; + + Tooltip.prototype._fixTitle = function _fixTitle() { + var titleType = _typeof(this.element.getAttribute('data-original-title')); + if (this.element.getAttribute('title') || titleType !== 'string') { + this.element.setAttribute('data-original-title', this.element.getAttribute('title') || ''); + this.element.setAttribute('title', ''); + } + }; + + Tooltip.prototype._enter = function _enter(event, context) { + var dataKey = this.constructor.DATA_KEY; + + context = context || $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + if (event) { + context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true; + } + + if ($(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) { + context._hoverState = HoverState.SHOW; + return; + } + + clearTimeout(context._timeout); + + context._hoverState = HoverState.SHOW; + + if (!context.config.delay || !context.config.delay.show) { + context.show(); + return; + } + + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.SHOW) { + context.show(); + } + }, context.config.delay.show); + }; + + Tooltip.prototype._leave = function _leave(event, context) { + var dataKey = this.constructor.DATA_KEY; + + context = context || $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + if (event) { + context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false; + } + + if (context._isWithActiveTrigger()) { + return; + } + + clearTimeout(context._timeout); + + context._hoverState = HoverState.OUT; + + if (!context.config.delay || !context.config.delay.hide) { + context.hide(); + return; + } + + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.OUT) { + context.hide(); + } + }, context.config.delay.hide); + }; + + Tooltip.prototype._isWithActiveTrigger = function _isWithActiveTrigger() { + for (var trigger in this._activeTrigger) { + if (this._activeTrigger[trigger]) { + return true; + } + } + + return false; + }; + + Tooltip.prototype._getConfig = function _getConfig(config) { + config = $.extend({}, this.constructor.Default, $(this.element).data(), config); + + if (config.delay && typeof config.delay === 'number') { + config.delay = { + show: config.delay, + hide: config.delay + }; + } + + Util.typeCheckConfig(NAME, config, this.constructor.DefaultType); + + return config; + }; + + Tooltip.prototype._getDelegateConfig = function _getDelegateConfig() { + var config = {}; + + if (this.config) { + for (var key in this.config) { + if (this.constructor.Default[key] !== this.config[key]) { + config[key] = this.config[key]; + } + } + } + + return config; + }; + + // static + + Tooltip._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config; + + if (!data && /dispose|hide/.test(config)) { + return; + } + + if (!data) { + data = new Tooltip(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); + }; + + _createClass(Tooltip, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; + } + }, { + key: 'NAME', + get: function get() { + return NAME; + } + }, { + key: 'DATA_KEY', + get: function get() { + return DATA_KEY; + } + }, { + key: 'Event', + get: function get() { + return Event; + } + }, { + key: 'EVENT_KEY', + get: function get() { + return EVENT_KEY; + } + }, { + key: 'DefaultType', + get: function get() { + return DefaultType; + } + }]); + + return Tooltip; + }(); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Tooltip._jQueryInterface; + $.fn[NAME].Constructor = Tooltip; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Tooltip._jQueryInterface; + }; + + return Tooltip; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): popover.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Popover = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'popover'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.popover'; + var EVENT_KEY = '.' + DATA_KEY; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var Default = $.extend({}, Tooltip.Default, { + placement: 'right', + trigger: 'click', + content: '', + template: '' + }); + + var DefaultType = $.extend({}, Tooltip.DefaultType, { + content: '(string|element|function)' + }); + + var ClassName = { + FADE: 'fade', + SHOW: 'show' + }; + + var Selector = { + TITLE: '.popover-title', + CONTENT: '.popover-content' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + INSERTED: 'inserted' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + FOCUSOUT: 'focusout' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Popover = function (_Tooltip) { + _inherits(Popover, _Tooltip); + + function Popover() { + _classCallCheck(this, Popover); + + return _possibleConstructorReturn(this, _Tooltip.apply(this, arguments)); + } + + // overrides + + Popover.prototype.isWithContent = function isWithContent() { + return this.getTitle() || this._getContent(); + }; + + Popover.prototype.getTipElement = function getTipElement() { + return this.tip = this.tip || $(this.config.template)[0]; + }; + + Popover.prototype.setContent = function setContent() { + var $tip = $(this.getTipElement()); + + // we use append for html objects to maintain js events + this.setElementContent($tip.find(Selector.TITLE), this.getTitle()); + this.setElementContent($tip.find(Selector.CONTENT), this._getContent()); + + $tip.removeClass(ClassName.FADE + ' ' + ClassName.SHOW); + + this.cleanupTether(); + }; + + // private + + Popover.prototype._getContent = function _getContent() { + return this.element.getAttribute('data-content') || (typeof this.config.content === 'function' ? this.config.content.call(this.element) : this.config.content); + }; + + // static + + Popover._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' ? config : null; + + if (!data && /destroy|hide/.test(config)) { + return; + } + + if (!data) { + data = new Popover(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); + }; + + _createClass(Popover, null, [{ + key: 'VERSION', + + + // getters + + get: function get() { + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; + } + }, { + key: 'NAME', + get: function get() { + return NAME; + } + }, { + key: 'DATA_KEY', + get: function get() { + return DATA_KEY; + } + }, { + key: 'Event', + get: function get() { + return Event; + } + }, { + key: 'EVENT_KEY', + get: function get() { + return EVENT_KEY; + } + }, { + key: 'DefaultType', + get: function get() { + return DefaultType; + } + }]); + + return Popover; + }(Tooltip); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Popover._jQueryInterface; + $.fn[NAME].Constructor = Popover; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Popover._jQueryInterface; + }; + + return Popover; +}(jQuery); + +}(); diff --git a/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/js/bootstrap.min.js b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/js/bootstrap.min.js new file mode 100644 index 0000000..6ecea79 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.0.0-alpha.6 (https://getbootstrap.com) + * Copyright 2011-2017 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");+function(t){var e=t.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1||e[0]>=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(jQuery),+function(){function t(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function e(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=function(){function t(t,e){for(var n=0;nthis._items.length-1||e<0)){if(this._isSliding)return void t(this._element).one(m.SLID,function(){return n.to(e)});if(i===e)return this.pause(),void this.cycle();var o=e>i?p.NEXT:p.PREVIOUS;this._slide(o,this._items[e])}},h.prototype.dispose=function(){t(this._element).off(l),t.removeData(this._element,a),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},h.prototype._getConfig=function(n){return n=t.extend({},_,n),r.typeCheckConfig(e,n,g),n},h.prototype._addEventListeners=function(){var e=this;this._config.keyboard&&t(this._element).on(m.KEYDOWN,function(t){return e._keydown(t)}),"hover"!==this._config.pause||"ontouchstart"in document.documentElement||t(this._element).on(m.MOUSEENTER,function(t){return e.pause(t)}).on(m.MOUSELEAVE,function(t){return e.cycle(t)})},h.prototype._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case d:t.preventDefault(),this.prev();break;case f:t.preventDefault(),this.next();break;default:return}},h.prototype._getItemIndex=function(e){return this._items=t.makeArray(t(e).parent().find(v.ITEM)),this._items.indexOf(e)},h.prototype._getItemByDirection=function(t,e){var n=t===p.NEXT,i=t===p.PREVIOUS,o=this._getItemIndex(e),r=this._items.length-1,s=i&&0===o||n&&o===r;if(s&&!this._config.wrap)return e;var a=t===p.PREVIOUS?-1:1,l=(o+a)%this._items.length;return l===-1?this._items[this._items.length-1]:this._items[l]},h.prototype._triggerSlideEvent=function(e,n){var i=t.Event(m.SLIDE,{relatedTarget:e,direction:n});return t(this._element).trigger(i),i},h.prototype._setActiveIndicatorElement=function(e){if(this._indicatorsElement){t(this._indicatorsElement).find(v.ACTIVE).removeClass(E.ACTIVE);var n=this._indicatorsElement.children[this._getItemIndex(e)];n&&t(n).addClass(E.ACTIVE)}},h.prototype._slide=function(e,n){var i=this,o=t(this._element).find(v.ACTIVE_ITEM)[0],s=n||o&&this._getItemByDirection(e,o),a=Boolean(this._interval),l=void 0,h=void 0,c=void 0;if(e===p.NEXT?(l=E.LEFT,h=E.NEXT,c=p.LEFT):(l=E.RIGHT,h=E.PREV,c=p.RIGHT),s&&t(s).hasClass(E.ACTIVE))return void(this._isSliding=!1);var d=this._triggerSlideEvent(s,c);if(!d.isDefaultPrevented()&&o&&s){this._isSliding=!0,a&&this.pause(),this._setActiveIndicatorElement(s);var f=t.Event(m.SLID,{relatedTarget:s,direction:c});r.supportsTransitionEnd()&&t(this._element).hasClass(E.SLIDE)?(t(s).addClass(h),r.reflow(s),t(o).addClass(l),t(s).addClass(l),t(o).one(r.TRANSITION_END,function(){t(s).removeClass(l+" "+h).addClass(E.ACTIVE),t(o).removeClass(E.ACTIVE+" "+h+" "+l),i._isSliding=!1,setTimeout(function(){return t(i._element).trigger(f)},0)}).emulateTransitionEnd(u)):(t(o).removeClass(E.ACTIVE),t(s).addClass(E.ACTIVE),this._isSliding=!1,t(this._element).trigger(f)),a&&this.cycle()}},h._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(a),o=t.extend({},_,t(this).data());"object"===("undefined"==typeof e?"undefined":i(e))&&t.extend(o,e);var r="string"==typeof e?e:o.slide;if(n||(n=new h(this,o),t(this).data(a,n)),"number"==typeof e)n.to(e);else if("string"==typeof r){if(void 0===n[r])throw new Error('No method named "'+r+'"');n[r]()}else o.interval&&(n.pause(),n.cycle())})},h._dataApiClickHandler=function(e){var n=r.getSelectorFromElement(this);if(n){var i=t(n)[0];if(i&&t(i).hasClass(E.CAROUSEL)){var o=t.extend({},t(i).data(),t(this).data()),s=this.getAttribute("data-slide-to");s&&(o.interval=!1),h._jQueryInterface.call(t(i),o),s&&t(i).data(a).to(s),e.preventDefault()}}},o(h,null,[{key:"VERSION",get:function(){return s}},{key:"Default",get:function(){return _}}]),h}();return t(document).on(m.CLICK_DATA_API,v.DATA_SLIDE,T._dataApiClickHandler),t(window).on(m.LOAD_DATA_API,function(){t(v.DATA_RIDE).each(function(){var e=t(this);T._jQueryInterface.call(e,e.data())})}),t.fn[e]=T._jQueryInterface,t.fn[e].Constructor=T,t.fn[e].noConflict=function(){return t.fn[e]=c,T._jQueryInterface},T}(jQuery),function(t){var e="collapse",s="4.0.0-alpha.6",a="bs.collapse",l="."+a,h=".data-api",c=t.fn[e],u=600,d={toggle:!0,parent:""},f={toggle:"boolean",parent:"string"},_={SHOW:"show"+l,SHOWN:"shown"+l,HIDE:"hide"+l,HIDDEN:"hidden"+l,CLICK_DATA_API:"click"+l+h},g={SHOW:"show",COLLAPSE:"collapse",COLLAPSING:"collapsing",COLLAPSED:"collapsed"},p={WIDTH:"width",HEIGHT:"height"},m={ACTIVES:".card > .show, .card > .collapsing",DATA_TOGGLE:'[data-toggle="collapse"]'},E=function(){function l(e,i){n(this,l),this._isTransitioning=!1,this._element=e,this._config=this._getConfig(i),this._triggerArray=t.makeArray(t('[data-toggle="collapse"][href="#'+e.id+'"],'+('[data-toggle="collapse"][data-target="#'+e.id+'"]'))),this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}return l.prototype.toggle=function(){t(this._element).hasClass(g.SHOW)?this.hide():this.show()},l.prototype.show=function(){var e=this;if(this._isTransitioning)throw new Error("Collapse is transitioning");if(!t(this._element).hasClass(g.SHOW)){var n=void 0,i=void 0;if(this._parent&&(n=t.makeArray(t(this._parent).find(m.ACTIVES)),n.length||(n=null)),!(n&&(i=t(n).data(a),i&&i._isTransitioning))){var o=t.Event(_.SHOW);if(t(this._element).trigger(o),!o.isDefaultPrevented()){n&&(l._jQueryInterface.call(t(n),"hide"),i||t(n).data(a,null));var s=this._getDimension();t(this._element).removeClass(g.COLLAPSE).addClass(g.COLLAPSING),this._element.style[s]=0,this._element.setAttribute("aria-expanded",!0),this._triggerArray.length&&t(this._triggerArray).removeClass(g.COLLAPSED).attr("aria-expanded",!0),this.setTransitioning(!0);var h=function(){t(e._element).removeClass(g.COLLAPSING).addClass(g.COLLAPSE).addClass(g.SHOW),e._element.style[s]="",e.setTransitioning(!1),t(e._element).trigger(_.SHOWN)};if(!r.supportsTransitionEnd())return void h();var c=s[0].toUpperCase()+s.slice(1),d="scroll"+c;t(this._element).one(r.TRANSITION_END,h).emulateTransitionEnd(u),this._element.style[s]=this._element[d]+"px"}}}},l.prototype.hide=function(){var e=this;if(this._isTransitioning)throw new Error("Collapse is transitioning");if(t(this._element).hasClass(g.SHOW)){var n=t.Event(_.HIDE);if(t(this._element).trigger(n),!n.isDefaultPrevented()){var i=this._getDimension(),o=i===p.WIDTH?"offsetWidth":"offsetHeight";this._element.style[i]=this._element[o]+"px",r.reflow(this._element),t(this._element).addClass(g.COLLAPSING).removeClass(g.COLLAPSE).removeClass(g.SHOW),this._element.setAttribute("aria-expanded",!1),this._triggerArray.length&&t(this._triggerArray).addClass(g.COLLAPSED).attr("aria-expanded",!1),this.setTransitioning(!0);var s=function(){e.setTransitioning(!1),t(e._element).removeClass(g.COLLAPSING).addClass(g.COLLAPSE).trigger(_.HIDDEN)};return this._element.style[i]="",r.supportsTransitionEnd()?void t(this._element).one(r.TRANSITION_END,s).emulateTransitionEnd(u):void s()}}},l.prototype.setTransitioning=function(t){this._isTransitioning=t},l.prototype.dispose=function(){t.removeData(this._element,a),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},l.prototype._getConfig=function(n){return n=t.extend({},d,n),n.toggle=Boolean(n.toggle),r.typeCheckConfig(e,n,f),n},l.prototype._getDimension=function(){var e=t(this._element).hasClass(p.WIDTH);return e?p.WIDTH:p.HEIGHT},l.prototype._getParent=function(){var e=this,n=t(this._config.parent)[0],i='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]';return t(n).find(i).each(function(t,n){e._addAriaAndCollapsedClass(l._getTargetFromElement(n),[n])}),n},l.prototype._addAriaAndCollapsedClass=function(e,n){if(e){var i=t(e).hasClass(g.SHOW);e.setAttribute("aria-expanded",i),n.length&&t(n).toggleClass(g.COLLAPSED,!i).attr("aria-expanded",i)}},l._getTargetFromElement=function(e){var n=r.getSelectorFromElement(e);return n?t(n)[0]:null},l._jQueryInterface=function(e){return this.each(function(){var n=t(this),o=n.data(a),r=t.extend({},d,n.data(),"object"===("undefined"==typeof e?"undefined":i(e))&&e);if(!o&&r.toggle&&/show|hide/.test(e)&&(r.toggle=!1),o||(o=new l(this,r),n.data(a,o)),"string"==typeof e){if(void 0===o[e])throw new Error('No method named "'+e+'"');o[e]()}})},o(l,null,[{key:"VERSION",get:function(){return s}},{key:"Default",get:function(){return d}}]),l}();return t(document).on(_.CLICK_DATA_API,m.DATA_TOGGLE,function(e){e.preventDefault();var n=E._getTargetFromElement(this),i=t(n).data(a),o=i?"toggle":t(this).data();E._jQueryInterface.call(t(n),o)}),t.fn[e]=E._jQueryInterface,t.fn[e].Constructor=E,t.fn[e].noConflict=function(){return t.fn[e]=c,E._jQueryInterface},E}(jQuery),function(t){var e="dropdown",i="4.0.0-alpha.6",s="bs.dropdown",a="."+s,l=".data-api",h=t.fn[e],c=27,u=38,d=40,f=3,_={HIDE:"hide"+a,HIDDEN:"hidden"+a,SHOW:"show"+a,SHOWN:"shown"+a,CLICK:"click"+a,CLICK_DATA_API:"click"+a+l,FOCUSIN_DATA_API:"focusin"+a+l,KEYDOWN_DATA_API:"keydown"+a+l},g={BACKDROP:"dropdown-backdrop",DISABLED:"disabled",SHOW:"show"},p={BACKDROP:".dropdown-backdrop",DATA_TOGGLE:'[data-toggle="dropdown"]',FORM_CHILD:".dropdown form",ROLE_MENU:'[role="menu"]',ROLE_LISTBOX:'[role="listbox"]',NAVBAR_NAV:".navbar-nav",VISIBLE_ITEMS:'[role="menu"] li:not(.disabled) a, [role="listbox"] li:not(.disabled) a'},m=function(){function e(t){n(this,e),this._element=t,this._addEventListeners()}return e.prototype.toggle=function(){if(this.disabled||t(this).hasClass(g.DISABLED))return!1;var n=e._getParentFromElement(this),i=t(n).hasClass(g.SHOW);if(e._clearMenus(),i)return!1;if("ontouchstart"in document.documentElement&&!t(n).closest(p.NAVBAR_NAV).length){var o=document.createElement("div");o.className=g.BACKDROP,t(o).insertBefore(this),t(o).on("click",e._clearMenus)}var r={relatedTarget:this},s=t.Event(_.SHOW,r);return t(n).trigger(s),!s.isDefaultPrevented()&&(this.focus(),this.setAttribute("aria-expanded",!0),t(n).toggleClass(g.SHOW),t(n).trigger(t.Event(_.SHOWN,r)),!1)},e.prototype.dispose=function(){t.removeData(this._element,s),t(this._element).off(a),this._element=null},e.prototype._addEventListeners=function(){t(this._element).on(_.CLICK,this.toggle)},e._jQueryInterface=function(n){return this.each(function(){var i=t(this).data(s);if(i||(i=new e(this),t(this).data(s,i)),"string"==typeof n){if(void 0===i[n])throw new Error('No method named "'+n+'"');i[n].call(this)}})},e._clearMenus=function(n){if(!n||n.which!==f){var i=t(p.BACKDROP)[0];i&&i.parentNode.removeChild(i);for(var o=t.makeArray(t(p.DATA_TOGGLE)),r=0;r0&&a--,n.which===d&&adocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},h.prototype._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},h.prototype._checkScrollbar=function(){this._isBodyOverflowing=document.body.clientWidth=n){var i=this._targets[this._targets.length-1];return void(this._activeTarget!==i&&this._activate(i))}if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){var r=this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&(void 0===this._offsets[o+1]||t "+g.NAV_LINKS).addClass(_.ACTIVE),t(this._scrollElement).trigger(f.ACTIVATE,{relatedTarget:e})},h.prototype._clear=function(){t(this._selector).filter(g.ACTIVE).removeClass(_.ACTIVE)},h._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(a),o="object"===("undefined"==typeof e?"undefined":i(e))&&e; +if(n||(n=new h(this,o),t(this).data(a,n)),"string"==typeof e){if(void 0===n[e])throw new Error('No method named "'+e+'"');n[e]()}})},o(h,null,[{key:"VERSION",get:function(){return s}},{key:"Default",get:function(){return u}}]),h}();return t(window).on(f.LOAD_DATA_API,function(){for(var e=t.makeArray(t(g.DATA_SPY)),n=e.length;n--;){var i=t(e[n]);m._jQueryInterface.call(i,i.data())}}),t.fn[e]=m._jQueryInterface,t.fn[e].Constructor=m,t.fn[e].noConflict=function(){return t.fn[e]=c,m._jQueryInterface},m}(jQuery),function(t){var e="tab",i="4.0.0-alpha.6",s="bs.tab",a="."+s,l=".data-api",h=t.fn[e],c=150,u={HIDE:"hide"+a,HIDDEN:"hidden"+a,SHOW:"show"+a,SHOWN:"shown"+a,CLICK_DATA_API:"click"+a+l},d={DROPDOWN_MENU:"dropdown-menu",ACTIVE:"active",DISABLED:"disabled",FADE:"fade",SHOW:"show"},f={A:"a",LI:"li",DROPDOWN:".dropdown",LIST:"ul:not(.dropdown-menu), ol:not(.dropdown-menu), nav:not(.dropdown-menu)",FADE_CHILD:"> .nav-item .fade, > .fade",ACTIVE:".active",ACTIVE_CHILD:"> .nav-item > .active, > .active",DATA_TOGGLE:'[data-toggle="tab"], [data-toggle="pill"]',DROPDOWN_TOGGLE:".dropdown-toggle",DROPDOWN_ACTIVE_CHILD:"> .dropdown-menu .active"},_=function(){function e(t){n(this,e),this._element=t}return e.prototype.show=function(){var e=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&t(this._element).hasClass(d.ACTIVE)||t(this._element).hasClass(d.DISABLED))){var n=void 0,i=void 0,o=t(this._element).closest(f.LIST)[0],s=r.getSelectorFromElement(this._element);o&&(i=t.makeArray(t(o).find(f.ACTIVE)),i=i[i.length-1]);var a=t.Event(u.HIDE,{relatedTarget:this._element}),l=t.Event(u.SHOW,{relatedTarget:i});if(i&&t(i).trigger(a),t(this._element).trigger(l),!l.isDefaultPrevented()&&!a.isDefaultPrevented()){s&&(n=t(s)[0]),this._activate(this._element,o);var h=function(){var n=t.Event(u.HIDDEN,{relatedTarget:e._element}),o=t.Event(u.SHOWN,{relatedTarget:i});t(i).trigger(n),t(e._element).trigger(o)};n?this._activate(n,n.parentNode,h):h()}}},e.prototype.dispose=function(){t.removeClass(this._element,s),this._element=null},e.prototype._activate=function(e,n,i){var o=this,s=t(n).find(f.ACTIVE_CHILD)[0],a=i&&r.supportsTransitionEnd()&&(s&&t(s).hasClass(d.FADE)||Boolean(t(n).find(f.FADE_CHILD)[0])),l=function(){return o._transitionComplete(e,s,a,i)};s&&a?t(s).one(r.TRANSITION_END,l).emulateTransitionEnd(c):l(),s&&t(s).removeClass(d.SHOW)},e.prototype._transitionComplete=function(e,n,i,o){if(n){t(n).removeClass(d.ACTIVE);var s=t(n.parentNode).find(f.DROPDOWN_ACTIVE_CHILD)[0];s&&t(s).removeClass(d.ACTIVE),n.setAttribute("aria-expanded",!1)}if(t(e).addClass(d.ACTIVE),e.setAttribute("aria-expanded",!0),i?(r.reflow(e),t(e).addClass(d.SHOW)):t(e).removeClass(d.FADE),e.parentNode&&t(e.parentNode).hasClass(d.DROPDOWN_MENU)){var a=t(e).closest(f.DROPDOWN)[0];a&&t(a).find(f.DROPDOWN_TOGGLE).addClass(d.ACTIVE),e.setAttribute("aria-expanded",!0)}o&&o()},e._jQueryInterface=function(n){return this.each(function(){var i=t(this),o=i.data(s);if(o||(o=new e(this),i.data(s,o)),"string"==typeof n){if(void 0===o[n])throw new Error('No method named "'+n+'"');o[n]()}})},o(e,null,[{key:"VERSION",get:function(){return i}}]),e}();return t(document).on(u.CLICK_DATA_API,f.DATA_TOGGLE,function(e){e.preventDefault(),_._jQueryInterface.call(t(this),"show")}),t.fn[e]=_._jQueryInterface,t.fn[e].Constructor=_,t.fn[e].noConflict=function(){return t.fn[e]=h,_._jQueryInterface},_}(jQuery),function(t){if("undefined"==typeof Tether)throw new Error("Bootstrap tooltips require Tether (http://tether.io/)");var e="tooltip",s="4.0.0-alpha.6",a="bs.tooltip",l="."+a,h=t.fn[e],c=150,u="bs-tether",d={animation:!0,template:'',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:"0 0",constraints:[],container:!1},f={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"string",constraints:"array",container:"(string|element|boolean)"},_={TOP:"bottom center",RIGHT:"middle left",BOTTOM:"top center",LEFT:"middle right"},g={SHOW:"show",OUT:"out"},p={HIDE:"hide"+l,HIDDEN:"hidden"+l,SHOW:"show"+l,SHOWN:"shown"+l,INSERTED:"inserted"+l,CLICK:"click"+l,FOCUSIN:"focusin"+l,FOCUSOUT:"focusout"+l,MOUSEENTER:"mouseenter"+l,MOUSELEAVE:"mouseleave"+l},m={FADE:"fade",SHOW:"show"},E={TOOLTIP:".tooltip",TOOLTIP_INNER:".tooltip-inner"},v={element:!1,enabled:!1},T={HOVER:"hover",FOCUS:"focus",CLICK:"click",MANUAL:"manual"},I=function(){function h(t,e){n(this,h),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._isTransitioning=!1,this._tether=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}return h.prototype.enable=function(){this._isEnabled=!0},h.prototype.disable=function(){this._isEnabled=!1},h.prototype.toggleEnabled=function(){this._isEnabled=!this._isEnabled},h.prototype.toggle=function(e){if(e){var n=this.constructor.DATA_KEY,i=t(e.currentTarget).data(n);i||(i=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(n,i)),i._activeTrigger.click=!i._activeTrigger.click,i._isWithActiveTrigger()?i._enter(null,i):i._leave(null,i)}else{if(t(this.getTipElement()).hasClass(m.SHOW))return void this._leave(null,this);this._enter(null,this)}},h.prototype.dispose=function(){clearTimeout(this._timeout),this.cleanupTether(),t.removeData(this.element,this.constructor.DATA_KEY),t(this.element).off(this.constructor.EVENT_KEY),t(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&t(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._tether=null,this.element=null,this.config=null,this.tip=null},h.prototype.show=function(){var e=this;if("none"===t(this.element).css("display"))throw new Error("Please use show on visible elements");var n=t.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){if(this._isTransitioning)throw new Error("Tooltip is transitioning");t(this.element).trigger(n);var i=t.contains(this.element.ownerDocument.documentElement,this.element);if(n.isDefaultPrevented()||!i)return;var o=this.getTipElement(),s=r.getUID(this.constructor.NAME);o.setAttribute("id",s),this.element.setAttribute("aria-describedby",s),this.setContent(),this.config.animation&&t(o).addClass(m.FADE);var a="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,l=this._getAttachment(a),c=this.config.container===!1?document.body:t(this.config.container);t(o).data(this.constructor.DATA_KEY,this).appendTo(c),t(this.element).trigger(this.constructor.Event.INSERTED),this._tether=new Tether({attachment:l,element:o,target:this.element,classes:v,classPrefix:u,offset:this.config.offset,constraints:this.config.constraints,addTargetClasses:!1}),r.reflow(o),this._tether.position(),t(o).addClass(m.SHOW);var d=function(){var n=e._hoverState;e._hoverState=null,e._isTransitioning=!1,t(e.element).trigger(e.constructor.Event.SHOWN),n===g.OUT&&e._leave(null,e)};if(r.supportsTransitionEnd()&&t(this.tip).hasClass(m.FADE))return this._isTransitioning=!0,void t(this.tip).one(r.TRANSITION_END,d).emulateTransitionEnd(h._TRANSITION_DURATION);d()}},h.prototype.hide=function(e){var n=this,i=this.getTipElement(),o=t.Event(this.constructor.Event.HIDE);if(this._isTransitioning)throw new Error("Tooltip is transitioning");var s=function(){n._hoverState!==g.SHOW&&i.parentNode&&i.parentNode.removeChild(i),n.element.removeAttribute("aria-describedby"),t(n.element).trigger(n.constructor.Event.HIDDEN),n._isTransitioning=!1,n.cleanupTether(),e&&e()};t(this.element).trigger(o),o.isDefaultPrevented()||(t(i).removeClass(m.SHOW),this._activeTrigger[T.CLICK]=!1,this._activeTrigger[T.FOCUS]=!1,this._activeTrigger[T.HOVER]=!1,r.supportsTransitionEnd()&&t(this.tip).hasClass(m.FADE)?(this._isTransitioning=!0,t(i).one(r.TRANSITION_END,s).emulateTransitionEnd(c)):s(),this._hoverState="")},h.prototype.isWithContent=function(){return Boolean(this.getTitle())},h.prototype.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0]},h.prototype.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(E.TOOLTIP_INNER),this.getTitle()),e.removeClass(m.FADE+" "+m.SHOW),this.cleanupTether()},h.prototype.setElementContent=function(e,n){var o=this.config.html;"object"===("undefined"==typeof n?"undefined":i(n))&&(n.nodeType||n.jquery)?o?t(n).parent().is(e)||e.empty().append(n):e.text(t(n).text()):e[o?"html":"text"](n)},h.prototype.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},h.prototype.cleanupTether=function(){this._tether&&this._tether.destroy()},h.prototype._getAttachment=function(t){return _[t.toUpperCase()]},h.prototype._setListeners=function(){var e=this,n=this.config.trigger.split(" ");n.forEach(function(n){if("click"===n)t(e.element).on(e.constructor.Event.CLICK,e.config.selector,function(t){return e.toggle(t)});else if(n!==T.MANUAL){var i=n===T.HOVER?e.constructor.Event.MOUSEENTER:e.constructor.Event.FOCUSIN,o=n===T.HOVER?e.constructor.Event.MOUSELEAVE:e.constructor.Event.FOCUSOUT;t(e.element).on(i,e.config.selector,function(t){return e._enter(t)}).on(o,e.config.selector,function(t){return e._leave(t)})}t(e.element).closest(".modal").on("hide.bs.modal",function(){return e.hide()})}),this.config.selector?this.config=t.extend({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},h.prototype._fixTitle=function(){var t=i(this.element.getAttribute("data-original-title"));(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},h.prototype._enter=function(e,n){var i=this.constructor.DATA_KEY;return n=n||t(e.currentTarget).data(i),n||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusin"===e.type?T.FOCUS:T.HOVER]=!0),t(n.getTipElement()).hasClass(m.SHOW)||n._hoverState===g.SHOW?void(n._hoverState=g.SHOW):(clearTimeout(n._timeout),n._hoverState=g.SHOW,n.config.delay&&n.config.delay.show?void(n._timeout=setTimeout(function(){n._hoverState===g.SHOW&&n.show()},n.config.delay.show)):void n.show())},h.prototype._leave=function(e,n){var i=this.constructor.DATA_KEY;if(n=n||t(e.currentTarget).data(i),n||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusout"===e.type?T.FOCUS:T.HOVER]=!1),!n._isWithActiveTrigger())return clearTimeout(n._timeout),n._hoverState=g.OUT,n.config.delay&&n.config.delay.hide?void(n._timeout=setTimeout(function(){n._hoverState===g.OUT&&n.hide()},n.config.delay.hide)):void n.hide()},h.prototype._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},h.prototype._getConfig=function(n){return n=t.extend({},this.constructor.Default,t(this.element).data(),n),n.delay&&"number"==typeof n.delay&&(n.delay={show:n.delay,hide:n.delay}),r.typeCheckConfig(e,n,this.constructor.DefaultType),n},h.prototype._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},h._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(a),o="object"===("undefined"==typeof e?"undefined":i(e))&&e;if((n||!/dispose|hide/.test(e))&&(n||(n=new h(this,o),t(this).data(a,n)),"string"==typeof e)){if(void 0===n[e])throw new Error('No method named "'+e+'"');n[e]()}})},o(h,null,[{key:"VERSION",get:function(){return s}},{key:"Default",get:function(){return d}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return a}},{key:"Event",get:function(){return p}},{key:"EVENT_KEY",get:function(){return l}},{key:"DefaultType",get:function(){return f}}]),h}();return t.fn[e]=I._jQueryInterface,t.fn[e].Constructor=I,t.fn[e].noConflict=function(){return t.fn[e]=h,I._jQueryInterface},I}(jQuery));(function(r){var a="popover",l="4.0.0-alpha.6",h="bs.popover",c="."+h,u=r.fn[a],d=r.extend({},s.Default,{placement:"right",trigger:"click",content:"",template:''}),f=r.extend({},s.DefaultType,{content:"(string|element|function)"}),_={FADE:"fade",SHOW:"show"},g={TITLE:".popover-title",CONTENT:".popover-content"},p={HIDE:"hide"+c,HIDDEN:"hidden"+c,SHOW:"show"+c,SHOWN:"shown"+c,INSERTED:"inserted"+c,CLICK:"click"+c,FOCUSIN:"focusin"+c,FOCUSOUT:"focusout"+c,MOUSEENTER:"mouseenter"+c,MOUSELEAVE:"mouseleave"+c},m=function(s){function u(){return n(this,u),t(this,s.apply(this,arguments))}return e(u,s),u.prototype.isWithContent=function(){return this.getTitle()||this._getContent()},u.prototype.getTipElement=function(){return this.tip=this.tip||r(this.config.template)[0]},u.prototype.setContent=function(){var t=r(this.getTipElement());this.setElementContent(t.find(g.TITLE),this.getTitle()),this.setElementContent(t.find(g.CONTENT),this._getContent()),t.removeClass(_.FADE+" "+_.SHOW),this.cleanupTether()},u.prototype._getContent=function(){return this.element.getAttribute("data-content")||("function"==typeof this.config.content?this.config.content.call(this.element):this.config.content)},u._jQueryInterface=function(t){return this.each(function(){var e=r(this).data(h),n="object"===("undefined"==typeof t?"undefined":i(t))?t:null;if((e||!/destroy|hide/.test(t))&&(e||(e=new u(this,n),r(this).data(h,e)),"string"==typeof t)){if(void 0===e[t])throw new Error('No method named "'+t+'"');e[t]()}})},o(u,null,[{key:"VERSION",get:function(){return l}},{key:"Default",get:function(){return d}},{key:"NAME",get:function(){return a}},{key:"DATA_KEY",get:function(){return h}},{key:"Event",get:function(){return p}},{key:"EVENT_KEY",get:function(){return c}},{key:"DefaultType",get:function(){return f}}]),u}(s);return r.fn[a]=m._jQueryInterface,r.fn[a].Constructor=m,r.fn[a].noConflict=function(){return r.fn[a]=u,m._jQueryInterface},m})(jQuery)}(); \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/js/tether.min.js b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/js/tether.min.js new file mode 100644 index 0000000..a49f2a7 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/bootstrap/js/tether.min.js @@ -0,0 +1 @@ +!function(t,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e(require,exports,module):t.Tether=e()}(this,function(t,e,o){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t){var e=t.getBoundingClientRect(),o={};for(var n in e)o[n]=e[n];if(t.ownerDocument!==document){var r=t.ownerDocument.defaultView.frameElement;if(r){var s=i(r);o.top+=s.top,o.bottom+=s.top,o.left+=s.left,o.right+=s.left}}return o}function r(t){var e=getComputedStyle(t)||{},o=e.position,n=[];if("fixed"===o)return[t];for(var i=t;(i=i.parentNode)&&i&&1===i.nodeType;){var r=void 0;try{r=getComputedStyle(i)}catch(s){}if("undefined"==typeof r||null===r)return n.push(i),n;var a=r,f=a.overflow,l=a.overflowX,h=a.overflowY;/(auto|scroll)/.test(f+h+l)&&("absolute"!==o||["relative","absolute","fixed"].indexOf(r.position)>=0)&&n.push(i)}return n.push(t.ownerDocument.body),t.ownerDocument!==document&&n.push(t.ownerDocument.defaultView),n}function s(){A&&document.body.removeChild(A),A=null}function a(t){var e=void 0;t===document?(e=document,t=document.documentElement):e=t.ownerDocument;var o=e.documentElement,n=i(t),r=P();return n.top-=r.top,n.left-=r.left,"undefined"==typeof n.width&&(n.width=document.body.scrollWidth-n.left-n.right),"undefined"==typeof n.height&&(n.height=document.body.scrollHeight-n.top-n.bottom),n.top=n.top-o.clientTop,n.left=n.left-o.clientLeft,n.right=e.body.clientWidth-n.width-n.left,n.bottom=e.body.clientHeight-n.height-n.top,n}function f(t){return t.offsetParent||document.documentElement}function l(){if(M)return M;var t=document.createElement("div");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");h(e.style,{position:"absolute",top:0,left:0,pointerEvents:"none",visibility:"hidden",width:"200px",height:"150px",overflow:"hidden"}),e.appendChild(t),document.body.appendChild(e);var o=t.offsetWidth;e.style.overflow="scroll";var n=t.offsetWidth;o===n&&(n=e.clientWidth),document.body.removeChild(e);var i=o-n;return M={width:i,height:i}}function h(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e=[];return Array.prototype.push.apply(e,arguments),e.slice(1).forEach(function(e){if(e)for(var o in e)({}).hasOwnProperty.call(e,o)&&(t[o]=e[o])}),t}function d(t,e){if("undefined"!=typeof t.classList)e.split(" ").forEach(function(e){e.trim()&&t.classList.remove(e)});else{var o=new RegExp("(^| )"+e.split(" ").join("|")+"( |$)","gi"),n=c(t).replace(o," ");g(t,n)}}function u(t,e){if("undefined"!=typeof t.classList)e.split(" ").forEach(function(e){e.trim()&&t.classList.add(e)});else{d(t,e);var o=c(t)+(" "+e);g(t,o)}}function p(t,e){if("undefined"!=typeof t.classList)return t.classList.contains(e);var o=c(t);return new RegExp("(^| )"+e+"( |$)","gi").test(o)}function c(t){return t.className instanceof t.ownerDocument.defaultView.SVGAnimatedString?t.className.baseVal:t.className}function g(t,e){t.setAttribute("class",e)}function m(t,e,o){o.forEach(function(o){-1===e.indexOf(o)&&p(t,o)&&d(t,o)}),e.forEach(function(e){p(t,e)||u(t,e)})}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function v(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function y(t,e){var o=arguments.length<=2||void 0===arguments[2]?1:arguments[2];return t+o>=e&&e>=t-o}function b(){return"undefined"!=typeof performance&&"undefined"!=typeof performance.now?performance.now():+new Date}function w(){for(var t={top:0,left:0},e=arguments.length,o=Array(e),n=0;e>n;n++)o[n]=arguments[n];return o.forEach(function(e){var o=e.top,n=e.left;"string"==typeof o&&(o=parseFloat(o,10)),"string"==typeof n&&(n=parseFloat(n,10)),t.top+=o,t.left+=n}),t}function C(t,e){return"string"==typeof t.left&&-1!==t.left.indexOf("%")&&(t.left=parseFloat(t.left,10)/100*e.width),"string"==typeof t.top&&-1!==t.top.indexOf("%")&&(t.top=parseFloat(t.top,10)/100*e.height),t}function O(t,e){return"scrollParent"===e?e=t.scrollParents[0]:"window"===e&&(e=[pageXOffset,pageYOffset,innerWidth+pageXOffset,innerHeight+pageYOffset]),e===document&&(e=e.documentElement),"undefined"!=typeof e.nodeType&&!function(){var t=e,o=a(e),n=o,i=getComputedStyle(e);if(e=[n.left,n.top,o.width+n.left,o.height+n.top],t.ownerDocument!==document){var r=t.ownerDocument.defaultView;e[0]+=r.pageXOffset,e[1]+=r.pageYOffset,e[2]+=r.pageXOffset,e[3]+=r.pageYOffset}G.forEach(function(t,o){t=t[0].toUpperCase()+t.substr(1),"Top"===t||"Left"===t?e[o]+=parseFloat(i["border"+t+"Width"]):e[o]-=parseFloat(i["border"+t+"Width"])})}(),e}var E=function(){function t(t,e){for(var o=0;o1?o-1:0),i=1;o>i;i++)n[i-1]=arguments[i];for(;e16?(e=Math.min(e-16,250),void(o=setTimeout(i,250))):void("undefined"!=typeof t&&b()-t<10||(null!=o&&(clearTimeout(o),o=null),t=b(),X(),e=b()-t))};"undefined"!=typeof window&&"undefined"!=typeof window.addEventListener&&["resize","scroll","touchmove"].forEach(function(t){window.addEventListener(t,n)})}();var F={center:"center",left:"right",right:"left"},H={middle:"middle",top:"bottom",bottom:"top"},N={top:0,left:0,middle:"50%",center:"50%",bottom:"100%",right:"100%"},U=function(t,e){var o=t.left,n=t.top;return"auto"===o&&(o=F[e.left]),"auto"===n&&(n=H[e.top]),{left:o,top:n}},V=function(t){var e=t.left,o=t.top;return"undefined"!=typeof N[t.left]&&(e=N[t.left]),"undefined"!=typeof N[t.top]&&(o=N[t.top]),{left:e,top:o}},R=function(t){var e=t.split(" "),o=z(e,2),n=o[0],i=o[1];return{top:n,left:i}},q=R,I=function(t){function e(t){var o=this;n(this,e),j(Object.getPrototypeOf(e.prototype),"constructor",this).call(this),this.position=this.position.bind(this),D.push(this),this.history=[],this.setOptions(t,!1),x.modules.forEach(function(t){"undefined"!=typeof t.initialize&&t.initialize.call(o)}),this.position()}return v(e,t),E(e,[{key:"getClass",value:function(){var t=arguments.length<=0||void 0===arguments[0]?"":arguments[0],e=this.options.classes;return"undefined"!=typeof e&&e[t]?this.options.classes[t]:this.options.classPrefix?this.options.classPrefix+"-"+t:t}},{key:"setOptions",value:function(t){var e=this,o=arguments.length<=1||void 0===arguments[1]?!0:arguments[1],n={offset:"0 0",targetOffset:"0 0",targetAttachment:"auto auto",classPrefix:"tether"};this.options=h(n,t);var i=this.options,s=i.element,a=i.target,f=i.targetModifier;if(this.element=s,this.target=a,this.targetModifier=f,"viewport"===this.target?(this.target=document.body,this.targetModifier="visible"):"scroll-handle"===this.target&&(this.target=document.body,this.targetModifier="scroll-handle"),["element","target"].forEach(function(t){if("undefined"==typeof e[t])throw new Error("Tether Error: Both element and target must be defined");"undefined"!=typeof e[t].jquery?e[t]=e[t][0]:"string"==typeof e[t]&&(e[t]=document.querySelector(e[t]))}),u(this.element,this.getClass("element")),this.options.addTargetClasses!==!1&&u(this.target,this.getClass("target")),!this.options.attachment)throw new Error("Tether Error: You must provide an attachment");this.targetAttachment=q(this.options.targetAttachment),this.attachment=q(this.options.attachment),this.offset=R(this.options.offset),this.targetOffset=R(this.options.targetOffset),"undefined"!=typeof this.scrollParents&&this.disable(),"scroll-handle"===this.targetModifier?this.scrollParents=[this.target]:this.scrollParents=r(this.target),this.options.enabled!==!1&&this.enable(o)}},{key:"getTargetBounds",value:function(){if("undefined"==typeof this.targetModifier)return a(this.target);if("visible"===this.targetModifier){if(this.target===document.body)return{top:pageYOffset,left:pageXOffset,height:innerHeight,width:innerWidth};var t=a(this.target),e={height:t.height,width:t.width,top:t.top,left:t.left};return e.height=Math.min(e.height,t.height-(pageYOffset-t.top)),e.height=Math.min(e.height,t.height-(t.top+t.height-(pageYOffset+innerHeight))),e.height=Math.min(innerHeight,e.height),e.height-=2,e.width=Math.min(e.width,t.width-(pageXOffset-t.left)),e.width=Math.min(e.width,t.width-(t.left+t.width-(pageXOffset+innerWidth))),e.width=Math.min(innerWidth,e.width),e.width-=2,e.topo.clientWidth||[n.overflow,n.overflowX].indexOf("scroll")>=0||this.target!==document.body,r=0;i&&(r=15);var s=t.height-parseFloat(n.borderTopWidth)-parseFloat(n.borderBottomWidth)-r,e={width:15,height:.975*s*(s/o.scrollHeight),left:t.left+t.width-parseFloat(n.borderLeftWidth)-15},f=0;408>s&&this.target===document.body&&(f=-11e-5*Math.pow(s,2)-.00727*s+22.58),this.target!==document.body&&(e.height=Math.max(e.height,24));var l=this.target.scrollTop/(o.scrollHeight-s);return e.top=l*(s-e.height-f)+t.top+parseFloat(n.borderTopWidth),this.target===document.body&&(e.height=Math.max(e.height,24)),e}}},{key:"clearCache",value:function(){this._cache={}}},{key:"cache",value:function(t,e){return"undefined"==typeof this._cache&&(this._cache={}),"undefined"==typeof this._cache[t]&&(this._cache[t]=e.call(this)),this._cache[t]}},{key:"enable",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];this.options.addTargetClasses!==!1&&u(this.target,this.getClass("enabled")),u(this.element,this.getClass("enabled")),this.enabled=!0,this.scrollParents.forEach(function(e){e!==t.target.ownerDocument&&e.addEventListener("scroll",t.position)}),e&&this.position()}},{key:"disable",value:function(){var t=this;d(this.target,this.getClass("enabled")),d(this.element,this.getClass("enabled")),this.enabled=!1,"undefined"!=typeof this.scrollParents&&this.scrollParents.forEach(function(e){e.removeEventListener("scroll",t.position)})}},{key:"destroy",value:function(){var t=this;this.disable(),D.forEach(function(e,o){e===t&&D.splice(o,1)}),0===D.length&&s()}},{key:"updateAttachClasses",value:function(t,e){var o=this;t=t||this.attachment,e=e||this.targetAttachment;var n=["left","top","bottom","right","middle","center"];"undefined"!=typeof this._addAttachClasses&&this._addAttachClasses.length&&this._addAttachClasses.splice(0,this._addAttachClasses.length),"undefined"==typeof this._addAttachClasses&&(this._addAttachClasses=[]);var i=this._addAttachClasses;t.top&&i.push(this.getClass("element-attached")+"-"+t.top),t.left&&i.push(this.getClass("element-attached")+"-"+t.left),e.top&&i.push(this.getClass("target-attached")+"-"+e.top),e.left&&i.push(this.getClass("target-attached")+"-"+e.left);var r=[];n.forEach(function(t){r.push(o.getClass("element-attached")+"-"+t),r.push(o.getClass("target-attached")+"-"+t)}),k(function(){"undefined"!=typeof o._addAttachClasses&&(m(o.element,o._addAttachClasses,r),o.options.addTargetClasses!==!1&&m(o.target,o._addAttachClasses,r),delete o._addAttachClasses)})}},{key:"position",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];if(this.enabled){this.clearCache();var o=U(this.targetAttachment,this.attachment);this.updateAttachClasses(this.attachment,o);var n=this.cache("element-bounds",function(){return a(t.element)}),i=n.width,r=n.height;if(0===i&&0===r&&"undefined"!=typeof this.lastSize){var s=this.lastSize;i=s.width,r=s.height}else this.lastSize={width:i,height:r};var h=this.cache("target-bounds",function(){return t.getTargetBounds()}),d=h,u=C(V(this.attachment),{width:i,height:r}),p=C(V(o),d),c=C(this.offset,{width:i,height:r}),g=C(this.targetOffset,d);u=w(u,c),p=w(p,g);for(var m=h.left+p.left-u.left,v=h.top+p.top-u.top,y=0;yA.documentElement.clientHeight&&(S=this.cache("scrollbar-size",l),E.viewport.bottom-=S.height),T.innerWidth>A.documentElement.clientWidth&&(S=this.cache("scrollbar-size",l),E.viewport.right-=S.width),(-1===["","static"].indexOf(A.body.style.position)||-1===["","static"].indexOf(A.body.parentElement.style.position))&&(E.page.bottom=A.body.scrollHeight-v-r,E.page.right=A.body.scrollWidth-m-i),"undefined"!=typeof this.options.optimizations&&this.options.optimizations.moveElement!==!1&&"undefined"==typeof this.targetModifier&&!function(){var e=t.cache("target-offsetparent",function(){return f(t.target)}),o=t.cache("target-offsetparent-bounds",function(){return a(e)}),n=getComputedStyle(e),i=o,r={};if(["Top","Left","Bottom","Right"].forEach(function(t){r[t.toLowerCase()]=parseFloat(n["border"+t+"Width"])}),o.right=A.body.scrollWidth-o.left-i.width+r.right,o.bottom=A.body.scrollHeight-o.top-i.height+r.bottom,E.page.top>=o.top+r.top&&E.page.bottom>=o.bottom&&E.page.left>=o.left+r.left&&E.page.right>=o.right){var s=e.scrollTop,l=e.scrollLeft;E.offset={top:E.page.top-o.top+s-r.top,left:E.page.left-o.left+l-r.left}}}(),this.move(E),this.history.unshift(E),this.history.length>3&&this.history.pop(),e&&_(),!0}}},{key:"move",value:function(t){var e=this;if("undefined"!=typeof this.element.parentNode){var o={};for(var n in t){o[n]={};for(var i in t[n]){for(var r=!1,s=0;s=0){var c=a.split(" "),m=z(c,2);d=m[0],h=m[1]}else h=d=a;var b=O(e,r);("target"===d||"both"===d)&&(ob[3]&&"bottom"===v.top&&(o-=u,v.top="top")),"together"===d&&("top"===v.top&&("bottom"===y.top&&ob[3]&&o-(s-u)>=b[1]&&(o-=s-u,v.top="bottom",y.top="bottom")),"bottom"===v.top&&("top"===y.top&&o+s>b[3]?(o-=u,v.top="top",o-=s,y.top="bottom"):"bottom"===y.top&&ob[3]&&"top"===y.top?(o-=s,y.top="bottom"):ob[2]&&"right"===v.left&&(n-=p,v.left="left")),"together"===h&&(nb[2]&&"right"===v.left?"left"===y.left?(n-=p,v.left="left",n-=f,y.left="right"):"right"===y.left&&(n-=p,v.left="left",n+=f,y.left="left"):"center"===v.left&&(n+f>b[2]&&"left"===y.left?(n-=f,y.left="right"):nb[3]&&"top"===y.top&&(o-=s,y.top="bottom")),("element"===h||"both"===h)&&(nb[2]&&("left"===y.left?(n-=f,y.left="right"):"center"===y.left&&(n-=f/2,y.left="right"))),"string"==typeof l?l=l.split(",").map(function(t){return t.trim()}):l===!0&&(l=["top","left","right","bottom"]),l=l||[];var w=[],C=[];o=0?(o=b[1],w.push("top")):C.push("top")),o+s>b[3]&&(l.indexOf("bottom")>=0?(o=b[3]-s,w.push("bottom")):C.push("bottom")),n=0?(n=b[0],w.push("left")):C.push("left")),n+f>b[2]&&(l.indexOf("right")>=0?(n=b[2]-f,w.push("right")):C.push("right")),w.length&&!function(){var t=void 0;t="undefined"!=typeof e.options.pinnedClass?e.options.pinnedClass:e.getClass("pinned"),g.push(t),w.forEach(function(e){g.push(t+"-"+e)})}(),C.length&&!function(){var t=void 0;t="undefined"!=typeof e.options.outOfBoundsClass?e.options.outOfBoundsClass:e.getClass("out-of-bounds"),g.push(t),C.forEach(function(e){g.push(t+"-"+e)})}(),(w.indexOf("left")>=0||w.indexOf("right")>=0)&&(y.left=v.left=!1),(w.indexOf("top")>=0||w.indexOf("bottom")>=0)&&(y.top=v.top=!1),(v.top!==i.top||v.left!==i.left||y.top!==e.attachment.top||y.left!==e.attachment.left)&&(e.updateAttachClasses(y,v),e.trigger("update",{attachment:y,targetAttachment:v}))}),k(function(){e.options.addTargetClasses!==!1&&m(e.target,g,c),m(e.element,g,c)}),{top:o,left:n}}});var Y=x.Utils,a=Y.getBounds,m=Y.updateClasses,k=Y.defer;x.modules.push({position:function(t){var e=this,o=t.top,n=t.left,i=this.cache("element-bounds",function(){return a(e.element)}),r=i.height,s=i.width,f=this.getTargetBounds(),l=o+r,h=n+s,d=[];o<=f.bottom&&l>=f.top&&["left","right"].forEach(function(t){var e=f[t];(e===n||e===h)&&d.push(t)}),n<=f.right&&h>=f.left&&["top","bottom"].forEach(function(t){var e=f[t];(e===o||e===l)&&d.push(t)});var u=[],p=[],c=["left","top","right","bottom"];return u.push(this.getClass("abutted")),c.forEach(function(t){u.push(e.getClass("abutted")+"-"+t)}),d.length&&p.push(this.getClass("abutted")),d.forEach(function(t){p.push(e.getClass("abutted")+"-"+t)}),k(function(){e.options.addTargetClasses!==!1&&m(e.target,p,u),m(e.element,p,u)}),!0}});var z=function(){function t(t,e){var o=[],n=!0,i=!1,r=void 0;try{for(var s,a=t[Symbol.iterator]();!(n=(s=a.next()).done)&&(o.push(s.value),!e||o.length!==e);n=!0);}catch(f){i=!0,r=f}finally{try{!n&&a["return"]&&a["return"]()}finally{if(i)throw r}}return o}return function(e,o){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,o);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();return x.modules.push({position:function(t){var e=t.top,o=t.left;if(this.options.shift){var n=this.options.shift;"function"==typeof this.options.shift&&(n=this.options.shift.call(this,{top:e,left:o}));var i=void 0,r=void 0;if("string"==typeof n){n=n.split(" "),n[1]=n[1]||n[0];var s=n,a=z(s,2);i=a[0],r=a[1],i=parseFloat(i,10),r=parseFloat(r,10)}else i=n.top,r=n.left;return e+=i,o+=r,{top:e,left:o}}}}),$}); \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/.bower.json b/SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/.bower.json new file mode 100644 index 0000000..ce26e83 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/.bower.json @@ -0,0 +1,24 @@ +{ + "name": "flot.tooltip", + "version": "0.8.5", + "license": "MIT", + "main": "js/jquery.flot.tooltip.js", + "ignore": [ + ".gitignore", + "Gruntfile.js", + "README.md", + "package.json", + "examples", + "js/old" + ], + "homepage": "https://github.com/krzysu/flot.tooltip", + "_release": "0.8.5", + "_resolution": { + "type": "version", + "tag": "0.8.5", + "commit": "e2dbb407ffcf5ece0f2e6ab922b0192b8a6d168e" + }, + "_source": "git://github.com/krzysu/flot.tooltip.git", + "_target": "~0.8.4", + "_originalSource": "flot.tooltip" +} \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/bower.json b/SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/bower.json new file mode 100644 index 0000000..995f7c5 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/bower.json @@ -0,0 +1,14 @@ +{ + "name": "flot.tooltip", + "version": "0.8.5", + "license": "MIT", + "main": "js/jquery.flot.tooltip.js", + "ignore": [ + ".gitignore", + "Gruntfile.js", + "README.md", + "package.json", + "examples", + "js/old" + ] +} diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/js/excanvas.min.js b/SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/js/excanvas.min.js new file mode 100644 index 0000000..12c74f7 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/js/excanvas.min.js @@ -0,0 +1 @@ +if(!document.createElement("canvas").getContext){(function(){var z=Math;var K=z.round;var J=z.sin;var U=z.cos;var b=z.abs;var k=z.sqrt;var D=10;var F=D/2;function T(){return this.context_||(this.context_=new W(this))}var O=Array.prototype.slice;function G(i,j,m){var Z=O.call(arguments,2);return function(){return i.apply(j,Z.concat(O.call(arguments)))}}function AD(Z){return String(Z).replace(/&/g,"&").replace(/"/g,""")}function r(i){if(!i.namespaces.g_vml_){i.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml","#default#VML")}if(!i.namespaces.g_o_){i.namespaces.add("g_o_","urn:schemas-microsoft-com:office:office","#default#VML")}if(!i.styleSheets.ex_canvas_){var Z=i.createStyleSheet();Z.owningElement.id="ex_canvas_";Z.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}"}}r(document);var E={init:function(Z){if(/MSIE/.test(navigator.userAgent)&&!window.opera){var i=Z||document;i.createElement("canvas");i.attachEvent("onreadystatechange",G(this.init_,this,i))}},init_:function(m){var j=m.getElementsByTagName("canvas");for(var Z=0;Z1){j--}if(6*j<1){return i+(Z-i)*6*j}else{if(2*j<1){return Z}else{if(3*j<2){return i+(Z-i)*(2/3-j)*6}else{return i}}}}function Y(Z){var AE,p=1;Z=String(Z);if(Z.charAt(0)=="#"){AE=Z}else{if(/^rgb/.test(Z)){var m=g(Z);var AE="#",AF;for(var j=0;j<3;j++){if(m[j].indexOf("%")!=-1){AF=Math.floor(C(m[j])*255)}else{AF=Number(m[j])}AE+=I[N(AF,0,255)]}p=m[3]}else{if(/^hsl/.test(Z)){var m=g(Z);AE=c(m);p=m[3]}else{AE=B[Z]||Z}}}return{color:AE,alpha:p}}var L={style:"normal",variant:"normal",weight:"normal",size:10,family:"sans-serif"};var f={};function X(Z){if(f[Z]){return f[Z]}var m=document.createElement("div");var j=m.style;try{j.font=Z}catch(i){}return f[Z]={style:j.fontStyle||L.style,variant:j.fontVariant||L.variant,weight:j.fontWeight||L.weight,size:j.fontSize||L.size,family:j.fontFamily||L.family}}function P(j,i){var Z={};for(var AF in j){Z[AF]=j[AF]}var AE=parseFloat(i.currentStyle.fontSize),m=parseFloat(j.size);if(typeof j.size=="number"){Z.size=j.size}else{if(j.size.indexOf("px")!=-1){Z.size=m}else{if(j.size.indexOf("em")!=-1){Z.size=AE*m}else{if(j.size.indexOf("%")!=-1){Z.size=(AE/100)*m}else{if(j.size.indexOf("pt")!=-1){Z.size=m/0.75}else{Z.size=AE}}}}}Z.size*=0.981;return Z}function AA(Z){return Z.style+" "+Z.variant+" "+Z.weight+" "+Z.size+"px "+Z.family}function t(Z){switch(Z){case"butt":return"flat";case"round":return"round";case"square":default:return"square"}}function W(i){this.m_=V();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.strokeStyle="#000";this.fillStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=D*1;this.globalAlpha=1;this.font="10px sans-serif";this.textAlign="left";this.textBaseline="alphabetic";this.canvas=i;var Z=i.ownerDocument.createElement("div");Z.style.width=i.clientWidth+"px";Z.style.height=i.clientHeight+"px";Z.style.overflow="hidden";Z.style.position="absolute";i.appendChild(Z);this.element_=Z;this.arcScaleX_=1;this.arcScaleY_=1;this.lineScale_=1}var M=W.prototype;M.clearRect=function(){if(this.textMeasureEl_){this.textMeasureEl_.removeNode(true);this.textMeasureEl_=null}this.element_.innerHTML=""};M.beginPath=function(){this.currentPath_=[]};M.moveTo=function(i,Z){var j=this.getCoords_(i,Z);this.currentPath_.push({type:"moveTo",x:j.x,y:j.y});this.currentX_=j.x;this.currentY_=j.y};M.lineTo=function(i,Z){var j=this.getCoords_(i,Z);this.currentPath_.push({type:"lineTo",x:j.x,y:j.y});this.currentX_=j.x;this.currentY_=j.y};M.bezierCurveTo=function(j,i,AI,AH,AG,AE){var Z=this.getCoords_(AG,AE);var AF=this.getCoords_(j,i);var m=this.getCoords_(AI,AH);e(this,AF,m,Z)};function e(Z,m,j,i){Z.currentPath_.push({type:"bezierCurveTo",cp1x:m.x,cp1y:m.y,cp2x:j.x,cp2y:j.y,x:i.x,y:i.y});Z.currentX_=i.x;Z.currentY_=i.y}M.quadraticCurveTo=function(AG,j,i,Z){var AF=this.getCoords_(AG,j);var AE=this.getCoords_(i,Z);var AH={x:this.currentX_+2/3*(AF.x-this.currentX_),y:this.currentY_+2/3*(AF.y-this.currentY_)};var m={x:AH.x+(AE.x-this.currentX_)/3,y:AH.y+(AE.y-this.currentY_)/3};e(this,AH,m,AE)};M.arc=function(AJ,AH,AI,AE,i,j){AI*=D;var AN=j?"at":"wa";var AK=AJ+U(AE)*AI-F;var AM=AH+J(AE)*AI-F;var Z=AJ+U(i)*AI-F;var AL=AH+J(i)*AI-F;if(AK==Z&&!j){AK+=0.125}var m=this.getCoords_(AJ,AH);var AG=this.getCoords_(AK,AM);var AF=this.getCoords_(Z,AL);this.currentPath_.push({type:AN,x:m.x,y:m.y,radius:AI,xStart:AG.x,yStart:AG.y,xEnd:AF.x,yEnd:AF.y})};M.rect=function(j,i,Z,m){this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath()};M.strokeRect=function(j,i,Z,m){var p=this.currentPath_;this.beginPath();this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath();this.stroke();this.currentPath_=p};M.fillRect=function(j,i,Z,m){var p=this.currentPath_;this.beginPath();this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath();this.fill();this.currentPath_=p};M.createLinearGradient=function(i,m,Z,j){var p=new v("gradient");p.x0_=i;p.y0_=m;p.x1_=Z;p.y1_=j;return p};M.createRadialGradient=function(m,AE,j,i,p,Z){var AF=new v("gradientradial");AF.x0_=m;AF.y0_=AE;AF.r0_=j;AF.x1_=i;AF.y1_=p;AF.r1_=Z;return AF};M.drawImage=function(AO,j){var AH,AF,AJ,AV,AM,AK,AQ,AX;var AI=AO.runtimeStyle.width;var AN=AO.runtimeStyle.height;AO.runtimeStyle.width="auto";AO.runtimeStyle.height="auto";var AG=AO.width;var AT=AO.height;AO.runtimeStyle.width=AI;AO.runtimeStyle.height=AN;if(arguments.length==3){AH=arguments[1];AF=arguments[2];AM=AK=0;AQ=AJ=AG;AX=AV=AT}else{if(arguments.length==5){AH=arguments[1];AF=arguments[2];AJ=arguments[3];AV=arguments[4];AM=AK=0;AQ=AG;AX=AT}else{if(arguments.length==9){AM=arguments[1];AK=arguments[2];AQ=arguments[3];AX=arguments[4];AH=arguments[5];AF=arguments[6];AJ=arguments[7];AV=arguments[8]}else{throw Error("Invalid number of arguments")}}}var AW=this.getCoords_(AH,AF);var m=AQ/2;var i=AX/2;var AU=[];var Z=10;var AE=10;AU.push(" ','","");this.element_.insertAdjacentHTML("BeforeEnd",AU.join(""))};M.stroke=function(AM){var m=10;var AN=10;var AE=5000;var AG={x:null,y:null};var AL={x:null,y:null};for(var AH=0;AHAL.x){AL.x=Z.x}if(AG.y==null||Z.yAL.y){AL.y=Z.y}}}AK.push(' ">');if(!AM){R(this,AK)}else{a(this,AK,AG,AL)}AK.push("");this.element_.insertAdjacentHTML("beforeEnd",AK.join(""))}};function R(j,AE){var i=Y(j.strokeStyle);var m=i.color;var p=i.alpha*j.globalAlpha;var Z=j.lineScale_*j.lineWidth;if(Z<1){p*=Z}AE.push("')}function a(AO,AG,Ah,AP){var AH=AO.fillStyle;var AY=AO.arcScaleX_;var AX=AO.arcScaleY_;var Z=AP.x-Ah.x;var m=AP.y-Ah.y;if(AH instanceof v){var AL=0;var Ac={x:0,y:0};var AU=0;var AK=1;if(AH.type_=="gradient"){var AJ=AH.x0_/AY;var j=AH.y0_/AX;var AI=AH.x1_/AY;var Aj=AH.y1_/AX;var Ag=AO.getCoords_(AJ,j);var Af=AO.getCoords_(AI,Aj);var AE=Af.x-Ag.x;var p=Af.y-Ag.y;AL=Math.atan2(AE,p)*180/Math.PI;if(AL<0){AL+=360}if(AL<0.000001){AL=0}}else{var Ag=AO.getCoords_(AH.x0_,AH.y0_);Ac={x:(Ag.x-Ah.x)/Z,y:(Ag.y-Ah.y)/m};Z/=AY*D;m/=AX*D;var Aa=z.max(Z,m);AU=2*AH.r0_/Aa;AK=2*AH.r1_/Aa-AU}var AS=AH.colors_;AS.sort(function(Ak,i){return Ak.offset-i.offset});var AN=AS.length;var AR=AS[0].color;var AQ=AS[AN-1].color;var AW=AS[0].alpha*AO.globalAlpha;var AV=AS[AN-1].alpha*AO.globalAlpha;var Ab=[];for(var Ae=0;Ae')}else{if(AH instanceof u){if(Z&&m){var AF=-Ah.x;var AZ=-Ah.y;AG.push("')}}else{var Ai=Y(AO.fillStyle);var AT=Ai.color;var Ad=Ai.alpha*AO.globalAlpha;AG.push('')}}}M.fill=function(){this.stroke(true)};M.closePath=function(){this.currentPath_.push({type:"close"})};M.getCoords_=function(j,i){var Z=this.m_;return{x:D*(j*Z[0][0]+i*Z[1][0]+Z[2][0])-F,y:D*(j*Z[0][1]+i*Z[1][1]+Z[2][1])-F}};M.save=function(){var Z={};Q(this,Z);this.aStack_.push(Z);this.mStack_.push(this.m_);this.m_=d(V(),this.m_)};M.restore=function(){if(this.aStack_.length){Q(this.aStack_.pop(),this);this.m_=this.mStack_.pop()}};function H(Z){return isFinite(Z[0][0])&&isFinite(Z[0][1])&&isFinite(Z[1][0])&&isFinite(Z[1][1])&&isFinite(Z[2][0])&&isFinite(Z[2][1])}function y(i,Z,j){if(!H(Z)){return }i.m_=Z;if(j){var p=Z[0][0]*Z[1][1]-Z[0][1]*Z[1][0];i.lineScale_=k(b(p))}}M.translate=function(j,i){var Z=[[1,0,0],[0,1,0],[j,i,1]];y(this,d(Z,this.m_),false)};M.rotate=function(i){var m=U(i);var j=J(i);var Z=[[m,j,0],[-j,m,0],[0,0,1]];y(this,d(Z,this.m_),false)};M.scale=function(j,i){this.arcScaleX_*=j;this.arcScaleY_*=i;var Z=[[j,0,0],[0,i,0],[0,0,1]];y(this,d(Z,this.m_),true)};M.transform=function(p,m,AF,AE,i,Z){var j=[[p,m,0],[AF,AE,0],[i,Z,1]];y(this,d(j,this.m_),true)};M.setTransform=function(AE,p,AG,AF,j,i){var Z=[[AE,p,0],[AG,AF,0],[j,i,1]];y(this,Z,true)};M.drawText_=function(AK,AI,AH,AN,AG){var AM=this.m_,AQ=1000,i=0,AP=AQ,AF={x:0,y:0},AE=[];var Z=P(X(this.font),this.element_);var j=AA(Z);var AR=this.element_.currentStyle;var p=this.textAlign.toLowerCase();switch(p){case"left":case"center":case"right":break;case"end":p=AR.direction=="ltr"?"right":"left";break;case"start":p=AR.direction=="rtl"?"right":"left";break;default:p="left"}switch(this.textBaseline){case"hanging":case"top":AF.y=Z.size/1.75;break;case"middle":break;default:case null:case"alphabetic":case"ideographic":case"bottom":AF.y=-Z.size/2.25;break}switch(p){case"right":i=AQ;AP=0.05;break;case"center":i=AP=AQ/2;break}var AO=this.getCoords_(AI+AF.x,AH+AF.y);AE.push('');if(AG){R(this,AE)}else{a(this,AE,{x:-i,y:0},{x:AP,y:Z.size})}var AL=AM[0][0].toFixed(3)+","+AM[1][0].toFixed(3)+","+AM[0][1].toFixed(3)+","+AM[1][1].toFixed(3)+",0,0";var AJ=K(AO.x/D)+","+K(AO.y/D);AE.push('','','');this.element_.insertAdjacentHTML("beforeEnd",AE.join(""))};M.fillText=function(j,Z,m,i){this.drawText_(j,Z,m,i,false)};M.strokeText=function(j,Z,m,i){this.drawText_(j,Z,m,i,true)};M.measureText=function(j){if(!this.textMeasureEl_){var Z='';this.element_.insertAdjacentHTML("beforeEnd",Z);this.textMeasureEl_=this.element_.lastChild}var i=this.element_.ownerDocument;this.textMeasureEl_.innerHTML="";this.textMeasureEl_.style.font=this.font;this.textMeasureEl_.appendChild(i.createTextNode(j));return{width:this.textMeasureEl_.offsetWidth}};M.clip=function(){};M.arcTo=function(){};M.createPattern=function(i,Z){return new u(i,Z)};function v(Z){this.type_=Z;this.x0_=0;this.y0_=0;this.r0_=0;this.x1_=0;this.y1_=0;this.r1_=0;this.colors_=[]}v.prototype.addColorStop=function(i,Z){Z=Y(Z);this.colors_.push({offset:i,color:Z.color,alpha:Z.alpha})};function u(i,Z){q(i);switch(Z){case"repeat":case null:case"":this.repetition_="repeat";break;case"repeat-x":case"repeat-y":case"no-repeat":this.repetition_=Z;break;default:n("SYNTAX_ERR")}this.src_=i.src;this.width_=i.width;this.height_=i.height}function n(Z){throw new o(Z)}function q(Z){if(!Z||Z.nodeType!=1||Z.tagName!="IMG"){n("TYPE_MISMATCH_ERR")}if(Z.readyState!="complete"){n("INVALID_STATE_ERR")}}function o(Z){this.code=this[Z];this.message=Z+": DOM Exception "+this.code}var x=o.prototype=new Error;x.INDEX_SIZE_ERR=1;x.DOMSTRING_SIZE_ERR=2;x.HIERARCHY_REQUEST_ERR=3;x.WRONG_DOCUMENT_ERR=4;x.INVALID_CHARACTER_ERR=5;x.NO_DATA_ALLOWED_ERR=6;x.NO_MODIFICATION_ALLOWED_ERR=7;x.NOT_FOUND_ERR=8;x.NOT_SUPPORTED_ERR=9;x.INUSE_ATTRIBUTE_ERR=10;x.INVALID_STATE_ERR=11;x.SYNTAX_ERR=12;x.INVALID_MODIFICATION_ERR=13;x.NAMESPACE_ERR=14;x.INVALID_ACCESS_ERR=15;x.VALIDATION_ERR=16;x.TYPE_MISMATCH_ERR=17;G_vmlCanvasManager=E;CanvasRenderingContext2D=W;CanvasGradient=v;CanvasPattern=u;DOMException=o})()}; \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/js/jquery.flot.js b/SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/js/jquery.flot.js new file mode 100644 index 0000000..dd20ad6 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/js/jquery.flot.js @@ -0,0 +1,3168 @@ +/* Javascript plotting library for jQuery, version 0.8.3. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +*/ + +// first an inline dependency, jquery.colorhelpers.js, we inline it here +// for convenience + +/* Plugin for jQuery for working with colors. + * + * Version 1.1. + * + * Inspiration from jQuery color animation plugin by John Resig. + * + * Released under the MIT license by Ole Laursen, October 2009. + * + * Examples: + * + * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() + * var c = $.color.extract($("#mydiv"), 'background-color'); + * console.log(c.r, c.g, c.b, c.a); + * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" + * + * Note that .scale() and .add() return the same modified object + * instead of making a new one. + * + * V. 1.1: Fix error handling so e.g. parsing an empty string does + * produce a color rather than just crashing. + */ +(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return valuemax?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery); + +// the actual Flot code +(function($) { + + // Cache the prototype hasOwnProperty for faster access + + var hasOwnProperty = Object.prototype.hasOwnProperty; + + // A shim to provide 'detach' to jQuery versions prior to 1.4. Using a DOM + // operation produces the same effect as detach, i.e. removing the element + // without touching its jQuery data. + + // Do not merge this into Flot 0.9, since it requires jQuery 1.4.4+. + + if (!$.fn.detach) { + $.fn.detach = function() { + return this.each(function() { + if (this.parentNode) { + this.parentNode.removeChild( this ); + } + }); + }; + } + + /////////////////////////////////////////////////////////////////////////// + // The Canvas object is a wrapper around an HTML5 tag. + // + // @constructor + // @param {string} cls List of classes to apply to the canvas. + // @param {element} container Element onto which to append the canvas. + // + // Requiring a container is a little iffy, but unfortunately canvas + // operations don't work unless the canvas is attached to the DOM. + + function Canvas(cls, container) { + + var element = container.children("." + cls)[0]; + + if (element == null) { + + element = document.createElement("canvas"); + element.className = cls; + + $(element).css({ direction: "ltr", position: "absolute", left: 0, top: 0 }) + .appendTo(container); + + // If HTML5 Canvas isn't available, fall back to [Ex|Flash]canvas + + if (!element.getContext) { + if (window.G_vmlCanvasManager) { + element = window.G_vmlCanvasManager.initElement(element); + } else { + throw new Error("Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode."); + } + } + } + + this.element = element; + + var context = this.context = element.getContext("2d"); + + // Determine the screen's ratio of physical to device-independent + // pixels. This is the ratio between the canvas width that the browser + // advertises and the number of pixels actually present in that space. + + // The iPhone 4, for example, has a device-independent width of 320px, + // but its screen is actually 640px wide. It therefore has a pixel + // ratio of 2, while most normal devices have a ratio of 1. + + var devicePixelRatio = window.devicePixelRatio || 1, + backingStoreRatio = + context.webkitBackingStorePixelRatio || + context.mozBackingStorePixelRatio || + context.msBackingStorePixelRatio || + context.oBackingStorePixelRatio || + context.backingStorePixelRatio || 1; + + this.pixelRatio = devicePixelRatio / backingStoreRatio; + + // Size the canvas to match the internal dimensions of its container + + this.resize(container.width(), container.height()); + + // Collection of HTML div layers for text overlaid onto the canvas + + this.textContainer = null; + this.text = {}; + + // Cache of text fragments and metrics, so we can avoid expensively + // re-calculating them when the plot is re-rendered in a loop. + + this._textCache = {}; + } + + // Resizes the canvas to the given dimensions. + // + // @param {number} width New width of the canvas, in pixels. + // @param {number} width New height of the canvas, in pixels. + + Canvas.prototype.resize = function(width, height) { + + if (width <= 0 || height <= 0) { + throw new Error("Invalid dimensions for plot, width = " + width + ", height = " + height); + } + + var element = this.element, + context = this.context, + pixelRatio = this.pixelRatio; + + // Resize the canvas, increasing its density based on the display's + // pixel ratio; basically giving it more pixels without increasing the + // size of its element, to take advantage of the fact that retina + // displays have that many more pixels in the same advertised space. + + // Resizing should reset the state (excanvas seems to be buggy though) + + if (this.width != width) { + element.width = width * pixelRatio; + element.style.width = width + "px"; + this.width = width; + } + + if (this.height != height) { + element.height = height * pixelRatio; + element.style.height = height + "px"; + this.height = height; + } + + // Save the context, so we can reset in case we get replotted. The + // restore ensure that we're really back at the initial state, and + // should be safe even if we haven't saved the initial state yet. + + context.restore(); + context.save(); + + // Scale the coordinate space to match the display density; so even though we + // may have twice as many pixels, we still want lines and other drawing to + // appear at the same size; the extra pixels will just make them crisper. + + context.scale(pixelRatio, pixelRatio); + }; + + // Clears the entire canvas area, not including any overlaid HTML text + + Canvas.prototype.clear = function() { + this.context.clearRect(0, 0, this.width, this.height); + }; + + // Finishes rendering the canvas, including managing the text overlay. + + Canvas.prototype.render = function() { + + var cache = this._textCache; + + // For each text layer, add elements marked as active that haven't + // already been rendered, and remove those that are no longer active. + + for (var layerKey in cache) { + if (hasOwnProperty.call(cache, layerKey)) { + + var layer = this.getTextLayer(layerKey), + layerCache = cache[layerKey]; + + layer.hide(); + + for (var styleKey in layerCache) { + if (hasOwnProperty.call(layerCache, styleKey)) { + var styleCache = layerCache[styleKey]; + for (var key in styleCache) { + if (hasOwnProperty.call(styleCache, key)) { + + var positions = styleCache[key].positions; + + for (var i = 0, position; position = positions[i]; i++) { + if (position.active) { + if (!position.rendered) { + layer.append(position.element); + position.rendered = true; + } + } else { + positions.splice(i--, 1); + if (position.rendered) { + position.element.detach(); + } + } + } + + if (positions.length == 0) { + delete styleCache[key]; + } + } + } + } + } + + layer.show(); + } + } + }; + + // Creates (if necessary) and returns the text overlay container. + // + // @param {string} classes String of space-separated CSS classes used to + // uniquely identify the text layer. + // @return {object} The jQuery-wrapped text-layer div. + + Canvas.prototype.getTextLayer = function(classes) { + + var layer = this.text[classes]; + + // Create the text layer if it doesn't exist + + if (layer == null) { + + // Create the text layer container, if it doesn't exist + + if (this.textContainer == null) { + this.textContainer = $("
    ") + .css({ + position: "absolute", + top: 0, + left: 0, + bottom: 0, + right: 0, + 'font-size': "smaller", + color: "#545454" + }) + .insertAfter(this.element); + } + + layer = this.text[classes] = $("
    ") + .addClass(classes) + .css({ + position: "absolute", + top: 0, + left: 0, + bottom: 0, + right: 0 + }) + .appendTo(this.textContainer); + } + + return layer; + }; + + // Creates (if necessary) and returns a text info object. + // + // The object looks like this: + // + // { + // width: Width of the text's wrapper div. + // height: Height of the text's wrapper div. + // element: The jQuery-wrapped HTML div containing the text. + // positions: Array of positions at which this text is drawn. + // } + // + // The positions array contains objects that look like this: + // + // { + // active: Flag indicating whether the text should be visible. + // rendered: Flag indicating whether the text is currently visible. + // element: The jQuery-wrapped HTML div containing the text. + // x: X coordinate at which to draw the text. + // y: Y coordinate at which to draw the text. + // } + // + // Each position after the first receives a clone of the original element. + // + // The idea is that that the width, height, and general 'identity' of the + // text is constant no matter where it is placed; the placements are a + // secondary property. + // + // Canvas maintains a cache of recently-used text info objects; getTextInfo + // either returns the cached element or creates a new entry. + // + // @param {string} layer A string of space-separated CSS classes uniquely + // identifying the layer containing this text. + // @param {string} text Text string to retrieve info for. + // @param {(string|object)=} font Either a string of space-separated CSS + // classes or a font-spec object, defining the text's font and style. + // @param {number=} angle Angle at which to rotate the text, in degrees. + // Angle is currently unused, it will be implemented in the future. + // @param {number=} width Maximum width of the text before it wraps. + // @return {object} a text info object. + + Canvas.prototype.getTextInfo = function(layer, text, font, angle, width) { + + var textStyle, layerCache, styleCache, info; + + // Cast the value to a string, in case we were given a number or such + + text = "" + text; + + // If the font is a font-spec object, generate a CSS font definition + + if (typeof font === "object") { + textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px/" + font.lineHeight + "px " + font.family; + } else { + textStyle = font; + } + + // Retrieve (or create) the cache for the text's layer and styles + + layerCache = this._textCache[layer]; + + if (layerCache == null) { + layerCache = this._textCache[layer] = {}; + } + + styleCache = layerCache[textStyle]; + + if (styleCache == null) { + styleCache = layerCache[textStyle] = {}; + } + + info = styleCache[text]; + + // If we can't find a matching element in our cache, create a new one + + if (info == null) { + + var element = $("
    ").html(text) + .css({ + position: "absolute", + 'max-width': width, + top: -9999 + }) + .appendTo(this.getTextLayer(layer)); + + if (typeof font === "object") { + element.css({ + font: textStyle, + color: font.color + }); + } else if (typeof font === "string") { + element.addClass(font); + } + + info = styleCache[text] = { + width: element.outerWidth(true), + height: element.outerHeight(true), + element: element, + positions: [] + }; + + element.detach(); + } + + return info; + }; + + // Adds a text string to the canvas text overlay. + // + // The text isn't drawn immediately; it is marked as rendering, which will + // result in its addition to the canvas on the next render pass. + // + // @param {string} layer A string of space-separated CSS classes uniquely + // identifying the layer containing this text. + // @param {number} x X coordinate at which to draw the text. + // @param {number} y Y coordinate at which to draw the text. + // @param {string} text Text string to draw. + // @param {(string|object)=} font Either a string of space-separated CSS + // classes or a font-spec object, defining the text's font and style. + // @param {number=} angle Angle at which to rotate the text, in degrees. + // Angle is currently unused, it will be implemented in the future. + // @param {number=} width Maximum width of the text before it wraps. + // @param {string=} halign Horizontal alignment of the text; either "left", + // "center" or "right". + // @param {string=} valign Vertical alignment of the text; either "top", + // "middle" or "bottom". + + Canvas.prototype.addText = function(layer, x, y, text, font, angle, width, halign, valign) { + + var info = this.getTextInfo(layer, text, font, angle, width), + positions = info.positions; + + // Tweak the div's position to match the text's alignment + + if (halign == "center") { + x -= info.width / 2; + } else if (halign == "right") { + x -= info.width; + } + + if (valign == "middle") { + y -= info.height / 2; + } else if (valign == "bottom") { + y -= info.height; + } + + // Determine whether this text already exists at this position. + // If so, mark it for inclusion in the next render pass. + + for (var i = 0, position; position = positions[i]; i++) { + if (position.x == x && position.y == y) { + position.active = true; + return; + } + } + + // If the text doesn't exist at this position, create a new entry + + // For the very first position we'll re-use the original element, + // while for subsequent ones we'll clone it. + + position = { + active: true, + rendered: false, + element: positions.length ? info.element.clone() : info.element, + x: x, + y: y + }; + + positions.push(position); + + // Move the element to its final position within the container + + position.element.css({ + top: Math.round(y), + left: Math.round(x), + 'text-align': halign // In case the text wraps + }); + }; + + // Removes one or more text strings from the canvas text overlay. + // + // If no parameters are given, all text within the layer is removed. + // + // Note that the text is not immediately removed; it is simply marked as + // inactive, which will result in its removal on the next render pass. + // This avoids the performance penalty for 'clear and redraw' behavior, + // where we potentially get rid of all text on a layer, but will likely + // add back most or all of it later, as when redrawing axes, for example. + // + // @param {string} layer A string of space-separated CSS classes uniquely + // identifying the layer containing this text. + // @param {number=} x X coordinate of the text. + // @param {number=} y Y coordinate of the text. + // @param {string=} text Text string to remove. + // @param {(string|object)=} font Either a string of space-separated CSS + // classes or a font-spec object, defining the text's font and style. + // @param {number=} angle Angle at which the text is rotated, in degrees. + // Angle is currently unused, it will be implemented in the future. + + Canvas.prototype.removeText = function(layer, x, y, text, font, angle) { + if (text == null) { + var layerCache = this._textCache[layer]; + if (layerCache != null) { + for (var styleKey in layerCache) { + if (hasOwnProperty.call(layerCache, styleKey)) { + var styleCache = layerCache[styleKey]; + for (var key in styleCache) { + if (hasOwnProperty.call(styleCache, key)) { + var positions = styleCache[key].positions; + for (var i = 0, position; position = positions[i]; i++) { + position.active = false; + } + } + } + } + } + } + } else { + var positions = this.getTextInfo(layer, text, font, angle).positions; + for (var i = 0, position; position = positions[i]; i++) { + if (position.x == x && position.y == y) { + position.active = false; + } + } + } + }; + + /////////////////////////////////////////////////////////////////////////// + // The top-level container for the entire plot. + + function Plot(placeholder, data_, options_, plugins) { + // data is on the form: + // [ series1, series2 ... ] + // where series is either just the data as [ [x1, y1], [x2, y2], ... ] + // or { data: [ [x1, y1], [x2, y2], ... ], label: "some label", ... } + + var series = [], + options = { + // the color theme used for graphs + colors: ["#edc240", "#afd8f8", "#cb4b4b", "#4da74d", "#9440ed"], + legend: { + show: true, + noColumns: 1, // number of colums in legend table + labelFormatter: null, // fn: string -> string + labelBoxBorderColor: "#ccc", // border color for the little label boxes + container: null, // container (as jQuery object) to put legend in, null means default on top of graph + position: "ne", // position of default legend container within plot + margin: 5, // distance from grid edge to default legend container within plot + backgroundColor: null, // null means auto-detect + backgroundOpacity: 0.85, // set to 0 to avoid background + sorted: null // default to no legend sorting + }, + xaxis: { + show: null, // null = auto-detect, true = always, false = never + position: "bottom", // or "top" + mode: null, // null or "time" + font: null, // null (derived from CSS in placeholder) or object like { size: 11, lineHeight: 13, style: "italic", weight: "bold", family: "sans-serif", variant: "small-caps" } + color: null, // base color, labels, ticks + tickColor: null, // possibly different color of ticks, e.g. "rgba(0,0,0,0.15)" + transform: null, // null or f: number -> number to transform axis + inverseTransform: null, // if transform is set, this should be the inverse function + min: null, // min. value to show, null means set automatically + max: null, // max. value to show, null means set automatically + autoscaleMargin: null, // margin in % to add if auto-setting min/max + ticks: null, // either [1, 3] or [[1, "a"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks + tickFormatter: null, // fn: number -> string + labelWidth: null, // size of tick labels in pixels + labelHeight: null, + reserveSpace: null, // whether to reserve space even if axis isn't shown + tickLength: null, // size in pixels of ticks, or "full" for whole line + alignTicksWithAxis: null, // axis number or null for no sync + tickDecimals: null, // no. of decimals, null means auto + tickSize: null, // number or [number, "unit"] + minTickSize: null // number or [number, "unit"] + }, + yaxis: { + autoscaleMargin: 0.02, + position: "left" // or "right" + }, + xaxes: [], + yaxes: [], + series: { + points: { + show: false, + radius: 3, + lineWidth: 2, // in pixels + fill: true, + fillColor: "#ffffff", + symbol: "circle" // or callback + }, + lines: { + // we don't put in show: false so we can see + // whether lines were actively disabled + lineWidth: 2, // in pixels + fill: false, + fillColor: null, + steps: false + // Omit 'zero', so we can later default its value to + // match that of the 'fill' option. + }, + bars: { + show: false, + lineWidth: 2, // in pixels + barWidth: 1, // in units of the x axis + fill: true, + fillColor: null, + align: "left", // "left", "right", or "center" + horizontal: false, + zero: true + }, + shadowSize: 3, + highlightColor: null + }, + grid: { + show: true, + aboveData: false, + color: "#545454", // primary color used for outline and labels + backgroundColor: null, // null for transparent, else color + borderColor: null, // set if different from the grid color + tickColor: null, // color for the ticks, e.g. "rgba(0,0,0,0.15)" + margin: 0, // distance from the canvas edge to the grid + labelMargin: 5, // in pixels + axisMargin: 8, // in pixels + borderWidth: 2, // in pixels + minBorderMargin: null, // in pixels, null means taken from points radius + markings: null, // array of ranges or fn: axes -> array of ranges + markingsColor: "#f4f4f4", + markingsLineWidth: 2, + // interactive stuff + clickable: false, + hoverable: false, + autoHighlight: true, // highlight in case mouse is near + mouseActiveRadius: 10 // how far the mouse can be away to activate an item + }, + interaction: { + redrawOverlayInterval: 1000/60 // time between updates, -1 means in same flow + }, + hooks: {} + }, + surface = null, // the canvas for the plot itself + overlay = null, // canvas for interactive stuff on top of plot + eventHolder = null, // jQuery object that events should be bound to + ctx = null, octx = null, + xaxes = [], yaxes = [], + plotOffset = { left: 0, right: 0, top: 0, bottom: 0}, + plotWidth = 0, plotHeight = 0, + hooks = { + processOptions: [], + processRawData: [], + processDatapoints: [], + processOffset: [], + drawBackground: [], + drawSeries: [], + draw: [], + bindEvents: [], + drawOverlay: [], + shutdown: [] + }, + plot = this; + + // public functions + plot.setData = setData; + plot.setupGrid = setupGrid; + plot.draw = draw; + plot.getPlaceholder = function() { return placeholder; }; + plot.getCanvas = function() { return surface.element; }; + plot.getPlotOffset = function() { return plotOffset; }; + plot.width = function () { return plotWidth; }; + plot.height = function () { return plotHeight; }; + plot.offset = function () { + var o = eventHolder.offset(); + o.left += plotOffset.left; + o.top += plotOffset.top; + return o; + }; + plot.getData = function () { return series; }; + plot.getAxes = function () { + var res = {}, i; + $.each(xaxes.concat(yaxes), function (_, axis) { + if (axis) + res[axis.direction + (axis.n != 1 ? axis.n : "") + "axis"] = axis; + }); + return res; + }; + plot.getXAxes = function () { return xaxes; }; + plot.getYAxes = function () { return yaxes; }; + plot.c2p = canvasToAxisCoords; + plot.p2c = axisToCanvasCoords; + plot.getOptions = function () { return options; }; + plot.highlight = highlight; + plot.unhighlight = unhighlight; + plot.triggerRedrawOverlay = triggerRedrawOverlay; + plot.pointOffset = function(point) { + return { + left: parseInt(xaxes[axisNumber(point, "x") - 1].p2c(+point.x) + plotOffset.left, 10), + top: parseInt(yaxes[axisNumber(point, "y") - 1].p2c(+point.y) + plotOffset.top, 10) + }; + }; + plot.shutdown = shutdown; + plot.destroy = function () { + shutdown(); + placeholder.removeData("plot").empty(); + + series = []; + options = null; + surface = null; + overlay = null; + eventHolder = null; + ctx = null; + octx = null; + xaxes = []; + yaxes = []; + hooks = null; + highlights = []; + plot = null; + }; + plot.resize = function () { + var width = placeholder.width(), + height = placeholder.height(); + surface.resize(width, height); + overlay.resize(width, height); + }; + + // public attributes + plot.hooks = hooks; + + // initialize + initPlugins(plot); + parseOptions(options_); + setupCanvases(); + setData(data_); + setupGrid(); + draw(); + bindEvents(); + + + function executeHooks(hook, args) { + args = [plot].concat(args); + for (var i = 0; i < hook.length; ++i) + hook[i].apply(this, args); + } + + function initPlugins() { + + // References to key classes, allowing plugins to modify them + + var classes = { + Canvas: Canvas + }; + + for (var i = 0; i < plugins.length; ++i) { + var p = plugins[i]; + p.init(plot, classes); + if (p.options) + $.extend(true, options, p.options); + } + } + + function parseOptions(opts) { + + $.extend(true, options, opts); + + // $.extend merges arrays, rather than replacing them. When less + // colors are provided than the size of the default palette, we + // end up with those colors plus the remaining defaults, which is + // not expected behavior; avoid it by replacing them here. + + if (opts && opts.colors) { + options.colors = opts.colors; + } + + if (options.xaxis.color == null) + options.xaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString(); + if (options.yaxis.color == null) + options.yaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString(); + + if (options.xaxis.tickColor == null) // grid.tickColor for back-compatibility + options.xaxis.tickColor = options.grid.tickColor || options.xaxis.color; + if (options.yaxis.tickColor == null) // grid.tickColor for back-compatibility + options.yaxis.tickColor = options.grid.tickColor || options.yaxis.color; + + if (options.grid.borderColor == null) + options.grid.borderColor = options.grid.color; + if (options.grid.tickColor == null) + options.grid.tickColor = $.color.parse(options.grid.color).scale('a', 0.22).toString(); + + // Fill in defaults for axis options, including any unspecified + // font-spec fields, if a font-spec was provided. + + // If no x/y axis options were provided, create one of each anyway, + // since the rest of the code assumes that they exist. + + var i, axisOptions, axisCount, + fontSize = placeholder.css("font-size"), + fontSizeDefault = fontSize ? +fontSize.replace("px", "") : 13, + fontDefaults = { + style: placeholder.css("font-style"), + size: Math.round(0.8 * fontSizeDefault), + variant: placeholder.css("font-variant"), + weight: placeholder.css("font-weight"), + family: placeholder.css("font-family") + }; + + axisCount = options.xaxes.length || 1; + for (i = 0; i < axisCount; ++i) { + + axisOptions = options.xaxes[i]; + if (axisOptions && !axisOptions.tickColor) { + axisOptions.tickColor = axisOptions.color; + } + + axisOptions = $.extend(true, {}, options.xaxis, axisOptions); + options.xaxes[i] = axisOptions; + + if (axisOptions.font) { + axisOptions.font = $.extend({}, fontDefaults, axisOptions.font); + if (!axisOptions.font.color) { + axisOptions.font.color = axisOptions.color; + } + if (!axisOptions.font.lineHeight) { + axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15); + } + } + } + + axisCount = options.yaxes.length || 1; + for (i = 0; i < axisCount; ++i) { + + axisOptions = options.yaxes[i]; + if (axisOptions && !axisOptions.tickColor) { + axisOptions.tickColor = axisOptions.color; + } + + axisOptions = $.extend(true, {}, options.yaxis, axisOptions); + options.yaxes[i] = axisOptions; + + if (axisOptions.font) { + axisOptions.font = $.extend({}, fontDefaults, axisOptions.font); + if (!axisOptions.font.color) { + axisOptions.font.color = axisOptions.color; + } + if (!axisOptions.font.lineHeight) { + axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15); + } + } + } + + // backwards compatibility, to be removed in future + if (options.xaxis.noTicks && options.xaxis.ticks == null) + options.xaxis.ticks = options.xaxis.noTicks; + if (options.yaxis.noTicks && options.yaxis.ticks == null) + options.yaxis.ticks = options.yaxis.noTicks; + if (options.x2axis) { + options.xaxes[1] = $.extend(true, {}, options.xaxis, options.x2axis); + options.xaxes[1].position = "top"; + // Override the inherit to allow the axis to auto-scale + if (options.x2axis.min == null) { + options.xaxes[1].min = null; + } + if (options.x2axis.max == null) { + options.xaxes[1].max = null; + } + } + if (options.y2axis) { + options.yaxes[1] = $.extend(true, {}, options.yaxis, options.y2axis); + options.yaxes[1].position = "right"; + // Override the inherit to allow the axis to auto-scale + if (options.y2axis.min == null) { + options.yaxes[1].min = null; + } + if (options.y2axis.max == null) { + options.yaxes[1].max = null; + } + } + if (options.grid.coloredAreas) + options.grid.markings = options.grid.coloredAreas; + if (options.grid.coloredAreasColor) + options.grid.markingsColor = options.grid.coloredAreasColor; + if (options.lines) + $.extend(true, options.series.lines, options.lines); + if (options.points) + $.extend(true, options.series.points, options.points); + if (options.bars) + $.extend(true, options.series.bars, options.bars); + if (options.shadowSize != null) + options.series.shadowSize = options.shadowSize; + if (options.highlightColor != null) + options.series.highlightColor = options.highlightColor; + + // save options on axes for future reference + for (i = 0; i < options.xaxes.length; ++i) + getOrCreateAxis(xaxes, i + 1).options = options.xaxes[i]; + for (i = 0; i < options.yaxes.length; ++i) + getOrCreateAxis(yaxes, i + 1).options = options.yaxes[i]; + + // add hooks from options + for (var n in hooks) + if (options.hooks[n] && options.hooks[n].length) + hooks[n] = hooks[n].concat(options.hooks[n]); + + executeHooks(hooks.processOptions, [options]); + } + + function setData(d) { + series = parseData(d); + fillInSeriesOptions(); + processData(); + } + + function parseData(d) { + var res = []; + for (var i = 0; i < d.length; ++i) { + var s = $.extend(true, {}, options.series); + + if (d[i].data != null) { + s.data = d[i].data; // move the data instead of deep-copy + delete d[i].data; + + $.extend(true, s, d[i]); + + d[i].data = s.data; + } + else + s.data = d[i]; + res.push(s); + } + + return res; + } + + function axisNumber(obj, coord) { + var a = obj[coord + "axis"]; + if (typeof a == "object") // if we got a real axis, extract number + a = a.n; + if (typeof a != "number") + a = 1; // default to first axis + return a; + } + + function allAxes() { + // return flat array without annoying null entries + return $.grep(xaxes.concat(yaxes), function (a) { return a; }); + } + + function canvasToAxisCoords(pos) { + // return an object with x/y corresponding to all used axes + var res = {}, i, axis; + for (i = 0; i < xaxes.length; ++i) { + axis = xaxes[i]; + if (axis && axis.used) + res["x" + axis.n] = axis.c2p(pos.left); + } + + for (i = 0; i < yaxes.length; ++i) { + axis = yaxes[i]; + if (axis && axis.used) + res["y" + axis.n] = axis.c2p(pos.top); + } + + if (res.x1 !== undefined) + res.x = res.x1; + if (res.y1 !== undefined) + res.y = res.y1; + + return res; + } + + function axisToCanvasCoords(pos) { + // get canvas coords from the first pair of x/y found in pos + var res = {}, i, axis, key; + + for (i = 0; i < xaxes.length; ++i) { + axis = xaxes[i]; + if (axis && axis.used) { + key = "x" + axis.n; + if (pos[key] == null && axis.n == 1) + key = "x"; + + if (pos[key] != null) { + res.left = axis.p2c(pos[key]); + break; + } + } + } + + for (i = 0; i < yaxes.length; ++i) { + axis = yaxes[i]; + if (axis && axis.used) { + key = "y" + axis.n; + if (pos[key] == null && axis.n == 1) + key = "y"; + + if (pos[key] != null) { + res.top = axis.p2c(pos[key]); + break; + } + } + } + + return res; + } + + function getOrCreateAxis(axes, number) { + if (!axes[number - 1]) + axes[number - 1] = { + n: number, // save the number for future reference + direction: axes == xaxes ? "x" : "y", + options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis) + }; + + return axes[number - 1]; + } + + function fillInSeriesOptions() { + + var neededColors = series.length, maxIndex = -1, i; + + // Subtract the number of series that already have fixed colors or + // color indexes from the number that we still need to generate. + + for (i = 0; i < series.length; ++i) { + var sc = series[i].color; + if (sc != null) { + neededColors--; + if (typeof sc == "number" && sc > maxIndex) { + maxIndex = sc; + } + } + } + + // If any of the series have fixed color indexes, then we need to + // generate at least as many colors as the highest index. + + if (neededColors <= maxIndex) { + neededColors = maxIndex + 1; + } + + // Generate all the colors, using first the option colors and then + // variations on those colors once they're exhausted. + + var c, colors = [], colorPool = options.colors, + colorPoolSize = colorPool.length, variation = 0; + + for (i = 0; i < neededColors; i++) { + + c = $.color.parse(colorPool[i % colorPoolSize] || "#666"); + + // Each time we exhaust the colors in the pool we adjust + // a scaling factor used to produce more variations on + // those colors. The factor alternates negative/positive + // to produce lighter/darker colors. + + // Reset the variation after every few cycles, or else + // it will end up producing only white or black colors. + + if (i % colorPoolSize == 0 && i) { + if (variation >= 0) { + if (variation < 0.5) { + variation = -variation - 0.2; + } else variation = 0; + } else variation = -variation; + } + + colors[i] = c.scale('rgb', 1 + variation); + } + + // Finalize the series options, filling in their colors + + var colori = 0, s; + for (i = 0; i < series.length; ++i) { + s = series[i]; + + // assign colors + if (s.color == null) { + s.color = colors[colori].toString(); + ++colori; + } + else if (typeof s.color == "number") + s.color = colors[s.color].toString(); + + // turn on lines automatically in case nothing is set + if (s.lines.show == null) { + var v, show = true; + for (v in s) + if (s[v] && s[v].show) { + show = false; + break; + } + if (show) + s.lines.show = true; + } + + // If nothing was provided for lines.zero, default it to match + // lines.fill, since areas by default should extend to zero. + + if (s.lines.zero == null) { + s.lines.zero = !!s.lines.fill; + } + + // setup axes + s.xaxis = getOrCreateAxis(xaxes, axisNumber(s, "x")); + s.yaxis = getOrCreateAxis(yaxes, axisNumber(s, "y")); + } + } + + function processData() { + var topSentry = Number.POSITIVE_INFINITY, + bottomSentry = Number.NEGATIVE_INFINITY, + fakeInfinity = Number.MAX_VALUE, + i, j, k, m, length, + s, points, ps, x, y, axis, val, f, p, + data, format; + + function updateAxis(axis, min, max) { + if (min < axis.datamin && min != -fakeInfinity) + axis.datamin = min; + if (max > axis.datamax && max != fakeInfinity) + axis.datamax = max; + } + + $.each(allAxes(), function (_, axis) { + // init axis + axis.datamin = topSentry; + axis.datamax = bottomSentry; + axis.used = false; + }); + + for (i = 0; i < series.length; ++i) { + s = series[i]; + s.datapoints = { points: [] }; + + executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]); + } + + // first pass: clean and copy data + for (i = 0; i < series.length; ++i) { + s = series[i]; + + data = s.data; + format = s.datapoints.format; + + if (!format) { + format = []; + // find out how to copy + format.push({ x: true, number: true, required: true }); + format.push({ y: true, number: true, required: true }); + + if (s.bars.show || (s.lines.show && s.lines.fill)) { + var autoscale = !!((s.bars.show && s.bars.zero) || (s.lines.show && s.lines.zero)); + format.push({ y: true, number: true, required: false, defaultValue: 0, autoscale: autoscale }); + if (s.bars.horizontal) { + delete format[format.length - 1].y; + format[format.length - 1].x = true; + } + } + + s.datapoints.format = format; + } + + if (s.datapoints.pointsize != null) + continue; // already filled in + + s.datapoints.pointsize = format.length; + + ps = s.datapoints.pointsize; + points = s.datapoints.points; + + var insertSteps = s.lines.show && s.lines.steps; + s.xaxis.used = s.yaxis.used = true; + + for (j = k = 0; j < data.length; ++j, k += ps) { + p = data[j]; + + var nullify = p == null; + if (!nullify) { + for (m = 0; m < ps; ++m) { + val = p[m]; + f = format[m]; + + if (f) { + if (f.number && val != null) { + val = +val; // convert to number + if (isNaN(val)) + val = null; + else if (val == Infinity) + val = fakeInfinity; + else if (val == -Infinity) + val = -fakeInfinity; + } + + if (val == null) { + if (f.required) + nullify = true; + + if (f.defaultValue != null) + val = f.defaultValue; + } + } + + points[k + m] = val; + } + } + + if (nullify) { + for (m = 0; m < ps; ++m) { + val = points[k + m]; + if (val != null) { + f = format[m]; + // extract min/max info + if (f.autoscale !== false) { + if (f.x) { + updateAxis(s.xaxis, val, val); + } + if (f.y) { + updateAxis(s.yaxis, val, val); + } + } + } + points[k + m] = null; + } + } + else { + // a little bit of line specific stuff that + // perhaps shouldn't be here, but lacking + // better means... + if (insertSteps && k > 0 + && points[k - ps] != null + && points[k - ps] != points[k] + && points[k - ps + 1] != points[k + 1]) { + // copy the point to make room for a middle point + for (m = 0; m < ps; ++m) + points[k + ps + m] = points[k + m]; + + // middle point has same y + points[k + 1] = points[k - ps + 1]; + + // we've added a point, better reflect that + k += ps; + } + } + } + } + + // give the hooks a chance to run + for (i = 0; i < series.length; ++i) { + s = series[i]; + + executeHooks(hooks.processDatapoints, [ s, s.datapoints]); + } + + // second pass: find datamax/datamin for auto-scaling + for (i = 0; i < series.length; ++i) { + s = series[i]; + points = s.datapoints.points; + ps = s.datapoints.pointsize; + format = s.datapoints.format; + + var xmin = topSentry, ymin = topSentry, + xmax = bottomSentry, ymax = bottomSentry; + + for (j = 0; j < points.length; j += ps) { + if (points[j] == null) + continue; + + for (m = 0; m < ps; ++m) { + val = points[j + m]; + f = format[m]; + if (!f || f.autoscale === false || val == fakeInfinity || val == -fakeInfinity) + continue; + + if (f.x) { + if (val < xmin) + xmin = val; + if (val > xmax) + xmax = val; + } + if (f.y) { + if (val < ymin) + ymin = val; + if (val > ymax) + ymax = val; + } + } + } + + if (s.bars.show) { + // make sure we got room for the bar on the dancing floor + var delta; + + switch (s.bars.align) { + case "left": + delta = 0; + break; + case "right": + delta = -s.bars.barWidth; + break; + default: + delta = -s.bars.barWidth / 2; + } + + if (s.bars.horizontal) { + ymin += delta; + ymax += delta + s.bars.barWidth; + } + else { + xmin += delta; + xmax += delta + s.bars.barWidth; + } + } + + updateAxis(s.xaxis, xmin, xmax); + updateAxis(s.yaxis, ymin, ymax); + } + + $.each(allAxes(), function (_, axis) { + if (axis.datamin == topSentry) + axis.datamin = null; + if (axis.datamax == bottomSentry) + axis.datamax = null; + }); + } + + function setupCanvases() { + + // Make sure the placeholder is clear of everything except canvases + // from a previous plot in this container that we'll try to re-use. + + placeholder.css("padding", 0) // padding messes up the positioning + .children().filter(function(){ + return !$(this).hasClass("flot-overlay") && !$(this).hasClass('flot-base'); + }).remove(); + + if (placeholder.css("position") == 'static') + placeholder.css("position", "relative"); // for positioning labels and overlay + + surface = new Canvas("flot-base", placeholder); + overlay = new Canvas("flot-overlay", placeholder); // overlay canvas for interactive features + + ctx = surface.context; + octx = overlay.context; + + // define which element we're listening for events on + eventHolder = $(overlay.element).unbind(); + + // If we're re-using a plot object, shut down the old one + + var existing = placeholder.data("plot"); + + if (existing) { + existing.shutdown(); + overlay.clear(); + } + + // save in case we get replotted + placeholder.data("plot", plot); + } + + function bindEvents() { + // bind events + if (options.grid.hoverable) { + eventHolder.mousemove(onMouseMove); + + // Use bind, rather than .mouseleave, because we officially + // still support jQuery 1.2.6, which doesn't define a shortcut + // for mouseenter or mouseleave. This was a bug/oversight that + // was fixed somewhere around 1.3.x. We can return to using + // .mouseleave when we drop support for 1.2.6. + + eventHolder.bind("mouseleave", onMouseLeave); + } + + if (options.grid.clickable) + eventHolder.click(onClick); + + executeHooks(hooks.bindEvents, [eventHolder]); + } + + function shutdown() { + if (redrawTimeout) + clearTimeout(redrawTimeout); + + eventHolder.unbind("mousemove", onMouseMove); + eventHolder.unbind("mouseleave", onMouseLeave); + eventHolder.unbind("click", onClick); + + executeHooks(hooks.shutdown, [eventHolder]); + } + + function setTransformationHelpers(axis) { + // set helper functions on the axis, assumes plot area + // has been computed already + + function identity(x) { return x; } + + var s, m, t = axis.options.transform || identity, + it = axis.options.inverseTransform; + + // precompute how much the axis is scaling a point + // in canvas space + if (axis.direction == "x") { + s = axis.scale = plotWidth / Math.abs(t(axis.max) - t(axis.min)); + m = Math.min(t(axis.max), t(axis.min)); + } + else { + s = axis.scale = plotHeight / Math.abs(t(axis.max) - t(axis.min)); + s = -s; + m = Math.max(t(axis.max), t(axis.min)); + } + + // data point to canvas coordinate + if (t == identity) // slight optimization + axis.p2c = function (p) { return (p - m) * s; }; + else + axis.p2c = function (p) { return (t(p) - m) * s; }; + // canvas coordinate to data point + if (!it) + axis.c2p = function (c) { return m + c / s; }; + else + axis.c2p = function (c) { return it(m + c / s); }; + } + + function measureTickLabels(axis) { + + var opts = axis.options, + ticks = axis.ticks || [], + labelWidth = opts.labelWidth || 0, + labelHeight = opts.labelHeight || 0, + maxWidth = labelWidth || (axis.direction == "x" ? Math.floor(surface.width / (ticks.length || 1)) : null), + legacyStyles = axis.direction + "Axis " + axis.direction + axis.n + "Axis", + layer = "flot-" + axis.direction + "-axis flot-" + axis.direction + axis.n + "-axis " + legacyStyles, + font = opts.font || "flot-tick-label tickLabel"; + + for (var i = 0; i < ticks.length; ++i) { + + var t = ticks[i]; + + if (!t.label) + continue; + + var info = surface.getTextInfo(layer, t.label, font, null, maxWidth); + + labelWidth = Math.max(labelWidth, info.width); + labelHeight = Math.max(labelHeight, info.height); + } + + axis.labelWidth = opts.labelWidth || labelWidth; + axis.labelHeight = opts.labelHeight || labelHeight; + } + + function allocateAxisBoxFirstPhase(axis) { + // find the bounding box of the axis by looking at label + // widths/heights and ticks, make room by diminishing the + // plotOffset; this first phase only looks at one + // dimension per axis, the other dimension depends on the + // other axes so will have to wait + + var lw = axis.labelWidth, + lh = axis.labelHeight, + pos = axis.options.position, + isXAxis = axis.direction === "x", + tickLength = axis.options.tickLength, + axisMargin = options.grid.axisMargin, + padding = options.grid.labelMargin, + innermost = true, + outermost = true, + first = true, + found = false; + + // Determine the axis's position in its direction and on its side + + $.each(isXAxis ? xaxes : yaxes, function(i, a) { + if (a && (a.show || a.reserveSpace)) { + if (a === axis) { + found = true; + } else if (a.options.position === pos) { + if (found) { + outermost = false; + } else { + innermost = false; + } + } + if (!found) { + first = false; + } + } + }); + + // The outermost axis on each side has no margin + + if (outermost) { + axisMargin = 0; + } + + // The ticks for the first axis in each direction stretch across + + if (tickLength == null) { + tickLength = first ? "full" : 5; + } + + if (!isNaN(+tickLength)) + padding += +tickLength; + + if (isXAxis) { + lh += padding; + + if (pos == "bottom") { + plotOffset.bottom += lh + axisMargin; + axis.box = { top: surface.height - plotOffset.bottom, height: lh }; + } + else { + axis.box = { top: plotOffset.top + axisMargin, height: lh }; + plotOffset.top += lh + axisMargin; + } + } + else { + lw += padding; + + if (pos == "left") { + axis.box = { left: plotOffset.left + axisMargin, width: lw }; + plotOffset.left += lw + axisMargin; + } + else { + plotOffset.right += lw + axisMargin; + axis.box = { left: surface.width - plotOffset.right, width: lw }; + } + } + + // save for future reference + axis.position = pos; + axis.tickLength = tickLength; + axis.box.padding = padding; + axis.innermost = innermost; + } + + function allocateAxisBoxSecondPhase(axis) { + // now that all axis boxes have been placed in one + // dimension, we can set the remaining dimension coordinates + if (axis.direction == "x") { + axis.box.left = plotOffset.left - axis.labelWidth / 2; + axis.box.width = surface.width - plotOffset.left - plotOffset.right + axis.labelWidth; + } + else { + axis.box.top = plotOffset.top - axis.labelHeight / 2; + axis.box.height = surface.height - plotOffset.bottom - plotOffset.top + axis.labelHeight; + } + } + + function adjustLayoutForThingsStickingOut() { + // possibly adjust plot offset to ensure everything stays + // inside the canvas and isn't clipped off + + var minMargin = options.grid.minBorderMargin, + axis, i; + + // check stuff from the plot (FIXME: this should just read + // a value from the series, otherwise it's impossible to + // customize) + if (minMargin == null) { + minMargin = 0; + for (i = 0; i < series.length; ++i) + minMargin = Math.max(minMargin, 2 * (series[i].points.radius + series[i].points.lineWidth/2)); + } + + var margins = { + left: minMargin, + right: minMargin, + top: minMargin, + bottom: minMargin + }; + + // check axis labels, note we don't check the actual + // labels but instead use the overall width/height to not + // jump as much around with replots + $.each(allAxes(), function (_, axis) { + if (axis.reserveSpace && axis.ticks && axis.ticks.length) { + if (axis.direction === "x") { + margins.left = Math.max(margins.left, axis.labelWidth / 2); + margins.right = Math.max(margins.right, axis.labelWidth / 2); + } else { + margins.bottom = Math.max(margins.bottom, axis.labelHeight / 2); + margins.top = Math.max(margins.top, axis.labelHeight / 2); + } + } + }); + + plotOffset.left = Math.ceil(Math.max(margins.left, plotOffset.left)); + plotOffset.right = Math.ceil(Math.max(margins.right, plotOffset.right)); + plotOffset.top = Math.ceil(Math.max(margins.top, plotOffset.top)); + plotOffset.bottom = Math.ceil(Math.max(margins.bottom, plotOffset.bottom)); + } + + function setupGrid() { + var i, axes = allAxes(), showGrid = options.grid.show; + + // Initialize the plot's offset from the edge of the canvas + + for (var a in plotOffset) { + var margin = options.grid.margin || 0; + plotOffset[a] = typeof margin == "number" ? margin : margin[a] || 0; + } + + executeHooks(hooks.processOffset, [plotOffset]); + + // If the grid is visible, add its border width to the offset + + for (var a in plotOffset) { + if(typeof(options.grid.borderWidth) == "object") { + plotOffset[a] += showGrid ? options.grid.borderWidth[a] : 0; + } + else { + plotOffset[a] += showGrid ? options.grid.borderWidth : 0; + } + } + + $.each(axes, function (_, axis) { + var axisOpts = axis.options; + axis.show = axisOpts.show == null ? axis.used : axisOpts.show; + axis.reserveSpace = axisOpts.reserveSpace == null ? axis.show : axisOpts.reserveSpace; + setRange(axis); + }); + + if (showGrid) { + + var allocatedAxes = $.grep(axes, function (axis) { + return axis.show || axis.reserveSpace; + }); + + $.each(allocatedAxes, function (_, axis) { + // make the ticks + setupTickGeneration(axis); + setTicks(axis); + snapRangeToTicks(axis, axis.ticks); + // find labelWidth/Height for axis + measureTickLabels(axis); + }); + + // with all dimensions calculated, we can compute the + // axis bounding boxes, start from the outside + // (reverse order) + for (i = allocatedAxes.length - 1; i >= 0; --i) + allocateAxisBoxFirstPhase(allocatedAxes[i]); + + // make sure we've got enough space for things that + // might stick out + adjustLayoutForThingsStickingOut(); + + $.each(allocatedAxes, function (_, axis) { + allocateAxisBoxSecondPhase(axis); + }); + } + + plotWidth = surface.width - plotOffset.left - plotOffset.right; + plotHeight = surface.height - plotOffset.bottom - plotOffset.top; + + // now we got the proper plot dimensions, we can compute the scaling + $.each(axes, function (_, axis) { + setTransformationHelpers(axis); + }); + + if (showGrid) { + drawAxisLabels(); + } + + insertLegend(); + } + + function setRange(axis) { + var opts = axis.options, + min = +(opts.min != null ? opts.min : axis.datamin), + max = +(opts.max != null ? opts.max : axis.datamax), + delta = max - min; + + if (delta == 0.0) { + // degenerate case + var widen = max == 0 ? 1 : 0.01; + + if (opts.min == null) + min -= widen; + // always widen max if we couldn't widen min to ensure we + // don't fall into min == max which doesn't work + if (opts.max == null || opts.min != null) + max += widen; + } + else { + // consider autoscaling + var margin = opts.autoscaleMargin; + if (margin != null) { + if (opts.min == null) { + min -= delta * margin; + // make sure we don't go below zero if all values + // are positive + if (min < 0 && axis.datamin != null && axis.datamin >= 0) + min = 0; + } + if (opts.max == null) { + max += delta * margin; + if (max > 0 && axis.datamax != null && axis.datamax <= 0) + max = 0; + } + } + } + axis.min = min; + axis.max = max; + } + + function setupTickGeneration(axis) { + var opts = axis.options; + + // estimate number of ticks + var noTicks; + if (typeof opts.ticks == "number" && opts.ticks > 0) + noTicks = opts.ticks; + else + // heuristic based on the model a*sqrt(x) fitted to + // some data points that seemed reasonable + noTicks = 0.3 * Math.sqrt(axis.direction == "x" ? surface.width : surface.height); + + var delta = (axis.max - axis.min) / noTicks, + dec = -Math.floor(Math.log(delta) / Math.LN10), + maxDec = opts.tickDecimals; + + if (maxDec != null && dec > maxDec) { + dec = maxDec; + } + + var magn = Math.pow(10, -dec), + norm = delta / magn, // norm is between 1.0 and 10.0 + size; + + if (norm < 1.5) { + size = 1; + } else if (norm < 3) { + size = 2; + // special case for 2.5, requires an extra decimal + if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) { + size = 2.5; + ++dec; + } + } else if (norm < 7.5) { + size = 5; + } else { + size = 10; + } + + size *= magn; + + if (opts.minTickSize != null && size < opts.minTickSize) { + size = opts.minTickSize; + } + + axis.delta = delta; + axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec); + axis.tickSize = opts.tickSize || size; + + // Time mode was moved to a plug-in in 0.8, and since so many people use it + // we'll add an especially friendly reminder to make sure they included it. + + if (opts.mode == "time" && !axis.tickGenerator) { + throw new Error("Time mode requires the flot.time plugin."); + } + + // Flot supports base-10 axes; any other mode else is handled by a plug-in, + // like flot.time.js. + + if (!axis.tickGenerator) { + + axis.tickGenerator = function (axis) { + + var ticks = [], + start = floorInBase(axis.min, axis.tickSize), + i = 0, + v = Number.NaN, + prev; + + do { + prev = v; + v = start + i * axis.tickSize; + ticks.push(v); + ++i; + } while (v < axis.max && v != prev); + return ticks; + }; + + axis.tickFormatter = function (value, axis) { + + var factor = axis.tickDecimals ? Math.pow(10, axis.tickDecimals) : 1; + var formatted = "" + Math.round(value * factor) / factor; + + // If tickDecimals was specified, ensure that we have exactly that + // much precision; otherwise default to the value's own precision. + + if (axis.tickDecimals != null) { + var decimal = formatted.indexOf("."); + var precision = decimal == -1 ? 0 : formatted.length - decimal - 1; + if (precision < axis.tickDecimals) { + return (precision ? formatted : formatted + ".") + ("" + factor).substr(1, axis.tickDecimals - precision); + } + } + + return formatted; + }; + } + + if ($.isFunction(opts.tickFormatter)) + axis.tickFormatter = function (v, axis) { return "" + opts.tickFormatter(v, axis); }; + + if (opts.alignTicksWithAxis != null) { + var otherAxis = (axis.direction == "x" ? xaxes : yaxes)[opts.alignTicksWithAxis - 1]; + if (otherAxis && otherAxis.used && otherAxis != axis) { + // consider snapping min/max to outermost nice ticks + var niceTicks = axis.tickGenerator(axis); + if (niceTicks.length > 0) { + if (opts.min == null) + axis.min = Math.min(axis.min, niceTicks[0]); + if (opts.max == null && niceTicks.length > 1) + axis.max = Math.max(axis.max, niceTicks[niceTicks.length - 1]); + } + + axis.tickGenerator = function (axis) { + // copy ticks, scaled to this axis + var ticks = [], v, i; + for (i = 0; i < otherAxis.ticks.length; ++i) { + v = (otherAxis.ticks[i].v - otherAxis.min) / (otherAxis.max - otherAxis.min); + v = axis.min + v * (axis.max - axis.min); + ticks.push(v); + } + return ticks; + }; + + // we might need an extra decimal since forced + // ticks don't necessarily fit naturally + if (!axis.mode && opts.tickDecimals == null) { + var extraDec = Math.max(0, -Math.floor(Math.log(axis.delta) / Math.LN10) + 1), + ts = axis.tickGenerator(axis); + + // only proceed if the tick interval rounded + // with an extra decimal doesn't give us a + // zero at end + if (!(ts.length > 1 && /\..*0$/.test((ts[1] - ts[0]).toFixed(extraDec)))) + axis.tickDecimals = extraDec; + } + } + } + } + + function setTicks(axis) { + var oticks = axis.options.ticks, ticks = []; + if (oticks == null || (typeof oticks == "number" && oticks > 0)) + ticks = axis.tickGenerator(axis); + else if (oticks) { + if ($.isFunction(oticks)) + // generate the ticks + ticks = oticks(axis); + else + ticks = oticks; + } + + // clean up/labelify the supplied ticks, copy them over + var i, v; + axis.ticks = []; + for (i = 0; i < ticks.length; ++i) { + var label = null; + var t = ticks[i]; + if (typeof t == "object") { + v = +t[0]; + if (t.length > 1) + label = t[1]; + } + else + v = +t; + if (label == null) + label = axis.tickFormatter(v, axis); + if (!isNaN(v)) + axis.ticks.push({ v: v, label: label }); + } + } + + function snapRangeToTicks(axis, ticks) { + if (axis.options.autoscaleMargin && ticks.length > 0) { + // snap to ticks + if (axis.options.min == null) + axis.min = Math.min(axis.min, ticks[0].v); + if (axis.options.max == null && ticks.length > 1) + axis.max = Math.max(axis.max, ticks[ticks.length - 1].v); + } + } + + function draw() { + + surface.clear(); + + executeHooks(hooks.drawBackground, [ctx]); + + var grid = options.grid; + + // draw background, if any + if (grid.show && grid.backgroundColor) + drawBackground(); + + if (grid.show && !grid.aboveData) { + drawGrid(); + } + + for (var i = 0; i < series.length; ++i) { + executeHooks(hooks.drawSeries, [ctx, series[i]]); + drawSeries(series[i]); + } + + executeHooks(hooks.draw, [ctx]); + + if (grid.show && grid.aboveData) { + drawGrid(); + } + + surface.render(); + + // A draw implies that either the axes or data have changed, so we + // should probably update the overlay highlights as well. + + triggerRedrawOverlay(); + } + + function extractRange(ranges, coord) { + var axis, from, to, key, axes = allAxes(); + + for (var i = 0; i < axes.length; ++i) { + axis = axes[i]; + if (axis.direction == coord) { + key = coord + axis.n + "axis"; + if (!ranges[key] && axis.n == 1) + key = coord + "axis"; // support x1axis as xaxis + if (ranges[key]) { + from = ranges[key].from; + to = ranges[key].to; + break; + } + } + } + + // backwards-compat stuff - to be removed in future + if (!ranges[key]) { + axis = coord == "x" ? xaxes[0] : yaxes[0]; + from = ranges[coord + "1"]; + to = ranges[coord + "2"]; + } + + // auto-reverse as an added bonus + if (from != null && to != null && from > to) { + var tmp = from; + from = to; + to = tmp; + } + + return { from: from, to: to, axis: axis }; + } + + function drawBackground() { + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, "rgba(255, 255, 255, 0)"); + ctx.fillRect(0, 0, plotWidth, plotHeight); + ctx.restore(); + } + + function drawGrid() { + var i, axes, bw, bc; + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + // draw markings + var markings = options.grid.markings; + if (markings) { + if ($.isFunction(markings)) { + axes = plot.getAxes(); + // xmin etc. is backwards compatibility, to be + // removed in the future + axes.xmin = axes.xaxis.min; + axes.xmax = axes.xaxis.max; + axes.ymin = axes.yaxis.min; + axes.ymax = axes.yaxis.max; + + markings = markings(axes); + } + + for (i = 0; i < markings.length; ++i) { + var m = markings[i], + xrange = extractRange(m, "x"), + yrange = extractRange(m, "y"); + + // fill in missing + if (xrange.from == null) + xrange.from = xrange.axis.min; + if (xrange.to == null) + xrange.to = xrange.axis.max; + if (yrange.from == null) + yrange.from = yrange.axis.min; + if (yrange.to == null) + yrange.to = yrange.axis.max; + + // clip + if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max || + yrange.to < yrange.axis.min || yrange.from > yrange.axis.max) + continue; + + xrange.from = Math.max(xrange.from, xrange.axis.min); + xrange.to = Math.min(xrange.to, xrange.axis.max); + yrange.from = Math.max(yrange.from, yrange.axis.min); + yrange.to = Math.min(yrange.to, yrange.axis.max); + + var xequal = xrange.from === xrange.to, + yequal = yrange.from === yrange.to; + + if (xequal && yequal) { + continue; + } + + // then draw + xrange.from = Math.floor(xrange.axis.p2c(xrange.from)); + xrange.to = Math.floor(xrange.axis.p2c(xrange.to)); + yrange.from = Math.floor(yrange.axis.p2c(yrange.from)); + yrange.to = Math.floor(yrange.axis.p2c(yrange.to)); + + if (xequal || yequal) { + var lineWidth = m.lineWidth || options.grid.markingsLineWidth, + subPixel = lineWidth % 2 ? 0.5 : 0; + ctx.beginPath(); + ctx.strokeStyle = m.color || options.grid.markingsColor; + ctx.lineWidth = lineWidth; + if (xequal) { + ctx.moveTo(xrange.to + subPixel, yrange.from); + ctx.lineTo(xrange.to + subPixel, yrange.to); + } else { + ctx.moveTo(xrange.from, yrange.to + subPixel); + ctx.lineTo(xrange.to, yrange.to + subPixel); + } + ctx.stroke(); + } else { + ctx.fillStyle = m.color || options.grid.markingsColor; + ctx.fillRect(xrange.from, yrange.to, + xrange.to - xrange.from, + yrange.from - yrange.to); + } + } + } + + // draw the ticks + axes = allAxes(); + bw = options.grid.borderWidth; + + for (var j = 0; j < axes.length; ++j) { + var axis = axes[j], box = axis.box, + t = axis.tickLength, x, y, xoff, yoff; + if (!axis.show || axis.ticks.length == 0) + continue; + + ctx.lineWidth = 1; + + // find the edges + if (axis.direction == "x") { + x = 0; + if (t == "full") + y = (axis.position == "top" ? 0 : plotHeight); + else + y = box.top - plotOffset.top + (axis.position == "top" ? box.height : 0); + } + else { + y = 0; + if (t == "full") + x = (axis.position == "left" ? 0 : plotWidth); + else + x = box.left - plotOffset.left + (axis.position == "left" ? box.width : 0); + } + + // draw tick bar + if (!axis.innermost) { + ctx.strokeStyle = axis.options.color; + ctx.beginPath(); + xoff = yoff = 0; + if (axis.direction == "x") + xoff = plotWidth + 1; + else + yoff = plotHeight + 1; + + if (ctx.lineWidth == 1) { + if (axis.direction == "x") { + y = Math.floor(y) + 0.5; + } else { + x = Math.floor(x) + 0.5; + } + } + + ctx.moveTo(x, y); + ctx.lineTo(x + xoff, y + yoff); + ctx.stroke(); + } + + // draw ticks + + ctx.strokeStyle = axis.options.tickColor; + + ctx.beginPath(); + for (i = 0; i < axis.ticks.length; ++i) { + var v = axis.ticks[i].v; + + xoff = yoff = 0; + + if (isNaN(v) || v < axis.min || v > axis.max + // skip those lying on the axes if we got a border + || (t == "full" + && ((typeof bw == "object" && bw[axis.position] > 0) || bw > 0) + && (v == axis.min || v == axis.max))) + continue; + + if (axis.direction == "x") { + x = axis.p2c(v); + yoff = t == "full" ? -plotHeight : t; + + if (axis.position == "top") + yoff = -yoff; + } + else { + y = axis.p2c(v); + xoff = t == "full" ? -plotWidth : t; + + if (axis.position == "left") + xoff = -xoff; + } + + if (ctx.lineWidth == 1) { + if (axis.direction == "x") + x = Math.floor(x) + 0.5; + else + y = Math.floor(y) + 0.5; + } + + ctx.moveTo(x, y); + ctx.lineTo(x + xoff, y + yoff); + } + + ctx.stroke(); + } + + + // draw border + if (bw) { + // If either borderWidth or borderColor is an object, then draw the border + // line by line instead of as one rectangle + bc = options.grid.borderColor; + if(typeof bw == "object" || typeof bc == "object") { + if (typeof bw !== "object") { + bw = {top: bw, right: bw, bottom: bw, left: bw}; + } + if (typeof bc !== "object") { + bc = {top: bc, right: bc, bottom: bc, left: bc}; + } + + if (bw.top > 0) { + ctx.strokeStyle = bc.top; + ctx.lineWidth = bw.top; + ctx.beginPath(); + ctx.moveTo(0 - bw.left, 0 - bw.top/2); + ctx.lineTo(plotWidth, 0 - bw.top/2); + ctx.stroke(); + } + + if (bw.right > 0) { + ctx.strokeStyle = bc.right; + ctx.lineWidth = bw.right; + ctx.beginPath(); + ctx.moveTo(plotWidth + bw.right / 2, 0 - bw.top); + ctx.lineTo(plotWidth + bw.right / 2, plotHeight); + ctx.stroke(); + } + + if (bw.bottom > 0) { + ctx.strokeStyle = bc.bottom; + ctx.lineWidth = bw.bottom; + ctx.beginPath(); + ctx.moveTo(plotWidth + bw.right, plotHeight + bw.bottom / 2); + ctx.lineTo(0, plotHeight + bw.bottom / 2); + ctx.stroke(); + } + + if (bw.left > 0) { + ctx.strokeStyle = bc.left; + ctx.lineWidth = bw.left; + ctx.beginPath(); + ctx.moveTo(0 - bw.left/2, plotHeight + bw.bottom); + ctx.lineTo(0- bw.left/2, 0); + ctx.stroke(); + } + } + else { + ctx.lineWidth = bw; + ctx.strokeStyle = options.grid.borderColor; + ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw); + } + } + + ctx.restore(); + } + + function drawAxisLabels() { + + $.each(allAxes(), function (_, axis) { + var box = axis.box, + legacyStyles = axis.direction + "Axis " + axis.direction + axis.n + "Axis", + layer = "flot-" + axis.direction + "-axis flot-" + axis.direction + axis.n + "-axis " + legacyStyles, + font = axis.options.font || "flot-tick-label tickLabel", + tick, x, y, halign, valign; + + // Remove text before checking for axis.show and ticks.length; + // otherwise plugins, like flot-tickrotor, that draw their own + // tick labels will end up with both theirs and the defaults. + + surface.removeText(layer); + + if (!axis.show || axis.ticks.length == 0) + return; + + for (var i = 0; i < axis.ticks.length; ++i) { + + tick = axis.ticks[i]; + if (!tick.label || tick.v < axis.min || tick.v > axis.max) + continue; + + if (axis.direction == "x") { + halign = "center"; + x = plotOffset.left + axis.p2c(tick.v); + if (axis.position == "bottom") { + y = box.top + box.padding; + } else { + y = box.top + box.height - box.padding; + valign = "bottom"; + } + } else { + valign = "middle"; + y = plotOffset.top + axis.p2c(tick.v); + if (axis.position == "left") { + x = box.left + box.width - box.padding; + halign = "right"; + } else { + x = box.left + box.padding; + } + } + + surface.addText(layer, x, y, tick.label, font, null, null, halign, valign); + } + }); + } + + function drawSeries(series) { + if (series.lines.show) + drawSeriesLines(series); + if (series.bars.show) + drawSeriesBars(series); + if (series.points.show) + drawSeriesPoints(series); + } + + function drawSeriesLines(series) { + function plotLine(datapoints, xoffset, yoffset, axisx, axisy) { + var points = datapoints.points, + ps = datapoints.pointsize, + prevx = null, prevy = null; + + ctx.beginPath(); + for (var i = ps; i < points.length; i += ps) { + var x1 = points[i - ps], y1 = points[i - ps + 1], + x2 = points[i], y2 = points[i + 1]; + + if (x1 == null || x2 == null) + continue; + + // clip with ymin + if (y1 <= y2 && y1 < axisy.min) { + if (y2 < axisy.min) + continue; // line segment is outside + // compute new intersection point + x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.min; + } + else if (y2 <= y1 && y2 < axisy.min) { + if (y1 < axisy.min) + continue; + x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.min; + } + + // clip with ymax + if (y1 >= y2 && y1 > axisy.max) { + if (y2 > axisy.max) + continue; + x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.max; + } + else if (y2 >= y1 && y2 > axisy.max) { + if (y1 > axisy.max) + continue; + x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.max; + } + + // clip with xmin + if (x1 <= x2 && x1 < axisx.min) { + if (x2 < axisx.min) + continue; + y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.min; + } + else if (x2 <= x1 && x2 < axisx.min) { + if (x1 < axisx.min) + continue; + y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.min; + } + + // clip with xmax + if (x1 >= x2 && x1 > axisx.max) { + if (x2 > axisx.max) + continue; + y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.max; + } + else if (x2 >= x1 && x2 > axisx.max) { + if (x1 > axisx.max) + continue; + y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.max; + } + + if (x1 != prevx || y1 != prevy) + ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset); + + prevx = x2; + prevy = y2; + ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset); + } + ctx.stroke(); + } + + function plotLineArea(datapoints, axisx, axisy) { + var points = datapoints.points, + ps = datapoints.pointsize, + bottom = Math.min(Math.max(0, axisy.min), axisy.max), + i = 0, top, areaOpen = false, + ypos = 1, segmentStart = 0, segmentEnd = 0; + + // we process each segment in two turns, first forward + // direction to sketch out top, then once we hit the + // end we go backwards to sketch the bottom + while (true) { + if (ps > 0 && i > points.length + ps) + break; + + i += ps; // ps is negative if going backwards + + var x1 = points[i - ps], + y1 = points[i - ps + ypos], + x2 = points[i], y2 = points[i + ypos]; + + if (areaOpen) { + if (ps > 0 && x1 != null && x2 == null) { + // at turning point + segmentEnd = i; + ps = -ps; + ypos = 2; + continue; + } + + if (ps < 0 && i == segmentStart + ps) { + // done with the reverse sweep + ctx.fill(); + areaOpen = false; + ps = -ps; + ypos = 1; + i = segmentStart = segmentEnd + ps; + continue; + } + } + + if (x1 == null || x2 == null) + continue; + + // clip x values + + // clip with xmin + if (x1 <= x2 && x1 < axisx.min) { + if (x2 < axisx.min) + continue; + y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.min; + } + else if (x2 <= x1 && x2 < axisx.min) { + if (x1 < axisx.min) + continue; + y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.min; + } + + // clip with xmax + if (x1 >= x2 && x1 > axisx.max) { + if (x2 > axisx.max) + continue; + y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.max; + } + else if (x2 >= x1 && x2 > axisx.max) { + if (x1 > axisx.max) + continue; + y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.max; + } + + if (!areaOpen) { + // open area + ctx.beginPath(); + ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom)); + areaOpen = true; + } + + // now first check the case where both is outside + if (y1 >= axisy.max && y2 >= axisy.max) { + ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max)); + continue; + } + else if (y1 <= axisy.min && y2 <= axisy.min) { + ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min)); + continue; + } + + // else it's a bit more complicated, there might + // be a flat maxed out rectangle first, then a + // triangular cutout or reverse; to find these + // keep track of the current x values + var x1old = x1, x2old = x2; + + // clip the y values, without shortcutting, we + // go through all cases in turn + + // clip with ymin + if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) { + x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.min; + } + else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) { + x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.min; + } + + // clip with ymax + if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) { + x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.max; + } + else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) { + x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.max; + } + + // if the x value was changed we got a rectangle + // to fill + if (x1 != x1old) { + ctx.lineTo(axisx.p2c(x1old), axisy.p2c(y1)); + // it goes to (x1, y1), but we fill that below + } + + // fill triangular section, this sometimes result + // in redundant points if (x1, y1) hasn't changed + // from previous line to, but we just ignore that + ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); + + // fill the other rectangle if it's there + if (x2 != x2old) { + ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); + ctx.lineTo(axisx.p2c(x2old), axisy.p2c(y2)); + } + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + ctx.lineJoin = "round"; + + var lw = series.lines.lineWidth, + sw = series.shadowSize; + // FIXME: consider another form of shadow when filling is turned on + if (lw > 0 && sw > 0) { + // draw shadow as a thick and thin line with transparency + ctx.lineWidth = sw; + ctx.strokeStyle = "rgba(0,0,0,0.1)"; + // position shadow at angle from the mid of line + var angle = Math.PI/18; + plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis); + ctx.lineWidth = sw/2; + plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis); + } + + ctx.lineWidth = lw; + ctx.strokeStyle = series.color; + var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight); + if (fillStyle) { + ctx.fillStyle = fillStyle; + plotLineArea(series.datapoints, series.xaxis, series.yaxis); + } + + if (lw > 0) + plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis); + ctx.restore(); + } + + function drawSeriesPoints(series) { + function plotPoints(datapoints, radius, fillStyle, offset, shadow, axisx, axisy, symbol) { + var points = datapoints.points, ps = datapoints.pointsize; + + for (var i = 0; i < points.length; i += ps) { + var x = points[i], y = points[i + 1]; + if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) + continue; + + ctx.beginPath(); + x = axisx.p2c(x); + y = axisy.p2c(y) + offset; + if (symbol == "circle") + ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false); + else + symbol(ctx, x, y, radius, shadow); + ctx.closePath(); + + if (fillStyle) { + ctx.fillStyle = fillStyle; + ctx.fill(); + } + ctx.stroke(); + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + var lw = series.points.lineWidth, + sw = series.shadowSize, + radius = series.points.radius, + symbol = series.points.symbol; + + // If the user sets the line width to 0, we change it to a very + // small value. A line width of 0 seems to force the default of 1. + // Doing the conditional here allows the shadow setting to still be + // optional even with a lineWidth of 0. + + if( lw == 0 ) + lw = 0.0001; + + if (lw > 0 && sw > 0) { + // draw shadow in two steps + var w = sw / 2; + ctx.lineWidth = w; + ctx.strokeStyle = "rgba(0,0,0,0.1)"; + plotPoints(series.datapoints, radius, null, w + w/2, true, + series.xaxis, series.yaxis, symbol); + + ctx.strokeStyle = "rgba(0,0,0,0.2)"; + plotPoints(series.datapoints, radius, null, w/2, true, + series.xaxis, series.yaxis, symbol); + } + + ctx.lineWidth = lw; + ctx.strokeStyle = series.color; + plotPoints(series.datapoints, radius, + getFillStyle(series.points, series.color), 0, false, + series.xaxis, series.yaxis, symbol); + ctx.restore(); + } + + function drawBar(x, y, b, barLeft, barRight, fillStyleCallback, axisx, axisy, c, horizontal, lineWidth) { + var left, right, bottom, top, + drawLeft, drawRight, drawTop, drawBottom, + tmp; + + // in horizontal mode, we start the bar from the left + // instead of from the bottom so it appears to be + // horizontal rather than vertical + if (horizontal) { + drawBottom = drawRight = drawTop = true; + drawLeft = false; + left = b; + right = x; + top = y + barLeft; + bottom = y + barRight; + + // account for negative bars + if (right < left) { + tmp = right; + right = left; + left = tmp; + drawLeft = true; + drawRight = false; + } + } + else { + drawLeft = drawRight = drawTop = true; + drawBottom = false; + left = x + barLeft; + right = x + barRight; + bottom = b; + top = y; + + // account for negative bars + if (top < bottom) { + tmp = top; + top = bottom; + bottom = tmp; + drawBottom = true; + drawTop = false; + } + } + + // clip + if (right < axisx.min || left > axisx.max || + top < axisy.min || bottom > axisy.max) + return; + + if (left < axisx.min) { + left = axisx.min; + drawLeft = false; + } + + if (right > axisx.max) { + right = axisx.max; + drawRight = false; + } + + if (bottom < axisy.min) { + bottom = axisy.min; + drawBottom = false; + } + + if (top > axisy.max) { + top = axisy.max; + drawTop = false; + } + + left = axisx.p2c(left); + bottom = axisy.p2c(bottom); + right = axisx.p2c(right); + top = axisy.p2c(top); + + // fill the bar + if (fillStyleCallback) { + c.fillStyle = fillStyleCallback(bottom, top); + c.fillRect(left, top, right - left, bottom - top) + } + + // draw outline + if (lineWidth > 0 && (drawLeft || drawRight || drawTop || drawBottom)) { + c.beginPath(); + + // FIXME: inline moveTo is buggy with excanvas + c.moveTo(left, bottom); + if (drawLeft) + c.lineTo(left, top); + else + c.moveTo(left, top); + if (drawTop) + c.lineTo(right, top); + else + c.moveTo(right, top); + if (drawRight) + c.lineTo(right, bottom); + else + c.moveTo(right, bottom); + if (drawBottom) + c.lineTo(left, bottom); + else + c.moveTo(left, bottom); + c.stroke(); + } + } + + function drawSeriesBars(series) { + function plotBars(datapoints, barLeft, barRight, fillStyleCallback, axisx, axisy) { + var points = datapoints.points, ps = datapoints.pointsize; + + for (var i = 0; i < points.length; i += ps) { + if (points[i] == null) + continue; + drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal, series.bars.lineWidth); + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + // FIXME: figure out a way to add shadows (for instance along the right edge) + ctx.lineWidth = series.bars.lineWidth; + ctx.strokeStyle = series.color; + + var barLeft; + + switch (series.bars.align) { + case "left": + barLeft = 0; + break; + case "right": + barLeft = -series.bars.barWidth; + break; + default: + barLeft = -series.bars.barWidth / 2; + } + + var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null; + plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, fillStyleCallback, series.xaxis, series.yaxis); + ctx.restore(); + } + + function getFillStyle(filloptions, seriesColor, bottom, top) { + var fill = filloptions.fill; + if (!fill) + return null; + + if (filloptions.fillColor) + return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor); + + var c = $.color.parse(seriesColor); + c.a = typeof fill == "number" ? fill : 0.4; + c.normalize(); + return c.toString(); + } + + function insertLegend() { + + if (options.legend.container != null) { + $(options.legend.container).html(""); + } else { + placeholder.find(".legend").remove(); + } + + if (!options.legend.show) { + return; + } + + var fragments = [], entries = [], rowStarted = false, + lf = options.legend.labelFormatter, s, label; + + // Build a list of legend entries, with each having a label and a color + + for (var i = 0; i < series.length; ++i) { + s = series[i]; + if (s.label) { + label = lf ? lf(s.label, s) : s.label; + if (label) { + entries.push({ + label: label, + color: s.color + }); + } + } + } + + // Sort the legend using either the default or a custom comparator + + if (options.legend.sorted) { + if ($.isFunction(options.legend.sorted)) { + entries.sort(options.legend.sorted); + } else if (options.legend.sorted == "reverse") { + entries.reverse(); + } else { + var ascending = options.legend.sorted != "descending"; + entries.sort(function(a, b) { + return a.label == b.label ? 0 : ( + (a.label < b.label) != ascending ? 1 : -1 // Logical XOR + ); + }); + } + } + + // Generate markup for the list of entries, in their final order + + for (var i = 0; i < entries.length; ++i) { + + var entry = entries[i]; + + if (i % options.legend.noColumns == 0) { + if (rowStarted) + fragments.push(''); + fragments.push(''); + rowStarted = true; + } + + fragments.push( + '
    ' + + '' + entry.label + '' + ); + } + + if (rowStarted) + fragments.push(''); + + if (fragments.length == 0) + return; + + var table = '' + fragments.join("") + '
    '; + if (options.legend.container != null) + $(options.legend.container).html(table); + else { + var pos = "", + p = options.legend.position, + m = options.legend.margin; + if (m[0] == null) + m = [m, m]; + if (p.charAt(0) == "n") + pos += 'top:' + (m[1] + plotOffset.top) + 'px;'; + else if (p.charAt(0) == "s") + pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;'; + if (p.charAt(1) == "e") + pos += 'right:' + (m[0] + plotOffset.right) + 'px;'; + else if (p.charAt(1) == "w") + pos += 'left:' + (m[0] + plotOffset.left) + 'px;'; + var legend = $('
    ' + table.replace('style="', 'style="position:absolute;' + pos +';') + '
    ').appendTo(placeholder); + if (options.legend.backgroundOpacity != 0.0) { + // put in the transparent background + // separately to avoid blended labels and + // label boxes + var c = options.legend.backgroundColor; + if (c == null) { + c = options.grid.backgroundColor; + if (c && typeof c == "string") + c = $.color.parse(c); + else + c = $.color.extract(legend, 'background-color'); + c.a = 1; + c = c.toString(); + } + var div = legend.children(); + $('
    ').prependTo(legend).css('opacity', options.legend.backgroundOpacity); + } + } + } + + + // interactive features + + var highlights = [], + redrawTimeout = null; + + // returns the data item the mouse is over, or null if none is found + function findNearbyItem(mouseX, mouseY, seriesFilter) { + var maxDistance = options.grid.mouseActiveRadius, + smallestDistance = maxDistance * maxDistance + 1, + item = null, foundPoint = false, i, j, ps; + + for (i = series.length - 1; i >= 0; --i) { + if (!seriesFilter(series[i])) + continue; + + var s = series[i], + axisx = s.xaxis, + axisy = s.yaxis, + points = s.datapoints.points, + mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster + my = axisy.c2p(mouseY), + maxx = maxDistance / axisx.scale, + maxy = maxDistance / axisy.scale; + + ps = s.datapoints.pointsize; + // with inverse transforms, we can't use the maxx/maxy + // optimization, sadly + if (axisx.options.inverseTransform) + maxx = Number.MAX_VALUE; + if (axisy.options.inverseTransform) + maxy = Number.MAX_VALUE; + + if (s.lines.show || s.points.show) { + for (j = 0; j < points.length; j += ps) { + var x = points[j], y = points[j + 1]; + if (x == null) + continue; + + // For points and lines, the cursor must be within a + // certain distance to the data point + if (x - mx > maxx || x - mx < -maxx || + y - my > maxy || y - my < -maxy) + continue; + + // We have to calculate distances in pixels, not in + // data units, because the scales of the axes may be different + var dx = Math.abs(axisx.p2c(x) - mouseX), + dy = Math.abs(axisy.p2c(y) - mouseY), + dist = dx * dx + dy * dy; // we save the sqrt + + // use <= to ensure last point takes precedence + // (last generally means on top of) + if (dist < smallestDistance) { + smallestDistance = dist; + item = [i, j / ps]; + } + } + } + + if (s.bars.show && !item) { // no other point can be nearby + + var barLeft, barRight; + + switch (s.bars.align) { + case "left": + barLeft = 0; + break; + case "right": + barLeft = -s.bars.barWidth; + break; + default: + barLeft = -s.bars.barWidth / 2; + } + + barRight = barLeft + s.bars.barWidth; + + for (j = 0; j < points.length; j += ps) { + var x = points[j], y = points[j + 1], b = points[j + 2]; + if (x == null) + continue; + + // for a bar graph, the cursor must be inside the bar + if (series[i].bars.horizontal ? + (mx <= Math.max(b, x) && mx >= Math.min(b, x) && + my >= y + barLeft && my <= y + barRight) : + (mx >= x + barLeft && mx <= x + barRight && + my >= Math.min(b, y) && my <= Math.max(b, y))) + item = [i, j / ps]; + } + } + } + + if (item) { + i = item[0]; + j = item[1]; + ps = series[i].datapoints.pointsize; + + return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps), + dataIndex: j, + series: series[i], + seriesIndex: i }; + } + + return null; + } + + function onMouseMove(e) { + if (options.grid.hoverable) + triggerClickHoverEvent("plothover", e, + function (s) { return s["hoverable"] != false; }); + } + + function onMouseLeave(e) { + if (options.grid.hoverable) + triggerClickHoverEvent("plothover", e, + function (s) { return false; }); + } + + function onClick(e) { + triggerClickHoverEvent("plotclick", e, + function (s) { return s["clickable"] != false; }); + } + + // trigger click or hover event (they send the same parameters + // so we share their code) + function triggerClickHoverEvent(eventname, event, seriesFilter) { + var offset = eventHolder.offset(), + canvasX = event.pageX - offset.left - plotOffset.left, + canvasY = event.pageY - offset.top - plotOffset.top, + pos = canvasToAxisCoords({ left: canvasX, top: canvasY }); + + pos.pageX = event.pageX; + pos.pageY = event.pageY; + + var item = findNearbyItem(canvasX, canvasY, seriesFilter); + + if (item) { + // fill in mouse pos for any listeners out there + item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left, 10); + item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top, 10); + } + + if (options.grid.autoHighlight) { + // clear auto-highlights + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.auto == eventname && + !(item && h.series == item.series && + h.point[0] == item.datapoint[0] && + h.point[1] == item.datapoint[1])) + unhighlight(h.series, h.point); + } + + if (item) + highlight(item.series, item.datapoint, eventname); + } + + placeholder.trigger(eventname, [ pos, item ]); + } + + function triggerRedrawOverlay() { + var t = options.interaction.redrawOverlayInterval; + if (t == -1) { // skip event queue + drawOverlay(); + return; + } + + if (!redrawTimeout) + redrawTimeout = setTimeout(drawOverlay, t); + } + + function drawOverlay() { + redrawTimeout = null; + + // draw highlights + octx.save(); + overlay.clear(); + octx.translate(plotOffset.left, plotOffset.top); + + var i, hi; + for (i = 0; i < highlights.length; ++i) { + hi = highlights[i]; + + if (hi.series.bars.show) + drawBarHighlight(hi.series, hi.point); + else + drawPointHighlight(hi.series, hi.point); + } + octx.restore(); + + executeHooks(hooks.drawOverlay, [octx]); + } + + function highlight(s, point, auto) { + if (typeof s == "number") + s = series[s]; + + if (typeof point == "number") { + var ps = s.datapoints.pointsize; + point = s.datapoints.points.slice(ps * point, ps * (point + 1)); + } + + var i = indexOfHighlight(s, point); + if (i == -1) { + highlights.push({ series: s, point: point, auto: auto }); + + triggerRedrawOverlay(); + } + else if (!auto) + highlights[i].auto = false; + } + + function unhighlight(s, point) { + if (s == null && point == null) { + highlights = []; + triggerRedrawOverlay(); + return; + } + + if (typeof s == "number") + s = series[s]; + + if (typeof point == "number") { + var ps = s.datapoints.pointsize; + point = s.datapoints.points.slice(ps * point, ps * (point + 1)); + } + + var i = indexOfHighlight(s, point); + if (i != -1) { + highlights.splice(i, 1); + + triggerRedrawOverlay(); + } + } + + function indexOfHighlight(s, p) { + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.series == s && h.point[0] == p[0] + && h.point[1] == p[1]) + return i; + } + return -1; + } + + function drawPointHighlight(series, point) { + var x = point[0], y = point[1], + axisx = series.xaxis, axisy = series.yaxis, + highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(); + + if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) + return; + + var pointRadius = series.points.radius + series.points.lineWidth / 2; + octx.lineWidth = pointRadius; + octx.strokeStyle = highlightColor; + var radius = 1.5 * pointRadius; + x = axisx.p2c(x); + y = axisy.p2c(y); + + octx.beginPath(); + if (series.points.symbol == "circle") + octx.arc(x, y, radius, 0, 2 * Math.PI, false); + else + series.points.symbol(octx, x, y, radius, false); + octx.closePath(); + octx.stroke(); + } + + function drawBarHighlight(series, point) { + var highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(), + fillStyle = highlightColor, + barLeft; + + switch (series.bars.align) { + case "left": + barLeft = 0; + break; + case "right": + barLeft = -series.bars.barWidth; + break; + default: + barLeft = -series.bars.barWidth / 2; + } + + octx.lineWidth = series.bars.lineWidth; + octx.strokeStyle = highlightColor; + + drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth, + function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth); + } + + function getColorOrGradient(spec, bottom, top, defaultColor) { + if (typeof spec == "string") + return spec; + else { + // assume this is a gradient spec; IE currently only + // supports a simple vertical gradient properly, so that's + // what we support too + var gradient = ctx.createLinearGradient(0, top, 0, bottom); + + for (var i = 0, l = spec.colors.length; i < l; ++i) { + var c = spec.colors[i]; + if (typeof c != "string") { + var co = $.color.parse(defaultColor); + if (c.brightness != null) + co = co.scale('rgb', c.brightness); + if (c.opacity != null) + co.a *= c.opacity; + c = co.toString(); + } + gradient.addColorStop(i / (l - 1), c); + } + + return gradient; + } + } + } + + // Add the plot function to the top level of the jQuery object + + $.plot = function(placeholder, data, options) { + //var t0 = new Date(); + var plot = new Plot($(placeholder), data, options, $.plot.plugins); + //(window.console ? console.log : alert)("time used (msecs): " + ((new Date()).getTime() - t0.getTime())); + return plot; + }; + + $.plot.version = "0.8.3"; + + $.plot.plugins = []; + + // Also add the plot function as a chainable property + + $.fn.plot = function(data, options) { + return this.each(function() { + $.plot(this, data, options); + }); + }; + + // round to nearby lower multiple of base + function floorInBase(n, base) { + return base * Math.floor(n / base); + } + +})(jQuery); diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/js/jquery.flot.tooltip.js b/SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/js/jquery.flot.tooltip.js new file mode 100644 index 0000000..d2365b1 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/js/jquery.flot.tooltip.js @@ -0,0 +1,517 @@ +/* + * jquery.flot.tooltip + * + * description: easy-to-use tooltips for Flot charts + * version: 0.8.5 + * authors: Krzysztof Urbas @krzysu [myviews.pl],Evan Steinkerchner @Roundaround + * website: https://github.com/krzysu/flot.tooltip + * + * build on 2015-05-11 + * released under MIT License, 2012 +*/ +(function ($) { + // plugin options, default values + var defaultOptions = { + tooltip: { + show: false, + cssClass: "flotTip", + content: "%s | X: %x | Y: %y", + // allowed templates are: + // %s -> series label, + // %c -> series color, + // %lx -> x axis label (requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels), + // %ly -> y axis label (requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels), + // %x -> X value, + // %y -> Y value, + // %x.2 -> precision of X value, + // %p -> percent + xDateFormat: null, + yDateFormat: null, + monthNames: null, + dayNames: null, + shifts: { + x: 10, + y: 20 + }, + defaultTheme: true, + lines: false, + + // callbacks + onHover: function (flotItem, $tooltipEl) {}, + + $compat: false + } + }; + + // dummy default options object for legacy code (<0.8.5) - is deleted later + defaultOptions.tooltipOpts = defaultOptions.tooltip; + + // object + var FlotTooltip = function (plot) { + // variables + this.tipPosition = {x: 0, y: 0}; + + this.init(plot); + }; + + // main plugin function + FlotTooltip.prototype.init = function (plot) { + var that = this; + + // detect other flot plugins + var plotPluginsLength = $.plot.plugins.length; + this.plotPlugins = []; + + if (plotPluginsLength) { + for (var p = 0; p < plotPluginsLength; p++) { + this.plotPlugins.push($.plot.plugins[p].name); + } + } + + plot.hooks.bindEvents.push(function (plot, eventHolder) { + + // get plot options + that.plotOptions = plot.getOptions(); + + // for legacy (<0.8.5) implementations + if (typeof(that.plotOptions.tooltip) === 'boolean') { + that.plotOptions.tooltipOpts.show = that.plotOptions.tooltip; + that.plotOptions.tooltip = that.plotOptions.tooltipOpts; + delete that.plotOptions.tooltipOpts; + } + + // if not enabled return + if (that.plotOptions.tooltip.show === false || typeof that.plotOptions.tooltip.show === 'undefined') return; + + // shortcut to access tooltip options + that.tooltipOptions = that.plotOptions.tooltip; + + if (that.tooltipOptions.$compat) { + that.wfunc = 'width'; + that.hfunc = 'height'; + } else { + that.wfunc = 'innerWidth'; + that.hfunc = 'innerHeight'; + } + + // create tooltip DOM element + var $tip = that.getDomElement(); + + // bind event + $( plot.getPlaceholder() ).bind("plothover", plothover); + + $(eventHolder).bind('mousemove', mouseMove); + }); + + plot.hooks.shutdown.push(function (plot, eventHolder){ + $(plot.getPlaceholder()).unbind("plothover", plothover); + $(eventHolder).unbind("mousemove", mouseMove); + }); + + function mouseMove(e){ + var pos = {}; + pos.x = e.pageX; + pos.y = e.pageY; + plot.setTooltipPosition(pos); + } + + function plothover(event, pos, item) { + // Simple distance formula. + var lineDistance = function (p1x, p1y, p2x, p2y) { + return Math.sqrt((p2x - p1x) * (p2x - p1x) + (p2y - p1y) * (p2y - p1y)); + }; + + // Here is some voodoo magic for determining the distance to a line form a given point {x, y}. + var dotLineLength = function (x, y, x0, y0, x1, y1, o) { + if (o && !(o = + function (x, y, x0, y0, x1, y1) { + if (typeof x0 !== 'undefined') return { x: x0, y: y }; + else if (typeof y0 !== 'undefined') return { x: x, y: y0 }; + + var left, + tg = -1 / ((y1 - y0) / (x1 - x0)); + + return { + x: left = (x1 * (x * tg - y + y0) + x0 * (x * -tg + y - y1)) / (tg * (x1 - x0) + y0 - y1), + y: tg * left - tg * x + y + }; + } (x, y, x0, y0, x1, y1), + o.x >= Math.min(x0, x1) && o.x <= Math.max(x0, x1) && o.y >= Math.min(y0, y1) && o.y <= Math.max(y0, y1)) + ) { + var l1 = lineDistance(x, y, x0, y0), l2 = lineDistance(x, y, x1, y1); + return l1 > l2 ? l2 : l1; + } else { + var a = y0 - y1, b = x1 - x0, c = x0 * y1 - y0 * x1; + return Math.abs(a * x + b * y + c) / Math.sqrt(a * a + b * b); + } + }; + + if (item) { + plot.showTooltip(item, pos); + } else if (that.plotOptions.series.lines.show && that.tooltipOptions.lines === true) { + var maxDistance = that.plotOptions.grid.mouseActiveRadius; + + var closestTrace = { + distance: maxDistance + 1 + }; + + $.each(plot.getData(), function (i, series) { + var xBeforeIndex = 0, + xAfterIndex = -1; + + // Our search here assumes our data is sorted via the x-axis. + // TODO: Improve efficiency somehow - search smaller sets of data. + for (var j = 1; j < series.data.length; j++) { + if (series.data[j - 1][0] <= pos.x && series.data[j][0] >= pos.x) { + xBeforeIndex = j - 1; + xAfterIndex = j; + } + } + + if (xAfterIndex === -1) { + plot.hideTooltip(); + return; + } + + var pointPrev = { x: series.data[xBeforeIndex][0], y: series.data[xBeforeIndex][1] }, + pointNext = { x: series.data[xAfterIndex][0], y: series.data[xAfterIndex][1] }; + + var distToLine = dotLineLength(series.xaxis.p2c(pos.x), series.yaxis.p2c(pos.y), series.xaxis.p2c(pointPrev.x), + series.yaxis.p2c(pointPrev.y), series.xaxis.p2c(pointNext.x), series.yaxis.p2c(pointNext.y), false); + + if (distToLine < closestTrace.distance) { + + var closestIndex = lineDistance(pointPrev.x, pointPrev.y, pos.x, pos.y) < + lineDistance(pos.x, pos.y, pointNext.x, pointNext.y) ? xBeforeIndex : xAfterIndex; + + var pointSize = series.datapoints.pointsize; + + // Calculate the point on the line vertically closest to our cursor. + var pointOnLine = [ + pos.x, + pointPrev.y + ((pointNext.y - pointPrev.y) * ((pos.x - pointPrev.x) / (pointNext.x - pointPrev.x))) + ]; + + var item = { + datapoint: pointOnLine, + dataIndex: closestIndex, + series: series, + seriesIndex: i + }; + + closestTrace = { + distance: distToLine, + item: item + }; + } + }); + + if (closestTrace.distance < maxDistance + 1) + plot.showTooltip(closestTrace.item, pos); + else + plot.hideTooltip(); + } else { + plot.hideTooltip(); + } + } + + // Quick little function for setting the tooltip position. + plot.setTooltipPosition = function (pos) { + var $tip = that.getDomElement(); + + var totalTipWidth = $tip.outerWidth() + that.tooltipOptions.shifts.x; + var totalTipHeight = $tip.outerHeight() + that.tooltipOptions.shifts.y; + if ((pos.x - $(window).scrollLeft()) > ($(window)[that.wfunc]() - totalTipWidth)) { + pos.x -= totalTipWidth; + } + if ((pos.y - $(window).scrollTop()) > ($(window)[that.hfunc]() - totalTipHeight)) { + pos.y -= totalTipHeight; + } + that.tipPosition.x = pos.x; + that.tipPosition.y = pos.y; + }; + + // Quick little function for showing the tooltip. + plot.showTooltip = function (target, position) { + var $tip = that.getDomElement(); + + // convert tooltip content template to real tipText + var tipText = that.stringFormat(that.tooltipOptions.content, target); + if (tipText === '') + return; + + $tip.html(tipText); + plot.setTooltipPosition({ x: position.pageX, y: position.pageY }); + $tip.css({ + left: that.tipPosition.x + that.tooltipOptions.shifts.x, + top: that.tipPosition.y + that.tooltipOptions.shifts.y + }).show(); + + // run callback + if (typeof that.tooltipOptions.onHover === 'function') { + that.tooltipOptions.onHover(target, $tip); + } + }; + + // Quick little function for hiding the tooltip. + plot.hideTooltip = function () { + that.getDomElement().hide().html(''); + }; + }; + + /** + * get or create tooltip DOM element + * @return jQuery object + */ + FlotTooltip.prototype.getDomElement = function () { + var $tip = $('.' + this.tooltipOptions.cssClass); + + if( $tip.length === 0 ){ + $tip = $('
    ').addClass(this.tooltipOptions.cssClass); + $tip.appendTo('body').hide().css({position: 'absolute'}); + + if(this.tooltipOptions.defaultTheme) { + $tip.css({ + 'background': '#fff', + 'z-index': '1040', + 'padding': '0.4em 0.6em', + 'border-radius': '0.5em', + 'font-size': '0.8em', + 'border': '1px solid #111', + 'display': 'none', + 'white-space': 'nowrap' + }); + } + } + + return $tip; + }; + + /** + * core function, create tooltip content + * @param {string} content - template with tooltip content + * @param {object} item - Flot item + * @return {string} real tooltip content for current item + */ + FlotTooltip.prototype.stringFormat = function (content, item) { + + var percentPattern = /%p\.{0,1}(\d{0,})/; + var seriesPattern = /%s/; + var colorPattern = /%c/; + var xLabelPattern = /%lx/; // requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels, will be ignored if plugin isn't loaded + var yLabelPattern = /%ly/; // requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels, will be ignored if plugin isn't loaded + var xPattern = /%x\.{0,1}(\d{0,})/; + var yPattern = /%y\.{0,1}(\d{0,})/; + var xPatternWithoutPrecision = "%x"; + var yPatternWithoutPrecision = "%y"; + var customTextPattern = "%ct"; + + var x, y, customText, p; + + // for threshold plugin we need to read data from different place + if (typeof item.series.threshold !== "undefined") { + x = item.datapoint[0]; + y = item.datapoint[1]; + customText = item.datapoint[2]; + } else if (typeof item.series.lines !== "undefined" && item.series.lines.steps) { + x = item.series.datapoints.points[item.dataIndex * 2]; + y = item.series.datapoints.points[item.dataIndex * 2 + 1]; + // TODO: where to find custom text in this variant? + customText = ""; + } else { + x = item.series.data[item.dataIndex][0]; + y = item.series.data[item.dataIndex][1]; + customText = item.series.data[item.dataIndex][2]; + } + + // I think this is only in case of threshold plugin + if (item.series.label === null && item.series.originSeries) { + item.series.label = item.series.originSeries.label; + } + + // if it is a function callback get the content string + if (typeof(content) === 'function') { + content = content(item.series.label, x, y, item); + } + + // the case where the passed content is equal to false + if (typeof(content) === 'boolean' && !content) { + return ''; + } + + // percent match for pie charts and stacked percent + if (typeof (item.series.percent) !== 'undefined') { + p = item.series.percent; + } else if (typeof (item.series.percents) !== 'undefined') { + p = item.series.percents[item.dataIndex]; + } + if (typeof p === 'number') { + content = this.adjustValPrecision(percentPattern, content, p); + } + + // series match + if (typeof(item.series.label) !== 'undefined') { + content = content.replace(seriesPattern, item.series.label); + } else { + //remove %s if label is undefined + content = content.replace(seriesPattern, ""); + } + + // color match + if (typeof(item.series.color) !== 'undefined') { + content = content.replace(colorPattern, item.series.color); + } else { + //remove %s if color is undefined + content = content.replace(colorPattern, ""); + } + + // x axis label match + if (this.hasAxisLabel('xaxis', item)) { + content = content.replace(xLabelPattern, item.series.xaxis.options.axisLabel); + } else { + //remove %lx if axis label is undefined or axislabels plugin not present + content = content.replace(xLabelPattern, ""); + } + + // y axis label match + if (this.hasAxisLabel('yaxis', item)) { + content = content.replace(yLabelPattern, item.series.yaxis.options.axisLabel); + } else { + //remove %ly if axis label is undefined or axislabels plugin not present + content = content.replace(yLabelPattern, ""); + } + + // time mode axes with custom dateFormat + if (this.isTimeMode('xaxis', item) && this.isXDateFormat(item)) { + content = content.replace(xPattern, this.timestampToDate(x, this.tooltipOptions.xDateFormat, item.series.xaxis.options)); + } + if (this.isTimeMode('yaxis', item) && this.isYDateFormat(item)) { + content = content.replace(yPattern, this.timestampToDate(y, this.tooltipOptions.yDateFormat, item.series.yaxis.options)); + } + + // set precision if defined + if (typeof x === 'number') { + content = this.adjustValPrecision(xPattern, content, x); + } + if (typeof y === 'number') { + content = this.adjustValPrecision(yPattern, content, y); + } + + // change x from number to given label, if given + if (typeof item.series.xaxis.ticks !== 'undefined') { + + var ticks; + if (this.hasRotatedXAxisTicks(item)) { + // xaxis.ticks will be an empty array if tickRotor is being used, but the values are available in rotatedTicks + ticks = 'rotatedTicks'; + } else { + ticks = 'ticks'; + } + + // see https://github.com/krzysu/flot.tooltip/issues/65 + var tickIndex = item.dataIndex + item.seriesIndex; + + for (var index in item.series.xaxis[ticks]) { + if (item.series.xaxis[ticks].hasOwnProperty(tickIndex) && !this.isTimeMode('xaxis', item)) { + var valueX = (this.isCategoriesMode('xaxis', item)) ? item.series.xaxis[ticks][tickIndex].label : item.series.xaxis[ticks][tickIndex].v; + if (valueX === x) { + content = content.replace(xPattern, item.series.xaxis[ticks][tickIndex].label); + } + } + } + } + + // change y from number to given label, if given + if (typeof item.series.yaxis.ticks !== 'undefined') { + for (var index in item.series.yaxis.ticks) { + if (item.series.yaxis.ticks.hasOwnProperty(index)) { + var valueY = (this.isCategoriesMode('yaxis', item)) ? item.series.yaxis.ticks[index].label : item.series.yaxis.ticks[index].v; + if (valueY === y) { + content = content.replace(yPattern, item.series.yaxis.ticks[index].label); + } + } + } + } + + // if no value customization, use tickFormatter by default + if (typeof item.series.xaxis.tickFormatter !== 'undefined') { + //escape dollar + content = content.replace(xPatternWithoutPrecision, item.series.xaxis.tickFormatter(x, item.series.xaxis).replace(/\$/g, '$$')); + } + if (typeof item.series.yaxis.tickFormatter !== 'undefined') { + //escape dollar + content = content.replace(yPatternWithoutPrecision, item.series.yaxis.tickFormatter(y, item.series.yaxis).replace(/\$/g, '$$')); + } + + if (customText) + content = content.replace(customTextPattern, customText); + + return content; + }; + + // helpers just for readability + FlotTooltip.prototype.isTimeMode = function (axisName, item) { + return (typeof item.series[axisName].options.mode !== 'undefined' && item.series[axisName].options.mode === 'time'); + }; + + FlotTooltip.prototype.isXDateFormat = function (item) { + return (typeof this.tooltipOptions.xDateFormat !== 'undefined' && this.tooltipOptions.xDateFormat !== null); + }; + + FlotTooltip.prototype.isYDateFormat = function (item) { + return (typeof this.tooltipOptions.yDateFormat !== 'undefined' && this.tooltipOptions.yDateFormat !== null); + }; + + FlotTooltip.prototype.isCategoriesMode = function (axisName, item) { + return (typeof item.series[axisName].options.mode !== 'undefined' && item.series[axisName].options.mode === 'categories'); + }; + + // + FlotTooltip.prototype.timestampToDate = function (tmst, dateFormat, options) { + var theDate = $.plot.dateGenerator(tmst, options); + return $.plot.formatDate(theDate, dateFormat, this.tooltipOptions.monthNames, this.tooltipOptions.dayNames); + }; + + // + FlotTooltip.prototype.adjustValPrecision = function (pattern, content, value) { + + var precision; + var matchResult = content.match(pattern); + if( matchResult !== null ) { + if(RegExp.$1 !== '') { + precision = RegExp.$1; + value = value.toFixed(precision); + + // only replace content if precision exists, in other case use thickformater + content = content.replace(pattern, value); + } + } + return content; + }; + + // other plugins detection below + + // check if flot-axislabels plugin (https://github.com/markrcote/flot-axislabels) is used and that an axis label is given + FlotTooltip.prototype.hasAxisLabel = function (axisName, item) { + return ($.inArray(this.plotPlugins, 'axisLabels') !== -1 && typeof item.series[axisName].options.axisLabel !== 'undefined' && item.series[axisName].options.axisLabel.length > 0); + }; + + // check whether flot-tickRotor, a plugin which allows rotation of X-axis ticks, is being used + FlotTooltip.prototype.hasRotatedXAxisTicks = function (item) { + return ($.inArray(this.plotPlugins, 'tickRotor') !== -1 && typeof item.series.xaxis.rotatedTicks !== 'undefined'); + }; + + // + var init = function (plot) { + new FlotTooltip(plot); + }; + + // define Flot plugin + $.plot.plugins.push({ + init: init, + options: defaultOptions, + name: 'tooltip', + version: '0.8.5' + }); + +})(jQuery); diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/js/jquery.flot.tooltip.min.js b/SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/js/jquery.flot.tooltip.min.js new file mode 100644 index 0000000..7eb217d --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/js/jquery.flot.tooltip.min.js @@ -0,0 +1,12 @@ +/* + * jquery.flot.tooltip + * + * description: easy-to-use tooltips for Flot charts + * version: 0.8.5 + * authors: Krzysztof Urbas @krzysu [myviews.pl],Evan Steinkerchner @Roundaround + * website: https://github.com/krzysu/flot.tooltip + * + * build on 2015-05-11 + * released under MIT License, 2012 +*/ +!function(a){var b={tooltip:{show:!1,cssClass:"flotTip",content:"%s | X: %x | Y: %y",xDateFormat:null,yDateFormat:null,monthNames:null,dayNames:null,shifts:{x:10,y:20},defaultTheme:!0,lines:!1,onHover:function(a,b){},$compat:!1}};b.tooltipOpts=b.tooltip;var c=function(a){this.tipPosition={x:0,y:0},this.init(a)};c.prototype.init=function(b){function c(a){var c={};c.x=a.pageX,c.y=a.pageY,b.setTooltipPosition(c)}function d(c,d,f){var g=function(a,b,c,d){return Math.sqrt((c-a)*(c-a)+(d-b)*(d-b))},h=function(a,b,c,d,e,f,h){if(!h||(h=function(a,b,c,d,e,f){if("undefined"!=typeof c)return{x:c,y:b};if("undefined"!=typeof d)return{x:a,y:d};var g,h=-1/((f-d)/(e-c));return{x:g=(e*(a*h-b+d)+c*(a*-h+b-f))/(h*(e-c)+d-f),y:h*g-h*a+b}}(a,b,c,d,e,f),h.x>=Math.min(c,e)&&h.x<=Math.max(c,e)&&h.y>=Math.min(d,f)&&h.y<=Math.max(d,f))){var i=d-f,j=e-c,k=c*f-d*e;return Math.abs(i*a+j*b+k)/Math.sqrt(i*i+j*j)}var l=g(a,b,c,d),m=g(a,b,e,f);return l>m?m:l};if(f)b.showTooltip(f,d);else if(e.plotOptions.series.lines.show&&e.tooltipOptions.lines===!0){var i=e.plotOptions.grid.mouseActiveRadius,j={distance:i+1};a.each(b.getData(),function(a,c){for(var e=0,f=-1,i=1;i=d.x&&(e=i-1,f=i);if(-1===f)return void b.hideTooltip();var k={x:c.data[e][0],y:c.data[e][1]},l={x:c.data[f][0],y:c.data[f][1]},m=h(c.xaxis.p2c(d.x),c.yaxis.p2c(d.y),c.xaxis.p2c(k.x),c.yaxis.p2c(k.y),c.xaxis.p2c(l.x),c.yaxis.p2c(l.y),!1);if(mg;g++)this.plotPlugins.push(a.plot.plugins[g].name);b.hooks.bindEvents.push(function(b,f){if(e.plotOptions=b.getOptions(),"boolean"==typeof e.plotOptions.tooltip&&(e.plotOptions.tooltipOpts.show=e.plotOptions.tooltip,e.plotOptions.tooltip=e.plotOptions.tooltipOpts,delete e.plotOptions.tooltipOpts),e.plotOptions.tooltip.show!==!1&&"undefined"!=typeof e.plotOptions.tooltip.show){e.tooltipOptions=e.plotOptions.tooltip,e.tooltipOptions.$compat?(e.wfunc="width",e.hfunc="height"):(e.wfunc="innerWidth",e.hfunc="innerHeight");e.getDomElement();a(b.getPlaceholder()).bind("plothover",d),a(f).bind("mousemove",c)}}),b.hooks.shutdown.push(function(b,e){a(b.getPlaceholder()).unbind("plothover",d),a(e).unbind("mousemove",c)}),b.setTooltipPosition=function(b){var c=e.getDomElement(),d=c.outerWidth()+e.tooltipOptions.shifts.x,f=c.outerHeight()+e.tooltipOptions.shifts.y;b.x-a(window).scrollLeft()>a(window)[e.wfunc]()-d&&(b.x-=d),b.y-a(window).scrollTop()>a(window)[e.hfunc]()-f&&(b.y-=f),e.tipPosition.x=b.x,e.tipPosition.y=b.y},b.showTooltip=function(a,c){var d=e.getDomElement(),f=e.stringFormat(e.tooltipOptions.content,a);""!==f&&(d.html(f),b.setTooltipPosition({x:c.pageX,y:c.pageY}),d.css({left:e.tipPosition.x+e.tooltipOptions.shifts.x,top:e.tipPosition.y+e.tooltipOptions.shifts.y}).show(),"function"==typeof e.tooltipOptions.onHover&&e.tooltipOptions.onHover(a,d))},b.hideTooltip=function(){e.getDomElement().hide().html("")}},c.prototype.getDomElement=function(){var b=a("."+this.tooltipOptions.cssClass);return 0===b.length&&(b=a("
    ").addClass(this.tooltipOptions.cssClass),b.appendTo("body").hide().css({position:"absolute"}),this.tooltipOptions.defaultTheme&&b.css({background:"#fff","z-index":"1040",padding:"0.4em 0.6em","border-radius":"0.5em","font-size":"0.8em",border:"1px solid #111",display:"none","white-space":"nowrap"})),b},c.prototype.stringFormat=function(a,b){var c,d,e,f,g=/%p\.{0,1}(\d{0,})/,h=/%s/,i=/%c/,j=/%lx/,k=/%ly/,l=/%x\.{0,1}(\d{0,})/,m=/%y\.{0,1}(\d{0,})/,n="%x",o="%y",p="%ct";if("undefined"!=typeof b.series.threshold?(c=b.datapoint[0],d=b.datapoint[1],e=b.datapoint[2]):"undefined"!=typeof b.series.lines&&b.series.lines.steps?(c=b.series.datapoints.points[2*b.dataIndex],d=b.series.datapoints.points[2*b.dataIndex+1],e=""):(c=b.series.data[b.dataIndex][0],d=b.series.data[b.dataIndex][1],e=b.series.data[b.dataIndex][2]),null===b.series.label&&b.series.originSeries&&(b.series.label=b.series.originSeries.label),"function"==typeof a&&(a=a(b.series.label,c,d,b)),"boolean"==typeof a&&!a)return"";if("undefined"!=typeof b.series.percent?f=b.series.percent:"undefined"!=typeof b.series.percents&&(f=b.series.percents[b.dataIndex]),"number"==typeof f&&(a=this.adjustValPrecision(g,a,f)),a="undefined"!=typeof b.series.label?a.replace(h,b.series.label):a.replace(h,""),a="undefined"!=typeof b.series.color?a.replace(i,b.series.color):a.replace(i,""),a=this.hasAxisLabel("xaxis",b)?a.replace(j,b.series.xaxis.options.axisLabel):a.replace(j,""),a=this.hasAxisLabel("yaxis",b)?a.replace(k,b.series.yaxis.options.axisLabel):a.replace(k,""),this.isTimeMode("xaxis",b)&&this.isXDateFormat(b)&&(a=a.replace(l,this.timestampToDate(c,this.tooltipOptions.xDateFormat,b.series.xaxis.options))),this.isTimeMode("yaxis",b)&&this.isYDateFormat(b)&&(a=a.replace(m,this.timestampToDate(d,this.tooltipOptions.yDateFormat,b.series.yaxis.options))),"number"==typeof c&&(a=this.adjustValPrecision(l,a,c)),"number"==typeof d&&(a=this.adjustValPrecision(m,a,d)),"undefined"!=typeof b.series.xaxis.ticks){var q;q=this.hasRotatedXAxisTicks(b)?"rotatedTicks":"ticks";var r=b.dataIndex+b.seriesIndex;for(var s in b.series.xaxis[q])if(b.series.xaxis[q].hasOwnProperty(r)&&!this.isTimeMode("xaxis",b)){var t=this.isCategoriesMode("xaxis",b)?b.series.xaxis[q][r].label:b.series.xaxis[q][r].v;t===c&&(a=a.replace(l,b.series.xaxis[q][r].label))}}if("undefined"!=typeof b.series.yaxis.ticks)for(var s in b.series.yaxis.ticks)if(b.series.yaxis.ticks.hasOwnProperty(s)){var u=this.isCategoriesMode("yaxis",b)?b.series.yaxis.ticks[s].label:b.series.yaxis.ticks[s].v;u===d&&(a=a.replace(m,b.series.yaxis.ticks[s].label))}return"undefined"!=typeof b.series.xaxis.tickFormatter&&(a=a.replace(n,b.series.xaxis.tickFormatter(c,b.series.xaxis).replace(/\$/g,"$$"))),"undefined"!=typeof b.series.yaxis.tickFormatter&&(a=a.replace(o,b.series.yaxis.tickFormatter(d,b.series.yaxis).replace(/\$/g,"$$"))),e&&(a=a.replace(p,e)),a},c.prototype.isTimeMode=function(a,b){return"undefined"!=typeof b.series[a].options.mode&&"time"===b.series[a].options.mode},c.prototype.isXDateFormat=function(a){return"undefined"!=typeof this.tooltipOptions.xDateFormat&&null!==this.tooltipOptions.xDateFormat},c.prototype.isYDateFormat=function(a){return"undefined"!=typeof this.tooltipOptions.yDateFormat&&null!==this.tooltipOptions.yDateFormat},c.prototype.isCategoriesMode=function(a,b){return"undefined"!=typeof b.series[a].options.mode&&"categories"===b.series[a].options.mode},c.prototype.timestampToDate=function(b,c,d){var e=a.plot.dateGenerator(b,d);return a.plot.formatDate(e,c,this.tooltipOptions.monthNames,this.tooltipOptions.dayNames)},c.prototype.adjustValPrecision=function(a,b,c){var d,e=b.match(a);return null!==e&&""!==RegExp.$1&&(d=RegExp.$1,c=c.toFixed(d),b=b.replace(a,c)),b},c.prototype.hasAxisLabel=function(b,c){return-1!==a.inArray(this.plotPlugins,"axisLabels")&&"undefined"!=typeof c.series[b].options.axisLabel&&c.series[b].options.axisLabel.length>0},c.prototype.hasRotatedXAxisTicks=function(b){return-1!==a.inArray(this.plotPlugins,"tickRotor")&&"undefined"!=typeof b.series.xaxis.rotatedTicks};var d=function(a){new c(a)};a.plot.plugins.push({init:d,options:b,name:"tooltip",version:"0.8.5"})}(jQuery); \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/js/jquery.flot.tooltip.source.js b/SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/js/jquery.flot.tooltip.source.js new file mode 100644 index 0000000..ed7b9fc --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot.tooltip/js/jquery.flot.tooltip.source.js @@ -0,0 +1,506 @@ +(function ($) { + // plugin options, default values + var defaultOptions = { + tooltip: { + show: false, + cssClass: "flotTip", + content: "%s | X: %x | Y: %y", + // allowed templates are: + // %s -> series label, + // %c -> series color, + // %lx -> x axis label (requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels), + // %ly -> y axis label (requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels), + // %x -> X value, + // %y -> Y value, + // %x.2 -> precision of X value, + // %p -> percent + xDateFormat: null, + yDateFormat: null, + monthNames: null, + dayNames: null, + shifts: { + x: 10, + y: 20 + }, + defaultTheme: true, + lines: false, + + // callbacks + onHover: function (flotItem, $tooltipEl) {}, + + $compat: false + } + }; + + // dummy default options object for legacy code (<0.8.5) - is deleted later + defaultOptions.tooltipOpts = defaultOptions.tooltip; + + // object + var FlotTooltip = function (plot) { + // variables + this.tipPosition = {x: 0, y: 0}; + + this.init(plot); + }; + + // main plugin function + FlotTooltip.prototype.init = function (plot) { + var that = this; + + // detect other flot plugins + var plotPluginsLength = $.plot.plugins.length; + this.plotPlugins = []; + + if (plotPluginsLength) { + for (var p = 0; p < plotPluginsLength; p++) { + this.plotPlugins.push($.plot.plugins[p].name); + } + } + + plot.hooks.bindEvents.push(function (plot, eventHolder) { + + // get plot options + that.plotOptions = plot.getOptions(); + + // for legacy (<0.8.5) implementations + if (typeof(that.plotOptions.tooltip) === 'boolean') { + that.plotOptions.tooltipOpts.show = that.plotOptions.tooltip; + that.plotOptions.tooltip = that.plotOptions.tooltipOpts; + delete that.plotOptions.tooltipOpts; + } + + // if not enabled return + if (that.plotOptions.tooltip.show === false || typeof that.plotOptions.tooltip.show === 'undefined') return; + + // shortcut to access tooltip options + that.tooltipOptions = that.plotOptions.tooltip; + + if (that.tooltipOptions.$compat) { + that.wfunc = 'width'; + that.hfunc = 'height'; + } else { + that.wfunc = 'innerWidth'; + that.hfunc = 'innerHeight'; + } + + // create tooltip DOM element + var $tip = that.getDomElement(); + + // bind event + $( plot.getPlaceholder() ).bind("plothover", plothover); + + $(eventHolder).bind('mousemove', mouseMove); + }); + + plot.hooks.shutdown.push(function (plot, eventHolder){ + $(plot.getPlaceholder()).unbind("plothover", plothover); + $(eventHolder).unbind("mousemove", mouseMove); + }); + + function mouseMove(e){ + var pos = {}; + pos.x = e.pageX; + pos.y = e.pageY; + plot.setTooltipPosition(pos); + } + + function plothover(event, pos, item) { + // Simple distance formula. + var lineDistance = function (p1x, p1y, p2x, p2y) { + return Math.sqrt((p2x - p1x) * (p2x - p1x) + (p2y - p1y) * (p2y - p1y)); + }; + + // Here is some voodoo magic for determining the distance to a line form a given point {x, y}. + var dotLineLength = function (x, y, x0, y0, x1, y1, o) { + if (o && !(o = + function (x, y, x0, y0, x1, y1) { + if (typeof x0 !== 'undefined') return { x: x0, y: y }; + else if (typeof y0 !== 'undefined') return { x: x, y: y0 }; + + var left, + tg = -1 / ((y1 - y0) / (x1 - x0)); + + return { + x: left = (x1 * (x * tg - y + y0) + x0 * (x * -tg + y - y1)) / (tg * (x1 - x0) + y0 - y1), + y: tg * left - tg * x + y + }; + } (x, y, x0, y0, x1, y1), + o.x >= Math.min(x0, x1) && o.x <= Math.max(x0, x1) && o.y >= Math.min(y0, y1) && o.y <= Math.max(y0, y1)) + ) { + var l1 = lineDistance(x, y, x0, y0), l2 = lineDistance(x, y, x1, y1); + return l1 > l2 ? l2 : l1; + } else { + var a = y0 - y1, b = x1 - x0, c = x0 * y1 - y0 * x1; + return Math.abs(a * x + b * y + c) / Math.sqrt(a * a + b * b); + } + }; + + if (item) { + plot.showTooltip(item, pos); + } else if (that.plotOptions.series.lines.show && that.tooltipOptions.lines === true) { + var maxDistance = that.plotOptions.grid.mouseActiveRadius; + + var closestTrace = { + distance: maxDistance + 1 + }; + + $.each(plot.getData(), function (i, series) { + var xBeforeIndex = 0, + xAfterIndex = -1; + + // Our search here assumes our data is sorted via the x-axis. + // TODO: Improve efficiency somehow - search smaller sets of data. + for (var j = 1; j < series.data.length; j++) { + if (series.data[j - 1][0] <= pos.x && series.data[j][0] >= pos.x) { + xBeforeIndex = j - 1; + xAfterIndex = j; + } + } + + if (xAfterIndex === -1) { + plot.hideTooltip(); + return; + } + + var pointPrev = { x: series.data[xBeforeIndex][0], y: series.data[xBeforeIndex][1] }, + pointNext = { x: series.data[xAfterIndex][0], y: series.data[xAfterIndex][1] }; + + var distToLine = dotLineLength(series.xaxis.p2c(pos.x), series.yaxis.p2c(pos.y), series.xaxis.p2c(pointPrev.x), + series.yaxis.p2c(pointPrev.y), series.xaxis.p2c(pointNext.x), series.yaxis.p2c(pointNext.y), false); + + if (distToLine < closestTrace.distance) { + + var closestIndex = lineDistance(pointPrev.x, pointPrev.y, pos.x, pos.y) < + lineDistance(pos.x, pos.y, pointNext.x, pointNext.y) ? xBeforeIndex : xAfterIndex; + + var pointSize = series.datapoints.pointsize; + + // Calculate the point on the line vertically closest to our cursor. + var pointOnLine = [ + pos.x, + pointPrev.y + ((pointNext.y - pointPrev.y) * ((pos.x - pointPrev.x) / (pointNext.x - pointPrev.x))) + ]; + + var item = { + datapoint: pointOnLine, + dataIndex: closestIndex, + series: series, + seriesIndex: i + }; + + closestTrace = { + distance: distToLine, + item: item + }; + } + }); + + if (closestTrace.distance < maxDistance + 1) + plot.showTooltip(closestTrace.item, pos); + else + plot.hideTooltip(); + } else { + plot.hideTooltip(); + } + } + + // Quick little function for setting the tooltip position. + plot.setTooltipPosition = function (pos) { + var $tip = that.getDomElement(); + + var totalTipWidth = $tip.outerWidth() + that.tooltipOptions.shifts.x; + var totalTipHeight = $tip.outerHeight() + that.tooltipOptions.shifts.y; + if ((pos.x - $(window).scrollLeft()) > ($(window)[that.wfunc]() - totalTipWidth)) { + pos.x -= totalTipWidth; + } + if ((pos.y - $(window).scrollTop()) > ($(window)[that.hfunc]() - totalTipHeight)) { + pos.y -= totalTipHeight; + } + that.tipPosition.x = pos.x; + that.tipPosition.y = pos.y; + }; + + // Quick little function for showing the tooltip. + plot.showTooltip = function (target, position) { + var $tip = that.getDomElement(); + + // convert tooltip content template to real tipText + var tipText = that.stringFormat(that.tooltipOptions.content, target); + if (tipText === '') + return; + + $tip.html(tipText); + plot.setTooltipPosition({ x: position.pageX, y: position.pageY }); + $tip.css({ + left: that.tipPosition.x + that.tooltipOptions.shifts.x, + top: that.tipPosition.y + that.tooltipOptions.shifts.y + }).show(); + + // run callback + if (typeof that.tooltipOptions.onHover === 'function') { + that.tooltipOptions.onHover(target, $tip); + } + }; + + // Quick little function for hiding the tooltip. + plot.hideTooltip = function () { + that.getDomElement().hide().html(''); + }; + }; + + /** + * get or create tooltip DOM element + * @return jQuery object + */ + FlotTooltip.prototype.getDomElement = function () { + var $tip = $('.' + this.tooltipOptions.cssClass); + + if( $tip.length === 0 ){ + $tip = $('
    ').addClass(this.tooltipOptions.cssClass); + $tip.appendTo('body').hide().css({position: 'absolute'}); + + if(this.tooltipOptions.defaultTheme) { + $tip.css({ + 'background': '#fff', + 'z-index': '1040', + 'padding': '0.4em 0.6em', + 'border-radius': '0.5em', + 'font-size': '0.8em', + 'border': '1px solid #111', + 'display': 'none', + 'white-space': 'nowrap' + }); + } + } + + return $tip; + }; + + /** + * core function, create tooltip content + * @param {string} content - template with tooltip content + * @param {object} item - Flot item + * @return {string} real tooltip content for current item + */ + FlotTooltip.prototype.stringFormat = function (content, item) { + + var percentPattern = /%p\.{0,1}(\d{0,})/; + var seriesPattern = /%s/; + var colorPattern = /%c/; + var xLabelPattern = /%lx/; // requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels, will be ignored if plugin isn't loaded + var yLabelPattern = /%ly/; // requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels, will be ignored if plugin isn't loaded + var xPattern = /%x\.{0,1}(\d{0,})/; + var yPattern = /%y\.{0,1}(\d{0,})/; + var xPatternWithoutPrecision = "%x"; + var yPatternWithoutPrecision = "%y"; + var customTextPattern = "%ct"; + + var x, y, customText, p; + + // for threshold plugin we need to read data from different place + if (typeof item.series.threshold !== "undefined") { + x = item.datapoint[0]; + y = item.datapoint[1]; + customText = item.datapoint[2]; + } else if (typeof item.series.lines !== "undefined" && item.series.lines.steps) { + x = item.series.datapoints.points[item.dataIndex * 2]; + y = item.series.datapoints.points[item.dataIndex * 2 + 1]; + // TODO: where to find custom text in this variant? + customText = ""; + } else { + x = item.series.data[item.dataIndex][0]; + y = item.series.data[item.dataIndex][1]; + customText = item.series.data[item.dataIndex][2]; + } + + // I think this is only in case of threshold plugin + if (item.series.label === null && item.series.originSeries) { + item.series.label = item.series.originSeries.label; + } + + // if it is a function callback get the content string + if (typeof(content) === 'function') { + content = content(item.series.label, x, y, item); + } + + // the case where the passed content is equal to false + if (typeof(content) === 'boolean' && !content) { + return ''; + } + + // percent match for pie charts and stacked percent + if (typeof (item.series.percent) !== 'undefined') { + p = item.series.percent; + } else if (typeof (item.series.percents) !== 'undefined') { + p = item.series.percents[item.dataIndex]; + } + if (typeof p === 'number') { + content = this.adjustValPrecision(percentPattern, content, p); + } + + // series match + if (typeof(item.series.label) !== 'undefined') { + content = content.replace(seriesPattern, item.series.label); + } else { + //remove %s if label is undefined + content = content.replace(seriesPattern, ""); + } + + // color match + if (typeof(item.series.color) !== 'undefined') { + content = content.replace(colorPattern, item.series.color); + } else { + //remove %s if color is undefined + content = content.replace(colorPattern, ""); + } + + // x axis label match + if (this.hasAxisLabel('xaxis', item)) { + content = content.replace(xLabelPattern, item.series.xaxis.options.axisLabel); + } else { + //remove %lx if axis label is undefined or axislabels plugin not present + content = content.replace(xLabelPattern, ""); + } + + // y axis label match + if (this.hasAxisLabel('yaxis', item)) { + content = content.replace(yLabelPattern, item.series.yaxis.options.axisLabel); + } else { + //remove %ly if axis label is undefined or axislabels plugin not present + content = content.replace(yLabelPattern, ""); + } + + // time mode axes with custom dateFormat + if (this.isTimeMode('xaxis', item) && this.isXDateFormat(item)) { + content = content.replace(xPattern, this.timestampToDate(x, this.tooltipOptions.xDateFormat, item.series.xaxis.options)); + } + if (this.isTimeMode('yaxis', item) && this.isYDateFormat(item)) { + content = content.replace(yPattern, this.timestampToDate(y, this.tooltipOptions.yDateFormat, item.series.yaxis.options)); + } + + // set precision if defined + if (typeof x === 'number') { + content = this.adjustValPrecision(xPattern, content, x); + } + if (typeof y === 'number') { + content = this.adjustValPrecision(yPattern, content, y); + } + + // change x from number to given label, if given + if (typeof item.series.xaxis.ticks !== 'undefined') { + + var ticks; + if (this.hasRotatedXAxisTicks(item)) { + // xaxis.ticks will be an empty array if tickRotor is being used, but the values are available in rotatedTicks + ticks = 'rotatedTicks'; + } else { + ticks = 'ticks'; + } + + // see https://github.com/krzysu/flot.tooltip/issues/65 + var tickIndex = item.dataIndex + item.seriesIndex; + + for (var index in item.series.xaxis[ticks]) { + if (item.series.xaxis[ticks].hasOwnProperty(tickIndex) && !this.isTimeMode('xaxis', item)) { + var valueX = (this.isCategoriesMode('xaxis', item)) ? item.series.xaxis[ticks][tickIndex].label : item.series.xaxis[ticks][tickIndex].v; + if (valueX === x) { + content = content.replace(xPattern, item.series.xaxis[ticks][tickIndex].label); + } + } + } + } + + // change y from number to given label, if given + if (typeof item.series.yaxis.ticks !== 'undefined') { + for (var index in item.series.yaxis.ticks) { + if (item.series.yaxis.ticks.hasOwnProperty(index)) { + var valueY = (this.isCategoriesMode('yaxis', item)) ? item.series.yaxis.ticks[index].label : item.series.yaxis.ticks[index].v; + if (valueY === y) { + content = content.replace(yPattern, item.series.yaxis.ticks[index].label); + } + } + } + } + + // if no value customization, use tickFormatter by default + if (typeof item.series.xaxis.tickFormatter !== 'undefined') { + //escape dollar + content = content.replace(xPatternWithoutPrecision, item.series.xaxis.tickFormatter(x, item.series.xaxis).replace(/\$/g, '$$')); + } + if (typeof item.series.yaxis.tickFormatter !== 'undefined') { + //escape dollar + content = content.replace(yPatternWithoutPrecision, item.series.yaxis.tickFormatter(y, item.series.yaxis).replace(/\$/g, '$$')); + } + + if (customText) + content = content.replace(customTextPattern, customText); + + return content; + }; + + // helpers just for readability + FlotTooltip.prototype.isTimeMode = function (axisName, item) { + return (typeof item.series[axisName].options.mode !== 'undefined' && item.series[axisName].options.mode === 'time'); + }; + + FlotTooltip.prototype.isXDateFormat = function (item) { + return (typeof this.tooltipOptions.xDateFormat !== 'undefined' && this.tooltipOptions.xDateFormat !== null); + }; + + FlotTooltip.prototype.isYDateFormat = function (item) { + return (typeof this.tooltipOptions.yDateFormat !== 'undefined' && this.tooltipOptions.yDateFormat !== null); + }; + + FlotTooltip.prototype.isCategoriesMode = function (axisName, item) { + return (typeof item.series[axisName].options.mode !== 'undefined' && item.series[axisName].options.mode === 'categories'); + }; + + // + FlotTooltip.prototype.timestampToDate = function (tmst, dateFormat, options) { + var theDate = $.plot.dateGenerator(tmst, options); + return $.plot.formatDate(theDate, dateFormat, this.tooltipOptions.monthNames, this.tooltipOptions.dayNames); + }; + + // + FlotTooltip.prototype.adjustValPrecision = function (pattern, content, value) { + + var precision; + var matchResult = content.match(pattern); + if( matchResult !== null ) { + if(RegExp.$1 !== '') { + precision = RegExp.$1; + value = value.toFixed(precision); + + // only replace content if precision exists, in other case use thickformater + content = content.replace(pattern, value); + } + } + return content; + }; + + // other plugins detection below + + // check if flot-axislabels plugin (https://github.com/markrcote/flot-axislabels) is used and that an axis label is given + FlotTooltip.prototype.hasAxisLabel = function (axisName, item) { + return ($.inArray(this.plotPlugins, 'axisLabels') !== -1 && typeof item.series[axisName].options.axisLabel !== 'undefined' && item.series[axisName].options.axisLabel.length > 0); + }; + + // check whether flot-tickRotor, a plugin which allows rotation of X-axis ticks, is being used + FlotTooltip.prototype.hasRotatedXAxisTicks = function (item) { + return ($.inArray(this.plotPlugins, 'tickRotor') !== -1 && typeof item.series.xaxis.rotatedTicks !== 'undefined'); + }; + + // + var init = function (plot) { + new FlotTooltip(plot); + }; + + // define Flot plugin + $.plot.plugins.push({ + init: init, + options: defaultOptions, + name: 'tooltip', + version: '0.8.5' + }); + +})(jQuery); diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/.bower.json b/SpringBootHomework/target/classes/static/assets/plugins/flot/.bower.json new file mode 100644 index 0000000..8b6d434 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/.bower.json @@ -0,0 +1,19 @@ +{ + "name": "Flot", + "version": "0.8.3", + "main": "jquery.flot.js", + "dependencies": { + "jquery": ">= 1.2.6" + }, + "homepage": "https://github.com/flot/flot", + "_release": "0.8.3", + "_resolution": { + "type": "version", + "tag": "v0.8.3", + "commit": "453b017cc5acfd75e252b93e8635f57f4196d45d" + }, + "_source": "git://github.com/flot/flot.git", + "_target": "~0.8.3", + "_originalSource": "flot", + "_direct": true +} \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/.travis.yml b/SpringBootHomework/target/classes/static/assets/plugins/flot/.travis.yml new file mode 100644 index 0000000..4e80ca0 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/.travis.yml @@ -0,0 +1,3 @@ +language: node_js +node_js: + - 0.8 diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/API.md b/SpringBootHomework/target/classes/static/assets/plugins/flot/API.md new file mode 100644 index 0000000..06c3a09 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/API.md @@ -0,0 +1,1498 @@ +# Flot Reference # + +**Table of Contents** + +[Introduction](#introduction) +| [Data Format](#data-format) +| [Plot Options](#plot-options) +| [Customizing the legend](#customizing-the-legend) +| [Customizing the axes](#customizing-the-axes) +| [Multiple axes](#multiple-axes) +| [Time series data](#time-series-data) +| [Customizing the data series](#customizing-the-data-series) +| [Customizing the grid](#customizing-the-grid) +| [Specifying gradients](#specifying-gradients) +| [Plot Methods](#plot-methods) +| [Hooks](#hooks) +| [Plugins](#plugins) +| [Version number](#version-number) + +--- + +## Introduction ## + +Consider a call to the plot function: + +```js +var plot = $.plot(placeholder, data, options) +``` + +The placeholder is a jQuery object or DOM element or jQuery expression +that the plot will be put into. This placeholder needs to have its +width and height set as explained in the [README](README.md) (go read that now if +you haven't, it's short). The plot will modify some properties of the +placeholder so it's recommended you simply pass in a div that you +don't use for anything else. Make sure you check any fancy styling +you apply to the div, e.g. background images have been reported to be a +problem on IE 7. + +The plot function can also be used as a jQuery chainable property. This form +naturally can't return the plot object directly, but you can still access it +via the 'plot' data key, like this: + +```js +var plot = $("#placeholder").plot(data, options).data("plot"); +``` + +The format of the data is documented below, as is the available +options. The plot object returned from the call has some methods you +can call. These are documented separately below. + +Note that in general Flot gives no guarantees if you change any of the +objects you pass in to the plot function or get out of it since +they're not necessarily deep-copied. + + +## Data Format ## + +The data is an array of data series: + +```js +[ series1, series2, ... ] +``` + +A series can either be raw data or an object with properties. The raw +data format is an array of points: + +```js +[ [x1, y1], [x2, y2], ... ] +``` + +E.g. + +```js +[ [1, 3], [2, 14.01], [3.5, 3.14] ] +``` + +Note that to simplify the internal logic in Flot both the x and y +values must be numbers (even if specifying time series, see below for +how to do this). This is a common problem because you might retrieve +data from the database and serialize them directly to JSON without +noticing the wrong type. If you're getting mysterious errors, double +check that you're inputting numbers and not strings. + +If a null is specified as a point or if one of the coordinates is null +or couldn't be converted to a number, the point is ignored when +drawing. As a special case, a null value for lines is interpreted as a +line segment end, i.e. the points before and after the null value are +not connected. + +Lines and points take two coordinates. For filled lines and bars, you +can specify a third coordinate which is the bottom of the filled +area/bar (defaults to 0). + +The format of a single series object is as follows: + +```js +{ + color: color or number + data: rawdata + label: string + lines: specific lines options + bars: specific bars options + points: specific points options + xaxis: number + yaxis: number + clickable: boolean + hoverable: boolean + shadowSize: number + highlightColor: color or number +} +``` + +You don't have to specify any of them except the data, the rest are +options that will get default values. Typically you'd only specify +label and data, like this: + +```js +{ + label: "y = 3", + data: [[0, 3], [10, 3]] +} +``` + +The label is used for the legend, if you don't specify one, the series +will not show up in the legend. + +If you don't specify color, the series will get a color from the +auto-generated colors. The color is either a CSS color specification +(like "rgb(255, 100, 123)") or an integer that specifies which of +auto-generated colors to select, e.g. 0 will get color no. 0, etc. + +The latter is mostly useful if you let the user add and remove series, +in which case you can hard-code the color index to prevent the colors +from jumping around between the series. + +The "xaxis" and "yaxis" options specify which axis to use. The axes +are numbered from 1 (default), so { yaxis: 2} means that the series +should be plotted against the second y axis. + +"clickable" and "hoverable" can be set to false to disable +interactivity for specific series if interactivity is turned on in +the plot, see below. + +The rest of the options are all documented below as they are the same +as the default options passed in via the options parameter in the plot +commmand. When you specify them for a specific data series, they will +override the default options for the plot for that data series. + +Here's a complete example of a simple data specification: + +```js +[ { label: "Foo", data: [ [10, 1], [17, -14], [30, 5] ] }, + { label: "Bar", data: [ [11, 13], [19, 11], [30, -7] ] } +] +``` + + +## Plot Options ## + +All options are completely optional. They are documented individually +below, to change them you just specify them in an object, e.g. + +```js +var options = { + series: { + lines: { show: true }, + points: { show: true } + } +}; + +$.plot(placeholder, data, options); +``` + + +## Customizing the legend ## + +```js +legend: { + show: boolean + labelFormatter: null or (fn: string, series object -> string) + labelBoxBorderColor: color + noColumns: number + position: "ne" or "nw" or "se" or "sw" + margin: number of pixels or [x margin, y margin] + backgroundColor: null or color + backgroundOpacity: number between 0 and 1 + container: null or jQuery object/DOM element/jQuery expression + sorted: null/false, true, "ascending", "descending", "reverse", or a comparator +} +``` + +The legend is generated as a table with the data series labels and +small label boxes with the color of the series. If you want to format +the labels in some way, e.g. make them to links, you can pass in a +function for "labelFormatter". Here's an example that makes them +clickable: + +```js +labelFormatter: function(label, series) { + // series is the series object for the label + return '' + label + ''; +} +``` + +To prevent a series from showing up in the legend, simply have the function +return null. + +"noColumns" is the number of columns to divide the legend table into. +"position" specifies the overall placement of the legend within the +plot (top-right, top-left, etc.) and margin the distance to the plot +edge (this can be either a number or an array of two numbers like [x, +y]). "backgroundColor" and "backgroundOpacity" specifies the +background. The default is a partly transparent auto-detected +background. + +If you want the legend to appear somewhere else in the DOM, you can +specify "container" as a jQuery object/expression to put the legend +table into. The "position" and "margin" etc. options will then be +ignored. Note that Flot will overwrite the contents of the container. + +Legend entries appear in the same order as their series by default. If "sorted" +is "reverse" then they appear in the opposite order from their series. To sort +them alphabetically, you can specify true, "ascending" or "descending", where +true and "ascending" are equivalent. + +You can also provide your own comparator function that accepts two +objects with "label" and "color" properties, and returns zero if they +are equal, a positive value if the first is greater than the second, +and a negative value if the first is less than the second. + +```js +sorted: function(a, b) { + // sort alphabetically in ascending order + return a.label == b.label ? 0 : ( + a.label > b.label ? 1 : -1 + ) +} +``` + + +## Customizing the axes ## + +```js +xaxis, yaxis: { + show: null or true/false + position: "bottom" or "top" or "left" or "right" + mode: null or "time" ("time" requires jquery.flot.time.js plugin) + timezone: null, "browser" or timezone (only makes sense for mode: "time") + + color: null or color spec + tickColor: null or color spec + font: null or font spec object + + min: null or number + max: null or number + autoscaleMargin: null or number + + transform: null or fn: number -> number + inverseTransform: null or fn: number -> number + + ticks: null or number or ticks array or (fn: axis -> ticks array) + tickSize: number or array + minTickSize: number or array + tickFormatter: (fn: number, object -> string) or string + tickDecimals: null or number + + labelWidth: null or number + labelHeight: null or number + reserveSpace: null or true + + tickLength: null or number + + alignTicksWithAxis: null or number +} +``` + +All axes have the same kind of options. The following describes how to +configure one axis, see below for what to do if you've got more than +one x axis or y axis. + +If you don't set the "show" option (i.e. it is null), visibility is +auto-detected, i.e. the axis will show up if there's data associated +with it. You can override this by setting the "show" option to true or +false. + +The "position" option specifies where the axis is placed, bottom or +top for x axes, left or right for y axes. The "mode" option determines +how the data is interpreted, the default of null means as decimal +numbers. Use "time" for time series data; see the time series data +section. The time plugin (jquery.flot.time.js) is required for time +series support. + +The "color" option determines the color of the line and ticks for the axis, and +defaults to the grid color with transparency. For more fine-grained control you +can also set the color of the ticks separately with "tickColor". + +You can customize the font and color used to draw the axis tick labels with CSS +or directly via the "font" option. When "font" is null - the default - each +tick label is given the 'flot-tick-label' class. For compatibility with Flot +0.7 and earlier the labels are also given the 'tickLabel' class, but this is +deprecated and scheduled to be removed with the release of version 1.0.0. + +To enable more granular control over styles, labels are divided between a set +of text containers, with each holding the labels for one axis. These containers +are given the classes 'flot-[x|y]-axis', and 'flot-[x|y]#-axis', where '#' is +the number of the axis when there are multiple axes. For example, the x-axis +labels for a simple plot with only a single x-axis might look like this: + +```html +
    +
    January 2013
    + ... +
    +``` + +For direct control over label styles you can also provide "font" as an object +with this format: + +```js +{ + size: 11, + lineHeight: 13, + style: "italic", + weight: "bold", + family: "sans-serif", + variant: "small-caps", + color: "#545454" +} +``` + +The size and lineHeight must be expressed in pixels; CSS units such as 'em' +or 'smaller' are not allowed. + +The options "min"/"max" are the precise minimum/maximum value on the +scale. If you don't specify either of them, a value will automatically +be chosen based on the minimum/maximum data values. Note that Flot +always examines all the data values you feed to it, even if a +restriction on another axis may make some of them invisible (this +makes interactive use more stable). + +The "autoscaleMargin" is a bit esoteric: it's the fraction of margin +that the scaling algorithm will add to avoid that the outermost points +ends up on the grid border. Note that this margin is only applied when +a min or max value is not explicitly set. If a margin is specified, +the plot will furthermore extend the axis end-point to the nearest +whole tick. The default value is "null" for the x axes and 0.02 for y +axes which seems appropriate for most cases. + +"transform" and "inverseTransform" are callbacks you can put in to +change the way the data is drawn. You can design a function to +compress or expand certain parts of the axis non-linearly, e.g. +suppress weekends or compress far away points with a logarithm or some +other means. When Flot draws the plot, each value is first put through +the transform function. Here's an example, the x axis can be turned +into a natural logarithm axis with the following code: + +```js +xaxis: { + transform: function (v) { return Math.log(v); }, + inverseTransform: function (v) { return Math.exp(v); } +} +``` + +Similarly, for reversing the y axis so the values appear in inverse +order: + +```js +yaxis: { + transform: function (v) { return -v; }, + inverseTransform: function (v) { return -v; } +} +``` + +Note that for finding extrema, Flot assumes that the transform +function does not reorder values (it should be monotone). + +The inverseTransform is simply the inverse of the transform function +(so v == inverseTransform(transform(v)) for all relevant v). It is +required for converting from canvas coordinates to data coordinates, +e.g. for a mouse interaction where a certain pixel is clicked. If you +don't use any interactive features of Flot, you may not need it. + + +The rest of the options deal with the ticks. + +If you don't specify any ticks, a tick generator algorithm will make +some for you. The algorithm has two passes. It first estimates how +many ticks would be reasonable and uses this number to compute a nice +round tick interval size. Then it generates the ticks. + +You can specify how many ticks the algorithm aims for by setting +"ticks" to a number. The algorithm always tries to generate reasonably +round tick values so even if you ask for three ticks, you might get +five if that fits better with the rounding. If you don't want any +ticks at all, set "ticks" to 0 or an empty array. + +Another option is to skip the rounding part and directly set the tick +interval size with "tickSize". If you set it to 2, you'll get ticks at +2, 4, 6, etc. Alternatively, you can specify that you just don't want +ticks at a size less than a specific tick size with "minTickSize". +Note that for time series, the format is an array like [2, "month"], +see the next section. + +If you want to completely override the tick algorithm, you can specify +an array for "ticks", either like this: + +```js +ticks: [0, 1.2, 2.4] +``` + +Or like this where the labels are also customized: + +```js +ticks: [[0, "zero"], [1.2, "one mark"], [2.4, "two marks"]] +``` + +You can mix the two if you like. + +For extra flexibility you can specify a function as the "ticks" +parameter. The function will be called with an object with the axis +min and max and should return a ticks array. Here's a simplistic tick +generator that spits out intervals of pi, suitable for use on the x +axis for trigonometric functions: + +```js +function piTickGenerator(axis) { + var res = [], i = Math.floor(axis.min / Math.PI); + do { + var v = i * Math.PI; + res.push([v, i + "\u03c0"]); + ++i; + } while (v < axis.max); + return res; +} +``` + +You can control how the ticks look like with "tickDecimals", the +number of decimals to display (default is auto-detected). + +Alternatively, for ultimate control over how ticks are formatted you can +provide a function to "tickFormatter". The function is passed two +parameters, the tick value and an axis object with information, and +should return a string. The default formatter looks like this: + +```js +function formatter(val, axis) { + return val.toFixed(axis.tickDecimals); +} +``` + +The axis object has "min" and "max" with the range of the axis, +"tickDecimals" with the number of decimals to round the value to and +"tickSize" with the size of the interval between ticks as calculated +by the automatic axis scaling algorithm (or specified by you). Here's +an example of a custom formatter: + +```js +function suffixFormatter(val, axis) { + if (val > 1000000) + return (val / 1000000).toFixed(axis.tickDecimals) + " MB"; + else if (val > 1000) + return (val / 1000).toFixed(axis.tickDecimals) + " kB"; + else + return val.toFixed(axis.tickDecimals) + " B"; +} +``` + +"labelWidth" and "labelHeight" specifies a fixed size of the tick +labels in pixels. They're useful in case you need to align several +plots. "reserveSpace" means that even if an axis isn't shown, Flot +should reserve space for it - it is useful in combination with +labelWidth and labelHeight for aligning multi-axis charts. + +"tickLength" is the length of the tick lines in pixels. By default, the +innermost axes will have ticks that extend all across the plot, while +any extra axes use small ticks. A value of null means use the default, +while a number means small ticks of that length - set it to 0 to hide +the lines completely. + +If you set "alignTicksWithAxis" to the number of another axis, e.g. +alignTicksWithAxis: 1, Flot will ensure that the autogenerated ticks +of this axis are aligned with the ticks of the other axis. This may +improve the looks, e.g. if you have one y axis to the left and one to +the right, because the grid lines will then match the ticks in both +ends. The trade-off is that the forced ticks won't necessarily be at +natural places. + + +## Multiple axes ## + +If you need more than one x axis or y axis, you need to specify for +each data series which axis they are to use, as described under the +format of the data series, e.g. { data: [...], yaxis: 2 } specifies +that a series should be plotted against the second y axis. + +To actually configure that axis, you can't use the xaxis/yaxis options +directly - instead there are two arrays in the options: + +```js +xaxes: [] +yaxes: [] +``` + +Here's an example of configuring a single x axis and two y axes (we +can leave options of the first y axis empty as the defaults are fine): + +```js +{ + xaxes: [ { position: "top" } ], + yaxes: [ { }, { position: "right", min: 20 } ] +} +``` + +The arrays get their default values from the xaxis/yaxis settings, so +say you want to have all y axes start at zero, you can simply specify +yaxis: { min: 0 } instead of adding a min parameter to all the axes. + +Generally, the various interfaces in Flot dealing with data points +either accept an xaxis/yaxis parameter to specify which axis number to +use (starting from 1), or lets you specify the coordinate directly as +x2/x3/... or x2axis/x3axis/... instead of "x" or "xaxis". + + +## Time series data ## + +Please note that it is now required to include the time plugin, +jquery.flot.time.js, for time series support. + +Time series are a bit more difficult than scalar data because +calendars don't follow a simple base 10 system. For many cases, Flot +abstracts most of this away, but it can still be a bit difficult to +get the data into Flot. So we'll first discuss the data format. + +The time series support in Flot is based on Javascript timestamps, +i.e. everywhere a time value is expected or handed over, a Javascript +timestamp number is used. This is a number, not a Date object. A +Javascript timestamp is the number of milliseconds since January 1, +1970 00:00:00 UTC. This is almost the same as Unix timestamps, except it's +in milliseconds, so remember to multiply by 1000! + +You can see a timestamp like this + +```js +alert((new Date()).getTime()) +``` + +There are different schools of thought when it comes to display of +timestamps. Many will want the timestamps to be displayed according to +a certain time zone, usually the time zone in which the data has been +produced. Some want the localized experience, where the timestamps are +displayed according to the local time of the visitor. Flot supports +both. Optionally you can include a third-party library to get +additional timezone support. + +Default behavior is that Flot always displays timestamps according to +UTC. The reason being that the core Javascript Date object does not +support other fixed time zones. Often your data is at another time +zone, so it may take a little bit of tweaking to work around this +limitation. + +The easiest way to think about it is to pretend that the data +production time zone is UTC, even if it isn't. So if you have a +datapoint at 2002-02-20 08:00, you can generate a timestamp for eight +o'clock UTC even if it really happened eight o'clock UTC+0200. + +In PHP you can get an appropriate timestamp with: + +```php +strtotime("2002-02-20 UTC") * 1000 +``` + +In Python you can get it with something like: + +```python +calendar.timegm(datetime_object.timetuple()) * 1000 +``` +In Ruby you can get it using the `#to_i` method on the +[`Time`](http://apidock.com/ruby/Time/to_i) object. If you're using the +`active_support` gem (default for Ruby on Rails applications) `#to_i` is also +available on the `DateTime` and `ActiveSupport::TimeWithZone` objects. You +simply need to multiply the result by 1000: + +```ruby +Time.now.to_i * 1000 # => 1383582043000 +# ActiveSupport examples: +DateTime.now.to_i * 1000 # => 1383582043000 +ActiveSupport::TimeZone.new('Asia/Shanghai').now.to_i * 1000 +# => 1383582043000 +``` + +In .NET you can get it with something like: + +```aspx +public static int GetJavascriptTimestamp(System.DateTime input) +{ + System.TimeSpan span = new System.TimeSpan(System.DateTime.Parse("1/1/1970").Ticks); + System.DateTime time = input.Subtract(span); + return (long)(time.Ticks / 10000); +} +``` + +Javascript also has some support for parsing date strings, so it is +possible to generate the timestamps manually client-side. + +If you've already got the real UTC timestamp, it's too late to use the +pretend trick described above. But you can fix up the timestamps by +adding the time zone offset, e.g. for UTC+0200 you would add 2 hours +to the UTC timestamp you got. Then it'll look right on the plot. Most +programming environments have some means of getting the timezone +offset for a specific date (note that you need to get the offset for +each individual timestamp to account for daylight savings). + +The alternative with core Javascript is to interpret the timestamps +according to the time zone that the visitor is in, which means that +the ticks will shift with the time zone and daylight savings of each +visitor. This behavior is enabled by setting the axis option +"timezone" to the value "browser". + +If you need more time zone functionality than this, there is still +another option. If you include the "timezone-js" library + in the page and set axis.timezone +to a value recognized by said library, Flot will use timezone-js to +interpret the timestamps according to that time zone. + +Once you've gotten the timestamps into the data and specified "time" +as the axis mode, Flot will automatically generate relevant ticks and +format them. As always, you can tweak the ticks via the "ticks" option +- just remember that the values should be timestamps (numbers), not +Date objects. + +Tick generation and formatting can also be controlled separately +through the following axis options: + +```js +minTickSize: array +timeformat: null or format string +monthNames: null or array of size 12 of strings +dayNames: null or array of size 7 of strings +twelveHourClock: boolean +``` + +Here "timeformat" is a format string to use. You might use it like +this: + +```js +xaxis: { + mode: "time", + timeformat: "%Y/%m/%d" +} +``` + +This will result in tick labels like "2000/12/24". A subset of the +standard strftime specifiers are supported (plus the nonstandard %q): + +```js +%a: weekday name (customizable) +%b: month name (customizable) +%d: day of month, zero-padded (01-31) +%e: day of month, space-padded ( 1-31) +%H: hours, 24-hour time, zero-padded (00-23) +%I: hours, 12-hour time, zero-padded (01-12) +%m: month, zero-padded (01-12) +%M: minutes, zero-padded (00-59) +%q: quarter (1-4) +%S: seconds, zero-padded (00-59) +%y: year (two digits) +%Y: year (four digits) +%p: am/pm +%P: AM/PM (uppercase version of %p) +%w: weekday as number (0-6, 0 being Sunday) +``` + +Flot 0.8 switched from %h to the standard %H hours specifier. The %h specifier +is still available, for backwards-compatibility, but is deprecated and +scheduled to be removed permanently with the release of version 1.0. + +You can customize the month names with the "monthNames" option. For +instance, for Danish you might specify: + +```js +monthNames: ["jan", "feb", "mar", "apr", "maj", "jun", "jul", "aug", "sep", "okt", "nov", "dec"] +``` + +Similarly you can customize the weekday names with the "dayNames" +option. An example in French: + +```js +dayNames: ["dim", "lun", "mar", "mer", "jeu", "ven", "sam"] +``` + +If you set "twelveHourClock" to true, the autogenerated timestamps +will use 12 hour AM/PM timestamps instead of 24 hour. This only +applies if you have not set "timeformat". Use the "%I" and "%p" or +"%P" options if you want to build your own format string with 12-hour +times. + +If the Date object has a strftime property (and it is a function), it +will be used instead of the built-in formatter. Thus you can include +a strftime library such as http://hacks.bluesmoon.info/strftime/ for +more powerful date/time formatting. + +If everything else fails, you can control the formatting by specifying +a custom tick formatter function as usual. Here's a simple example +which will format December 24 as 24/12: + +```js +tickFormatter: function (val, axis) { + var d = new Date(val); + return d.getUTCDate() + "/" + (d.getUTCMonth() + 1); +} +``` + +Note that for the time mode "tickSize" and "minTickSize" are a bit +special in that they are arrays on the form "[value, unit]" where unit +is one of "second", "minute", "hour", "day", "month" and "year". So +you can specify + +```js +minTickSize: [1, "month"] +``` + +to get a tick interval size of at least 1 month and correspondingly, +if axis.tickSize is [2, "day"] in the tick formatter, the ticks have +been produced with two days in-between. + + +## Customizing the data series ## + +```js +series: { + lines, points, bars: { + show: boolean + lineWidth: number + fill: boolean or number + fillColor: null or color/gradient + } + + lines, bars: { + zero: boolean + } + + points: { + radius: number + symbol: "circle" or function + } + + bars: { + barWidth: number + align: "left", "right" or "center" + horizontal: boolean + } + + lines: { + steps: boolean + } + + shadowSize: number + highlightColor: color or number +} + +colors: [ color1, color2, ... ] +``` + +The options inside "series: {}" are copied to each of the series. So +you can specify that all series should have bars by putting it in the +global options, or override it for individual series by specifying +bars in a particular the series object in the array of data. + +The most important options are "lines", "points" and "bars" that +specify whether and how lines, points and bars should be shown for +each data series. In case you don't specify anything at all, Flot will +default to showing lines (you can turn this off with +lines: { show: false }). You can specify the various types +independently of each other, and Flot will happily draw each of them +in turn (this is probably only useful for lines and points), e.g. + +```js +var options = { + series: { + lines: { show: true, fill: true, fillColor: "rgba(255, 255, 255, 0.8)" }, + points: { show: true, fill: false } + } +}; +``` + +"lineWidth" is the thickness of the line or outline in pixels. You can +set it to 0 to prevent a line or outline from being drawn; this will +also hide the shadow. + +"fill" is whether the shape should be filled. For lines, this produces +area graphs. You can use "fillColor" to specify the color of the fill. +If "fillColor" evaluates to false (default for everything except +points which are filled with white), the fill color is auto-set to the +color of the data series. You can adjust the opacity of the fill by +setting fill to a number between 0 (fully transparent) and 1 (fully +opaque). + +For bars, fillColor can be a gradient, see the gradient documentation +below. "barWidth" is the width of the bars in units of the x axis (or +the y axis if "horizontal" is true), contrary to most other measures +that are specified in pixels. For instance, for time series the unit +is milliseconds so 24 * 60 * 60 * 1000 produces bars with the width of +a day. "align" specifies whether a bar should be left-aligned +(default), right-aligned or centered on top of the value it represents. +When "horizontal" is on, the bars are drawn horizontally, i.e. from the +y axis instead of the x axis; note that the bar end points are still +defined in the same way so you'll probably want to swap the +coordinates if you've been plotting vertical bars first. + +Area and bar charts normally start from zero, regardless of the data's range. +This is because they convey information through size, and starting from a +different value would distort their meaning. In cases where the fill is purely +for decorative purposes, however, "zero" allows you to override this behavior. +It defaults to true for filled lines and bars; setting it to false tells the +series to use the same automatic scaling as an un-filled line. + +For lines, "steps" specifies whether two adjacent data points are +connected with a straight (possibly diagonal) line or with first a +horizontal and then a vertical line. Note that this transforms the +data by adding extra points. + +For points, you can specify the radius and the symbol. The only +built-in symbol type is circles, for other types you can use a plugin +or define them yourself by specifying a callback: + +```js +function cross(ctx, x, y, radius, shadow) { + var size = radius * Math.sqrt(Math.PI) / 2; + ctx.moveTo(x - size, y - size); + ctx.lineTo(x + size, y + size); + ctx.moveTo(x - size, y + size); + ctx.lineTo(x + size, y - size); +} +``` + +The parameters are the drawing context, x and y coordinates of the +center of the point, a radius which corresponds to what the circle +would have used and whether the call is to draw a shadow (due to +limited canvas support, shadows are currently faked through extra +draws). It's good practice to ensure that the area covered by the +symbol is the same as for the circle with the given radius, this +ensures that all symbols have approximately the same visual weight. + +"shadowSize" is the default size of shadows in pixels. Set it to 0 to +remove shadows. + +"highlightColor" is the default color of the translucent overlay used +to highlight the series when the mouse hovers over it. + +The "colors" array specifies a default color theme to get colors for +the data series from. You can specify as many colors as you like, like +this: + +```js +colors: ["#d18b2c", "#dba255", "#919733"] +``` + +If there are more data series than colors, Flot will try to generate +extra colors by lightening and darkening colors in the theme. + + +## Customizing the grid ## + +```js +grid: { + show: boolean + aboveData: boolean + color: color + backgroundColor: color/gradient or null + margin: number or margin object + labelMargin: number + axisMargin: number + markings: array of markings or (fn: axes -> array of markings) + borderWidth: number or object with "top", "right", "bottom" and "left" properties with different widths + borderColor: color or null or object with "top", "right", "bottom" and "left" properties with different colors + minBorderMargin: number or null + clickable: boolean + hoverable: boolean + autoHighlight: boolean + mouseActiveRadius: number +} + +interaction: { + redrawOverlayInterval: number or -1 +} +``` + +The grid is the thing with the axes and a number of ticks. Many of the +things in the grid are configured under the individual axes, but not +all. "color" is the color of the grid itself whereas "backgroundColor" +specifies the background color inside the grid area, here null means +that the background is transparent. You can also set a gradient, see +the gradient documentation below. + +You can turn off the whole grid including tick labels by setting +"show" to false. "aboveData" determines whether the grid is drawn +above the data or below (below is default). + +"margin" is the space in pixels between the canvas edge and the grid, +which can be either a number or an object with individual margins for +each side, in the form: + +```js +margin: { + top: top margin in pixels + left: left margin in pixels + bottom: bottom margin in pixels + right: right margin in pixels +} +``` + +"labelMargin" is the space in pixels between tick labels and axis +line, and "axisMargin" is the space in pixels between axes when there +are two next to each other. + +"borderWidth" is the width of the border around the plot. Set it to 0 +to disable the border. Set it to an object with "top", "right", +"bottom" and "left" properties to use different widths. You can +also set "borderColor" if you want the border to have a different color +than the grid lines. Set it to an object with "top", "right", "bottom" +and "left" properties to use different colors. "minBorderMargin" controls +the default minimum margin around the border - it's used to make sure +that points aren't accidentally clipped by the canvas edge so by default +the value is computed from the point radius. + +"markings" is used to draw simple lines and rectangular areas in the +background of the plot. You can either specify an array of ranges on +the form { xaxis: { from, to }, yaxis: { from, to } } (with multiple +axes, you can specify coordinates for other axes instead, e.g. as +x2axis/x3axis/...) or with a function that returns such an array given +the axes for the plot in an object as the first parameter. + +You can set the color of markings by specifying "color" in the ranges +object. Here's an example array: + +```js +markings: [ { xaxis: { from: 0, to: 2 }, yaxis: { from: 10, to: 10 }, color: "#bb0000" }, ... ] +``` + +If you leave out one of the values, that value is assumed to go to the +border of the plot. So for example if you only specify { xaxis: { +from: 0, to: 2 } } it means an area that extends from the top to the +bottom of the plot in the x range 0-2. + +A line is drawn if from and to are the same, e.g. + +```js +markings: [ { yaxis: { from: 1, to: 1 } }, ... ] +``` + +would draw a line parallel to the x axis at y = 1. You can control the +line width with "lineWidth" in the range object. + +An example function that makes vertical stripes might look like this: + +```js +markings: function (axes) { + var markings = []; + for (var x = Math.floor(axes.xaxis.min); x < axes.xaxis.max; x += 2) + markings.push({ xaxis: { from: x, to: x + 1 } }); + return markings; +} +``` + +If you set "clickable" to true, the plot will listen for click events +on the plot area and fire a "plotclick" event on the placeholder with +a position and a nearby data item object as parameters. The coordinates +are available both in the unit of the axes (not in pixels) and in +global screen coordinates. + +Likewise, if you set "hoverable" to true, the plot will listen for +mouse move events on the plot area and fire a "plothover" event with +the same parameters as the "plotclick" event. If "autoHighlight" is +true (the default), nearby data items are highlighted automatically. +If needed, you can disable highlighting and control it yourself with +the highlight/unhighlight plot methods described elsewhere. + +You can use "plotclick" and "plothover" events like this: + +```js +$.plot($("#placeholder"), [ d ], { grid: { clickable: true } }); + +$("#placeholder").bind("plotclick", function (event, pos, item) { + alert("You clicked at " + pos.x + ", " + pos.y); + // axis coordinates for other axes, if present, are in pos.x2, pos.x3, ... + // if you need global screen coordinates, they are pos.pageX, pos.pageY + + if (item) { + highlight(item.series, item.datapoint); + alert("You clicked a point!"); + } +}); +``` + +The item object in this example is either null or a nearby object on the form: + +```js +item: { + datapoint: the point, e.g. [0, 2] + dataIndex: the index of the point in the data array + series: the series object + seriesIndex: the index of the series + pageX, pageY: the global screen coordinates of the point +} +``` + +For instance, if you have specified the data like this + +```js +$.plot($("#placeholder"), [ { label: "Foo", data: [[0, 10], [7, 3]] } ], ...); +``` + +and the mouse is near the point (7, 3), "datapoint" is [7, 3], +"dataIndex" will be 1, "series" is a normalized series object with +among other things the "Foo" label in series.label and the color in +series.color, and "seriesIndex" is 0. Note that plugins and options +that transform the data can shift the indexes from what you specified +in the original data array. + +If you use the above events to update some other information and want +to clear out that info in case the mouse goes away, you'll probably +also need to listen to "mouseout" events on the placeholder div. + +"mouseActiveRadius" specifies how far the mouse can be from an item +and still activate it. If there are two or more points within this +radius, Flot chooses the closest item. For bars, the top-most bar +(from the latest specified data series) is chosen. + +If you want to disable interactivity for a specific data series, you +can set "hoverable" and "clickable" to false in the options for that +series, like this: + +```js +{ data: [...], label: "Foo", clickable: false } +``` + +"redrawOverlayInterval" specifies the maximum time to delay a redraw +of interactive things (this works as a rate limiting device). The +default is capped to 60 frames per second. You can set it to -1 to +disable the rate limiting. + + +## Specifying gradients ## + +A gradient is specified like this: + +```js +{ colors: [ color1, color2, ... ] } +``` + +For instance, you might specify a background on the grid going from +black to gray like this: + +```js +grid: { + backgroundColor: { colors: ["#000", "#999"] } +} +``` + +For the series you can specify the gradient as an object that +specifies the scaling of the brightness and the opacity of the series +color, e.g. + +```js +{ colors: [{ opacity: 0.8 }, { brightness: 0.6, opacity: 0.8 } ] } +``` + +where the first color simply has its alpha scaled, whereas the second +is also darkened. For instance, for bars the following makes the bars +gradually disappear, without outline: + +```js +bars: { + show: true, + lineWidth: 0, + fill: true, + fillColor: { colors: [ { opacity: 0.8 }, { opacity: 0.1 } ] } +} +``` + +Flot currently only supports vertical gradients drawn from top to +bottom because that's what works with IE. + + +## Plot Methods ## + +The Plot object returned from the plot function has some methods you +can call: + + - highlight(series, datapoint) + + Highlight a specific datapoint in the data series. You can either + specify the actual objects, e.g. if you got them from a + "plotclick" event, or you can specify the indices, e.g. + highlight(1, 3) to highlight the fourth point in the second series + (remember, zero-based indexing). + + - unhighlight(series, datapoint) or unhighlight() + + Remove the highlighting of the point, same parameters as + highlight. + + If you call unhighlight with no parameters, e.g. as + plot.unhighlight(), all current highlights are removed. + + - setData(data) + + You can use this to reset the data used. Note that axis scaling, + ticks, legend etc. will not be recomputed (use setupGrid() to do + that). You'll probably want to call draw() afterwards. + + You can use this function to speed up redrawing a small plot if + you know that the axes won't change. Put in the new data with + setData(newdata), call draw(), and you're good to go. Note that + for large datasets, almost all the time is consumed in draw() + plotting the data so in this case don't bother. + + - setupGrid() + + Recalculate and set axis scaling, ticks, legend etc. + + Note that because of the drawing model of the canvas, this + function will immediately redraw (actually reinsert in the DOM) + the labels and the legend, but not the actual tick lines because + they're drawn on the canvas. You need to call draw() to get the + canvas redrawn. + + - draw() + + Redraws the plot canvas. + + - triggerRedrawOverlay() + + Schedules an update of an overlay canvas used for drawing + interactive things like a selection and point highlights. This + is mostly useful for writing plugins. The redraw doesn't happen + immediately, instead a timer is set to catch multiple successive + redraws (e.g. from a mousemove). You can get to the overlay by + setting up a drawOverlay hook. + + - width()/height() + + Gets the width and height of the plotting area inside the grid. + This is smaller than the canvas or placeholder dimensions as some + extra space is needed (e.g. for labels). + + - offset() + + Returns the offset of the plotting area inside the grid relative + to the document, useful for instance for calculating mouse + positions (event.pageX/Y minus this offset is the pixel position + inside the plot). + + - pointOffset({ x: xpos, y: ypos }) + + Returns the calculated offset of the data point at (x, y) in data + space within the placeholder div. If you are working with multiple + axes, you can specify the x and y axis references, e.g. + + ```js + o = pointOffset({ x: xpos, y: ypos, xaxis: 2, yaxis: 3 }) + // o.left and o.top now contains the offset within the div + ```` + + - resize() + + Tells Flot to resize the drawing canvas to the size of the + placeholder. You need to run setupGrid() and draw() afterwards as + canvas resizing is a destructive operation. This is used + internally by the resize plugin. + + - shutdown() + + Cleans up any event handlers Flot has currently registered. This + is used internally. + +There are also some members that let you peek inside the internal +workings of Flot which is useful in some cases. Note that if you change +something in the objects returned, you're changing the objects used by +Flot to keep track of its state, so be careful. + + - getData() + + Returns an array of the data series currently used in normalized + form with missing settings filled in according to the global + options. So for instance to find out what color Flot has assigned + to the data series, you could do this: + + ```js + var series = plot.getData(); + for (var i = 0; i < series.length; ++i) + alert(series[i].color); + ``` + + A notable other interesting field besides color is datapoints + which has a field "points" with the normalized data points in a + flat array (the field "pointsize" is the increment in the flat + array to get to the next point so for a dataset consisting only of + (x,y) pairs it would be 2). + + - getAxes() + + Gets an object with the axes. The axes are returned as the + attributes of the object, so for instance getAxes().xaxis is the + x axis. + + Various things are stuffed inside an axis object, e.g. you could + use getAxes().xaxis.ticks to find out what the ticks are for the + xaxis. Two other useful attributes are p2c and c2p, functions for + transforming from data point space to the canvas plot space and + back. Both returns values that are offset with the plot offset. + Check the Flot source code for the complete set of attributes (or + output an axis with console.log() and inspect it). + + With multiple axes, the extra axes are returned as x2axis, x3axis, + etc., e.g. getAxes().y2axis is the second y axis. You can check + y2axis.used to see whether the axis is associated with any data + points and y2axis.show to see if it is currently shown. + + - getPlaceholder() + + Returns placeholder that the plot was put into. This can be useful + for plugins for adding DOM elements or firing events. + + - getCanvas() + + Returns the canvas used for drawing in case you need to hack on it + yourself. You'll probably need to get the plot offset too. + + - getPlotOffset() + + Gets the offset that the grid has within the canvas as an object + with distances from the canvas edges as "left", "right", "top", + "bottom". I.e., if you draw a circle on the canvas with the center + placed at (left, top), its center will be at the top-most, left + corner of the grid. + + - getOptions() + + Gets the options for the plot, normalized, with default values + filled in. You get a reference to actual values used by Flot, so + if you modify the values in here, Flot will use the new values. + If you change something, you probably have to call draw() or + setupGrid() or triggerRedrawOverlay() to see the change. + + +## Hooks ## + +In addition to the public methods, the Plot object also has some hooks +that can be used to modify the plotting process. You can install a +callback function at various points in the process, the function then +gets access to the internal data structures in Flot. + +Here's an overview of the phases Flot goes through: + + 1. Plugin initialization, parsing options + + 2. Constructing the canvases used for drawing + + 3. Set data: parsing data specification, calculating colors, + copying raw data points into internal format, + normalizing them, finding max/min for axis auto-scaling + + 4. Grid setup: calculating axis spacing, ticks, inserting tick + labels, the legend + + 5. Draw: drawing the grid, drawing each of the series in turn + + 6. Setting up event handling for interactive features + + 7. Responding to events, if any + + 8. Shutdown: this mostly happens in case a plot is overwritten + +Each hook is simply a function which is put in the appropriate array. +You can add them through the "hooks" option, and they are also available +after the plot is constructed as the "hooks" attribute on the returned +plot object, e.g. + +```js + // define a simple draw hook + function hellohook(plot, canvascontext) { alert("hello!"); }; + + // pass it in, in an array since we might want to specify several + var plot = $.plot(placeholder, data, { hooks: { draw: [hellohook] } }); + + // we can now find it again in plot.hooks.draw[0] unless a plugin + // has added other hooks +``` + +The available hooks are described below. All hook callbacks get the +plot object as first parameter. You can find some examples of defined +hooks in the plugins bundled with Flot. + + - processOptions [phase 1] + + ```function(plot, options)``` + + Called after Flot has parsed and merged options. Useful in the + instance where customizations beyond simple merging of default + values is needed. A plugin might use it to detect that it has been + enabled and then turn on or off other options. + + + - processRawData [phase 3] + + ```function(plot, series, data, datapoints)``` + + Called before Flot copies and normalizes the raw data for the given + series. If the function fills in datapoints.points with normalized + points and sets datapoints.pointsize to the size of the points, + Flot will skip the copying/normalization step for this series. + + In any case, you might be interested in setting datapoints.format, + an array of objects for specifying how a point is normalized and + how it interferes with axis scaling. It accepts the following options: + + ```js + { + x, y: boolean, + number: boolean, + required: boolean, + defaultValue: value, + autoscale: boolean + } + ``` + + "x" and "y" specify whether the value is plotted against the x or y axis, + and is currently used only to calculate axis min-max ranges. The default + format array, for example, looks like this: + + ```js + [ + { x: true, number: true, required: true }, + { y: true, number: true, required: true } + ] + ``` + + This indicates that a point, i.e. [0, 25], consists of two values, with the + first being plotted on the x axis and the second on the y axis. + + If "number" is true, then the value must be numeric, and is set to null if + it cannot be converted to a number. + + "defaultValue" provides a fallback in case the original value is null. This + is for instance handy for bars, where one can omit the third coordinate + (the bottom of the bar), which then defaults to zero. + + If "required" is true, then the value must exist (be non-null) for the + point as a whole to be valid. If no value is provided, then the entire + point is cleared out with nulls, turning it into a gap in the series. + + "autoscale" determines whether the value is considered when calculating an + automatic min-max range for the axes that the value is plotted against. + + - processDatapoints [phase 3] + + ```function(plot, series, datapoints)``` + + Called after normalization of the given series but before finding + min/max of the data points. This hook is useful for implementing data + transformations. "datapoints" contains the normalized data points in + a flat array as datapoints.points with the size of a single point + given in datapoints.pointsize. Here's a simple transform that + multiplies all y coordinates by 2: + + ```js + function multiply(plot, series, datapoints) { + var points = datapoints.points, ps = datapoints.pointsize; + for (var i = 0; i < points.length; i += ps) + points[i + 1] *= 2; + } + ``` + + Note that you must leave datapoints in a good condition as Flot + doesn't check it or do any normalization on it afterwards. + + - processOffset [phase 4] + + ```function(plot, offset)``` + + Called after Flot has initialized the plot's offset, but before it + draws any axes or plot elements. This hook is useful for customizing + the margins between the grid and the edge of the canvas. "offset" is + an object with attributes "top", "bottom", "left" and "right", + corresponding to the margins on the four sides of the plot. + + - drawBackground [phase 5] + + ```function(plot, canvascontext)``` + + Called before all other drawing operations. Used to draw backgrounds + or other custom elements before the plot or axes have been drawn. + + - drawSeries [phase 5] + + ```function(plot, canvascontext, series)``` + + Hook for custom drawing of a single series. Called just before the + standard drawing routine has been called in the loop that draws + each series. + + - draw [phase 5] + + ```function(plot, canvascontext)``` + + Hook for drawing on the canvas. Called after the grid is drawn + (unless it's disabled or grid.aboveData is set) and the series have + been plotted (in case any points, lines or bars have been turned + on). For examples of how to draw things, look at the source code. + + - bindEvents [phase 6] + + ```function(plot, eventHolder)``` + + Called after Flot has setup its event handlers. Should set any + necessary event handlers on eventHolder, a jQuery object with the + canvas, e.g. + + ```js + function (plot, eventHolder) { + eventHolder.mousedown(function (e) { + alert("You pressed the mouse at " + e.pageX + " " + e.pageY); + }); + } + ``` + + Interesting events include click, mousemove, mouseup/down. You can + use all jQuery events. Usually, the event handlers will update the + state by drawing something (add a drawOverlay hook and call + triggerRedrawOverlay) or firing an externally visible event for + user code. See the crosshair plugin for an example. + + Currently, eventHolder actually contains both the static canvas + used for the plot itself and the overlay canvas used for + interactive features because some versions of IE get the stacking + order wrong. The hook only gets one event, though (either for the + overlay or for the static canvas). + + Note that custom plot events generated by Flot are not generated on + eventHolder, but on the div placeholder supplied as the first + argument to the plot call. You can get that with + plot.getPlaceholder() - that's probably also the one you should use + if you need to fire a custom event. + + - drawOverlay [phase 7] + + ```function (plot, canvascontext)``` + + The drawOverlay hook is used for interactive things that need a + canvas to draw on. The model currently used by Flot works the way + that an extra overlay canvas is positioned on top of the static + canvas. This overlay is cleared and then completely redrawn + whenever something interesting happens. This hook is called when + the overlay canvas is to be redrawn. + + "canvascontext" is the 2D context of the overlay canvas. You can + use this to draw things. You'll most likely need some of the + metrics computed by Flot, e.g. plot.width()/plot.height(). See the + crosshair plugin for an example. + + - shutdown [phase 8] + + ```function (plot, eventHolder)``` + + Run when plot.shutdown() is called, which usually only happens in + case a plot is overwritten by a new plot. If you're writing a + plugin that adds extra DOM elements or event handlers, you should + add a callback to clean up after you. Take a look at the section in + the [PLUGINS](PLUGINS.md) document for more info. + + +## Plugins ## + +Plugins extend the functionality of Flot. To use a plugin, simply +include its Javascript file after Flot in the HTML page. + +If you're worried about download size/latency, you can concatenate all +the plugins you use, and Flot itself for that matter, into one big file +(make sure you get the order right), then optionally run it through a +Javascript minifier such as YUI Compressor. + +Here's a brief explanation of how the plugin plumbings work: + +Each plugin registers itself in the global array $.plot.plugins. When +you make a new plot object with $.plot, Flot goes through this array +calling the "init" function of each plugin and merging default options +from the "option" attribute of the plugin. The init function gets a +reference to the plot object created and uses this to register hooks +and add new public methods if needed. + +See the [PLUGINS](PLUGINS.md) document for details on how to write a plugin. As the +above description hints, it's actually pretty easy. + + +## Version number ## + +The version number of Flot is available in ```$.plot.version```. diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/CONTRIBUTING.md b/SpringBootHomework/target/classes/static/assets/plugins/flot/CONTRIBUTING.md new file mode 100644 index 0000000..92067b2 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/CONTRIBUTING.md @@ -0,0 +1,98 @@ +## Contributing to Flot ## + +We welcome all contributions, but following these guidelines results in less +work for us, and a faster and better response. + +### Issues ### + +Issues are not a way to ask general questions about Flot. If you see unexpected +behavior but are not 100% certain that it is a bug, please try posting to the +[forum](http://groups.google.com/group/flot-graphs) first, and confirm that +what you see is really a Flot problem before creating a new issue for it. When +reporting a bug, please include a working demonstration of the problem, if +possible, or at least a clear description of the options you're using and the +environment (browser and version, jQuery version, other libraries) that you're +running under. + +If you have suggestions for new features, or changes to existing ones, we'd +love to hear them! Please submit each suggestion as a separate new issue. + +If you would like to work on an existing issue, please make sure it is not +already assigned to someone else. If an issue is assigned to someone, that +person has already started working on it. So, pick unassigned issues to prevent +duplicated effort. + +### Pull Requests ### + +To make merging as easy as possible, please keep these rules in mind: + + 1. Submit new features or architectural changes to the *<version>-work* + branch for the next major release. Submit bug fixes to the master branch. + + 2. Divide larger changes into a series of small, logical commits with + descriptive messages. + + 3. Rebase, if necessary, before submitting your pull request, to reduce the + work we need to do to merge it. + + 4. Format your code according to the style guidelines below. + +### Flot Style Guidelines ### + +Flot follows the [jQuery Core Style Guidelines](http://docs.jquery.com/JQuery_Core_Style_Guidelines), +with the following updates and exceptions: + +#### Spacing #### + +Use four-space indents, no tabs. Do not add horizontal space around parameter +lists, loop definitions, or array/object indices. For example: + +```js + for ( var i = 0; i < data.length; i++ ) { // This block is wrong! + if ( data[ i ] > 1 ) { + data[ i ] = 2; + } + } + + for (var i = 0; i < data.length; i++) { // This block is correct! + if (data[i] > 1) { + data[i] = 2; + } + } +``` + +#### Comments #### + +Use [jsDoc](http://usejsdoc.org) comments for all file and function headers. +Use // for all inline and block comments, regardless of length. + +All // comment blocks should have an empty line above *and* below them. For +example: + +```js + var a = 5; + + // We're going to loop here + // TODO: Make this loop faster, better, stronger! + + for (var x = 0; x < 10; x++) {} +``` + +#### Wrapping #### + +Block comments should be wrapped at 80 characters. + +Code should attempt to wrap at 80 characters, but may run longer if wrapping +would hurt readability more than having to scroll horizontally. This is a +judgement call made on a situational basis. + +Statements containing complex logic should not be wrapped arbitrarily if they +do not exceed 80 characters. For example: + +```js + if (a == 1 && // This block is wrong! + b == 2 && + c == 3) {} + + if (a == 1 && b == 2 && c == 3) {} // This block is correct! +``` diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/FAQ.md b/SpringBootHomework/target/classes/static/assets/plugins/flot/FAQ.md new file mode 100644 index 0000000..7501625 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/FAQ.md @@ -0,0 +1,75 @@ +## Frequently asked questions ## + +#### How much data can Flot cope with? #### + +Flot will happily draw everything you send to it so the answer +depends on the browser. The excanvas emulation used for IE (built with +VML) makes IE by far the slowest browser so be sure to test with that +if IE users are in your target group (for large plots in IE, you can +also check out Flashcanvas which may be faster). + +1000 points is not a problem, but as soon as you start having more +points than the pixel width, you should probably start thinking about +downsampling/aggregation as this is near the resolution limit of the +chart anyway. If you downsample server-side, you also save bandwidth. + + +#### Flot isn't working when I'm using JSON data as source! #### + +Actually, Flot loves JSON data, you just got the format wrong. +Double check that you're not inputting strings instead of numbers, +like [["0", "-2.13"], ["5", "4.3"]]. This is most common mistake, and +the error might not show up immediately because Javascript can do some +conversion automatically. + + +#### Can I export the graph? #### + +You can grab the image rendered by the canvas element used by Flot +as a PNG or JPEG (remember to set a background). Note that it won't +include anything not drawn in the canvas (such as the legend). And it +doesn't work with excanvas which uses VML, but you could try +Flashcanvas. + + +#### The bars are all tiny in time mode? #### + +It's not really possible to determine the bar width automatically. +So you have to set the width with the barWidth option which is NOT in +pixels, but in the units of the x axis (or the y axis for horizontal +bars). For time mode that's milliseconds so the default value of 1 +makes the bars 1 millisecond wide. + + +#### Can I use Flot with libraries like Mootools or Prototype? #### + +Yes, Flot supports it out of the box and it's easy! Just use jQuery +instead of $, e.g. call jQuery.plot instead of $.plot and use +jQuery(something) instead of $(something). As a convenience, you can +put in a DOM element for the graph placeholder where the examples and +the API documentation are using jQuery objects. + +Depending on how you include jQuery, you may have to add one line of +code to prevent jQuery from overwriting functions from the other +libraries, see the documentation in jQuery ("Using jQuery with other +libraries") for details. + + +#### Flot doesn't work with [insert name of Javascript UI framework]! #### + +Flot is using standard HTML to make charts. If this is not working, +it's probably because the framework you're using is doing something +weird with the DOM or with the CSS that is interfering with Flot. + +A common problem is that there's display:none on a container until the +user does something. Many tab widgets work this way, and there's +nothing wrong with it - you just can't call Flot inside a display:none +container as explained in the README so you need to hold off the Flot +call until the container is actually displayed (or use +visibility:hidden instead of display:none or move the container +off-screen). + +If you find there's a specific thing we can do to Flot to help, feel +free to submit a bug report. Otherwise, you're welcome to ask for help +on the forum/mailing list, but please don't submit a bug report to +Flot. diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/Makefile b/SpringBootHomework/target/classes/static/assets/plugins/flot/Makefile new file mode 100644 index 0000000..c3aba86 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/Makefile @@ -0,0 +1,12 @@ +# Makefile for generating minified files + +.PHONY: all + +# we cheat and process all .js files instead of an exhaustive list +all: $(patsubst %.js,%.min.js,$(filter-out %.min.js,$(wildcard *.js))) + +%.min.js: %.js + yui-compressor $< -o $@ + +test: + ./node_modules/.bin/jshint *jquery.flot.js diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/NEWS.md b/SpringBootHomework/target/classes/static/assets/plugins/flot/NEWS.md new file mode 100644 index 0000000..9858f82 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/NEWS.md @@ -0,0 +1,1026 @@ +## Flot 0.8.3 ## + +### Changes ### + +- Updated example code to avoid encouraging unnecessary re-plots. + (patch by soenter, pull request #1221) + +### Bug fixes ### + + - Added a work-around to disable the allocation of extra space for first and + last axis ticks, allowing plots to span the full width of their container. + A proper solution for this bug will be implemented in the 0.9 release. + (reported by Josh Pigford and andig, issue #1212, pull request #1290) + + - Fixed a regression introduced in 0.8.1, where the last tick label would + sometimes wrap rather than extending the plot's offset to create space. + (reported by Elite Gamer, issue #1283) + + - Fixed a regression introduced in 0.8.2, where the resize plugin would use + unexpectedly high amounts of CPU even when idle. + (reported by tommie, issue #1277, pull request #1289) + + - Fixed the selection example to work with jQuery 1.9.x and later. + (reported by EGLadona and dmfalke, issue #1250, pull request #1285) + + - Added a detach shim to fix support for jQuery versions earlier than 1.4.x. + (reported by ngavard, issue #1240, pull request #1286) + + - Fixed a rare 'Uncaught TypeError' when using the resize plugin in IE 7/8. + (reported by tleish, issue #1265, pull request #1289) + + - Fixed zoom constraints to apply only in the direction of the zoom. + (patch by Neil Katin, issue #1204, pull request #1205) + + - Markings lines are no longer blurry when drawn on pixel boundaries. + (reported by btccointicker and Rouillard, issue #1210) + + - Don't discard original pie data-series values when combining slices. + (patch by Phil Tsarik, pull request #1238) + + - Fixed broken auto-scale behavior when using deprecated [x|y]2axis options. + (reported by jorese, issue #1228, pull request #1284) + + - Exposed the dateGenerator function on the plot object, as it used to be + before time-mode was moved into a separate plugin. + (patch by Paolo Valleri, pull request #1028) + + +## Flot 0.8.2 ## + +### Changes ### + + - Added a plot.destroy method as a way to free memory when emptying the plot + placeholder and then re-using it for some other purpose. + (patch by Thodoris Greasidis, issue #1129, pull request #1130) + + - Added a table of contents and PLUGINS link to the API documentation. + (patches by Brian Peiris, pull requests #1064 and #1127) + + - Added Ruby code examples for time conversion. + (patch by Mike Połtyn, pull request #1182) + + - Minor improvements to API.md and README.md. + (patches by Patrik Ragnarsson, pull requests #1085 and #1086) + + - Updated inlined jQuery Resize to the latest version to fix errors. + (reported by Matthew Sabol and sloker, issues #997 ad #1081) + +### Bug fixes ### + + - Fixed an unexpected change in behavior that resulted in duplicate tick + labels when using a plugin, like flot-tickrotor, that overrode tick labels. + (patch by Mark Cote, pull request #1091) + + - Fixed a regression from 0.7 where axis labels were given the wrong width, + causing them to overlap at certain scales and ignore the labelWidth option. + (patch by Benjamin Gram, pull request #1177) + + - Fixed a bug where the second axis in an xaxes/yaxes array incorrectly had + its 'innermost' property set to false or undefined, even if it was on the + other side of the plot from the first axis. This resulted in the axis bar + being visible when it shouldn't have been, which was especially obvious + when the grid had a left/right border width of zero. + (reported by Teq1, fix researched by ryleyb, issue #1056) + + - Fixed an error when using a placeholder that has no font-size property. + (patch by Craig Oldford, pull request #1135) + + - Fixed a regression from 0.7 where nulls at the end of a series were ignored + for purposes of determing the range of the x-axis. + (reported by Munsifali Rashid, issue #1095) + + - If a font size is provided, base the default lineHeight on that size rather + that the font size of the plot placeholder, which may be very different. + (reported by Daniel Hoffmann Bernardes, issue #1131, pull request #1199) + + - Fix broken highlighting for right-aligned bars. + (reported by BeWiBu and Mihai Stanciu, issues #975 and #1093, with further + assistance by Eric Byers, pull request #1120) + + - Prevent white circles from sometimes showing up inside of pie charts. + (reported by Pierre Dubois and Jack Klink, issues #1128 and #1073) + + - Label formatting no longer breaks when a page contains multiple pie charts. + (reported by Brend Wanders, issue #1055) + + - When using multiple axes on opposite sides of the plot, the innermost axis + coming later in the list no longer has its bar drawn incorrectly. + (reported by ryleyb, issue #1056) + + - When removing series labels and redrawing the plot, the legend now updates + correctly even when using an external container. + (patch by Luis Silva, issue #1159, pull request #1160) + + - The pie plugin no longer ignores the value of the left offset option. + (reported by melanker, issue #1136) + + - Fixed a regression from 0.7, where extra padding was added unnecessarily to + sides of the plot where there was no last tick label. + (reported by sknob001, issue #1048, pull request #1200) + + - Fixed incorrect tooltip behavior in the interacting example. + (patch by cleroux, issue #686, pull request #1074) + + - Fixed an error in CSS color extraction with elements outside the DOM. + (patch by execjosh, pull request #1084) + + - Fixed :not selector error when using jQuery without Sizzle. + (patch by Anthony Ryan, pull request #1180) + + - Worked around a browser issue that caused bars to appear un-filled. + (reported by irbian, issue #915) + +## Flot 0.8.1 ## + +### Bug fixes ### + + - Fixed a regression in the time plugin, introduced in 0.8, that caused dates + to align to the minute rather than to the highest appropriate unit. This + caused many x-axes in 0.8 to have different ticks than they did in 0.7. + (reported by Tom Sheppard, patch by Daniel Shapiro, issue #1017, pull + request #1023) + + - Fixed a regression in text rendering, introduced in 0.8, that caused axis + labels with the same text as another label on the same axis to disappear. + More generally, it's again possible to have the same text in two locations. + (issue #1032) + + - Fixed a regression in text rendering, introduced in 0.8, where axis labels + were no longer assigned an explicit width, and their text could not wrap. + (reported by sabregreen, issue #1019) + + - Fixed a regression in the pie plugin, introduced in 0.8, that prevented it + from accepting data in the format '[[x, y]]'. + (patch by Nicolas Morel, pull request #1024) + + - The 'zero' series option and 'autoscale' format option are no longer + ignored when the series contains a null value. + (reported by Daniel Shapiro, issue #1033) + + - Avoid triggering the time-mode plugin exception when there are zero series. + (reported by Daniel Rothig, patch by Mark Raymond, issue #1016) + + - When a custom color palette has fewer colors than the default palette, Flot + no longer fills out the colors with the remainder of the default. + (patch by goorpy, issue #1031, pull request #1034) + + - Fixed missing update for bar highlights after a zoom or other redraw. + (reported by Paolo Valleri, issue #1030) + + - Fixed compatibility with jQuery versions earlier than 1.7. + (patch by Lee Willis, issue #1027, pull request #1027) + + - The mouse wheel no longer scrolls the page when using the navigate plugin. + (patch by vird, pull request #1020) + + - Fixed missing semicolons in the core library. + (reported by Michal Zglinski) + + +## Flot 0.8.0 ## + +### API changes ### + +Support for time series has been moved into a plugin, jquery.flot.time.js. +This results in less code if time series are not used. The functionality +remains the same (plus timezone support, as described below); however, the +plugin must be included if axis.mode is set to "time". + +When the axis mode is "time", the axis option "timezone" can be set to null, +"browser", or a particular timezone (e.g. "America/New_York") to control how +the dates are displayed. If null, the dates are displayed as UTC. If +"browser", the dates are displayed in the time zone of the user's browser. + +Date/time formatting has changed and now follows a proper subset of the +standard strftime specifiers, plus one nonstandard specifier for quarters. +Additionally, if a strftime function is found in the Date object's prototype, +it will be used instead of the built-in formatter. + +Axis tick labels now use the class 'flot-tick-label' instead of 'tickLabel'. +The text containers for each axis now use the classes 'flot-[x|y]-axis' and +'flot-[x|y]#-axis' instead of '[x|y]Axis' and '[x|y]#Axis'. For compatibility +with Flot 0.7 and earlier text will continue to use the old classes as well, +but they are considered deprecated and will be removed in a future version. + +In previous versions the axis 'color' option was used to set the color of tick +marks and their label text. It now controls the color of the axis line, which +previously could not be changed separately, and continues to act as a default +for the tick-mark color. The color of tick label text is now set either by +overriding the 'flot-tick-label' CSS rule or via the axis 'font' option. + +A new plugin, jquery.flot.canvas.js, allows axis tick labels to be rendered +directly to the canvas, rather than using HTML elements. This feature can be +toggled with a simple option, making it easy to create interactive plots in the +browser using HTML, then re-render them to canvas for export as an image. + +The plugin tries to remain as faithful as possible to the original HTML render, +and goes so far as to automatically extract styles from CSS, to avoid having to +provide a separate set of styles when rendering to canvas. Due to limitations +of the canvas text API, the plugin cannot reproduce certain features, including +HTML markup embedded in labels, and advanced text styles such as 'em' units. + +The plugin requires support for canvas text, which may not be present in some +older browsers, even if they support the canvas tag itself. To use the plugin +with these browsers try using a shim such as canvas-text or FlashCanvas. + +The base and overlay canvas are now using the CSS classes "flot-base" and +"flot-overlay" to prevent accidental clashes (issue 540). + +### Changes ### + + - Addition of nonstandard %q specifier to date/time formatting. (patch + by risicle, issue 49) + + - Date/time formatting follows proper subset of strftime specifiers, and + support added for Date.prototype.strftime, if found. (patch by Mark Cote, + issues 419 and 558) + + - Fixed display of year ticks. (patch by Mark Cote, issue 195) + + - Support for time series moved to plugin. (patch by Mark Cote) + + - Display time series in different time zones. (patch by Knut Forkalsrud, + issue 141) + + - Added a canvas plugin to enable rendering axis tick labels to the canvas. + (sponsored by YCharts.com, implementation by Ole Laursen and David Schnur) + + - Support for setting the interval between redraws of the overlay canvas with + redrawOverlayInterval. (suggested in issue 185) + + - Support for multiple thresholds in thresholds plugin. (patch by Arnaud + Bellec, issue 523) + + - Support for plotting categories/textual data directly with new categories + plugin. + + - Tick generators now get the whole axis rather than just min/max. + + - Added processOffset and drawBackground hooks. (suggested in issue 639) + + - Added a grid "margin" option to set the space between the canvas edge and + the grid. + + - Prevent the pie example page from generating single-slice pies. (patch by + Shane Reustle) + + - In addition to "left" and "center", bars now recognize "right" as an + alignment option. (patch by Michael Mayer, issue 520) + + - Switched from toFixed to a much faster default tickFormatter. (patch by + Clemens Stolle) + + - Added to a more helpful error when using a time-mode axis without including + the flot.time plugin. (patch by Yael Elmatad) + + - Added a legend "sorted" option to control sorting of legend entries + independent of their series order. (patch by Tom Cleaveland) + + - Added a series "highlightColor" option to control the color of the + translucent overlay that identifies the dataset when the mouse hovers over + it. (patch by Eric Wendelin and Nate Abele, issues 168 and 299) + + - Added a plugin jquery.flot.errorbars, with an accompanying example, that + adds the ability to plot error bars, commonly used in many kinds of + statistical data visualizations. (patch by Rui Pereira, issue 215) + + - The legend now omits entries whose labelFormatter returns null. (patch by + Tom Cleaveland, Christopher Lambert, and Simon Strandgaard) + + - Added support for high pixel density (retina) displays, resulting in much + crisper charts on such devices. (patch by Olivier Guerriat, additional + fixes by Julien Thomas, maimairel, and Lau Bech Lauritzen) + + - Added the ability to control pie shadow position and alpha via a new pie + 'shadow' option. (patch by Julien Thomas, pull request #78) + + - Added the ability to set width and color for individual sides of the grid. + (patch by Ara Anjargolian, additional fixes by Karl Swedberg, pull requests #855 + and #880) + + - The selection plugin's getSelection now returns null when the selection + has been cleared. (patch by Nick Campbell, pull request #852) + + - Added a new option called 'zero' to bars and filled lines series, to control + whether the y-axis minimum is scaled to fit the data or set to zero. + (patch by David Schnur, issues #316, #529, and #856, pull request #911) + + - The plot function is now also a jQuery chainable property. + (patch by David Schnur, issues #734 and #816, pull request #953) + + - When only a single pie slice is beneath the combine threshold it is no longer + replaced by an 'other' slice. (suggested by Devin Bayer, issue #638) + + - Added lineJoin and minSize options to the selection plugin to control the + corner style and minimum size of the selection, respectively. + (patch by Ruth Linehan, pull request #963) + +### Bug fixes ### + + - Fix problem with null values and pie plugin. (patch by gcruxifix, + issue 500) + + - Fix problem with threshold plugin and bars. (based on patch by + kaarlenkaski, issue 348) + + - Fix axis box calculations so the boxes include the outermost part of the + labels too. + + - Fix problem with event clicking and hovering in IE 8 by updating Excanvas + and removing previous work-around. (test case by Ara Anjargolian) + + - Fix issues with blurry 1px border when some measures aren't integer. + (reported by Ara Anjargolian) + + - Fix bug with formats in the data processor. (reported by Peter Hull, + issue 534) + + - Prevent i from being declared global in extractRange. (reported by + Alexander Obukhov, issue 627) + + - Throw errors in a more cross-browser-compatible manner. (patch by + Eddie Kay) + + - Prevent pie slice outlines from being drawn when the stroke width is zero. + (reported by Chris Minett, issue 585) + + - Updated the navigate plugin's inline copy of jquery.mousewheel to fix + Webkit zoom problems. (reported by Hau Nguyen, issue 685) + + - Axis labels no longer appear as decimals rather than integers in certain + cases. (patch by Clemens Stolle, issue 541) + + - Automatic color generation no longer produces only whites and blacks when + there are many series. (patch by David Schnur and Tom Cleaveland) + + - Fixed an error when custom tick labels weren't provided as strings. (patch + by Shad Downey) + + - Prevented the local insertSteps and fmt variables from becoming global. + (first reported by Marc Bennewitz and Szymon Barglowski, patch by Nick + Campbell, issues #825 and #831, pull request #851) + + - Prevented several threshold plugin variables from becoming global. (patch + by Lasse Dahl Ebert) + + - Fixed various jQuery 1.8 compatibility issues. (issues #814 and #819, + pull request #877) + + - Pie charts with a slice equal to or approaching 100% of the pie no longer + appear invisible. (patch by David Schnur, issues #444, #658, #726, #824 + and #850, pull request #879) + + - Prevented several local variables from becoming global. (patch by aaa707) + + - Ensure that the overlay and primary canvases remain aligned. (issue #670, + pull request #901) + + - Added support for jQuery 1.9 by removing and replacing uses of $.browser. + (analysis and patch by Anthony Ryan, pull request #905) + + - Pie charts no longer disappear when redrawn during a resize or update. + (reported by Julien Bec, issue #656, pull request #910) + + - Avoided floating-point precision errors when calculating pie percentages. + (patch by James Ward, pull request #918) + + - Fixed compatibility with jQuery 1.2.6, which has no 'mouseleave' shortcut. + (reported by Bevan, original pull request #920, replaced by direct patch) + + - Fixed sub-pixel rendering issues with crosshair and selection lines. + (patches by alanayoub and Daniel Shapiro, pull requests #17 and #925) + + - Fixed rendering issues when using the threshold plugin with several series. + (patch by Ivan Novikov, pull request #934) + + - Pie charts no longer disappear when redrawn after calling setData(). + (reported by zengge1984 and pareeohnos, issues #810 and #945) + + - Added a work-around for the problem where points with a lineWidth of zero + still showed up with a visible line. (reported by SalvoSav, issue #842, + patch by Jamie Hamel-Smith, pull request #937) + + - Pie charts now accept values in string form, like other plot types. + (reported by laerdal.no, issue #534) + + - Avoid rounding errors in the threshold plugin. + (reported by jerikojerk, issue #895) + + - Fixed an error when using the navigate plugin with jQuery 1.9.x or later. + (reported by Paolo Valleri, issue #964) + + - Fixed inconsistencies between the highlight and unhighlight functions. + (reported by djamshed, issue #987) + + - Fixed recalculation of tickSize and tickDecimals on calls to setupGrid. + (patch by thecountofzero, pull request #861, issues #860, #1000) + + +## Flot 0.7 ## + +### API changes ### + +Multiple axes support. Code using dual axes should be changed from using +x2axis/y2axis in the options to using an array (although backwards- +compatibility hooks are in place). For instance, + +```js +{ + xaxis: { ... }, x2axis: { ... }, + yaxis: { ... }, y2axis: { ... } +} +``` + +becomes + +```js +{ + xaxes: [ { ... }, { ... } ], + yaxes: [ { ... }, { ... } ] +} +``` + +Note that if you're just using one axis, continue to use the xaxis/yaxis +directly (it now sets the default settings for the arrays). Plugins touching +the axes must be ported to take the extra axes into account, check the source +to see some examples. + +A related change is that the visibility of axes is now auto-detected. So if +you were relying on an axis to show up even without any data in the chart, you +now need to set the axis "show" option explicitly. + +"tickColor" on the grid options is now deprecated in favour of a corresponding +option on the axes, so: + +```js +{ grid: { tickColor: "#000" }} +``` + +becomes + +```js +{ xaxis: { tickColor: "#000"}, yaxis: { tickColor: "#000"} } +``` + +But if you just configure a base color Flot will now autogenerate a tick color +by adding transparency. Backwards-compatibility hooks are in place. + +Final note: now that IE 9 is coming out with canvas support, you may want to +adapt the excanvas include to skip loading it in IE 9 (the examples have been +adapted thanks to Ryley Breiddal). An alternative to excanvas using Flash has +also surfaced, if your graphs are slow in IE, you may want to give it a spin: + + http://code.google.com/p/flashcanvas/ + +### Changes ### + + - Support for specifying a bottom for each point for line charts when filling + them, this means that an arbitrary bottom can be used instead of just the x + axis. (based on patches patiently provided by Roman V. Prikhodchenko) + + - New fillbetween plugin that can compute a bottom for a series from another + series, useful for filling areas between lines. + + See new example percentiles.html for a use case. + + - More predictable handling of gaps for the stacking plugin, now all + undefined ranges are skipped. + + - Stacking plugin can stack horizontal bar charts. + + - Navigate plugin now redraws the plot while panning instead of only after + the fact. (raised by lastthemy, issue 235) + + Can be disabled by setting the pan.frameRate option to null. + + - Date formatter now accepts %0m and %0d to get a zero-padded month or day. + (issue raised by Maximillian Dornseif) + + - Revamped internals to support an unlimited number of axes, not just dual. + (sponsored by Flight Data Services, www.flightdataservices.com) + + - New setting on axes, "tickLength", to control the size of ticks or turn + them off without turning off the labels. + + - Axis labels are now put in container divs with classes, for instance labels + in the x axes can be reached via ".xAxis .tickLabel". + + - Support for setting the color of an axis. (sponsored by Flight Data + Services, www.flightdataservices.com) + + - Tick color is now auto-generated as the base color with some transparency, + unless you override it. + + - Support for aligning ticks in the axes with "alignTicksWithAxis" to ensure + that they appear next to each other rather than in between, at the expense + of possibly awkward tick steps. (sponsored by Flight Data Services, + www.flightdataservices.com) + + - Support for customizing the point type through a callback when plotting + points and new symbol plugin with some predefined point types. (sponsored + by Utility Data Corporation) + + - Resize plugin for automatically redrawing when the placeholder changes + size, e.g. on window resizes. (sponsored by Novus Partners) + + A resize() method has been added to plot object facilitate this. + + - Support Infinity/-Infinity for plotting asymptotes by hacking it into + +/-Number.MAX_VALUE. (reported by rabaea.mircea) + + - Support for restricting navigate plugin to not pan/zoom an axis. (based on + patch by kkaefer) + + - Support for providing the drag cursor for the navigate plugin as an option. + (based on patch by Kelly T. Moore) + + - Options for controlling whether an axis is shown or not (suggestion by Timo + Tuominen) and whether to reserve space for it even if it isn't shown. + + - New attribute $.plot.version with the Flot version as a string. + + - The version comment is now included in the minified jquery.flot.min.js. + + - New options.grid.minBorderMargin for adjusting the minimum margin provided + around the border (based on patch by corani, issue 188). + + - Refactor replot behaviour so Flot tries to reuse the existing canvas, + adding shutdown() methods to the plot. (based on patch by Ryley Breiddal, + issue 269) + + This prevents a memory leak in Chrome and hopefully makes replotting faster + for those who are using $.plot instead of .setData()/.draw(). Also update + jQuery to 1.5.1 to prevent IE leaks fixed in jQuery. + + - New real-time line chart example. + + - New hooks: drawSeries, shutdown. + +### Bug fixes ### + + - Fixed problem with findNearbyItem and bars on top of each other. (reported + by ragingchikn, issue 242) + + - Fixed problem with ticks and the border. (based on patch from + ultimatehustler69, issue 236) + + - Fixed problem with plugins adding options to the series objects. + + - Fixed a problem introduced in 0.6 with specifying a gradient with: + + ```{brightness: x, opacity: y }``` + + - Don't use $.browser.msie, check for getContext on the created canvas element + instead and try to use excanvas if it's not found. + + Fixes IE 9 compatibility. + + - highlight(s, index) was looking up the point in the original s.data instead + of in the computed datapoints array, which breaks with plugins that modify + the datapoints, such as the stacking plugin. (reported by curlypaul924, + issue 316) + + - More robust handling of axis from data passed in from getData(). (reported) + by Morgan) + + - Fixed problem with turning off bar outline. (fix by Jordi Castells, + issue 253) + + - Check the selection passed into setSelection in the selection + plugin, to guard against errors when synchronizing plots (fix by Lau + Bech Lauritzen). + + - Fix bug in crosshair code with mouseout resetting the crosshair even + if it is locked (fix by Lau Bech Lauritzen and Banko Adam). + + - Fix bug with points plotting using line width from lines rather than + points. + + - Fix bug with passing non-array 0 data (for plugins that don't expect + arrays, patch by vpapp1). + + - Fix errors in JSON in examples so they work with jQuery 1.4.2 + (fix reported by honestbleeps, issue 357). + + - Fix bug with tooltip in interacting.html, this makes the tooltip + much smoother (fix by bdkahn). Fix related bug inside highlighting + handler in Flot. + + - Use closure trick to make inline colorhelpers plugin respect + jQuery.noConflict(true), renaming the global jQuery object (reported + by Nick Stielau). + + - Listen for mouseleave events and fire a plothover event with empty + item when it occurs to drop highlights when the mouse leaves the + plot (reported by by outspirit). + + - Fix bug with using aboveData with a background (reported by + amitayd). + + - Fix possible excanvas leak (report and suggested fix by tom9729). + + - Fix bug with backwards compatibility for shadowSize = 0 (report and + suggested fix by aspinak). + + - Adapt examples to skip loading excanvas (fix by Ryley Breiddal). + + - Fix bug that prevent a simple f(x) = -x transform from working + correctly (fix by Mike, issue 263). + + - Fix bug in restoring cursor in navigate plugin (reported by Matteo + Gattanini, issue 395). + + - Fix bug in picking items when transform/inverseTransform is in use + (reported by Ofri Raviv, and patches and analysis by Jan and Tom + Paton, issue 334 and 467). + + - Fix problem with unaligned ticks and hover/click events caused by + padding on the placeholder by hardcoding the placeholder padding to + 0 (reported by adityadineshsaxena, Matt Sommer, Daniel Atos and some + other people, issue 301). + + - Update colorhelpers plugin to avoid dying when trying to parse an + invalid string (reported by cadavor, issue 483). + + + +## Flot 0.6 ## + +### API changes ### + +Selection support has been moved to a plugin. Thus if you're passing +selection: { mode: something }, you MUST include the file +jquery.flot.selection.js after jquery.flot.js. This reduces the size of +base Flot and makes it easier to customize the selection as well as +improving code clarity. The change is based on a patch from andershol. + +In the global options specified in the $.plot command, "lines", "points", +"bars" and "shadowSize" have been moved to a sub-object called "series": + +```js +$.plot(placeholder, data, { lines: { show: true }}) +``` + +should be changed to + +```js + $.plot(placeholder, data, { series: { lines: { show: true }}}) +``` + +All future series-specific options will go into this sub-object to +simplify plugin writing. Backward-compatibility code is in place, so +old code should not break. + +"plothover" no longer provides the original data point, but instead a +normalized one, since there may be no corresponding original point. + +Due to a bug in previous versions of jQuery, you now need at least +jQuery 1.2.6. But if you can, try jQuery 1.3.2 as it got some improvements +in event handling speed. + +## Changes ## + + - Added support for disabling interactivity for specific data series. + (request from Ronald Schouten and Steve Upton) + + - Flot now calls $() on the placeholder and optional legend container passed + in so you can specify DOM elements or CSS expressions to make it easier to + use Flot with libraries like Prototype or Mootools or through raw JSON from + Ajax responses. + + - A new "plotselecting" event is now emitted while the user is making a + selection. + + - The "plothover" event is now emitted immediately instead of at most 10 + times per second, you'll have to put in a setTimeout yourself if you're + doing something really expensive on this event. + + - The built-in date formatter can now be accessed as $.plot.formatDate(...) + (suggestion by Matt Manela) and even replaced. + + - Added "borderColor" option to the grid. (patches from Amaury Chamayou and + Mike R. Williamson) + + - Added support for gradient backgrounds for the grid. (based on patch from + Amaury Chamayou, issue 90) + + The "setting options" example provides a demonstration. + + - Gradient bars. (suggestion by stefpet) + + - Added a "plotunselected" event which is triggered when the selection is + removed, see "selection" example. (suggestion by Meda Ugo) + + - The option legend.margin can now specify horizontal and vertical margins + independently. (suggestion by someone who's annoyed) + + - Data passed into Flot is now copied to a new canonical format to enable + further processing before it hits the drawing routines. As a side-effect, + this should make Flot more robust in the face of bad data. (issue 112) + + - Step-wise charting: line charts have a new option "steps" that when set to + true connects the points with horizontal/vertical steps instead of diagonal + lines. + + - The legend labelFormatter now passes the series in addition to just the + label. (suggestion by Vincent Lemeltier) + + - Horizontal bars (based on patch by Jason LeBrun). + + - Support for partial bars by specifying a third coordinate, i.e. they don't + have to start from the axis. This can be used to make stacked bars. + + - New option to disable the (grid.show). + + - Added pointOffset method for converting a point in data space to an offset + within the placeholder. + + - Plugin system: register an init method in the $.flot.plugins array to get + started, see PLUGINS.txt for details on how to write plugins (it's easy). + There are also some extra methods to enable access to internal state. + + - Hooks: you can register functions that are called while Flot is crunching + the data and doing the plot. This can be used to modify Flot without + changing the source, useful for writing plugins. Some hooks are defined, + more are likely to come. + + - Threshold plugin: you can set a threshold and a color, and the data points + below that threshold will then get the color. Useful for marking data + below 0, for instance. + + - Stack plugin: you can specify a stack key for each series to have them + summed. This is useful for drawing additive/cumulative graphs with bars and + (currently unfilled) lines. + + - Crosshairs plugin: trace the mouse position on the axes, enable with + crosshair: { mode: "x"} (see the new tracking example for a use). + + - Image plugin: plot prerendered images. + + - Navigation plugin for panning and zooming a plot. + + - More configurable grid. + + - Axis transformation support, useful for non-linear plots, e.g. log axes and + compressed time axes (like omitting weekends). + + - Support for twelve-hour date formatting (patch by Forrest Aldridge). + + - The color parsing code in Flot has been cleaned up and split out so it's + now available as a separate jQuery plugin. It's included inline in the Flot + source to make dependency managing easier. This also makes it really easy + to use the color helpers in Flot plugins. + +## Bug fixes ## + + - Fixed two corner-case bugs when drawing filled curves. (report and analysis + by Joshua Varner) + + - Fix auto-adjustment code when setting min to 0 for an axis where the + dataset is completely flat on that axis. (report by chovy) + + - Fixed a bug with passing in data from getData to setData when the secondary + axes are used. (reported by nperelman, issue 65) + + - Fixed so that it is possible to turn lines off when no other chart type is + shown (based on problem reported by Glenn Vanderburg), and fixed so that + setting lineWidth to 0 also hides the shadow. (based on problem reported by + Sergio Nunes) + + - Updated mousemove position expression to the latest from jQuery. (reported + by meyuchas) + + - Use CSS borders instead of background in legend. (issues 25 and 45) + + - Explicitly convert axis min/max to numbers. + + - Fixed a bug with drawing marking lines with different colors. (reported by + Khurram) + + - Fixed a bug with returning y2 values in the selection event. (fix by + exists, issue 75) + + - Only set position relative on placeholder if it hasn't already a position + different from static. (reported by kyberneticist, issue 95) + + - Don't round markings to prevent sub-pixel problems. (reported by + Dan Lipsitt) + + - Make the grid border act similarly to a regular CSS border, i.e. prevent + it from overlapping the plot itself. This also fixes a problem with anti- + aliasing when the width is 1 pixel. (reported by Anthony Ettinger) + + - Imported version 3 of excanvas and fixed two issues with the newer version. + Hopefully, this will make Flot work with IE8. (nudge by Fabien Menager, + further analysis by Booink, issue 133) + + - Changed the shadow code for lines to hopefully look a bit better with + vertical lines. + + - Round tick positions to avoid possible problems with fractions. (suggestion + by Fred, issue 130) + + - Made the heuristic for determining how many ticks to aim for a bit smarter. + + - Fix for uneven axis margins (report and patch by Paul Kienzle) and snapping + to ticks. (report and patch by lifthrasiir) + + - Fixed bug with slicing in findNearbyItems. (patch by zollman) + + - Make heuristic for x axis label widths more dynamic. (patch by + rickinhethuis) + + - Make sure points on top take precedence when finding nearby points when + hovering. (reported by didroe, issue 224) + + + +## Flot 0.5 ## + +Timestamps are now in UTC. Also "selected" event -> becomes "plotselected" +with new data, the parameters for setSelection are now different (but +backwards compatibility hooks are in place), coloredAreas becomes markings +with a new interface (but backwards compatibility hooks are in place). + +### API changes ### + +Timestamps in time mode are now displayed according to UTC instead of the time +zone of the visitor. This affects the way the timestamps should be input; +you'll probably have to offset the timestamps according to your local time +zone. It also affects any custom date handling code (which basically now +should use the equivalent UTC date mehods, e.g. .setUTCMonth() instead of +.setMonth(). + +Markings, previously coloredAreas, are now specified as ranges on the axes, +like ```{ xaxis: { from: 0, to: 10 }}```. Furthermore with markings you can +now draw horizontal/vertical lines by setting from and to to the same +coordinate. (idea from line support patch by by Ryan Funduk) + +Interactivity: added a new "plothover" event and this and the "plotclick" +event now returns the closest data item (based on patch by /david, patch by +Mark Byers for bar support). See the revamped "interacting with the data" +example for some hints on what you can do. + +Highlighting: you can now highlight points and datapoints are autohighlighted +when you hover over them (if hovering is turned on). + +Support for dual axis has been added (based on patch by someone who's annoyed +and /david). For each data series you can specify which axes it belongs to, +and there are two more axes, x2axis and y2axis, to customize. This affects the +"selected" event which has been renamed to "plotselected" and spews out +```{ xaxis: { from: -10, to: 20 } ... },``` setSelection in which the +parameters are on a new form (backwards compatible hooks are in place so old +code shouldn't break) and markings (formerly coloredAreas). + +## Changes ## + + - Added support for specifying the size of tick labels (axis.labelWidth, + axis.labelHeight). Useful for specifying a max label size to keep multiple + plots aligned. + + - The "fill" option can now be a number that specifies the opacity of the + fill. + + - You can now specify a coordinate as null (like [2, null]) and Flot will + take the other coordinate into account when scaling the axes. (based on + patch by joebno) + + - New option for bars "align". Set it to "center" to center the bars on the + value they represent. + + - setSelection now takes a second parameter which you can use to prevent the + method from firing the "plotselected" handler. + + - Improved the handling of axis auto-scaling with bars. + +## Bug fixes ## + + - Fixed a bug in calculating spacing around the plot. (reported by + timothytoe) + + - Fixed a bug in finding max values for all-negative data sets. + + - Prevent the possibility of eternal looping in tick calculations. + + - Fixed a bug when borderWidth is set to 0. (reported by Rob/sanchothefat) + + - Fixed a bug with drawing bars extending below 0. (reported by James Hewitt, + patch by Ryan Funduk). + + - Fixed a bug with line widths of bars. (reported by MikeM) + + - Fixed a bug with 'nw' and 'sw' legend positions. + + - Fixed a bug with multi-line x-axis tick labels. (reported by Luca Ciano, + IE-fix help by Savage Zhang) + + - Using the "container" option in legend now overwrites the container element + instead of just appending to it, fixing the infinite legend bug. (reported + by several people, fix by Brad Dewey) + + + +## Flot 0.4 ## + +### API changes ### + +Deprecated axis.noTicks in favor of just specifying the number as axis.ticks. +So ```xaxis: { noTicks: 10 }``` becomes ```xaxis: { ticks: 10 }```. + +Time series support. Specify axis.mode: "time", put in Javascript timestamps +as data, and Flot will automatically spit out sensible ticks. Take a look at +the two new examples. The format can be customized with axis.timeformat and +axis.monthNames, or if that fails with axis.tickFormatter. + +Support for colored background areas via grid.coloredAreas. Specify an array +of { x1, y1, x2, y2 } objects or a function that returns these given +{ xmin, xmax, ymin, ymax }. + +More members on the plot object (report by Chris Davies and others). +"getData" for inspecting the assigned settings on data series (e.g. color) and +"setData", "setupGrid" and "draw" for updating the contents without a total +replot. + +The default number of ticks to aim for is now dependent on the size of the +plot in pixels. Support for customizing tick interval sizes directly with +axis.minTickSize and axis.tickSize. + +Cleaned up the automatic axis scaling algorithm and fixed how it interacts +with ticks. Also fixed a couple of tick-related corner case bugs (one reported +by mainstreetmark, another reported by timothytoe). + +The option axis.tickFormatter now takes a function with two parameters, the +second parameter is an optional object with information about the axis. It has +min, max, tickDecimals, tickSize. + +## Changes ## + + - Added support for segmented lines. (based on patch from Michael MacDonald) + + - Added support for ignoring null and bad values. (suggestion from Nick + Konidaris and joshwaihi) + + - Added support for changing the border width. (thanks to joebno and safoo) + + - Label colors can be changed via CSS by selecting the tickLabel class. + +## Bug fixes ## + + - Fixed a bug in handling single-item bar series. (reported by Emil Filipov) + + - Fixed erratic behaviour when interacting with the plot with IE 7. (reported + by Lau Bech Lauritzen). + + - Prevent IE/Safari text selection when selecting stuff on the canvas. + + + +## Flot 0.3 ## + +This is mostly a quick-fix release because jquery.js wasn't included in the +previous zip/tarball. + +## Changes ## + + - Include jquery.js in the zip/tarball. + + - Support clicking on the plot. Turn it on with grid: { clickable: true }, + then you get a "plotclick" event on the graph placeholder with the position + in units of the plot. + +## Bug fixes ## + + - Fixed a bug in dealing with data where min = max. (thanks to Michael + Messinides) + + + +## Flot 0.2 ## + +The API should now be fully documented. + +### API changes ### + +Moved labelMargin option to grid from x/yaxis. + +## Changes ## + + - Added support for putting a background behind the default legend. The + default is the partly transparent background color. Added backgroundColor + and backgroundOpacity to the legend options to control this. + + - The ticks options can now be a callback function that takes one parameter, + an object with the attributes min and max. The function should return a + ticks array. + + - Added labelFormatter option in legend, useful for turning the legend + labels into links. + + - Reduced the size of the code. (patch by Guy Fraser) + + + +## Flot 0.1 ## + +First public release. diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/PLUGINS.md b/SpringBootHomework/target/classes/static/assets/plugins/flot/PLUGINS.md new file mode 100644 index 0000000..3358356 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/PLUGINS.md @@ -0,0 +1,143 @@ +## Writing plugins ## + +All you need to do to make a new plugin is creating an init function +and a set of options (if needed), stuffing it into an object and +putting it in the $.plot.plugins array. For example: + +```js +function myCoolPluginInit(plot) { + plot.coolstring = "Hello!"; +}; + +$.plot.plugins.push({ init: myCoolPluginInit, options: { ... } }); + +// if $.plot is called, it will return a plot object with the +// attribute "coolstring" +``` + +Now, given that the plugin might run in many different places, it's +a good idea to avoid leaking names. The usual trick here is wrap the +above lines in an anonymous function which is called immediately, like +this: (function () { inner code ... })(). To make it even more robust +in case $ is not bound to jQuery but some other Javascript library, we +can write it as + +```js +(function ($) { + // plugin definition + // ... +})(jQuery); +``` + +There's a complete example below, but you should also check out the +plugins bundled with Flot. + + +## Complete example ## + +Here is a simple debug plugin which alerts each of the series in the +plot. It has a single option that control whether it is enabled and +how much info to output: + +```js +(function ($) { + function init(plot) { + var debugLevel = 1; + + function checkDebugEnabled(plot, options) { + if (options.debug) { + debugLevel = options.debug; + plot.hooks.processDatapoints.push(alertSeries); + } + } + + function alertSeries(plot, series, datapoints) { + var msg = "series " + series.label; + if (debugLevel > 1) { + msg += " with " + series.data.length + " points"; + alert(msg); + } + } + + plot.hooks.processOptions.push(checkDebugEnabled); + } + + var options = { debug: 0 }; + + $.plot.plugins.push({ + init: init, + options: options, + name: "simpledebug", + version: "0.1" + }); +})(jQuery); +``` + +We also define "name" and "version". It's not used by Flot, but might +be helpful for other plugins in resolving dependencies. + +Put the above in a file named "jquery.flot.debug.js", include it in an +HTML page and then it can be used with: + +```js + $.plot($("#placeholder"), [...], { debug: 2 }); +``` + +This simple plugin illustrates a couple of points: + + - It uses the anonymous function trick to avoid name pollution. + - It can be enabled/disabled through an option. + - Variables in the init function can be used to store plot-specific + state between the hooks. + +The two last points are important because there may be multiple plots +on the same page, and you'd want to make sure they are not mixed up. + + +## Shutting down a plugin ## + +Each plot object has a shutdown hook which is run when plot.shutdown() +is called. This usually mostly happens in case another plot is made on +top of an existing one. + +The purpose of the hook is to give you a chance to unbind any event +handlers you've registered and remove any extra DOM things you've +inserted. + +The problem with event handlers is that you can have registered a +handler which is run in some point in the future, e.g. with +setTimeout(). Meanwhile, the plot may have been shutdown and removed, +but because your event handler is still referencing it, it can't be +garbage collected yet, and worse, if your handler eventually runs, it +may overwrite stuff on a completely different plot. + + +## Some hints on the options ## + +Plugins should always support appropriate options to enable/disable +them because the plugin user may have several plots on the same page +where only one should use the plugin. In most cases it's probably a +good idea if the plugin is turned off rather than on per default, just +like most of the powerful features in Flot. + +If the plugin needs options that are specific to each series, like the +points or lines options in core Flot, you can put them in "series" in +the options object, e.g. + +```js +var options = { + series: { + downsample: { + algorithm: null, + maxpoints: 1000 + } + } +} +``` + +Then they will be copied by Flot into each series, providing default +values in case none are specified. + +Think hard and long about naming the options. These names are going to +be public API, and code is going to depend on them if the plugin is +successful. diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/README.md b/SpringBootHomework/target/classes/static/assets/plugins/flot/README.md new file mode 100644 index 0000000..fc64147 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/README.md @@ -0,0 +1,110 @@ +# Flot [![Build status](https://travis-ci.org/flot/flot.png)](https://travis-ci.org/flot/flot) + +## About ## + +Flot is a Javascript plotting library for jQuery. +Read more at the website: + +Take a look at the the examples in examples/index.html; they should give a good +impression of what Flot can do, and the source code of the examples is probably +the fastest way to learn how to use Flot. + + +## Installation ## + +Just include the Javascript file after you've included jQuery. + +Generally, all browsers that support the HTML5 canvas tag are +supported. + +For support for Internet Explorer < 9, you can use [Excanvas] +[excanvas], a canvas emulator; this is used in the examples bundled +with Flot. You just include the excanvas script like this: + +```html + +``` + +If it's not working on your development IE 6.0, check that it has +support for VML which Excanvas is relying on. It appears that some +stripped down versions used for test environments on virtual machines +lack the VML support. + +You can also try using [Flashcanvas][flashcanvas], which uses Flash to +do the emulation. Although Flash can be a bit slower to load than VML, +if you've got a lot of points, the Flash version can be much faster +overall. Flot contains some wrapper code for activating Excanvas which +Flashcanvas is compatible with. + +You need at least jQuery 1.2.6, but try at least 1.3.2 for interactive +charts because of performance improvements in event handling. + + +## Basic usage ## + +Create a placeholder div to put the graph in: + +```html +
    +``` + +You need to set the width and height of this div, otherwise the plot +library doesn't know how to scale the graph. You can do it inline like +this: + +```html +
    +``` + +You can also do it with an external stylesheet. Make sure that the +placeholder isn't within something with a display:none CSS property - +in that case, Flot has trouble measuring label dimensions which +results in garbled looks and might have trouble measuring the +placeholder dimensions which is fatal (it'll throw an exception). + +Then when the div is ready in the DOM, which is usually on document +ready, run the plot function: + +```js +$.plot($("#placeholder"), data, options); +``` + +Here, data is an array of data series and options is an object with +settings if you want to customize the plot. Take a look at the +examples for some ideas of what to put in or look at the +[API reference](API.md). Here's a quick example that'll draw a line +from (0, 0) to (1, 1): + +```js +$.plot($("#placeholder"), [ [[0, 0], [1, 1]] ], { yaxis: { max: 1 } }); +``` + +The plot function immediately draws the chart and then returns a plot +object with a couple of methods. + + +## What's with the name? ## + +First: it's pronounced with a short o, like "plot". Not like "flawed". + +So "Flot" rhymes with "plot". + +And if you look up "flot" in a Danish-to-English dictionary, some of +the words that come up are "good-looking", "attractive", "stylish", +"smart", "impressive", "extravagant". One of the main goals with Flot +is pretty looks. + + +## Notes about the examples ## + +In order to have a useful, functional example of time-series plots using time +zones, date.js from [timezone-js][timezone-js] (released under the Apache 2.0 +license) and the [Olson][olson] time zone database (released to the public +domain) have been included in the examples directory. They are used in +examples/axes-time-zones/index.html. + + +[excanvas]: http://code.google.com/p/explorercanvas/ +[flashcanvas]: http://code.google.com/p/flashcanvas/ +[timezone-js]: https://github.com/mde/timezone-js +[olson]: http://ftp.iana.org/time-zones diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/component.json b/SpringBootHomework/target/classes/static/assets/plugins/flot/component.json new file mode 100644 index 0000000..5f5bea6 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/component.json @@ -0,0 +1,8 @@ +{ + "name": "Flot", + "version": "0.8.3", + "main": "jquery.flot.js", + "dependencies": { + "jquery": ">= 1.2.6" + } +} diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-1.json b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-1.json new file mode 100644 index 0000000..32f0fb1 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-1.json @@ -0,0 +1,4 @@ +{ + "label": "Europe (EU27)", + "data": [[1999, 3.0], [2000, 3.9]] +} diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-2.json b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-2.json new file mode 100644 index 0000000..bc9d069 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-2.json @@ -0,0 +1,4 @@ +{ + "label": "Europe (EU27)", + "data": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2]] +} diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-3.json b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-3.json new file mode 100644 index 0000000..77deca5 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-3.json @@ -0,0 +1,4 @@ +{ + "label": "Europe (EU27)", + "data": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5]] +} diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-4.json b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-4.json new file mode 100644 index 0000000..8ab0796 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-4.json @@ -0,0 +1,4 @@ +{ + "label": "Europe (EU27)", + "data": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1]] +} diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-5.json b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-5.json new file mode 100644 index 0000000..9f81c14 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth-5.json @@ -0,0 +1,4 @@ +{ + "label": "Europe (EU27)", + "data": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]] +} diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth.json b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth.json new file mode 100644 index 0000000..9f81c14 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-eu-gdp-growth.json @@ -0,0 +1,4 @@ +{ + "label": "Europe (EU27)", + "data": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]] +} diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-japan-gdp-growth.json b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-japan-gdp-growth.json new file mode 100644 index 0000000..f3f7f7f --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-japan-gdp-growth.json @@ -0,0 +1,4 @@ +{ + "label": "Japan", + "data": [[1999, -0.1], [2000, 2.9], [2001, 0.2], [2002, 0.3], [2003, 1.4], [2004, 2.7], [2005, 1.9], [2006, 2.0], [2007, 2.3], [2008, -0.7]] +} diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-usa-gdp-growth.json b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-usa-gdp-growth.json new file mode 100644 index 0000000..271542c --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/data-usa-gdp-growth.json @@ -0,0 +1,4 @@ +{ + "label": "USA", + "data": [[1999, 4.4], [2000, 3.7], [2001, 0.8], [2002, 1.6], [2003, 2.5], [2004, 3.6], [2005, 2.9], [2006, 2.8], [2007, 2.0], [2008, 1.1]] +} diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/index.html new file mode 100644 index 0000000..75ab0fd --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/ajax/index.html @@ -0,0 +1,173 @@ + + + + + Flot Examples: AJAX + + + + + + + + + + +
    + +
    +
    +
    + +

    Example of loading data dynamically with AJAX. Percentage change in GDP (source: Eurostat). Click the buttons below:

    + +

    The data is fetched over HTTP, in this case directly from text files. Usually the URL would point to some web server handler (e.g. a PHP page or Java/.NET/Python/Ruby on Rails handler) that extracts it from a database and serializes it to JSON.

    + +

    + + [ see data ] + +

    + +

    + + [ see data ] + +

    + +

    + + [ see data ] + +

    + +

    If you combine AJAX with setTimeout, you can poll the server for new data.

    + +

    + +

    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/annotating/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/annotating/index.html new file mode 100644 index 0000000..7a50277 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/annotating/index.html @@ -0,0 +1,87 @@ + + + + + Flot Examples: Adding Annotations + + + + + + + + + + +
    + +
    +
    +
    + +

    Flot has support for simple background decorations such as lines and rectangles. They can be useful for marking up certain areas. You can easily add any HTML you need with standard DOM manipulation, e.g. for labels. For drawing custom shapes there is also direct access to the canvas.

    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-interacting/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-interacting/index.html new file mode 100644 index 0000000..befc837 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-interacting/index.html @@ -0,0 +1,97 @@ + + + + + Flot Examples: Interacting with axes + + + + + + + + + + +
    + +
    +
    +
    + +

    With multiple axes, you sometimes need to interact with them. A simple way to do this is to draw the plot, deduce the axis placements and insert a couple of divs on top to catch events.

    + +

    Try clicking an axis.

    + +

    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-multiple/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-multiple/index.html new file mode 100644 index 0000000..776a962 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-multiple/index.html @@ -0,0 +1,77 @@ + + + + + Flot Examples: Multiple Axes + + + + + + + + + + + +
    + +
    +
    +
    + +

    Multiple axis support showing the raw oil price in US $/barrel of crude oil vs. the exchange rate from US $ to €.

    + +

    As illustrated, you can put in multiple axes if you need to. For each data series, simply specify the axis number. In the options, you can then configure where you want the extra axes to appear.

    + +

    Position axis or .

    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/date.js b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/date.js new file mode 100644 index 0000000..954e299 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/date.js @@ -0,0 +1,893 @@ +// ----- +// The `timezoneJS.Date` object gives you full-blown timezone support, independent from the timezone set on the end-user's machine running the browser. It uses the Olson zoneinfo files for its timezone data. +// +// The constructor function and setter methods use proxy JavaScript Date objects behind the scenes, so you can use strings like '10/22/2006' with the constructor. You also get the same sensible wraparound behavior with numeric parameters (like setting a value of 14 for the month wraps around to the next March). +// +// The other significant difference from the built-in JavaScript Date is that `timezoneJS.Date` also has named properties that store the values of year, month, date, etc., so it can be directly serialized to JSON and used for data transfer. + +/* + * Copyright 2010 Matthew Eernisse (mde@fleegix.org) + * and Open Source Applications Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Credits: Ideas included from incomplete JS implementation of Olson + * parser, "XMLDAte" by Philippe Goetz (philippe.goetz@wanadoo.fr) + * + * Contributions: + * Jan Niehusmann + * Ricky Romero + * Preston Hunt (prestonhunt@gmail.com) + * Dov. B Katz (dov.katz@morganstanley.com) + * Peter Bergström (pbergstr@mac.com) + * Long Ho + */ +(function () { + // Standard initialization stuff to make sure the library is + // usable on both client and server (node) side. + + var root = this; + + var timezoneJS; + if (typeof exports !== 'undefined') { + timezoneJS = exports; + } else { + timezoneJS = root.timezoneJS = {}; + } + + timezoneJS.VERSION = '1.0.0'; + + // Grab the ajax library from global context. + // This can be jQuery, Zepto or fleegix. + // You can also specify your own transport mechanism by declaring + // `timezoneJS.timezone.transport` to a `function`. More details will follow + var $ = root.$ || root.jQuery || root.Zepto + , fleegix = root.fleegix + // Declare constant list of days and months. Unfortunately this doesn't leave room for i18n due to the Olson data being in English itself + , DAYS = timezoneJS.Days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] + , MONTHS = timezoneJS.Months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] + , SHORT_MONTHS = {} + , SHORT_DAYS = {} + , EXACT_DATE_TIME = {} + , TZ_REGEXP = new RegExp('^[a-zA-Z]+/'); + + //`{ "Jan": 0, "Feb": 1, "Mar": 2, "Apr": 3, "May": 4, "Jun": 5, "Jul": 6, "Aug": 7, "Sep": 8, "Oct": 9, "Nov": 10, "Dec": 11 }` + for (var i = 0; i < MONTHS.length; i++) { + SHORT_MONTHS[MONTHS[i].substr(0, 3)] = i; + } + + //`{ "Sun": 0, "Mon": 1, "Tue": 2, "Wed": 3, "Thu": 4, "Fri": 5, "Sat": 6 }` + for (i = 0; i < DAYS.length; i++) { + SHORT_DAYS[DAYS[i].substr(0, 3)] = i; + } + + + //Handle array indexOf in IE + if (!Array.prototype.indexOf) { + Array.prototype.indexOf = function (el) { + for (var i = 0; i < this.length; i++ ) { + if (el === this[i]) return i; + } + return -1; + } + } + + // Format a number to the length = digits. For ex: + // + // `_fixWidth(2, 2) = '02'` + // + // `_fixWidth(1998, 2) = '98'` + // + // This is used to pad numbers in converting date to string in ISO standard. + var _fixWidth = function (number, digits) { + if (typeof number !== "number") { throw "not a number: " + number; } + var s = number.toString(); + if (number.length > digits) { + return number.substr(number.length - digits, number.length); + } + while (s.length < digits) { + s = '0' + s; + } + return s; + }; + + // Abstraction layer for different transport layers, including fleegix/jQuery/Zepto + // + // Object `opts` include + // + // - `url`: url to ajax query + // + // - `async`: true for asynchronous, false otherwise. If false, return value will be response from URL. This is true by default + // + // - `success`: success callback function + // + // - `error`: error callback function + // Returns response from URL if async is false, otherwise the AJAX request object itself + var _transport = function (opts) { + if ((!fleegix || typeof fleegix.xhr === 'undefined') && (!$ || typeof $.ajax === 'undefined')) { + throw new Error('Please use the Fleegix.js XHR module, jQuery ajax, Zepto ajax, or define your own transport mechanism for downloading zone files.'); + } + if (!opts) return; + if (!opts.url) throw new Error ('URL must be specified'); + if (!('async' in opts)) opts.async = true; + if (!opts.async) { + return fleegix && fleegix.xhr + ? fleegix.xhr.doReq({ url: opts.url, async: false }) + : $.ajax({ url : opts.url, async : false }).responseText; + } + return fleegix && fleegix.xhr + ? fleegix.xhr.send({ + url : opts.url, + method : 'get', + handleSuccess : opts.success, + handleErr : opts.error + }) + : $.ajax({ + url : opts.url, + dataType: 'text', + method : 'GET', + error : opts.error, + success : opts.success + }); + }; + + // Constructor, which is similar to that of the native Date object itself + timezoneJS.Date = function () { + var args = Array.prototype.slice.apply(arguments) + , dt = null + , tz = null + , arr = []; + + + //We support several different constructors, including all the ones from `Date` object + // with a timezone string at the end. + // + //- `[tz]`: Returns object with time in `tz` specified. + // + // - `utcMillis`, `[tz]`: Return object with UTC time = `utcMillis`, in `tz`. + // + // - `Date`, `[tz]`: Returns object with UTC time = `Date.getTime()`, in `tz`. + // + // - `year, month, [date,] [hours,] [minutes,] [seconds,] [millis,] [tz]: Same as `Date` object + // with tz. + // + // - `Array`: Can be any combo of the above. + // + //If 1st argument is an array, we can use it as a list of arguments itself + if (Object.prototype.toString.call(args[0]) === '[object Array]') { + args = args[0]; + } + if (typeof args[args.length - 1] === 'string' && TZ_REGEXP.test(args[args.length - 1])) { + tz = args.pop(); + } + switch (args.length) { + case 0: + dt = new Date(); + break; + case 1: + dt = new Date(args[0]); + break; + default: + for (var i = 0; i < 7; i++) { + arr[i] = args[i] || 0; + } + dt = new Date(arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6]); + break; + } + + this._useCache = false; + this._tzInfo = {}; + this._day = 0; + this.year = 0; + this.month = 0; + this.date = 0; + this.hours = 0; + this.minutes = 0; + this.seconds = 0; + this.milliseconds = 0; + this.timezone = tz || null; + //Tricky part: + // For the cases where there are 1/2 arguments: `timezoneJS.Date(millis, [tz])` and `timezoneJS.Date(Date, [tz])`. The + // Date `dt` created should be in UTC. Thus the way I detect such cases is to determine if `arr` is not populated & `tz` + // is specified. Because if `tz` is not specified, `dt` can be in local time. + if (arr.length) { + this.setFromDateObjProxy(dt); + } else { + this.setFromTimeProxy(dt.getTime(), tz); + } + }; + + // Implements most of the native Date object + timezoneJS.Date.prototype = { + getDate: function () { return this.date; }, + getDay: function () { return this._day; }, + getFullYear: function () { return this.year; }, + getMonth: function () { return this.month; }, + getYear: function () { return this.year; }, + getHours: function () { return this.hours; }, + getMilliseconds: function () { return this.milliseconds; }, + getMinutes: function () { return this.minutes; }, + getSeconds: function () { return this.seconds; }, + getUTCDate: function () { return this.getUTCDateProxy().getUTCDate(); }, + getUTCDay: function () { return this.getUTCDateProxy().getUTCDay(); }, + getUTCFullYear: function () { return this.getUTCDateProxy().getUTCFullYear(); }, + getUTCHours: function () { return this.getUTCDateProxy().getUTCHours(); }, + getUTCMilliseconds: function () { return this.getUTCDateProxy().getUTCMilliseconds(); }, + getUTCMinutes: function () { return this.getUTCDateProxy().getUTCMinutes(); }, + getUTCMonth: function () { return this.getUTCDateProxy().getUTCMonth(); }, + getUTCSeconds: function () { return this.getUTCDateProxy().getUTCSeconds(); }, + // Time adjusted to user-specified timezone + getTime: function () { + return this._timeProxy + (this.getTimezoneOffset() * 60 * 1000); + }, + getTimezone: function () { return this.timezone; }, + getTimezoneOffset: function () { return this.getTimezoneInfo().tzOffset; }, + getTimezoneAbbreviation: function () { return this.getTimezoneInfo().tzAbbr; }, + getTimezoneInfo: function () { + if (this._useCache) return this._tzInfo; + var res; + // If timezone is specified, get the correct timezone info based on the Date given + if (this.timezone) { + res = this.timezone === 'Etc/UTC' || this.timezone === 'Etc/GMT' + ? { tzOffset: 0, tzAbbr: 'UTC' } + : timezoneJS.timezone.getTzInfo(this._timeProxy, this.timezone); + } + // If no timezone was specified, use the local browser offset + else { + res = { tzOffset: this.getLocalOffset(), tzAbbr: null }; + } + this._tzInfo = res; + this._useCache = true; + return res + }, + getUTCDateProxy: function () { + var dt = new Date(this._timeProxy); + dt.setUTCMinutes(dt.getUTCMinutes() + this.getTimezoneOffset()); + return dt; + }, + setDate: function (n) { this.setAttribute('date', n); }, + setFullYear: function (n) { this.setAttribute('year', n); }, + setMonth: function (n) { this.setAttribute('month', n); }, + setYear: function (n) { this.setUTCAttribute('year', n); }, + setHours: function (n) { this.setAttribute('hours', n); }, + setMilliseconds: function (n) { this.setAttribute('milliseconds', n); }, + setMinutes: function (n) { this.setAttribute('minutes', n); }, + setSeconds: function (n) { this.setAttribute('seconds', n); }, + setTime: function (n) { + if (isNaN(n)) { throw new Error('Units must be a number.'); } + this.setFromTimeProxy(n, this.timezone); + }, + setUTCDate: function (n) { this.setUTCAttribute('date', n); }, + setUTCFullYear: function (n) { this.setUTCAttribute('year', n); }, + setUTCHours: function (n) { this.setUTCAttribute('hours', n); }, + setUTCMilliseconds: function (n) { this.setUTCAttribute('milliseconds', n); }, + setUTCMinutes: function (n) { this.setUTCAttribute('minutes', n); }, + setUTCMonth: function (n) { this.setUTCAttribute('month', n); }, + setUTCSeconds: function (n) { this.setUTCAttribute('seconds', n); }, + setFromDateObjProxy: function (dt) { + this.year = dt.getFullYear(); + this.month = dt.getMonth(); + this.date = dt.getDate(); + this.hours = dt.getHours(); + this.minutes = dt.getMinutes(); + this.seconds = dt.getSeconds(); + this.milliseconds = dt.getMilliseconds(); + this._day = dt.getDay(); + this._dateProxy = dt; + this._timeProxy = Date.UTC(this.year, this.month, this.date, this.hours, this.minutes, this.seconds, this.milliseconds); + this._useCache = false; + }, + setFromTimeProxy: function (utcMillis, tz) { + var dt = new Date(utcMillis); + var tzOffset; + tzOffset = tz ? timezoneJS.timezone.getTzInfo(dt, tz).tzOffset : dt.getTimezoneOffset(); + dt.setTime(utcMillis + (dt.getTimezoneOffset() - tzOffset) * 60000); + this.setFromDateObjProxy(dt); + }, + setAttribute: function (unit, n) { + if (isNaN(n)) { throw new Error('Units must be a number.'); } + var dt = this._dateProxy; + var meth = unit === 'year' ? 'FullYear' : unit.substr(0, 1).toUpperCase() + unit.substr(1); + dt['set' + meth](n); + this.setFromDateObjProxy(dt); + }, + setUTCAttribute: function (unit, n) { + if (isNaN(n)) { throw new Error('Units must be a number.'); } + var meth = unit === 'year' ? 'FullYear' : unit.substr(0, 1).toUpperCase() + unit.substr(1); + var dt = this.getUTCDateProxy(); + dt['setUTC' + meth](n); + dt.setUTCMinutes(dt.getUTCMinutes() - this.getTimezoneOffset()); + this.setFromTimeProxy(dt.getTime() + this.getTimezoneOffset() * 60000, this.timezone); + }, + setTimezone: function (tz) { + var previousOffset = this.getTimezoneInfo().tzOffset; + this.timezone = tz; + this._useCache = false; + // Set UTC minutes offsets by the delta of the two timezones + this.setUTCMinutes(this.getUTCMinutes() - this.getTimezoneInfo().tzOffset + previousOffset); + }, + removeTimezone: function () { + this.timezone = null; + this._useCache = false; + }, + valueOf: function () { return this.getTime(); }, + clone: function () { + return this.timezone ? new timezoneJS.Date(this.getTime(), this.timezone) : new timezoneJS.Date(this.getTime()); + }, + toGMTString: function () { return this.toString('EEE, dd MMM yyyy HH:mm:ss Z', 'Etc/GMT'); }, + toLocaleString: function () {}, + toLocaleDateString: function () {}, + toLocaleTimeString: function () {}, + toSource: function () {}, + toISOString: function () { return this.toString('yyyy-MM-ddTHH:mm:ss.SSS', 'Etc/UTC') + 'Z'; }, + toJSON: function () { return this.toISOString(); }, + // Allows different format following ISO8601 format: + toString: function (format, tz) { + // Default format is the same as toISOString + if (!format) format = 'yyyy-MM-dd HH:mm:ss'; + var result = format; + var tzInfo = tz ? timezoneJS.timezone.getTzInfo(this.getTime(), tz) : this.getTimezoneInfo(); + var _this = this; + // If timezone is specified, get a clone of the current Date object and modify it + if (tz) { + _this = this.clone(); + _this.setTimezone(tz); + } + var hours = _this.getHours(); + return result + // fix the same characters in Month names + .replace(/a+/g, function () { return 'k'; }) + // `y`: year + .replace(/y+/g, function (token) { return _fixWidth(_this.getFullYear(), token.length); }) + // `d`: date + .replace(/d+/g, function (token) { return _fixWidth(_this.getDate(), token.length); }) + // `m`: minute + .replace(/m+/g, function (token) { return _fixWidth(_this.getMinutes(), token.length); }) + // `s`: second + .replace(/s+/g, function (token) { return _fixWidth(_this.getSeconds(), token.length); }) + // `S`: millisecond + .replace(/S+/g, function (token) { return _fixWidth(_this.getMilliseconds(), token.length); }) + // `M`: month. Note: `MM` will be the numeric representation (e.g February is 02) but `MMM` will be text representation (e.g February is Feb) + .replace(/M+/g, function (token) { + var _month = _this.getMonth(), + _len = token.length; + if (_len > 3) { + return timezoneJS.Months[_month]; + } else if (_len > 2) { + return timezoneJS.Months[_month].substring(0, _len); + } + return _fixWidth(_month + 1, _len); + }) + // `k`: AM/PM + .replace(/k+/g, function () { + if (hours >= 12) { + if (hours > 12) { + hours -= 12; + } + return 'PM'; + } + return 'AM'; + }) + // `H`: hour + .replace(/H+/g, function (token) { return _fixWidth(hours, token.length); }) + // `E`: day + .replace(/E+/g, function (token) { return DAYS[_this.getDay()].substring(0, token.length); }) + // `Z`: timezone abbreviation + .replace(/Z+/gi, function () { return tzInfo.tzAbbr; }); + }, + toUTCString: function () { return this.toGMTString(); }, + civilToJulianDayNumber: function (y, m, d) { + var a; + // Adjust for zero-based JS-style array + m++; + if (m > 12) { + a = parseInt(m/12, 10); + m = m % 12; + y += a; + } + if (m <= 2) { + y -= 1; + m += 12; + } + a = Math.floor(y / 100); + var b = 2 - a + Math.floor(a / 4) + , jDt = Math.floor(365.25 * (y + 4716)) + Math.floor(30.6001 * (m + 1)) + d + b - 1524; + return jDt; + }, + getLocalOffset: function () { + return this._dateProxy.getTimezoneOffset(); + } + }; + + + timezoneJS.timezone = new function () { + var _this = this + , regionMap = {'Etc':'etcetera','EST':'northamerica','MST':'northamerica','HST':'northamerica','EST5EDT':'northamerica','CST6CDT':'northamerica','MST7MDT':'northamerica','PST8PDT':'northamerica','America':'northamerica','Pacific':'australasia','Atlantic':'europe','Africa':'africa','Indian':'africa','Antarctica':'antarctica','Asia':'asia','Australia':'australasia','Europe':'europe','WET':'europe','CET':'europe','MET':'europe','EET':'europe'} + , regionExceptions = {'Pacific/Honolulu':'northamerica','Atlantic/Bermuda':'northamerica','Atlantic/Cape_Verde':'africa','Atlantic/St_Helena':'africa','Indian/Kerguelen':'antarctica','Indian/Chagos':'asia','Indian/Maldives':'asia','Indian/Christmas':'australasia','Indian/Cocos':'australasia','America/Danmarkshavn':'europe','America/Scoresbysund':'europe','America/Godthab':'europe','America/Thule':'europe','Asia/Yekaterinburg':'europe','Asia/Omsk':'europe','Asia/Novosibirsk':'europe','Asia/Krasnoyarsk':'europe','Asia/Irkutsk':'europe','Asia/Yakutsk':'europe','Asia/Vladivostok':'europe','Asia/Sakhalin':'europe','Asia/Magadan':'europe','Asia/Kamchatka':'europe','Asia/Anadyr':'europe','Africa/Ceuta':'europe','America/Argentina/Buenos_Aires':'southamerica','America/Argentina/Cordoba':'southamerica','America/Argentina/Tucuman':'southamerica','America/Argentina/La_Rioja':'southamerica','America/Argentina/San_Juan':'southamerica','America/Argentina/Jujuy':'southamerica','America/Argentina/Catamarca':'southamerica','America/Argentina/Mendoza':'southamerica','America/Argentina/Rio_Gallegos':'southamerica','America/Argentina/Ushuaia':'southamerica','America/Aruba':'southamerica','America/La_Paz':'southamerica','America/Noronha':'southamerica','America/Belem':'southamerica','America/Fortaleza':'southamerica','America/Recife':'southamerica','America/Araguaina':'southamerica','America/Maceio':'southamerica','America/Bahia':'southamerica','America/Sao_Paulo':'southamerica','America/Campo_Grande':'southamerica','America/Cuiaba':'southamerica','America/Porto_Velho':'southamerica','America/Boa_Vista':'southamerica','America/Manaus':'southamerica','America/Eirunepe':'southamerica','America/Rio_Branco':'southamerica','America/Santiago':'southamerica','Pacific/Easter':'southamerica','America/Bogota':'southamerica','America/Curacao':'southamerica','America/Guayaquil':'southamerica','Pacific/Galapagos':'southamerica','Atlantic/Stanley':'southamerica','America/Cayenne':'southamerica','America/Guyana':'southamerica','America/Asuncion':'southamerica','America/Lima':'southamerica','Atlantic/South_Georgia':'southamerica','America/Paramaribo':'southamerica','America/Port_of_Spain':'southamerica','America/Montevideo':'southamerica','America/Caracas':'southamerica'}; + function invalidTZError(t) { throw new Error('Timezone "' + t + '" is either incorrect, or not loaded in the timezone registry.'); } + function builtInLoadZoneFile(fileName, opts) { + var url = _this.zoneFileBasePath + '/' + fileName; + return !opts || !opts.async + ? _this.parseZones(_this.transport({ url : url, async : false })) + : _this.transport({ + async: true, + url : url, + success : function (str) { + if (_this.parseZones(str) && typeof opts.callback === 'function') { + opts.callback(); + } + return true; + }, + error : function () { + throw new Error('Error retrieving "' + url + '" zoneinfo files'); + } + }); + } + function getRegionForTimezone(tz) { + var exc = regionExceptions[tz] + , reg + , ret; + if (exc) return exc; + reg = tz.split('/')[0]; + ret = regionMap[reg]; + // If there's nothing listed in the main regions for this TZ, check the 'backward' links + if (ret) return ret; + var link = _this.zones[tz]; + if (typeof link === 'string') { + return getRegionForTimezone(link); + } + // Backward-compat file hasn't loaded yet, try looking in there + if (!_this.loadedZones.backward) { + // This is for obvious legacy zones (e.g., Iceland) that don't even have a prefix like "America/" that look like normal zones + _this.loadZoneFile('backward'); + return getRegionForTimezone(tz); + } + invalidTZError(tz); + } + function parseTimeString(str) { + var pat = /(\d+)(?::0*(\d*))?(?::0*(\d*))?([wsugz])?$/; + var hms = str.match(pat); + hms[1] = parseInt(hms[1], 10); + hms[2] = hms[2] ? parseInt(hms[2], 10) : 0; + hms[3] = hms[3] ? parseInt(hms[3], 10) : 0; + + return hms; + } + function processZone(z) { + if (!z[3]) { return; } + var yea = parseInt(z[3], 10); + var mon = 11; + var dat = 31; + if (z[4]) { + mon = SHORT_MONTHS[z[4].substr(0, 3)]; + dat = parseInt(z[5], 10) || 1; + } + var string = z[6] ? z[6] : '00:00:00' + , t = parseTimeString(string); + return [yea, mon, dat, t[1], t[2], t[3]]; + } + function getZone(dt, tz) { + var utcMillis = typeof dt === 'number' ? dt : new Date(dt).getTime(); + var t = tz; + var zoneList = _this.zones[t]; + // Follow links to get to an actual zone + while (typeof zoneList === "string") { + t = zoneList; + zoneList = _this.zones[t]; + } + if (!zoneList) { + // Backward-compat file hasn't loaded yet, try looking in there + if (!_this.loadedZones.backward) { + //This is for backward entries like "America/Fort_Wayne" that + // getRegionForTimezone *thinks* it has a region file and zone + // for (e.g., America => 'northamerica'), but in reality it's a + // legacy zone we need the backward file for. + _this.loadZoneFile('backward'); + return getZone(dt, tz); + } + invalidTZError(t); + } + if (zoneList.length === 0) { + throw new Error('No Zone found for "' + tz + '" on ' + dt); + } + //Do backwards lookup since most use cases deal with newer dates. + for (var i = zoneList.length - 1; i >= 0; i--) { + var z = zoneList[i]; + if (z[3] && utcMillis > z[3]) break; + } + return zoneList[i+1]; + } + function getBasicOffset(time) { + var off = parseTimeString(time) + , adj = time.indexOf('-') === 0 ? -1 : 1; + off = adj * (((off[1] * 60 + off[2]) * 60 + off[3]) * 1000); + return off/60/1000; + } + + //if isUTC is true, date is given in UTC, otherwise it's given + // in local time (ie. date.getUTC*() returns local time components) + function getRule(dt, zone, isUTC) { + var date = typeof dt === 'number' ? new Date(dt) : dt; + var ruleset = zone[1]; + var basicOffset = zone[0]; + + //Convert a date to UTC. Depending on the 'type' parameter, the date + // parameter may be: + // + // - `u`, `g`, `z`: already UTC (no adjustment). + // + // - `s`: standard time (adjust for time zone offset but not for DST) + // + // - `w`: wall clock time (adjust for both time zone and DST offset). + // + // DST adjustment is done using the rule given as third argument. + var convertDateToUTC = function (date, type, rule) { + var offset = 0; + + if (type === 'u' || type === 'g' || type === 'z') { // UTC + offset = 0; + } else if (type === 's') { // Standard Time + offset = basicOffset; + } else if (type === 'w' || !type) { // Wall Clock Time + offset = getAdjustedOffset(basicOffset, rule); + } else { + throw("unknown type " + type); + } + offset *= 60 * 1000; // to millis + + return new Date(date.getTime() + offset); + }; + + //Step 1: Find applicable rules for this year. + // + //Step 2: Sort the rules by effective date. + // + //Step 3: Check requested date to see if a rule has yet taken effect this year. If not, + // + //Step 4: Get the rules for the previous year. If there isn't an applicable rule for last year, then + // there probably is no current time offset since they seem to explicitly turn off the offset + // when someone stops observing DST. + // + // FIXME if this is not the case and we'll walk all the way back (ugh). + // + //Step 5: Sort the rules by effective date. + //Step 6: Apply the most recent rule before the current time. + var convertRuleToExactDateAndTime = function (yearAndRule, prevRule) { + var year = yearAndRule[0] + , rule = yearAndRule[1]; + // Assume that the rule applies to the year of the given date. + + var hms = rule[5]; + var effectiveDate; + + if (!EXACT_DATE_TIME[year]) + EXACT_DATE_TIME[year] = {}; + + // Result for given parameters is already stored + if (EXACT_DATE_TIME[year][rule]) + effectiveDate = EXACT_DATE_TIME[year][rule]; + else { + //If we have a specific date, use that! + if (!isNaN(rule[4])) { + effectiveDate = new Date(Date.UTC(year, SHORT_MONTHS[rule[3]], rule[4], hms[1], hms[2], hms[3], 0)); + } + //Let's hunt for the date. + else { + var targetDay + , operator; + //Example: `lastThu` + if (rule[4].substr(0, 4) === "last") { + // Start at the last day of the month and work backward. + effectiveDate = new Date(Date.UTC(year, SHORT_MONTHS[rule[3]] + 1, 1, hms[1] - 24, hms[2], hms[3], 0)); + targetDay = SHORT_DAYS[rule[4].substr(4, 3)]; + operator = "<="; + } + //Example: `Sun>=15` + else { + //Start at the specified date. + effectiveDate = new Date(Date.UTC(year, SHORT_MONTHS[rule[3]], rule[4].substr(5), hms[1], hms[2], hms[3], 0)); + targetDay = SHORT_DAYS[rule[4].substr(0, 3)]; + operator = rule[4].substr(3, 2); + } + var ourDay = effectiveDate.getUTCDay(); + //Go forwards. + if (operator === ">=") { + effectiveDate.setUTCDate(effectiveDate.getUTCDate() + (targetDay - ourDay + ((targetDay < ourDay) ? 7 : 0))); + } + //Go backwards. Looking for the last of a certain day, or operator is "<=" (less likely). + else { + effectiveDate.setUTCDate(effectiveDate.getUTCDate() + (targetDay - ourDay - ((targetDay > ourDay) ? 7 : 0))); + } + } + EXACT_DATE_TIME[year][rule] = effectiveDate; + } + + + //If previous rule is given, correct for the fact that the starting time of the current + // rule may be specified in local time. + if (prevRule) { + effectiveDate = convertDateToUTC(effectiveDate, hms[4], prevRule); + } + return effectiveDate; + }; + + var findApplicableRules = function (year, ruleset) { + var applicableRules = []; + for (var i = 0; ruleset && i < ruleset.length; i++) { + //Exclude future rules. + if (ruleset[i][0] <= year && + ( + // Date is in a set range. + ruleset[i][1] >= year || + // Date is in an "only" year. + (ruleset[i][0] === year && ruleset[i][1] === "only") || + //We're in a range from the start year to infinity. + ruleset[i][1] === "max" + ) + ) { + //It's completely okay to have any number of matches here. + // Normally we should only see two, but that doesn't preclude other numbers of matches. + // These matches are applicable to this year. + applicableRules.push([year, ruleset[i]]); + } + } + return applicableRules; + }; + + var compareDates = function (a, b, prev) { + var year, rule; + if (a.constructor !== Date) { + year = a[0]; + rule = a[1]; + a = (!prev && EXACT_DATE_TIME[year] && EXACT_DATE_TIME[year][rule]) + ? EXACT_DATE_TIME[year][rule] + : convertRuleToExactDateAndTime(a, prev); + } else if (prev) { + a = convertDateToUTC(a, isUTC ? 'u' : 'w', prev); + } + if (b.constructor !== Date) { + year = b[0]; + rule = b[1]; + b = (!prev && EXACT_DATE_TIME[year] && EXACT_DATE_TIME[year][rule]) ? EXACT_DATE_TIME[year][rule] + : convertRuleToExactDateAndTime(b, prev); + } else if (prev) { + b = convertDateToUTC(b, isUTC ? 'u' : 'w', prev); + } + a = Number(a); + b = Number(b); + return a - b; + }; + + var year = date.getUTCFullYear(); + var applicableRules; + + applicableRules = findApplicableRules(year, _this.rules[ruleset]); + applicableRules.push(date); + //While sorting, the time zone in which the rule starting time is specified + // is ignored. This is ok as long as the timespan between two DST changes is + // larger than the DST offset, which is probably always true. + // As the given date may indeed be close to a DST change, it may get sorted + // to a wrong position (off by one), which is corrected below. + applicableRules.sort(compareDates); + + //If there are not enough past DST rules... + if (applicableRules.indexOf(date) < 2) { + applicableRules = applicableRules.concat(findApplicableRules(year-1, _this.rules[ruleset])); + applicableRules.sort(compareDates); + } + var pinpoint = applicableRules.indexOf(date); + if (pinpoint > 1 && compareDates(date, applicableRules[pinpoint-1], applicableRules[pinpoint-2][1]) < 0) { + //The previous rule does not really apply, take the one before that. + return applicableRules[pinpoint - 2][1]; + } else if (pinpoint > 0 && pinpoint < applicableRules.length - 1 && compareDates(date, applicableRules[pinpoint+1], applicableRules[pinpoint-1][1]) > 0) { + + //The next rule does already apply, take that one. + return applicableRules[pinpoint + 1][1]; + } else if (pinpoint === 0) { + //No applicable rule found in this and in previous year. + return null; + } + return applicableRules[pinpoint - 1][1]; + } + function getAdjustedOffset(off, rule) { + return -Math.ceil(rule[6] - off); + } + function getAbbreviation(zone, rule) { + var res; + var base = zone[2]; + if (base.indexOf('%s') > -1) { + var repl; + if (rule) { + repl = rule[7] === '-' ? '' : rule[7]; + } + //FIXME: Right now just falling back to Standard -- + // apparently ought to use the last valid rule, + // although in practice that always ought to be Standard + else { + repl = 'S'; + } + res = base.replace('%s', repl); + } + else if (base.indexOf('/') > -1) { + //Chose one of two alternative strings. + res = base.split("/", 2)[rule[6] ? 1 : 0]; + } else { + res = base; + } + return res; + } + + this.zoneFileBasePath; + this.zoneFiles = ['africa', 'antarctica', 'asia', 'australasia', 'backward', 'etcetera', 'europe', 'northamerica', 'pacificnew', 'southamerica']; + this.loadingSchemes = { + PRELOAD_ALL: 'preloadAll', + LAZY_LOAD: 'lazyLoad', + MANUAL_LOAD: 'manualLoad' + }; + this.loadingScheme = this.loadingSchemes.LAZY_LOAD; + this.loadedZones = {}; + this.zones = {}; + this.rules = {}; + + this.init = function (o) { + var opts = { async: true } + , def = this.defaultZoneFile = this.loadingScheme === this.loadingSchemes.PRELOAD_ALL + ? this.zoneFiles + : 'northamerica' + , done = 0 + , callbackFn; + //Override default with any passed-in opts + for (var p in o) { + opts[p] = o[p]; + } + if (typeof def === 'string') { + return this.loadZoneFile(def, opts); + } + //Wraps callback function in another one that makes + // sure all files have been loaded. + callbackFn = opts.callback; + opts.callback = function () { + done++; + (done === def.length) && typeof callbackFn === 'function' && callbackFn(); + }; + for (var i = 0; i < def.length; i++) { + this.loadZoneFile(def[i], opts); + } + }; + + //Get the zone files via XHR -- if the sync flag + // is set to true, it's being called by the lazy-loading + // mechanism, so the result needs to be returned inline. + this.loadZoneFile = function (fileName, opts) { + if (typeof this.zoneFileBasePath === 'undefined') { + throw new Error('Please define a base path to your zone file directory -- timezoneJS.timezone.zoneFileBasePath.'); + } + //Ignore already loaded zones. + if (this.loadedZones[fileName]) { + return; + } + this.loadedZones[fileName] = true; + return builtInLoadZoneFile(fileName, opts); + }; + this.loadZoneJSONData = function (url, sync) { + var processData = function (data) { + data = eval('('+ data +')'); + for (var z in data.zones) { + _this.zones[z] = data.zones[z]; + } + for (var r in data.rules) { + _this.rules[r] = data.rules[r]; + } + }; + return sync + ? processData(_this.transport({ url : url, async : false })) + : _this.transport({ url : url, success : processData }); + }; + this.loadZoneDataFromObject = function (data) { + if (!data) { return; } + for (var z in data.zones) { + _this.zones[z] = data.zones[z]; + } + for (var r in data.rules) { + _this.rules[r] = data.rules[r]; + } + }; + this.getAllZones = function () { + var arr = []; + for (var z in this.zones) { arr.push(z); } + return arr.sort(); + }; + this.parseZones = function (str) { + var lines = str.split('\n') + , arr = [] + , chunk = '' + , l + , zone = null + , rule = null; + for (var i = 0; i < lines.length; i++) { + l = lines[i]; + if (l.match(/^\s/)) { + l = "Zone " + zone + l; + } + l = l.split("#")[0]; + if (l.length > 3) { + arr = l.split(/\s+/); + chunk = arr.shift(); + //Ignore Leap. + switch (chunk) { + case 'Zone': + zone = arr.shift(); + if (!_this.zones[zone]) { + _this.zones[zone] = []; + } + if (arr.length < 3) break; + //Process zone right here and replace 3rd element with the processed array. + arr.splice(3, arr.length, processZone(arr)); + if (arr[3]) arr[3] = Date.UTC.apply(null, arr[3]); + arr[0] = -getBasicOffset(arr[0]); + _this.zones[zone].push(arr); + break; + case 'Rule': + rule = arr.shift(); + if (!_this.rules[rule]) { + _this.rules[rule] = []; + } + //Parse int FROM year and TO year + arr[0] = parseInt(arr[0], 10); + arr[1] = parseInt(arr[1], 10) || arr[1]; + //Parse time string AT + arr[5] = parseTimeString(arr[5]); + //Parse offset SAVE + arr[6] = getBasicOffset(arr[6]); + _this.rules[rule].push(arr); + break; + case 'Link': + //No zones for these should already exist. + if (_this.zones[arr[1]]) { + throw new Error('Error with Link ' + arr[1] + '. Cannot create link of a preexisted zone.'); + } + //Create the link. + _this.zones[arr[1]] = arr[0]; + break; + } + } + } + return true; + }; + //Expose transport mechanism and allow overwrite. + this.transport = _transport; + this.getTzInfo = function (dt, tz, isUTC) { + //Lazy-load any zones not yet loaded. + if (this.loadingScheme === this.loadingSchemes.LAZY_LOAD) { + //Get the correct region for the zone. + var zoneFile = getRegionForTimezone(tz); + if (!zoneFile) { + throw new Error('Not a valid timezone ID.'); + } + if (!this.loadedZones[zoneFile]) { + //Get the file and parse it -- use synchronous XHR. + this.loadZoneFile(zoneFile); + } + } + var z = getZone(dt, tz); + var off = z[0]; + //See if the offset needs adjustment. + var rule = getRule(dt, z, isUTC); + if (rule) { + off = getAdjustedOffset(off, rule); + } + var abbr = getAbbreviation(z, rule); + return { tzOffset: off, tzAbbr: abbr }; + }; + }; +}).call(this); diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/index.html new file mode 100644 index 0000000..1b893af --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/index.html @@ -0,0 +1,114 @@ + + + + + Flot Examples: Time zones + + + + + + + + + + + + +
    + +

    UTC

    +
    +
    +
    + +

    Browser

    +
    +
    +
    + +

    Chicago

    +
    +
    +
    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/africa b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/africa new file mode 100644 index 0000000..e3e5508 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/africa @@ -0,0 +1,1181 @@ +#
    +# This file is in the public domain, so clarified as of
    +# 2009-05-17 by Arthur David Olson.
    +
    +# This data is by no means authoritative; if you think you know better,
    +# go ahead and edit the file (and please send any changes to
    +# tz@iana.org for general use in the future).
    +
    +# From Paul Eggert (2006-03-22):
    +#
    +# A good source for time zone historical data outside the U.S. is
    +# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
    +# San Diego: ACS Publications, Inc. (2003).
    +#
    +# Gwillim Law writes that a good source
    +# for recent time zone data is the International Air Transport
    +# Association's Standard Schedules Information Manual (IATA SSIM),
    +# published semiannually.  Law sent in several helpful summaries
    +# of the IATA's data after 1990.
    +#
    +# Except where otherwise noted, Shanks & Pottenger is the source for
    +# entries through 1990, and IATA SSIM is the source for entries afterwards.
    +#
    +# Another source occasionally used is Edward W. Whitman, World Time Differences,
    +# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
    +# I found in the UCLA library.
    +#
    +# A reliable and entertaining source about time zones is
    +# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
    +#
    +# Previous editions of this database used WAT, CAT, SAT, and EAT
    +# for +0:00 through +3:00, respectively,
    +# but Mark R V Murray reports that
    +# `SAST' is the official abbreviation for +2:00 in the country of South Africa,
    +# `CAT' is commonly used for +2:00 in countries north of South Africa, and
    +# `WAT' is probably the best name for +1:00, as the common phrase for
    +# the area that includes Nigeria is ``West Africa''.
    +# He has heard of ``Western Sahara Time'' for +0:00 but can find no reference.
    +#
    +# To make things confusing, `WAT' seems to have been used for -1:00 long ago;
    +# I'd guess that this was because people needed _some_ name for -1:00,
    +# and at the time, far west Africa was the only major land area in -1:00.
    +# This usage is now obsolete, as the last use of -1:00 on the African
    +# mainland seems to have been 1976 in Western Sahara.
    +#
    +# To summarize, the following abbreviations seem to have some currency:
    +#	-1:00	WAT	West Africa Time (no longer used)
    +#	 0:00	GMT	Greenwich Mean Time
    +#	 2:00	CAT	Central Africa Time
    +#	 2:00	SAST	South Africa Standard Time
    +# and Murray suggests the following abbreviation:
    +#	 1:00	WAT	West Africa Time
    +# I realize that this leads to `WAT' being used for both -1:00 and 1:00
    +# for times before 1976, but this is the best I can think of
    +# until we get more information.
    +#
    +# I invented the following abbreviations; corrections are welcome!
    +#	 2:00	WAST	West Africa Summer Time
    +#	 2:30	BEAT	British East Africa Time (no longer used)
    +#	 2:45	BEAUT	British East Africa Unified Time (no longer used)
    +#	 3:00	CAST	Central Africa Summer Time (no longer used)
    +#	 3:00	SAST	South Africa Summer Time (no longer used)
    +#	 3:00	EAT	East Africa Time
    +#	 4:00	EAST	East Africa Summer Time (no longer used)
    +
    +# Algeria
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Algeria	1916	only	-	Jun	14	23:00s	1:00	S
    +Rule	Algeria	1916	1919	-	Oct	Sun>=1	23:00s	0	-
    +Rule	Algeria	1917	only	-	Mar	24	23:00s	1:00	S
    +Rule	Algeria	1918	only	-	Mar	 9	23:00s	1:00	S
    +Rule	Algeria	1919	only	-	Mar	 1	23:00s	1:00	S
    +Rule	Algeria	1920	only	-	Feb	14	23:00s	1:00	S
    +Rule	Algeria	1920	only	-	Oct	23	23:00s	0	-
    +Rule	Algeria	1921	only	-	Mar	14	23:00s	1:00	S
    +Rule	Algeria	1921	only	-	Jun	21	23:00s	0	-
    +Rule	Algeria	1939	only	-	Sep	11	23:00s	1:00	S
    +Rule	Algeria	1939	only	-	Nov	19	 1:00	0	-
    +Rule	Algeria	1944	1945	-	Apr	Mon>=1	 2:00	1:00	S
    +Rule	Algeria	1944	only	-	Oct	 8	 2:00	0	-
    +Rule	Algeria	1945	only	-	Sep	16	 1:00	0	-
    +Rule	Algeria	1971	only	-	Apr	25	23:00s	1:00	S
    +Rule	Algeria	1971	only	-	Sep	26	23:00s	0	-
    +Rule	Algeria	1977	only	-	May	 6	 0:00	1:00	S
    +Rule	Algeria	1977	only	-	Oct	21	 0:00	0	-
    +Rule	Algeria	1978	only	-	Mar	24	 1:00	1:00	S
    +Rule	Algeria	1978	only	-	Sep	22	 3:00	0	-
    +Rule	Algeria	1980	only	-	Apr	25	 0:00	1:00	S
    +Rule	Algeria	1980	only	-	Oct	31	 2:00	0	-
    +# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
    +# more precise 0:09:21.
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Algiers	0:12:12 -	LMT	1891 Mar 15 0:01
    +			0:09:21	-	PMT	1911 Mar 11    # Paris Mean Time
    +			0:00	Algeria	WE%sT	1940 Feb 25 2:00
    +			1:00	Algeria	CE%sT	1946 Oct  7
    +			0:00	-	WET	1956 Jan 29
    +			1:00	-	CET	1963 Apr 14
    +			0:00	Algeria	WE%sT	1977 Oct 21
    +			1:00	Algeria	CE%sT	1979 Oct 26
    +			0:00	Algeria	WE%sT	1981 May
    +			1:00	-	CET
    +
    +# Angola
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Luanda	0:52:56	-	LMT	1892
    +			0:52:04	-	AOT	1911 May 26 # Angola Time
    +			1:00	-	WAT
    +
    +# Benin
    +# Whitman says they switched to 1:00 in 1946, not 1934;
    +# go with Shanks & Pottenger.
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Africa/Porto-Novo	0:10:28	-	LMT	1912
    +			0:00	-	GMT	1934 Feb 26
    +			1:00	-	WAT
    +
    +# Botswana
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Gaborone	1:43:40 -	LMT	1885
    +			2:00	-	CAT	1943 Sep 19 2:00
    +			2:00	1:00	CAST	1944 Mar 19 2:00
    +			2:00	-	CAT
    +
    +# Burkina Faso
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Africa/Ouagadougou	-0:06:04 -	LMT	1912
    +			 0:00	-	GMT
    +
    +# Burundi
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Africa/Bujumbura	1:57:28	-	LMT	1890
    +			2:00	-	CAT
    +
    +# Cameroon
    +# Whitman says they switched to 1:00 in 1920; go with Shanks & Pottenger.
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Douala	0:38:48	-	LMT	1912
    +			1:00	-	WAT
    +
    +# Cape Verde
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Atlantic/Cape_Verde -1:34:04 -	LMT	1907			# Praia
    +			-2:00	-	CVT	1942 Sep
    +			-2:00	1:00	CVST	1945 Oct 15
    +			-2:00	-	CVT	1975 Nov 25 2:00
    +			-1:00	-	CVT
    +
    +# Central African Republic
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Bangui	1:14:20	-	LMT	1912
    +			1:00	-	WAT
    +
    +# Chad
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Ndjamena	1:00:12 -	LMT	1912
    +			1:00	-	WAT	1979 Oct 14
    +			1:00	1:00	WAST	1980 Mar  8
    +			1:00	-	WAT
    +
    +# Comoros
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Indian/Comoro	2:53:04 -	LMT	1911 Jul   # Moroni, Gran Comoro
    +			3:00	-	EAT
    +
    +# Democratic Republic of Congo
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Africa/Kinshasa	1:01:12 -	LMT	1897 Nov 9
    +			1:00	-	WAT
    +Zone Africa/Lubumbashi	1:49:52 -	LMT	1897 Nov 9
    +			2:00	-	CAT
    +
    +# Republic of the Congo
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Africa/Brazzaville	1:01:08 -	LMT	1912
    +			1:00	-	WAT
    +
    +# Cote D'Ivoire
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Abidjan	-0:16:08 -	LMT	1912
    +			 0:00	-	GMT
    +
    +# Djibouti
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Djibouti	2:52:36 -	LMT	1911 Jul
    +			3:00	-	EAT
    +
    +###############################################################################
    +
    +# Egypt
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Egypt	1940	only	-	Jul	15	0:00	1:00	S
    +Rule	Egypt	1940	only	-	Oct	 1	0:00	0	-
    +Rule	Egypt	1941	only	-	Apr	15	0:00	1:00	S
    +Rule	Egypt	1941	only	-	Sep	16	0:00	0	-
    +Rule	Egypt	1942	1944	-	Apr	 1	0:00	1:00	S
    +Rule	Egypt	1942	only	-	Oct	27	0:00	0	-
    +Rule	Egypt	1943	1945	-	Nov	 1	0:00	0	-
    +Rule	Egypt	1945	only	-	Apr	16	0:00	1:00	S
    +Rule	Egypt	1957	only	-	May	10	0:00	1:00	S
    +Rule	Egypt	1957	1958	-	Oct	 1	0:00	0	-
    +Rule	Egypt	1958	only	-	May	 1	0:00	1:00	S
    +Rule	Egypt	1959	1981	-	May	 1	1:00	1:00	S
    +Rule	Egypt	1959	1965	-	Sep	30	3:00	0	-
    +Rule	Egypt	1966	1994	-	Oct	 1	3:00	0	-
    +Rule	Egypt	1982	only	-	Jul	25	1:00	1:00	S
    +Rule	Egypt	1983	only	-	Jul	12	1:00	1:00	S
    +Rule	Egypt	1984	1988	-	May	 1	1:00	1:00	S
    +Rule	Egypt	1989	only	-	May	 6	1:00	1:00	S
    +Rule	Egypt	1990	1994	-	May	 1	1:00	1:00	S
    +# IATA (after 1990) says transitions are at 0:00.
    +# Go with IATA starting in 1995, except correct 1995 entry from 09-30 to 09-29.
    +
    +# From Alexander Krivenyshev (2011-04-20):
    +# "...Egypt's interim cabinet decided on Wednesday to cancel daylight
    +# saving time after a poll posted on its website showed the majority of
    +# Egyptians would approve the cancellation."
    +#
    +# Egypt to cancel daylight saving time
    +# 
    +# http://www.almasryalyoum.com/en/node/407168
    +# 
    +# or
    +# 
    +# http://www.worldtimezone.com/dst_news/dst_news_egypt04.html
    +# 
    +Rule	Egypt	1995	2010	-	Apr	lastFri	 0:00s	1:00	S
    +Rule	Egypt	1995	2005	-	Sep	lastThu	23:00s	0	-
    +# From Steffen Thorsen (2006-09-19):
    +# The Egyptian Gazette, issue 41,090 (2006-09-18), page 1, reports:
    +# Egypt will turn back clocks by one hour at the midnight of Thursday
    +# after observing the daylight saving time since May.
    +# http://news.gom.com.eg/gazette/pdf/2006/09/18/01.pdf
    +Rule	Egypt	2006	only	-	Sep	21	23:00s	0	-
    +# From Dirk Losch (2007-08-14):
    +# I received a mail from an airline which says that the daylight
    +# saving time in Egypt will end in the night of 2007-09-06 to 2007-09-07.
    +# From Jesper Norgaard Welen (2007-08-15): [The following agree:]
    +# http://www.nentjes.info/Bill/bill5.htm
    +# http://www.timeanddate.com/worldclock/city.html?n=53
    +# From Steffen Thorsen (2007-09-04): The official information...:
    +# http://www.sis.gov.eg/En/EgyptOnline/Miscellaneous/000002/0207000000000000001580.htm
    +Rule	Egypt	2007	only	-	Sep	Thu>=1	23:00s	0	-
    +# From Abdelrahman Hassan (2007-09-06):
    +# Due to the Hijri (lunar Islamic calendar) year being 11 days shorter
    +# than the year of the Gregorian calendar, Ramadan shifts earlier each
    +# year. This year it will be observed September 13 (September is quite
    +# hot in Egypt), and the idea is to make fasting easier for workers by
    +# shifting business hours one hour out of daytime heat. Consequently,
    +# unless discontinued, next DST may end Thursday 28 August 2008.
    +# From Paul Eggert (2007-08-17):
    +# For lack of better info, assume the new rule is last Thursday in August.
    +
    +# From Petr Machata (2009-04-06):
    +# The following appeared in Red Hat bugzilla[1] (edited):
    +#
    +# > $ zdump -v /usr/share/zoneinfo/Africa/Cairo | grep 2009
    +# > /usr/share/zoneinfo/Africa/Cairo  Thu Apr 23 21:59:59 2009 UTC = Thu =
    +# Apr 23
    +# > 23:59:59 2009 EET isdst=0 gmtoff=7200
    +# > /usr/share/zoneinfo/Africa/Cairo  Thu Apr 23 22:00:00 2009 UTC = Fri =
    +# Apr 24
    +# > 01:00:00 2009 EEST isdst=1 gmtoff=10800
    +# > /usr/share/zoneinfo/Africa/Cairo  Thu Aug 27 20:59:59 2009 UTC = Thu =
    +# Aug 27
    +# > 23:59:59 2009 EEST isdst=1 gmtoff=10800
    +# > /usr/share/zoneinfo/Africa/Cairo  Thu Aug 27 21:00:00 2009 UTC = Thu =
    +# Aug 27
    +# > 23:00:00 2009 EET isdst=0 gmtoff=7200
    +#
    +# > end date should be Thu Sep 24 2009 (Last Thursday in September at 23:59=
    +# :59)
    +# > http://support.microsoft.com/kb/958729/
    +#
    +# timeanddate[2] and another site I've found[3] also support that.
    +#
    +# [1] 
    +# https://bugzilla.redhat.com/show_bug.cgi?id=492263
    +# 
    +# [2] 
    +# http://www.timeanddate.com/worldclock/clockchange.html?n=53
    +# 
    +# [3] 
    +# http://wwp.greenwichmeantime.com/time-zone/africa/egypt/
    +# 
    +
    +# From Arthur David Olson (2009-04-20):
    +# In 2009 (and for the next several years), Ramadan ends before the fourth
    +# Thursday in September; Egypt is expected to revert to the last Thursday
    +# in September.
    +
    +# From Steffen Thorsen (2009-08-11):
    +# We have been able to confirm the August change with the Egyptian Cabinet
    +# Information and Decision Support Center:
    +# 
    +# http://www.timeanddate.com/news/time/egypt-dst-ends-2009.html
    +# 
    +#
    +# The Middle East News Agency
    +# 
    +# http://www.mena.org.eg/index.aspx
    +# 
    +# also reports "Egypt starts winter time on August 21"
    +# today in article numbered "71, 11/08/2009 12:25 GMT."
    +# Only the title above is available without a subscription to their service,
    +# and can be found by searching for "winter" in their search engine
    +# (at least today).
    +
    +# From Alexander Krivenyshev (2010-07-20):
    +# According to News from Egypt -  Al-Masry Al-Youm Egypt's cabinet has
    +# decided that Daylight Saving Time will not be used in Egypt during
    +# Ramadan.
    +#
    +# Arabic translation:
    +# "Clocks to go back during Ramadan--and then forward again"
    +# 
    +# http://www.almasryalyoum.com/en/news/clocks-go-back-during-ramadan-and-then-forward-again
    +# 
    +# or
    +# 
    +# http://www.worldtimezone.com/dst_news/dst_news_egypt02.html
    +# 
    +
    +Rule	Egypt	2008	only	-	Aug	lastThu	23:00s	0	-
    +Rule	Egypt	2009	only	-	Aug	20	23:00s	0	-
    +Rule	Egypt	2010	only	-	Aug	11	0:00	0	-
    +Rule	Egypt	2010	only	-	Sep	10	0:00	1:00	S
    +Rule	Egypt	2010	only	-	Sep	lastThu	23:00s	0	-
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Cairo	2:05:00 -	LMT	1900 Oct
    +			2:00	Egypt	EE%sT
    +
    +# Equatorial Guinea
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Malabo	0:35:08 -	LMT	1912
    +			0:00	-	GMT	1963 Dec 15
    +			1:00	-	WAT
    +
    +# Eritrea
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Asmara	2:35:32 -	LMT	1870
    +			2:35:32	-	AMT	1890	      # Asmara Mean Time
    +			2:35:20	-	ADMT	1936 May 5    # Adis Dera MT
    +			3:00	-	EAT
    +
    +# Ethiopia
    +# From Paul Eggert (2006-03-22):
    +# Shanks & Pottenger write that Ethiopia had six narrowly-spaced time zones
    +# between 1870 and 1890, and that they merged to 38E50 (2:35:20) in 1890.
    +# We'll guess that 38E50 is for Adis Dera.
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Africa/Addis_Ababa	2:34:48 -	LMT	1870
    +			2:35:20	-	ADMT	1936 May 5    # Adis Dera MT
    +			3:00	-	EAT
    +
    +# Gabon
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Africa/Libreville	0:37:48 -	LMT	1912
    +			1:00	-	WAT
    +
    +# Gambia
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Banjul	-1:06:36 -	LMT	1912
    +			-1:06:36 -	BMT	1935	# Banjul Mean Time
    +			-1:00	-	WAT	1964
    +			 0:00	-	GMT
    +
    +# Ghana
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +# Whitman says DST was observed from 1931 to ``the present'';
    +# go with Shanks & Pottenger.
    +Rule	Ghana	1936	1942	-	Sep	 1	0:00	0:20	GHST
    +Rule	Ghana	1936	1942	-	Dec	31	0:00	0	GMT
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Accra	-0:00:52 -	LMT	1918
    +			 0:00	Ghana	%s
    +
    +# Guinea
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Conakry	-0:54:52 -	LMT	1912
    +			 0:00	-	GMT	1934 Feb 26
    +			-1:00	-	WAT	1960
    +			 0:00	-	GMT
    +
    +# Guinea-Bissau
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Bissau	-1:02:20 -	LMT	1911 May 26
    +			-1:00	-	WAT	1975
    +			 0:00	-	GMT
    +
    +# Kenya
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Nairobi	2:27:16	-	LMT	1928 Jul
    +			3:00	-	EAT	1930
    +			2:30	-	BEAT	1940
    +			2:45	-	BEAUT	1960
    +			3:00	-	EAT
    +
    +# Lesotho
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Maseru	1:50:00 -	LMT	1903 Mar
    +			2:00	-	SAST	1943 Sep 19 2:00
    +			2:00	1:00	SAST	1944 Mar 19 2:00
    +			2:00	-	SAST
    +
    +# Liberia
    +# From Paul Eggert (2006-03-22):
    +# In 1972 Liberia was the last country to switch
    +# from a UTC offset that was not a multiple of 15 or 20 minutes.
    +# Howse reports that it was in honor of their president's birthday.
    +# Shank & Pottenger report the date as May 1, whereas Howse reports Jan;
    +# go with Shanks & Pottenger.
    +# For Liberia before 1972, Shanks & Pottenger report -0:44, whereas Howse and
    +# Whitman each report -0:44:30; go with the more precise figure.
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Monrovia	-0:43:08 -	LMT	1882
    +			-0:43:08 -	MMT	1919 Mar # Monrovia Mean Time
    +			-0:44:30 -	LRT	1972 May # Liberia Time
    +			 0:00	-	GMT
    +
    +###############################################################################
    +
    +# Libya
    +
    +# From Even Scharning (2012-11-10):
    +# Libya set their time one hour back at 02:00 on Saturday November 10.
    +# http://www.libyaherald.com/2012/11/04/clocks-to-go-back-an-hour-on-saturday/
    +# Here is an official source [in Arabic]: http://ls.ly/fb6Yc
    +#
    +# Steffen Thorsen forwarded a translation (2012-11-10) in
    +# http://mm.icann.org/pipermail/tz/2012-November/018451.html
    +#
    +# From Tim Parenti (2012-11-11):
    +# Treat the 2012-11-10 change as a zone change from UTC+2 to UTC+1.
    +# The DST rules planned for 2013 and onward roughly mirror those of Europe
    +# (either two days before them or five days after them, so as to fall on
    +# lastFri instead of lastSun).
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Libya	1951	only	-	Oct	14	2:00	1:00	S
    +Rule	Libya	1952	only	-	Jan	 1	0:00	0	-
    +Rule	Libya	1953	only	-	Oct	 9	2:00	1:00	S
    +Rule	Libya	1954	only	-	Jan	 1	0:00	0	-
    +Rule	Libya	1955	only	-	Sep	30	0:00	1:00	S
    +Rule	Libya	1956	only	-	Jan	 1	0:00	0	-
    +Rule	Libya	1982	1984	-	Apr	 1	0:00	1:00	S
    +Rule	Libya	1982	1985	-	Oct	 1	0:00	0	-
    +Rule	Libya	1985	only	-	Apr	 6	0:00	1:00	S
    +Rule	Libya	1986	only	-	Apr	 4	0:00	1:00	S
    +Rule	Libya	1986	only	-	Oct	 3	0:00	0	-
    +Rule	Libya	1987	1989	-	Apr	 1	0:00	1:00	S
    +Rule	Libya	1987	1989	-	Oct	 1	0:00	0	-
    +Rule	Libya	1997	only	-	Apr	 4	0:00	1:00	S
    +Rule	Libya	1997	only	-	Oct	 4	0:00	0	-
    +Rule	Libya	2013	max	-	Mar	lastFri	1:00	1:00	S
    +Rule	Libya	2013	max	-	Oct	lastFri	2:00	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Tripoli	0:52:44 -	LMT	1920
    +			1:00	Libya	CE%sT	1959
    +			2:00	-	EET	1982
    +			1:00	Libya	CE%sT	1990 May  4
    +# The 1996 and 1997 entries are from Shanks & Pottenger;
    +# the IATA SSIM data contain some obvious errors.
    +			2:00	-	EET	1996 Sep 30
    +			1:00	Libya	CE%sT	1997 Oct  4
    +			2:00	-	EET	2012 Nov 10 2:00
    +			1:00	Libya	CE%sT
    +
    +# Madagascar
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Indian/Antananarivo 3:10:04 -	LMT	1911 Jul
    +			3:00	-	EAT	1954 Feb 27 23:00s
    +			3:00	1:00	EAST	1954 May 29 23:00s
    +			3:00	-	EAT
    +
    +# Malawi
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Blantyre	2:20:00 -	LMT	1903 Mar
    +			2:00	-	CAT
    +
    +# Mali
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Bamako	-0:32:00 -	LMT	1912
    +			 0:00	-	GMT	1934 Feb 26
    +			-1:00	-	WAT	1960 Jun 20
    +			 0:00	-	GMT
    +
    +# Mauritania
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Africa/Nouakchott	-1:03:48 -	LMT	1912
    +			 0:00	-	GMT	1934 Feb 26
    +			-1:00	-	WAT	1960 Nov 28
    +			 0:00	-	GMT
    +
    +# Mauritius
    +
    +# From Steffen Thorsen (2008-06-25):
    +# Mauritius plans to observe DST from 2008-11-01 to 2009-03-31 on a trial
    +# basis....
    +# It seems that Mauritius observed daylight saving time from 1982-10-10 to
    +# 1983-03-20 as well, but that was not successful....
    +# http://www.timeanddate.com/news/time/mauritius-daylight-saving-time.html
    +
    +# From Alex Krivenyshev (2008-06-25):
    +# http://economicdevelopment.gov.mu/portal/site/Mainhomepage/menuitem.a42b24128104d9845dabddd154508a0c/?content_id=0a7cee8b5d69a110VgnVCM1000000a04a8c0RCRD
    +
    +# From Arthur David Olson (2008-06-30):
    +# The www.timeanddate.com article cited by Steffen Thorsen notes that "A
    +# final decision has yet to be made on the times that daylight saving
    +# would begin and end on these dates." As a place holder, use midnight.
    +
    +# From Paul Eggert (2008-06-30):
    +# Follow Thorsen on DST in 1982/1983, instead of Shanks & Pottenger.
    +
    +# From Steffen Thorsen (2008-07-10):
    +# According to
    +# 
    +# http://www.lexpress.mu/display_article.php?news_id=111216
    +# 
    +# (in French), Mauritius will start and end their DST a few days earlier
    +# than previously announced (2008-11-01 to 2009-03-31).  The new start
    +# date is 2008-10-26 at 02:00 and the new end date is 2009-03-27 (no time
    +# given, but it is probably at either 2 or 3 wall clock time).
    +#
    +# A little strange though, since the article says that they moved the date
    +# to align itself with Europe and USA which also change time on that date,
    +# but that means they have not paid attention to what happened in
    +# USA/Canada last year (DST ends first Sunday in November). I also wonder
    +# why that they end on a Friday, instead of aligning with Europe which
    +# changes two days later.
    +
    +# From Alex Krivenyshev (2008-07-11):
    +# Seems that English language article "The revival of daylight saving
    +# time:  Energy conservation?"-# No. 16578 (07/11/2008) was originally
    +# published on Monday, June 30, 2008...
    +#
    +# I guess that article in French "Le gouvernement avance l'introduction
    +# de l'heure d'ete" stating that DST in Mauritius starting on October 26
    +# and ending on March 27, 2009 is the most recent one.
    +# ...
    +# 
    +# http://www.worldtimezone.com/dst_news/dst_news_mauritius02.html
    +# 
    +
    +# From Riad M. Hossen Ally (2008-08-03):
    +# The Government of Mauritius weblink
    +# 
    +# http://www.gov.mu/portal/site/pmosite/menuitem.4ca0efdee47462e7440a600248a521ca/?content_id=4728ca68b2a5b110VgnVCM1000000a04a8c0RCRD
    +# 
    +# Cabinet Decision of July 18th, 2008 states as follows:
    +#
    +# 4. ...Cabinet has agreed to the introduction into the National Assembly
    +# of the Time Bill which provides for the introduction of summer time in
    +# Mauritius. The summer time period which will be of one hour ahead of
    +# the standard time, will be aligned with that in Europe and the United
    +# States of America. It will start at two o'clock in the morning on the
    +# last Sunday of October and will end at two o'clock in the morning on
    +# the last Sunday of March the following year. The summer time for the
    +# year 2008 - 2009 will, therefore, be effective as from 26 October 2008
    +# and end on 29 March 2009.
    +
    +# From Ed Maste (2008-10-07):
    +# THE TIME BILL (No. XXVII of 2008) Explanatory Memorandum states the
    +# beginning / ending of summer time is 2 o'clock standard time in the
    +# morning of the last Sunday of October / last Sunday of March.
    +# 
    +# http://www.gov.mu/portal/goc/assemblysite/file/bill2708.pdf
    +# 
    +
    +# From Steffen Thorsen (2009-06-05):
    +# According to several sources, Mauritius will not continue to observe
    +# DST the coming summer...
    +#
    +# Some sources, in French:
    +# 
    +# http://www.defimedia.info/news/946/Rashid-Beebeejaun-:-%C2%AB-L%E2%80%99heure-d%E2%80%99%C3%A9t%C3%A9-ne-sera-pas-appliqu%C3%A9e-cette-ann%C3%A9e-%C2%BB
    +# 
    +# 
    +# http://lexpress.mu/Story/3398~Beebeejaun---Les-objectifs-d-%C3%A9conomie-d-%C3%A9nergie-de-l-heure-d-%C3%A9t%C3%A9-ont-%C3%A9t%C3%A9-atteints-
    +# 
    +#
    +# Our wrap-up:
    +# 
    +# http://www.timeanddate.com/news/time/mauritius-dst-will-not-repeat.html
    +# 
    +
    +# From Arthur David Olson (2009-07-11):
    +# The "mauritius-dst-will-not-repeat" wrapup includes this:
    +# "The trial ended on March 29, 2009, when the clocks moved back by one hour
    +# at 2am (or 02:00) local time..."
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule Mauritius	1982	only	-	Oct	10	0:00	1:00	S
    +Rule Mauritius	1983	only	-	Mar	21	0:00	0	-
    +Rule Mauritius	2008	only	-	Oct	lastSun	2:00	1:00	S
    +Rule Mauritius	2009	only	-	Mar	lastSun	2:00	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Indian/Mauritius	3:50:00 -	LMT	1907		# Port Louis
    +			4:00 Mauritius	MU%sT	# Mauritius Time
    +# Agalega Is, Rodriguez
    +# no information; probably like Indian/Mauritius
    +
    +# Mayotte
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Indian/Mayotte	3:00:56 -	LMT	1911 Jul	# Mamoutzou
    +			3:00	-	EAT
    +
    +# Morocco
    +# See the `europe' file for Spanish Morocco (Africa/Ceuta).
    +
    +# From Alex Krivenyshev (2008-05-09):
    +# Here is an article that Morocco plan to introduce Daylight Saving Time between
    +# 1 June, 2008 and 27 September, 2008.
    +#
    +# "... Morocco is to save energy by adjusting its clock during summer so it will
    +# be one hour ahead of GMT between 1 June and 27 September, according to
    +# Communication Minister and Gov ernment Spokesman, Khalid Naciri...."
    +#
    +# 
    +# http://www.worldtimezone.net/dst_news/dst_news_morocco01.html
    +# 
    +# OR
    +# 
    +# http://en.afrik.com/news11892.html
    +# 
    +
    +# From Alex Krivenyshev (2008-05-09):
    +# The Morocco time change can be confirmed on Morocco web site Maghreb Arabe Presse:
    +# 
    +# http://www.map.ma/eng/sections/box3/morocco_shifts_to_da/view
    +# 
    +#
    +# Morocco shifts to daylight time on June 1st through September 27, Govt.
    +# spokesman.
    +
    +# From Patrice Scattolin (2008-05-09):
    +# According to this article:
    +# 
    +# http://www.avmaroc.com/actualite/heure-dete-comment-a127896.html
    +# 
    +# (and republished here:
    +# 
    +# http://www.actu.ma/heure-dete-comment_i127896_0.html
    +# 
    +# )
    +# the changes occurs at midnight:
    +#
    +# saturday night may 31st at midnight (which in french is to be
    +# intrepreted as the night between saturday and sunday)
    +# sunday night the 28th  at midnight
    +#
    +# Seeing that the 28th is monday, I am guessing that she intends to say
    +# the midnight of the 28th which is the midnight between sunday and
    +# monday, which jives with other sources that say that it's inclusive
    +# june1st to sept 27th.
    +#
    +# The decision was taken by decree *2-08-224 *but I can't find the decree
    +# published on the web.
    +#
    +# It's also confirmed here:
    +# 
    +# http://www.maroc.ma/NR/exeres/FACF141F-D910-44B0-B7FA-6E03733425D1.htm
    +# 
    +# on a government portal as being  between june 1st and sept 27th (not yet
    +# posted in english).
    +#
    +# The following google query will generate many relevant hits:
    +# 
    +# http://www.google.com/search?hl=en&q=Conseil+de+gouvernement+maroc+heure+avance&btnG=Search
    +# 
    +
    +# From Alex Krivenyshev (2008-05-09):
    +# Is Western Sahara (part which administrated by Morocco) going to follow
    +# Morocco DST changes?  Any information?  What about other part of
    +# Western Sahara - under administration of POLISARIO Front (also named
    +# SADR Saharawi Arab Democratic Republic)?
    +
    +# From Arthur David Olson (2008-05-09):
    +# XXX--guess that it is only Morocco for now; guess only 2008 for now.
    +
    +# From Steffen Thorsen (2008-08-27):
    +# Morocco will change the clocks back on the midnight between August 31
    +# and September 1. They originally planned to observe DST to near the end
    +# of September:
    +#
    +# One article about it (in French):
    +# 
    +# http://www.menara.ma/fr/Actualites/Maroc/Societe/ci.retour_a_l_heure_gmt_a_partir_du_dimanche_31_aout_a_minuit_officiel_.default
    +# 
    +#
    +# We have some further details posted here:
    +# 
    +# http://www.timeanddate.com/news/time/morocco-ends-dst-early-2008.html
    +# 
    +
    +# From Steffen Thorsen (2009-03-17):
    +# Morocco will observe DST from 2009-06-01 00:00 to 2009-08-21 00:00 according
    +# to many sources, such as
    +# 
    +# http://news.marweb.com/morocco/entertainment/morocco-daylight-saving.html
    +# 
    +# 
    +# http://www.medi1sat.ma/fr/depeche.aspx?idp=2312
    +# 
    +# (French)
    +#
    +# Our summary:
    +# 
    +# http://www.timeanddate.com/news/time/morocco-starts-dst-2009.html
    +# 
    +
    +# From Alexander Krivenyshev (2009-03-17):
    +# Here is a link to official document from Royaume du Maroc Premier Ministre,
    +# Ministere de la Modernisation des Secteurs Publics
    +#
    +# Under Article 1 of Royal Decree No. 455-67 of Act 23 safar 1387 (2 june 1967)
    +# concerning the amendment of the legal time, the Ministry of Modernization of
    +# Public Sectors announced that the official time in the Kingdom will be
    +# advanced 60 minutes from Sunday 31 May 2009 at midnight.
    +#
    +# 
    +# http://www.mmsp.gov.ma/francais/Actualites_fr/PDF_Actualites_Fr/HeureEte_FR.pdf
    +# 
    +#
    +# 
    +# http://www.worldtimezone.com/dst_news/dst_news_morocco03.html
    +# 
    +
    +# From Steffen Thorsen (2010-04-13):
    +# Several news media in Morocco report that the Ministry of Modernization
    +# of Public Sectors has announced that Morocco will have DST from
    +# 2010-05-02 to 2010-08-08.
    +#
    +# Example:
    +# 
    +# http://www.lavieeco.com/actualites/4099-le-maroc-passera-a-l-heure-d-ete-gmt1-le-2-mai.html
    +# 
    +# (French)
    +# Our page:
    +# 
    +# http://www.timeanddate.com/news/time/morocco-starts-dst-2010.html
    +# 
    +
    +# From Dan Abitol (2011-03-30):
    +# ...Rules for Africa/Casablanca are the following (24h format)
    +# The 3rd april 2011 at 00:00:00, [it] will be 3rd april 1:00:00
    +# The 31th july 2011 at 00:59:59,  [it] will be 31th July 00:00:00
    +# ...Official links of change in morocco
    +# The change was broadcast on the FM Radio
    +# I ve called ANRT (telecom regulations in Morocco) at
    +# +212.537.71.84.00
    +# 
    +# http://www.anrt.net.ma/fr/
    +# 
    +# They said that
    +# 
    +# http://www.map.ma/fr/sections/accueil/l_heure_legale_au_ma/view
    +# 
    +# is the official publication to look at.
    +# They said that the decision was already taken.
    +#
    +# More articles in the press
    +# 
    +# http://www.yabiladi.com/articles/details/5058/secret-l-heure-d-ete-maroc-lev
    +# 
    +# e.html
    +# 
    +# http://www.lematin.ma/Actualite/Express/Article.asp?id=148923
    +# 
    +# 
    +# http://www.lavieeco.com/actualite/Le-Maroc-passe-sur-GMT%2B1-a-partir-de-dim
    +# anche-prochain-5538.html
    +# 
    +
    +# From Petr Machata (2011-03-30):
    +# They have it written in English here:
    +# 
    +# http://www.map.ma/eng/sections/home/morocco_to_spring_fo/view
    +# 
    +#
    +# It says there that "Morocco will resume its standard time on July 31,
    +# 2011 at midnight." Now they don't say whether they mean midnight of
    +# wall clock time (i.e. 11pm UTC), but that's what I would assume. It has
    +# also been like that in the past.
    +
    +# From Alexander Krivenyshev (2012-03-09):
    +# According to Infomédiaire web site from Morocco (infomediaire.ma),
    +# on March 9, 2012, (in French) Heure légale:
    +# Le Maroc adopte officiellement l'heure d'été
    +# 
    +# http://www.infomediaire.ma/news/maroc/heure-l%C3%A9gale-le-maroc-adopte-officiellement-lheure-d%C3%A9t%C3%A9
    +# 
    +# Governing Council adopted draft decree, that Morocco DST starts on
    +# the last Sunday of March (March 25, 2012) and ends on
    +# last Sunday of September (September 30, 2012)
    +# except the month of Ramadan.
    +# or (brief)
    +# 
    +# http://www.worldtimezone.com/dst_news/dst_news_morocco06.html
    +# 
    +
    +# From Arthur David Olson (2012-03-10):
    +# The infomediaire.ma source indicates that the system is to be in
    +# effect every year. It gives 03H00 as the "fall back" time of day;
    +# it lacks a "spring forward" time of day; assume 2:00 XXX.
    +# Wait on specifying the Ramadan exception for details about
    +# start date, start time of day, end date, and end time of day XXX.
    +
    +# From Christophe Tropamer (2012-03-16):
    +# Seen Morocco change again:
    +# 
    +# http://www.le2uminutes.com/actualite.php
    +# 
    +# "...à partir du dernier dimance d'avril et non fins mars,
    +# comme annoncé précédemment."
    +
    +# From Milamber Space Network (2012-07-17):
    +# The official return to GMT is announced by the Moroccan government:
    +# 
    +# http://www.mmsp.gov.ma/fr/actualites.aspx?id=288 [in French]
    +# 
    +#
    +# Google translation, lightly edited:
    +# Back to the standard time of the Kingdom (GMT)
    +# Pursuant to Decree No. 2-12-126 issued on 26 Jumada (I) 1433 (April 18,
    +# 2012) and in accordance with the order of Mr. President of the
    +# Government No. 3-47-12 issued on 24 Sha'ban (11 July 2012), the Ministry
    +# of Public Service and Administration Modernization announces the return
    +# of the legal time of the Kingdom (GMT) from Friday, July 20, 2012 until
    +# Monday, August 20, 2012.  So the time will be delayed by 60 minutes from
    +# 3:00 am Friday, July 20, 2012 and will again be advanced by 60 minutes
    +# August 20, 2012 from 2:00 am.
    +
    +# RULE	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +
    +Rule	Morocco	1939	only	-	Sep	12	 0:00	1:00	S
    +Rule	Morocco	1939	only	-	Nov	19	 0:00	0	-
    +Rule	Morocco	1940	only	-	Feb	25	 0:00	1:00	S
    +Rule	Morocco	1945	only	-	Nov	18	 0:00	0	-
    +Rule	Morocco	1950	only	-	Jun	11	 0:00	1:00	S
    +Rule	Morocco	1950	only	-	Oct	29	 0:00	0	-
    +Rule	Morocco	1967	only	-	Jun	 3	12:00	1:00	S
    +Rule	Morocco	1967	only	-	Oct	 1	 0:00	0	-
    +Rule	Morocco	1974	only	-	Jun	24	 0:00	1:00	S
    +Rule	Morocco	1974	only	-	Sep	 1	 0:00	0	-
    +Rule	Morocco	1976	1977	-	May	 1	 0:00	1:00	S
    +Rule	Morocco	1976	only	-	Aug	 1	 0:00	0	-
    +Rule	Morocco	1977	only	-	Sep	28	 0:00	0	-
    +Rule	Morocco	1978	only	-	Jun	 1	 0:00	1:00	S
    +Rule	Morocco	1978	only	-	Aug	 4	 0:00	0	-
    +Rule	Morocco	2008	only	-	Jun	 1	 0:00	1:00	S
    +Rule	Morocco	2008	only	-	Sep	 1	 0:00	0	-
    +Rule	Morocco	2009	only	-	Jun	 1	 0:00	1:00	S
    +Rule	Morocco	2009	only	-	Aug	 21	 0:00	0	-
    +Rule	Morocco	2010	only	-	May	 2	 0:00	1:00	S
    +Rule	Morocco	2010	only	-	Aug	 8	 0:00	0	-
    +Rule	Morocco	2011	only	-	Apr	 3	 0:00	1:00	S
    +Rule	Morocco	2011	only	-	Jul	 31	 0	0	-
    +Rule	Morocco	2012	max	-	Apr	 lastSun 2:00	1:00	S
    +Rule	Morocco	2012	max	-	Sep	 lastSun 3:00	0	-
    +Rule	Morocco	2012	only	-	Jul	 20	 3:00	0	-
    +Rule	Morocco	2012	only	-	Aug	 20	 2:00	1:00	S
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Africa/Casablanca	-0:30:20 -	LMT	1913 Oct 26
    +			 0:00	Morocco	WE%sT	1984 Mar 16
    +			 1:00	-	CET	1986
    +			 0:00	Morocco	WE%sT
    +# Western Sahara
    +Zone Africa/El_Aaiun	-0:52:48 -	LMT	1934 Jan
    +			-1:00	-	WAT	1976 Apr 14
    +			 0:00	-	WET
    +
    +# Mozambique
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Maputo	2:10:20 -	LMT	1903 Mar
    +			2:00	-	CAT
    +
    +# Namibia
    +# The 1994-04-03 transition is from Shanks & Pottenger.
    +# Shanks & Pottenger report no DST after 1998-04; go with IATA.
    +
    +# From Petronella Sibeene (2007-03-30) in
    +# :
    +# While the entire country changes its time, Katima Mulilo and other
    +# settlements in Caprivi unofficially will not because the sun there
    +# rises and sets earlier compared to other regions.  Chief of
    +# Forecasting Riaan van Zyl explained that the far eastern parts of
    +# the country are close to 40 minutes earlier in sunrise than the rest
    +# of the country.
    +#
    +# From Paul Eggert (2007-03-31):
    +# Apparently the Caprivi Strip informally observes Botswana time, but
    +# we have no details.  In the meantime people there can use Africa/Gaborone.
    +
    +# RULE	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Namibia	1994	max	-	Sep	Sun>=1	2:00	1:00	S
    +Rule	Namibia	1995	max	-	Apr	Sun>=1	2:00	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Windhoek	1:08:24 -	LMT	1892 Feb 8
    +			1:30	-	SWAT	1903 Mar	# SW Africa Time
    +			2:00	-	SAST	1942 Sep 20 2:00
    +			2:00	1:00	SAST	1943 Mar 21 2:00
    +			2:00	-	SAST	1990 Mar 21 # independence
    +			2:00	-	CAT	1994 Apr  3
    +			1:00	Namibia	WA%sT
    +
    +# Niger
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Niamey	 0:08:28 -	LMT	1912
    +			-1:00	-	WAT	1934 Feb 26
    +			 0:00	-	GMT	1960
    +			 1:00	-	WAT
    +
    +# Nigeria
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Lagos	0:13:36 -	LMT	1919 Sep
    +			1:00	-	WAT
    +
    +# Reunion
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Indian/Reunion	3:41:52 -	LMT	1911 Jun	# Saint-Denis
    +			4:00	-	RET	# Reunion Time
    +#
    +# Scattered Islands (Iles Eparses) administered from Reunion are as follows.
    +# The following information about them is taken from
    +# Iles Eparses (www.outre-mer.gouv.fr/domtom/ile.htm, 1997-07-22, in French;
    +# no longer available as of 1999-08-17).
    +# We have no info about their time zone histories.
    +#
    +# Bassas da India - uninhabited
    +# Europa Island - inhabited from 1905 to 1910 by two families
    +# Glorioso Is - inhabited until at least 1958
    +# Juan de Nova - uninhabited
    +# Tromelin - inhabited until at least 1958
    +
    +# Rwanda
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Kigali	2:00:16 -	LMT	1935 Jun
    +			2:00	-	CAT
    +
    +# St Helena
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Atlantic/St_Helena	-0:22:48 -	LMT	1890		# Jamestown
    +			-0:22:48 -	JMT	1951	# Jamestown Mean Time
    +			 0:00	-	GMT
    +# The other parts of the St Helena territory are similar:
    +#	Tristan da Cunha: on GMT, say Whitman and the CIA
    +#	Ascension: on GMT, says usno1995 and the CIA
    +#	Gough (scientific station since 1955; sealers wintered previously):
    +#		on GMT, says the CIA
    +#	Inaccessible, Nightingale: no information, but probably GMT
    +
    +# Sao Tome and Principe
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Sao_Tome	 0:26:56 -	LMT	1884
    +			-0:36:32 -	LMT	1912	# Lisbon Mean Time
    +			 0:00	-	GMT
    +
    +# Senegal
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Dakar	-1:09:44 -	LMT	1912
    +			-1:00	-	WAT	1941 Jun
    +			 0:00	-	GMT
    +
    +# Seychelles
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Indian/Mahe	3:41:48 -	LMT	1906 Jun	# Victoria
    +			4:00	-	SCT	# Seychelles Time
    +# From Paul Eggert (2001-05-30):
    +# Aldabra, Farquhar, and Desroches, originally dependencies of the
    +# Seychelles, were transferred to the British Indian Ocean Territory
    +# in 1965 and returned to Seychelles control in 1976.  We don't know
    +# whether this affected their time zone, so omit this for now.
    +# Possibly the islands were uninhabited.
    +
    +# Sierra Leone
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +# Whitman gives Mar 31 - Aug 31 for 1931 on; go with Shanks & Pottenger.
    +Rule	SL	1935	1942	-	Jun	 1	0:00	0:40	SLST
    +Rule	SL	1935	1942	-	Oct	 1	0:00	0	WAT
    +Rule	SL	1957	1962	-	Jun	 1	0:00	1:00	SLST
    +Rule	SL	1957	1962	-	Sep	 1	0:00	0	GMT
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Freetown	-0:53:00 -	LMT	1882
    +			-0:53:00 -	FMT	1913 Jun # Freetown Mean Time
    +			-1:00	SL	%s	1957
    +			 0:00	SL	%s
    +
    +# Somalia
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Africa/Mogadishu	3:01:28 -	LMT	1893 Nov
    +			3:00	-	EAT	1931
    +			2:30	-	BEAT	1957
    +			3:00	-	EAT
    +
    +# South Africa
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	SA	1942	1943	-	Sep	Sun>=15	2:00	1:00	-
    +Rule	SA	1943	1944	-	Mar	Sun>=15	2:00	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Africa/Johannesburg 1:52:00 -	LMT	1892 Feb 8
    +			1:30	-	SAST	1903 Mar
    +			2:00	SA	SAST
    +# Marion and Prince Edward Is
    +# scientific station since 1947
    +# no information
    +
    +# Sudan
    +#
    +# From 
    +# Sudan News Agency (2000-01-13)
    +# , also reported by Michael De Beukelaer-Dossche via Steffen Thorsen:
    +# Clocks will be moved ahead for 60 minutes all over the Sudan as of noon
    +# Saturday....  This was announced Thursday by Caretaker State Minister for
    +# Manpower Abdul-Rahman Nur-Eddin.
    +#
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Sudan	1970	only	-	May	 1	0:00	1:00	S
    +Rule	Sudan	1970	1985	-	Oct	15	0:00	0	-
    +Rule	Sudan	1971	only	-	Apr	30	0:00	1:00	S
    +Rule	Sudan	1972	1985	-	Apr	lastSun	0:00	1:00	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Khartoum	2:10:08 -	LMT	1931
    +			2:00	Sudan	CA%sT	2000 Jan 15 12:00
    +			3:00	-	EAT
    +
    +# South Sudan
    +Zone	Africa/Juba	2:06:24 -	LMT	1931
    +			2:00	Sudan	CA%sT	2000 Jan 15 12:00
    +			3:00	-	EAT
    +
    +# Swaziland
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Mbabane	2:04:24 -	LMT	1903 Mar
    +			2:00	-	SAST
    +
    +# Tanzania
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Africa/Dar_es_Salaam 2:37:08 -	LMT	1931
    +			3:00	-	EAT	1948
    +			2:45	-	BEAUT	1961
    +			3:00	-	EAT
    +
    +# Togo
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Lome	0:04:52 -	LMT	1893
    +			0:00	-	GMT
    +
    +# Tunisia
    +
    +# From Gwillim Law (2005-04-30):
    +# My correspondent, Risto Nykanen, has alerted me to another adoption of DST,
    +# this time in Tunisia.  According to Yahoo France News
    +# , in a story attributed to AP
    +# and dated 2005-04-26, "Tunisia has decided to advance its official time by
    +# one hour, starting on Sunday, May 1.  Henceforth, Tunisian time will be
    +# UTC+2 instead of UTC+1.  The change will take place at 23:00 UTC next
    +# Saturday."  (My translation)
    +#
    +# From Oscar van Vlijmen (2005-05-02):
    +# LaPresse, the first national daily newspaper ...
    +# 
    +# ... DST for 2005: on: Sun May 1 0h standard time, off: Fri Sept. 30,
    +# 1h standard time.
    +#
    +# From Atef Loukil (2006-03-28):
    +# The daylight saving time will be the same each year:
    +# Beginning      : the last Sunday of March at 02:00
    +# Ending         : the last Sunday of October at 03:00 ...
    +# http://www.tap.info.tn/en/index.php?option=com_content&task=view&id=1188&Itemid=50
    +
    +# From Steffen Thorsen (2009-03-16):
    +# According to several news sources, Tunisia will not observe DST this year.
    +# (Arabic)
    +# 
    +# http://www.elbashayer.com/?page=viewn&nid=42546
    +# 
    +# 
    +# http://www.babnet.net/kiwidetail-15295.asp
    +# 
    +#
    +# We have also confirmed this with the US embassy in Tunisia.
    +# We have a wrap-up about this on the following page:
    +# 
    +# http://www.timeanddate.com/news/time/tunisia-cancels-dst-2009.html
    +# 
    +
    +# From Alexander Krivenyshev (2009-03-17):
    +# Here is a link to Tunis Afrique Presse News Agency
    +#
    +# Standard time to be kept the whole year long (tap.info.tn):
    +#
    +# (in English)
    +# 
    +# http://www.tap.info.tn/en/index.php?option=com_content&task=view&id=26813&Itemid=157
    +# 
    +#
    +# (in Arabic)
    +# 
    +# http://www.tap.info.tn/ar/index.php?option=com_content&task=view&id=61240&Itemid=1
    +# 
    +
    +# From Arthur David Olson (2009--3-18):
    +# The Tunis Afrique Presse News Agency notice contains this: "This measure is due to the fact
    +# that the fasting month of ramadan coincides with the period concerned by summer time.
    +# Therefore, the standard time will be kept unchanged the whole year long."
    +# So foregoing DST seems to be an exception (albeit one that may be repeated in the  future).
    +
    +# From Alexander Krivenyshev (2010-03-27):
    +# According to some news reports Tunis confirmed not to use DST in 2010
    +#
    +# (translation):
    +# "The Tunisian government has decided to abandon DST, which was scheduled on
    +# Sunday...
    +# Tunisian authorities had suspended the DST for the first time last year also
    +# coincided with the month of Ramadan..."
    +#
    +# (in Arabic)
    +# 
    +# http://www.moheet.com/show_news.aspx?nid=358861&pg=1
    +# 
    +# http://www.almadenahnews.com/newss/news.php?c=118&id=38036
    +# or
    +# 
    +# http://www.worldtimezone.com/dst_news/dst_news_tunis02.html
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Tunisia	1939	only	-	Apr	15	23:00s	1:00	S
    +Rule	Tunisia	1939	only	-	Nov	18	23:00s	0	-
    +Rule	Tunisia	1940	only	-	Feb	25	23:00s	1:00	S
    +Rule	Tunisia	1941	only	-	Oct	 6	 0:00	0	-
    +Rule	Tunisia	1942	only	-	Mar	 9	 0:00	1:00	S
    +Rule	Tunisia	1942	only	-	Nov	 2	 3:00	0	-
    +Rule	Tunisia	1943	only	-	Mar	29	 2:00	1:00	S
    +Rule	Tunisia	1943	only	-	Apr	17	 2:00	0	-
    +Rule	Tunisia	1943	only	-	Apr	25	 2:00	1:00	S
    +Rule	Tunisia	1943	only	-	Oct	 4	 2:00	0	-
    +Rule	Tunisia	1944	1945	-	Apr	Mon>=1	 2:00	1:00	S
    +Rule	Tunisia	1944	only	-	Oct	 8	 0:00	0	-
    +Rule	Tunisia	1945	only	-	Sep	16	 0:00	0	-
    +Rule	Tunisia	1977	only	-	Apr	30	 0:00s	1:00	S
    +Rule	Tunisia	1977	only	-	Sep	24	 0:00s	0	-
    +Rule	Tunisia	1978	only	-	May	 1	 0:00s	1:00	S
    +Rule	Tunisia	1978	only	-	Oct	 1	 0:00s	0	-
    +Rule	Tunisia	1988	only	-	Jun	 1	 0:00s	1:00	S
    +Rule	Tunisia	1988	1990	-	Sep	lastSun	 0:00s	0	-
    +Rule	Tunisia	1989	only	-	Mar	26	 0:00s	1:00	S
    +Rule	Tunisia	1990	only	-	May	 1	 0:00s	1:00	S
    +Rule	Tunisia	2005	only	-	May	 1	 0:00s	1:00	S
    +Rule	Tunisia	2005	only	-	Sep	30	 1:00s	0	-
    +Rule	Tunisia	2006	2008	-	Mar	lastSun	 2:00s	1:00	S
    +Rule	Tunisia	2006	2008	-	Oct	lastSun	 2:00s	0	-
    +
    +# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
    +# more precise 0:09:21.
    +# Shanks & Pottenger say the 1911 switch was on Mar 9; go with Howse's Mar 11.
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Tunis	0:40:44 -	LMT	1881 May 12
    +			0:09:21	-	PMT	1911 Mar 11    # Paris Mean Time
    +			1:00	Tunisia	CE%sT
    +
    +# Uganda
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Kampala	2:09:40 -	LMT	1928 Jul
    +			3:00	-	EAT	1930
    +			2:30	-	BEAT	1948
    +			2:45	-	BEAUT	1957
    +			3:00	-	EAT
    +
    +# Zambia
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Lusaka	1:53:08 -	LMT	1903 Mar
    +			2:00	-	CAT
    +
    +# Zimbabwe
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Africa/Harare	2:04:12 -	LMT	1903 Mar
    +			2:00	-	CAT
    diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/antarctica b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/antarctica
    new file mode 100644
    index 0000000..e96b30d
    --- /dev/null
    +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/antarctica
    @@ -0,0 +1,413 @@
    +# 
    +# This file is in the public domain, so clarified as of
    +# 2009-05-17 by Arthur David Olson.
    +
    +# From Paul Eggert (1999-11-15):
    +# To keep things manageable, we list only locations occupied year-round; see
    +# 
    +# COMNAP - Stations and Bases
    +# 
    +# and
    +# 
    +# Summary of the Peri-Antarctic Islands (1998-07-23)
    +# 
    +# for information.
    +# Unless otherwise specified, we have no time zone information.
    +#
    +# Except for the French entries,
    +# I made up all time zone abbreviations mentioned here; corrections welcome!
    +# FORMAT is `zzz' and GMTOFF is 0 for locations while uninhabited.
    +
    +# These rules are stolen from the `southamerica' file.
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	ArgAQ	1964	1966	-	Mar	 1	0:00	0	-
    +Rule	ArgAQ	1964	1966	-	Oct	15	0:00	1:00	S
    +Rule	ArgAQ	1967	only	-	Apr	 2	0:00	0	-
    +Rule	ArgAQ	1967	1968	-	Oct	Sun>=1	0:00	1:00	S
    +Rule	ArgAQ	1968	1969	-	Apr	Sun>=1	0:00	0	-
    +Rule	ArgAQ	1974	only	-	Jan	23	0:00	1:00	S
    +Rule	ArgAQ	1974	only	-	May	 1	0:00	0	-
    +Rule	ChileAQ	1972	1986	-	Mar	Sun>=9	3:00u	0	-
    +Rule	ChileAQ	1974	1987	-	Oct	Sun>=9	4:00u	1:00	S
    +Rule	ChileAQ	1987	only	-	Apr	12	3:00u	0	-
    +Rule	ChileAQ	1988	1989	-	Mar	Sun>=9	3:00u	0	-
    +Rule	ChileAQ	1988	only	-	Oct	Sun>=1	4:00u	1:00	S
    +Rule	ChileAQ	1989	only	-	Oct	Sun>=9	4:00u	1:00	S
    +Rule	ChileAQ	1990	only	-	Mar	18	3:00u	0	-
    +Rule	ChileAQ	1990	only	-	Sep	16	4:00u	1:00	S
    +Rule	ChileAQ	1991	1996	-	Mar	Sun>=9	3:00u	0	-
    +Rule	ChileAQ	1991	1997	-	Oct	Sun>=9	4:00u	1:00	S
    +Rule	ChileAQ	1997	only	-	Mar	30	3:00u	0	-
    +Rule	ChileAQ	1998	only	-	Mar	Sun>=9	3:00u	0	-
    +Rule	ChileAQ	1998	only	-	Sep	27	4:00u	1:00	S
    +Rule	ChileAQ	1999	only	-	Apr	 4	3:00u	0	-
    +Rule	ChileAQ	1999	2010	-	Oct	Sun>=9	4:00u	1:00	S
    +Rule	ChileAQ	2000	2007	-	Mar	Sun>=9	3:00u	0	-
    +# N.B.: the end of March 29 in Chile is March 30 in Universal time,
    +# which is used below in specifying the transition.
    +Rule	ChileAQ	2008	only	-	Mar	30	3:00u	0	-
    +Rule	ChileAQ	2009	only	-	Mar	Sun>=9	3:00u	0	-
    +Rule	ChileAQ	2010	only	-	Apr	Sun>=1	3:00u	0	-
    +Rule	ChileAQ	2011	only	-	May	Sun>=2	3:00u	0	-
    +Rule	ChileAQ	2011	only	-	Aug	Sun>=16	4:00u	1:00	S
    +Rule	ChileAQ	2012	only	-	Apr	Sun>=23	3:00u	0	-
    +Rule	ChileAQ	2012	only	-	Sep	Sun>=2	4:00u	1:00	S
    +Rule	ChileAQ	2013	max	-	Mar	Sun>=9	3:00u	0	-
    +Rule	ChileAQ	2013	max	-	Oct	Sun>=9	4:00u	1:00	S
    +
    +# These rules are stolen from the `australasia' file.
    +Rule	AusAQ	1917	only	-	Jan	 1	0:01	1:00	-
    +Rule	AusAQ	1917	only	-	Mar	25	2:00	0	-
    +Rule	AusAQ	1942	only	-	Jan	 1	2:00	1:00	-
    +Rule	AusAQ	1942	only	-	Mar	29	2:00	0	-
    +Rule	AusAQ	1942	only	-	Sep	27	2:00	1:00	-
    +Rule	AusAQ	1943	1944	-	Mar	lastSun	2:00	0	-
    +Rule	AusAQ	1943	only	-	Oct	 3	2:00	1:00	-
    +Rule	ATAQ	1967	only	-	Oct	Sun>=1	2:00s	1:00	-
    +Rule	ATAQ	1968	only	-	Mar	lastSun	2:00s	0	-
    +Rule	ATAQ	1968	1985	-	Oct	lastSun	2:00s	1:00	-
    +Rule	ATAQ	1969	1971	-	Mar	Sun>=8	2:00s	0	-
    +Rule	ATAQ	1972	only	-	Feb	lastSun	2:00s	0	-
    +Rule	ATAQ	1973	1981	-	Mar	Sun>=1	2:00s	0	-
    +Rule	ATAQ	1982	1983	-	Mar	lastSun	2:00s	0	-
    +Rule	ATAQ	1984	1986	-	Mar	Sun>=1	2:00s	0	-
    +Rule	ATAQ	1986	only	-	Oct	Sun>=15	2:00s	1:00	-
    +Rule	ATAQ	1987	1990	-	Mar	Sun>=15	2:00s	0	-
    +Rule	ATAQ	1987	only	-	Oct	Sun>=22	2:00s	1:00	-
    +Rule	ATAQ	1988	1990	-	Oct	lastSun	2:00s	1:00	-
    +Rule	ATAQ	1991	1999	-	Oct	Sun>=1	2:00s	1:00	-
    +Rule	ATAQ	1991	2005	-	Mar	lastSun	2:00s	0	-
    +Rule	ATAQ	2000	only	-	Aug	lastSun	2:00s	1:00	-
    +Rule	ATAQ	2001	max	-	Oct	Sun>=1	2:00s	1:00	-
    +Rule	ATAQ	2006	only	-	Apr	Sun>=1	2:00s	0	-
    +Rule	ATAQ	2007	only	-	Mar	lastSun	2:00s	0	-
    +Rule	ATAQ	2008	max	-	Apr	Sun>=1	2:00s	0	-
    +
    +# Argentina - year-round bases
    +# Belgrano II, Confin Coast, -770227-0343737, since 1972-02-05
    +# Esperanza, San Martin Land, -6323-05659, since 1952-12-17
    +# Jubany, Potter Peninsula, King George Island, -6414-0602320, since 1982-01
    +# Marambio, Seymour I, -6414-05637, since 1969-10-29
    +# Orcadas, Laurie I, -6016-04444, since 1904-02-22
    +# San Martin, Debenham I, -6807-06708, since 1951-03-21
    +#	(except 1960-03 / 1976-03-21)
    +
    +# Australia - territories
    +# Heard Island, McDonald Islands (uninhabited)
    +#	previously sealers and scientific personnel wintered
    +#	
    +#	Margaret Turner reports
    +#	 (1999-09-30) that they're UTC+5, with no DST;
    +#	presumably this is when they have visitors.
    +#
    +# year-round bases
    +# Casey, Bailey Peninsula, -6617+11032, since 1969
    +# Davis, Vestfold Hills, -6835+07759, since 1957-01-13
    +#	(except 1964-11 - 1969-02)
    +# Mawson, Holme Bay, -6736+06253, since 1954-02-13
    +
    +# From Steffen Thorsen (2009-03-11):
    +# Three Australian stations in Antarctica have changed their time zone:
    +# Casey moved from UTC+8 to UTC+11
    +# Davis moved from UTC+7 to UTC+5
    +# Mawson moved from UTC+6 to UTC+5
    +# The changes occurred on 2009-10-18 at 02:00 (local times).
    +#
    +# Government source: (Australian Antarctic Division)
    +# 
    +# http://www.aad.gov.au/default.asp?casid=37079
    +# 
    +#
    +# We have more background information here:
    +# 
    +# http://www.timeanddate.com/news/time/antarctica-new-times.html
    +# 
    +
    +# From Steffen Thorsen (2010-03-10):
    +# We got these changes from the Australian Antarctic Division:
    +# - Macquarie Island will stay on UTC+11 for winter and therefore not
    +# switch back from daylight savings time when other parts of Australia do
    +# on 4 April.
    +#
    +# - Casey station reverted to its normal time of UTC+8 on 5 March 2010.
    +# The change to UTC+11 is being considered as a regular summer thing but
    +# has not been decided yet.
    +#
    +# - Davis station will revert to its normal time of UTC+7 at 10 March 2010
    +# 20:00 UTC.
    +#
    +# - Mawson station stays on UTC+5.
    +#
    +# In addition to the Rule changes for Casey/Davis, it means that Macquarie
    +# will no longer be like Hobart and will have to have its own Zone created.
    +#
    +# Background:
    +# 
    +# http://www.timeanddate.com/news/time/antartica-time-changes-2010.html
    +# 
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Antarctica/Casey	0	-	zzz	1969
    +			8:00	-	WST	2009 Oct 18 2:00
    +						# Western (Aus) Standard Time
    +			11:00	-	CAST	2010 Mar 5 2:00
    +						# Casey Time
    +			8:00	-	WST	2011 Oct 28 2:00
    +			11:00	-	CAST	2012 Feb 21 17:00u
    +			8:00	-	WST
    +Zone Antarctica/Davis	0	-	zzz	1957 Jan 13
    +			7:00	-	DAVT	1964 Nov # Davis Time
    +			0	-	zzz	1969 Feb
    +			7:00	-	DAVT	2009 Oct 18 2:00
    +			5:00	-	DAVT	2010 Mar 10 20:00u
    +			7:00	-	DAVT	2011 Oct 28 2:00
    +			5:00	-	DAVT	2012 Feb 21 20:00u
    +			7:00	-	DAVT
    +Zone Antarctica/Mawson	0	-	zzz	1954 Feb 13
    +			6:00	-	MAWT	2009 Oct 18 2:00
    +						# Mawson Time
    +			5:00	-	MAWT
    +Zone Antarctica/Macquarie 0	-	zzz	1911
    +			10:00	-	EST	1916 Oct 1 2:00
    +			10:00	1:00	EST	1917 Feb
    +			10:00	AusAQ	EST	1967
    +			10:00	ATAQ	EST	2010 Apr 4 3:00
    +			11:00	-	MIST	# Macquarie Island Time
    +# References:
    +# 
    +# Casey Weather (1998-02-26)
    +# 
    +# 
    +# Davis Station, Antarctica (1998-02-26)
    +# 
    +# 
    +# Mawson Station, Antarctica (1998-02-25)
    +# 
    +
    +# Brazil - year-round base
    +# Comandante Ferraz, King George Island, -6205+05824, since 1983/4
    +
    +# Chile - year-round bases and towns
    +# Escudero, South Shetland Is, -621157-0585735, since 1994
    +# Presidente Eduadro Frei, King George Island, -6214-05848, since 1969-03-07
    +# General Bernardo O'Higgins, Antarctic Peninsula, -6319-05704, since 1948-02
    +# Capitan Arturo Prat, -6230-05941
    +# Villa Las Estrellas (a town), around the Frei base, since 1984-04-09
    +# These locations have always used Santiago time; use TZ='America/Santiago'.
    +
    +# China - year-round bases
    +# Great Wall, King George Island, -6213-05858, since 1985-02-20
    +# Zhongshan, Larsemann Hills, Prydz Bay, -6922+07623, since 1989-02-26
    +
    +# France - year-round bases
    +#
    +# From Antoine Leca (1997-01-20):
    +# Time data are from Nicole Pailleau at the IFRTP
    +# (French Institute for Polar Research and Technology).
    +# She confirms that French Southern Territories and Terre Adelie bases
    +# don't observe daylight saving time, even if Terre Adelie supplies came
    +# from Tasmania.
    +#
    +# French Southern Territories with year-round inhabitants
    +#
    +# Martin-de-Vivies Base, Amsterdam Island, -374105+0773155, since 1950
    +# Alfred-Faure Base, Crozet Islands, -462551+0515152, since 1964
    +# Port-aux-Francais, Kerguelen Islands, -492110+0701303, since 1951;
    +#	whaling & sealing station operated 1908/1914, 1920/1929, and 1951/1956
    +#
    +# St Paul Island - near Amsterdam, uninhabited
    +#	fishing stations operated variously 1819/1931
    +#
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Indian/Kerguelen	0	-	zzz	1950	# Port-aux-Francais
    +			5:00	-	TFT	# ISO code TF Time
    +#
    +# year-round base in the main continent
    +# Dumont-d'Urville, Ile des Petrels, -6640+14001, since 1956-11
    +#
    +# Another base at Port-Martin, 50km east, began operation in 1947.
    +# It was destroyed by fire on 1952-01-14.
    +#
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Antarctica/DumontDUrville 0 -	zzz	1947
    +			10:00	-	PMT	1952 Jan 14 # Port-Martin Time
    +			0	-	zzz	1956 Nov
    +			10:00	-	DDUT	# Dumont-d'Urville Time
    +# Reference:
    +# 
    +# Dumont d'Urville Station (2005-12-05)
    +# 
    +
    +# Germany - year-round base
    +# Georg von Neumayer, -7039-00815
    +
    +# India - year-round base
    +# Dakshin Gangotri, -7005+01200
    +
    +# Japan - year-round bases
    +# Dome Fuji, -7719+03942
    +# Syowa, -690022+0393524
    +#
    +# From Hideyuki Suzuki (1999-02-06):
    +# In all Japanese stations, +0300 is used as the standard time.
    +#
    +# Syowa station, which is the first antarctic station of Japan,
    +# was established on 1957-01-29.  Since Syowa station is still the main
    +# station of Japan, it's appropriate for the principal location.
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Antarctica/Syowa	0	-	zzz	1957 Jan 29
    +			3:00	-	SYOT	# Syowa Time
    +# See:
    +# 
    +# NIPR Antarctic Research Activities (1999-08-17)
    +# 
    +
    +# S Korea - year-round base
    +# King Sejong, King George Island, -6213-05847, since 1988
    +
    +# New Zealand - claims
    +# Balleny Islands (never inhabited)
    +# Scott Island (never inhabited)
    +#
    +# year-round base
    +# Scott, Ross Island, since 1957-01, is like Antarctica/McMurdo.
    +#
    +# These rules for New Zealand are stolen from the `australasia' file.
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	NZAQ	1974	only	-	Nov	 3	2:00s	1:00	D
    +Rule	NZAQ	1975	1988	-	Oct	lastSun	2:00s	1:00	D
    +Rule	NZAQ	1989	only	-	Oct	 8	2:00s	1:00	D
    +Rule	NZAQ	1990	2006	-	Oct	Sun>=1	2:00s	1:00	D
    +Rule	NZAQ	1975	only	-	Feb	23	2:00s	0	S
    +Rule	NZAQ	1976	1989	-	Mar	Sun>=1	2:00s	0	S
    +Rule	NZAQ	1990	2007	-	Mar	Sun>=15	2:00s	0	S
    +Rule	NZAQ	2007	max	-	Sep	lastSun	2:00s	1:00	D
    +Rule	NZAQ	2008	max	-	Apr	Sun>=1	2:00s	0	S
    +
    +# Norway - territories
    +# Bouvet (never inhabited)
    +#
    +# claims
    +# Peter I Island (never inhabited)
    +
    +# Poland - year-round base
    +# Arctowski, King George Island, -620945-0582745, since 1977
    +
    +# Russia - year-round bases
    +# Bellingshausen, King George Island, -621159-0585337, since 1968-02-22
    +# Mirny, Davis coast, -6633+09301, since 1956-02
    +# Molodezhnaya, Alasheyev Bay, -6740+04551,
    +#	year-round from 1962-02 to 1999-07-01
    +# Novolazarevskaya, Queen Maud Land, -7046+01150,
    +#	year-round from 1960/61 to 1992
    +
    +# Vostok, since 1957-12-16, temporarily closed 1994-02/1994-11
    +# 
    +# From Craig Mundell (1994-12-15):
    +# Vostok, which is one of the Russian stations, is set on the same
    +# time as Moscow, Russia.
    +#
    +# From Lee Hotz (2001-03-08):
    +# I queried the folks at Columbia who spent the summer at Vostok and this is
    +# what they had to say about time there:
    +# ``in the US Camp (East Camp) we have been on New Zealand (McMurdo)
    +# time, which is 12 hours ahead of GMT. The Russian Station Vostok was
    +# 6 hours behind that (although only 2 miles away, i.e. 6 hours ahead
    +# of GMT). This is a time zone I think two hours east of Moscow. The
    +# natural time zone is in between the two: 8 hours ahead of GMT.''
    +#
    +# From Paul Eggert (2001-05-04):
    +# This seems to be hopelessly confusing, so I asked Lee Hotz about it
    +# in person.  He said that some Antartic locations set their local
    +# time so that noon is the warmest part of the day, and that this
    +# changes during the year and does not necessarily correspond to mean
    +# solar noon.  So the Vostok time might have been whatever the clocks
    +# happened to be during their visit.  So we still don't really know what time
    +# it is at Vostok.  But we'll guess UTC+6.
    +#
    +Zone Antarctica/Vostok	0	-	zzz	1957 Dec 16
    +			6:00	-	VOST	# Vostok time
    +
    +# S Africa - year-round bases
    +# Marion Island, -4653+03752
    +# Sanae, -7141-00250
    +
    +# UK
    +#
    +# British Antarctic Territories (BAT) claims
    +# South Orkney Islands
    +#	scientific station from 1903
    +#	whaling station at Signy I 1920/1926
    +# South Shetland Islands
    +#
    +# year-round bases
    +# Bird Island, South Georgia, -5400-03803, since 1983
    +# Deception Island, -6259-06034, whaling station 1912/1931,
    +#	scientific station 1943/1967,
    +#	previously sealers and a scientific expedition wintered by accident,
    +#	and a garrison was deployed briefly
    +# Halley, Coates Land, -7535-02604, since 1956-01-06
    +#	Halley is on a moving ice shelf and is periodically relocated
    +#	so that it is never more than 10km from its nominal location.
    +# Rothera, Adelaide Island, -6734-6808, since 1976-12-01
    +#
    +# From Paul Eggert (2002-10-22)
    +#  says Rothera is -03 all year.
    +#
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Antarctica/Rothera	0	-	zzz	1976 Dec  1
    +			-3:00	-	ROTT	# Rothera time
    +
    +# Uruguay - year round base
    +# Artigas, King George Island, -621104-0585107
    +
    +# USA - year-round bases
    +#
    +# Palmer, Anvers Island, since 1965 (moved 2 miles in 1968)
    +#
    +# From Ethan Dicks (1996-10-06):
    +# It keeps the same time as Punta Arenas, Chile, because, just like us
    +# and the South Pole, that's the other end of their supply line....
    +# I verified with someone who was there that since 1980,
    +# Palmer has followed Chile.  Prior to that, before the Falklands War,
    +# Palmer used to be supplied from Argentina.
    +#
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Antarctica/Palmer	0	-	zzz	1965
    +			-4:00	ArgAQ	AR%sT	1969 Oct 5
    +			-3:00	ArgAQ	AR%sT	1982 May
    +			-4:00	ChileAQ	CL%sT
    +#
    +#
    +# McMurdo, Ross Island, since 1955-12
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Antarctica/McMurdo	0	-	zzz	1956
    +			12:00	NZAQ	NZ%sT
    +#
    +# Amundsen-Scott, South Pole, continuously occupied since 1956-11-20
    +#
    +# From Paul Eggert (1996-09-03):
    +# Normally it wouldn't have a separate entry, since it's like the
    +# larger Antarctica/McMurdo since 1970, but it's too famous to omit.
    +#
    +# From Chris Carrier (1996-06-27):
    +# Siple, the first commander of the South Pole station,
    +# stated that he would have liked to have kept GMT at the station,
    +# but that he found it more convenient to keep GMT+12
    +# as supplies for the station were coming from McMurdo Sound,
    +# which was on GMT+12 because New Zealand was on GMT+12 all year
    +# at that time (1957).  (Source: Siple's book 90 degrees SOUTH.)
    +#
    +# From Susan Smith
    +# http://www.cybertours.com/whs/pole10.html
    +# (1995-11-13 16:24:56 +1300, no longer available):
    +# We use the same time as McMurdo does.
    +# And they use the same time as Christchurch, NZ does....
    +# One last quirk about South Pole time.
    +# All the electric clocks are usually wrong.
    +# Something about the generators running at 60.1hertz or something
    +# makes all of the clocks run fast.  So every couple of days,
    +# we have to go around and set them back 5 minutes or so.
    +# Maybe if we let them run fast all of the time, we'd get to leave here sooner!!
    +#
    +Link	Antarctica/McMurdo	Antarctica/South_Pole
    diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/asia b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/asia
    new file mode 100644
    index 0000000..bf71864
    --- /dev/null
    +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/asia
    @@ -0,0 +1,2717 @@
    +# 
    +# This file is in the public domain, so clarified as of
    +# 2009-05-17 by Arthur David Olson.
    +
    +# This data is by no means authoritative; if you think you know better,
    +# go ahead and edit the file (and please send any changes to
    +# tz@iana.org for general use in the future).
    +
    +# From Paul Eggert (2006-03-22):
    +#
    +# A good source for time zone historical data outside the U.S. is
    +# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
    +# San Diego: ACS Publications, Inc. (2003).
    +#
    +# Gwillim Law writes that a good source
    +# for recent time zone data is the International Air Transport
    +# Association's Standard Schedules Information Manual (IATA SSIM),
    +# published semiannually.  Law sent in several helpful summaries
    +# of the IATA's data after 1990.
    +#
    +# Except where otherwise noted, Shanks & Pottenger is the source for
    +# entries through 1990, and IATA SSIM is the source for entries afterwards.
    +#
    +# Another source occasionally used is Edward W. Whitman, World Time Differences,
    +# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
    +# I found in the UCLA library.
    +#
    +# A reliable and entertaining source about time zones is
    +# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
    +#
    +# I invented the abbreviations marked `*' in the following table;
    +# the rest are from earlier versions of this file, or from other sources.
    +# Corrections are welcome!
    +#	     std  dst
    +#	     LMT	Local Mean Time
    +#	2:00 EET  EEST	Eastern European Time
    +#	2:00 IST  IDT	Israel
    +#	3:00 AST  ADT	Arabia*
    +#	3:30 IRST IRDT	Iran
    +#	4:00 GST	Gulf*
    +#	5:30 IST	India
    +#	7:00 ICT	Indochina*
    +#	7:00 WIT	west Indonesia
    +#	8:00 CIT	central Indonesia
    +#	8:00 CST	China
    +#	9:00 CJT	Central Japanese Time (1896/1937)*
    +#	9:00 EIT	east Indonesia
    +#	9:00 JST  JDT	Japan
    +#	9:00 KST  KDT	Korea
    +#	9:30 CST	(Australian) Central Standard Time
    +#
    +# See the `europe' file for Russia and Turkey in Asia.
    +
    +# From Guy Harris:
    +# Incorporates data for Singapore from Robert Elz' asia 1.1, as well as
    +# additional information from Tom Yap, Sun Microsystems Intercontinental
    +# Technical Support (including a page from the Official Airline Guide -
    +# Worldwide Edition).  The names for time zones are guesses.
    +
    +###############################################################################
    +
    +# These rules are stolen from the `europe' file.
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	EUAsia	1981	max	-	Mar	lastSun	 1:00u	1:00	S
    +Rule	EUAsia	1979	1995	-	Sep	lastSun	 1:00u	0	-
    +Rule	EUAsia	1996	max	-	Oct	lastSun	 1:00u	0	-
    +Rule E-EurAsia	1981	max	-	Mar	lastSun	 0:00	1:00	S
    +Rule E-EurAsia	1979	1995	-	Sep	lastSun	 0:00	0	-
    +Rule E-EurAsia	1996	max	-	Oct	lastSun	 0:00	0	-
    +Rule RussiaAsia	1981	1984	-	Apr	1	 0:00	1:00	S
    +Rule RussiaAsia	1981	1983	-	Oct	1	 0:00	0	-
    +Rule RussiaAsia	1984	1991	-	Sep	lastSun	 2:00s	0	-
    +Rule RussiaAsia	1985	1991	-	Mar	lastSun	 2:00s	1:00	S
    +Rule RussiaAsia	1992	only	-	Mar	lastSat	23:00	1:00	S
    +Rule RussiaAsia	1992	only	-	Sep	lastSat	23:00	0	-
    +Rule RussiaAsia	1993	max	-	Mar	lastSun	 2:00s	1:00	S
    +Rule RussiaAsia	1993	1995	-	Sep	lastSun	 2:00s	0	-
    +Rule RussiaAsia	1996	max	-	Oct	lastSun	 2:00s	0	-
    +
    +# Afghanistan
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Kabul	4:36:48 -	LMT	1890
    +			4:00	-	AFT	1945
    +			4:30	-	AFT
    +
    +# Armenia
    +# From Paul Eggert (2006-03-22):
    +# Shanks & Pottenger have Yerevan switching to 3:00 (with Russian DST)
    +# in spring 1991, then to 4:00 with no DST in fall 1995, then
    +# readopting Russian DST in 1997.  Go with Shanks & Pottenger, even
    +# when they disagree with others.  Edgar Der-Danieliantz
    +# reported (1996-05-04) that Yerevan probably wouldn't use DST
    +# in 1996, though it did use DST in 1995.  IATA SSIM (1991/1998) reports that
    +# Armenia switched from 3:00 to 4:00 in 1998 and observed DST after 1991,
    +# but started switching at 3:00s in 1998.
    +
    +# From Arthur David Olson (2011-06-15):
    +# While Russia abandoned DST in 2011, Armenia may choose to
    +# follow Russia's "old" rules.
    +
    +# From Alexander Krivenyshev (2012-02-10):
    +# According to News Armenia, on Feb 9, 2012,
    +# http://newsarmenia.ru/society/20120209/42609695.html
    +#
    +# The Armenia National Assembly adopted final reading of Amendments to the
    +# Law "On procedure of calculation time on the territory of the Republic of
    +# Armenia" according to which Armenia [is] abolishing Daylight Saving Time.
    +# or
    +# (brief)
    +# http://www.worldtimezone.com/dst_news/dst_news_armenia03.html
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Yerevan	2:58:00 -	LMT	1924 May  2
    +			3:00	-	YERT	1957 Mar    # Yerevan Time
    +			4:00 RussiaAsia YER%sT	1991 Mar 31 2:00s
    +			3:00	1:00	YERST	1991 Sep 23 # independence
    +			3:00 RussiaAsia	AM%sT	1995 Sep 24 2:00s
    +			4:00	-	AMT	1997
    +			4:00 RussiaAsia	AM%sT	2012 Mar 25 2:00s
    +			4:00	-	AMT
    +
    +# Azerbaijan
    +# From Rustam Aliyev of the Azerbaijan Internet Forum (2005-10-23):
    +# According to the resolution of Cabinet of Ministers, 1997
    +# Resolution available at: http://aif.az/docs/daylight_res.pdf
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Azer	1997	max	-	Mar	lastSun	 4:00	1:00	S
    +Rule	Azer	1997	max	-	Oct	lastSun	 5:00	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Baku	3:19:24 -	LMT	1924 May  2
    +			3:00	-	BAKT	1957 Mar    # Baku Time
    +			4:00 RussiaAsia BAK%sT	1991 Mar 31 2:00s
    +			3:00	1:00	BAKST	1991 Aug 30 # independence
    +			3:00 RussiaAsia	AZ%sT	1992 Sep lastSat 23:00
    +			4:00	-	AZT	1996 # Azerbaijan time
    +			4:00	EUAsia	AZ%sT	1997
    +			4:00	Azer	AZ%sT
    +
    +# Bahrain
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Bahrain	3:22:20 -	LMT	1920		# Al Manamah
    +			4:00	-	GST	1972 Jun
    +			3:00	-	AST
    +
    +# Bangladesh
    +# From Alexander Krivenyshev (2009-05-13):
    +# According to newspaper Asian Tribune (May 6, 2009) Bangladesh may introduce
    +# Daylight Saving Time from June 16 to Sept 30
    +#
    +# Bangladesh to introduce daylight saving time likely from June 16
    +# 
    +# http://www.asiantribune.com/?q=node/17288
    +# 
    +# or
    +# 
    +# http://www.worldtimezone.com/dst_news/dst_news_bangladesh02.html
    +# 
    +#
    +# "... Bangladesh government has decided to switch daylight saving time from
    +# June
    +# 16 till September 30 in a bid to ensure maximum use of daylight to cope with
    +# crippling power crisis. "
    +#
    +# The switch will remain in effect from June 16 to Sept 30 (2009) but if
    +# implemented the next year, it will come in force from April 1, 2010
    +
    +# From Steffen Thorsen (2009-06-02):
    +# They have finally decided now, but changed the start date to midnight between
    +# the 19th and 20th, and they have not set the end date yet.
    +#
    +# Some sources:
    +# 
    +# http://in.reuters.com/article/southAsiaNews/idINIndia-40017620090601
    +# 
    +# 
    +# http://bdnews24.com/details.php?id=85889&cid=2
    +# 
    +#
    +# Our wrap-up:
    +# 
    +# http://www.timeanddate.com/news/time/bangladesh-daylight-saving-2009.html
    +# 
    +
    +# From A. N. M. Kamrus Saadat (2009-06-15):
    +# Finally we've got the official mail regarding DST start time where DST start
    +# time is mentioned as Jun 19 2009, 23:00 from BTRC (Bangladesh
    +# Telecommunication Regulatory Commission).
    +#
    +# No DST end date has been announced yet.
    +
    +# From Alexander Krivenyshev (2009-09-25):
    +# Bangladesh won't go back to Standard Time from October 1, 2009,
    +# instead it will continue DST measure till the cabinet makes a fresh decision.
    +#
    +# Following report by same newspaper-"The Daily Star Friday":
    +# "DST change awaits cabinet decision-Clock won't go back by 1-hr from Oct 1"
    +# 
    +# http://www.thedailystar.net/newDesign/news-details.php?nid=107021
    +# 
    +# or
    +# 
    +# http://www.worldtimezone.com/dst_news/dst_news_bangladesh04.html
    +# 
    +
    +# From Steffen Thorsen (2009-10-13):
    +# IANS (Indo-Asian News Service) now reports:
    +# Bangladesh has decided that the clock advanced by an hour to make
    +# maximum use of daylight hours as an energy saving measure would
    +# "continue for an indefinite period."
    +#
    +# One of many places where it is published:
    +# 
    +# http://www.thaindian.com/newsportal/business/bangladesh-to-continue-indefinitely-with-advanced-time_100259987.html
    +# 
    +
    +# From Alexander Krivenyshev (2009-12-24):
    +# According to Bangladesh newspaper "The Daily Star,"
    +# Bangladesh will change its clock back to Standard Time on Dec 31, 2009.
    +#
    +# Clock goes back 1-hr on Dec 31 night.
    +# 
    +# http://www.thedailystar.net/newDesign/news-details.php?nid=119228
    +# 
    +# and
    +# 
    +# http://www.worldtimezone.com/dst_news/dst_news_bangladesh05.html
    +# 
    +#
    +# "...The government yesterday decided to put the clock back by one hour
    +# on December 31 midnight and the new time will continue until March 31,
    +# 2010 midnight. The decision came at a cabinet meeting at the Prime
    +# Minister's Office last night..."
    +
    +# From Alexander Krivenyshev (2010-03-22):
    +# According to Bangladesh newspaper "The Daily Star,"
    +# Cabinet cancels Daylight Saving Time
    +# 
    +# http://www.thedailystar.net/newDesign/latest_news.php?nid=22817
    +# 
    +# or
    +# 
    +# http://www.worldtimezone.com/dst_news/dst_news_bangladesh06.html
    +# 
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Dhaka	2009	only	-	Jun	19	23:00	1:00	S
    +Rule	Dhaka	2009	only	-	Dec	31	23:59	0	-
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Dhaka	6:01:40 -	LMT	1890
    +			5:53:20	-	HMT	1941 Oct    # Howrah Mean Time?
    +			6:30	-	BURT	1942 May 15 # Burma Time
    +			5:30	-	IST	1942 Sep
    +			6:30	-	BURT	1951 Sep 30
    +			6:00	-	DACT	1971 Mar 26 # Dacca Time
    +			6:00	-	BDT	2009
    +			6:00	Dhaka	BD%sT
    +
    +# Bhutan
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Thimphu	5:58:36 -	LMT	1947 Aug 15 # or Thimbu
    +			5:30	-	IST	1987 Oct
    +			6:00	-	BTT	# Bhutan Time
    +
    +# British Indian Ocean Territory
    +# Whitman and the 1995 CIA time zone map say 5:00, but the
    +# 1997 and later maps say 6:00.  Assume the switch occurred in 1996.
    +# We have no information as to when standard time was introduced;
    +# assume it occurred in 1907, the same year as Mauritius (which
    +# then contained the Chagos Archipelago).
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Indian/Chagos	4:49:40	-	LMT	1907
    +			5:00	-	IOT	1996 # BIOT Time
    +			6:00	-	IOT
    +
    +# Brunei
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Brunei	7:39:40 -	LMT	1926 Mar   # Bandar Seri Begawan
    +			7:30	-	BNT	1933
    +			8:00	-	BNT
    +
    +# Burma / Myanmar
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Rangoon	6:24:40 -	LMT	1880		# or Yangon
    +			6:24:36	-	RMT	1920	   # Rangoon Mean Time?
    +			6:30	-	BURT	1942 May   # Burma Time
    +			9:00	-	JST	1945 May 3
    +			6:30	-	MMT		   # Myanmar Time
    +
    +# Cambodia
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Phnom_Penh	6:59:40 -	LMT	1906 Jun  9
    +			7:06:20	-	SMT	1911 Mar 11 0:01 # Saigon MT?
    +			7:00	-	ICT	1912 May
    +			8:00	-	ICT	1931 May
    +			7:00	-	ICT
    +
    +# China
    +
    +# From Guy Harris:
    +# People's Republic of China.  Yes, they really have only one time zone.
    +
    +# From Bob Devine (1988-01-28):
    +# No they don't.  See TIME mag, 1986-02-17 p.52.  Even though
    +# China is across 4 physical time zones, before Feb 1, 1986 only the
    +# Peking (Bejing) time zone was recognized.  Since that date, China
    +# has two of 'em -- Peking's and Urumqi (named after the capital of
    +# the Xinjiang Uyghur Autonomous Region).  I don't know about DST for it.
    +#
    +# . . .I just deleted the DST table and this editor makes it too
    +# painful to suck in another copy..  So, here is what I have for
    +# DST start/end dates for Peking's time zone (info from AP):
    +#
    +#     1986 May 4 - Sept 14
    +#     1987 mid-April - ??
    +
    +# From U. S. Naval Observatory (1989-01-19):
    +# CHINA               8 H  AHEAD OF UTC  ALL OF CHINA, INCL TAIWAN
    +# CHINA               9 H  AHEAD OF UTC  APR 17 - SEP 10
    +
    +# From Paul Eggert (2006-03-22):
    +# Shanks & Pottenger write that China (except for Hong Kong and Macau)
    +# has had a single time zone since 1980 May 1, observing summer DST
    +# from 1986 through 1991; this contradicts Devine's
    +# note about Time magazine, though apparently _something_ happened in 1986.
    +# Go with Shanks & Pottenger for now.  I made up names for the other
    +# pre-1980 time zones.
    +
    +# From Shanks & Pottenger:
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Shang	1940	only	-	Jun	 3	0:00	1:00	D
    +Rule	Shang	1940	1941	-	Oct	 1	0:00	0	S
    +Rule	Shang	1941	only	-	Mar	16	0:00	1:00	D
    +Rule	PRC	1986	only	-	May	 4	0:00	1:00	D
    +Rule	PRC	1986	1991	-	Sep	Sun>=11	0:00	0	S
    +Rule	PRC	1987	1991	-	Apr	Sun>=10	0:00	1:00	D
    +
    +# From Anthony Fok (2001-12-20):
    +# BTW, I did some research on-line and found some info regarding these five
    +# historic timezones from some Taiwan websites.  And yes, there are official
    +# Chinese names for these locales (before 1949).
    +#
    +# From Jesper Norgaard Welen (2006-07-14):
    +# I have investigated the timezones around 1970 on the
    +# http://www.astro.com/atlas site [with provinces and county
    +# boundaries summarized below]....  A few other exceptions were two
    +# counties on the Sichuan side of the Xizang-Sichuan border,
    +# counties Dege and Baiyu which lies on the Sichuan side and are
    +# therefore supposed to be GMT+7, Xizang region being GMT+6, but Dege
    +# county is GMT+8 according to astro.com while Baiyu county is GMT+6
    +# (could be true), for the moment I am assuming that those two
    +# counties are mistakes in the astro.com data.
    +
    +# From Paul Eggert (2008-02-11):
    +# I just now checked Google News for western news sources that talk
    +# about China's single time zone, and couldn't find anything before 1986
    +# talking about China being in one time zone.  (That article was: Jim
    +# Mann, "A clumsy embrace for another western custom: China on daylight
    +# time--sort of", Los Angeles Times, 1986-05-05.  By the way, this
    +# article confirms the tz database's data claiming that China began
    +# observing daylight saving time in 1986.
    +#
    +# From Thomas S. Mullaney (2008-02-11):
    +# I think you're combining two subjects that need to treated
    +# separately: daylight savings (which, you're correct, wasn't
    +# implemented until the 1980s) and the unified time zone centered near
    +# Beijing (which was implemented in 1949). Briefly, there was also a
    +# "Lhasa Time" in Tibet and "Urumqi Time" in Xinjiang. The first was
    +# ceased, and the second eventually recognized (again, in the 1980s).
    +#
    +# From Paul Eggert (2008-06-30):
    +# There seems to be a good chance China switched to a single time zone in 1949
    +# rather than in 1980 as Shanks & Pottenger have it, but we don't have a
    +# reliable documentary source saying so yet, so for now we still go with
    +# Shanks & Pottenger.
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +# Changbai Time ("Long-white Time", Long-white = Heilongjiang area)
    +# Heilongjiang (except Mohe county), Jilin
    +Zone	Asia/Harbin	8:26:44	-	LMT	1928 # or Haerbin
    +			8:30	-	CHAT	1932 Mar # Changbai Time
    +			8:00	-	CST	1940
    +			9:00	-	CHAT	1966 May
    +			8:30	-	CHAT	1980 May
    +			8:00	PRC	C%sT
    +# Zhongyuan Time ("Central plain Time")
    +# most of China
    +Zone	Asia/Shanghai	8:05:52	-	LMT	1928
    +			8:00	Shang	C%sT	1949
    +			8:00	PRC	C%sT
    +# Long-shu Time (probably due to Long and Shu being two names of that area)
    +# Guangxi, Guizhou, Hainan, Ningxia, Sichuan, Shaanxi, and Yunnan;
    +# most of Gansu; west Inner Mongolia; west Qinghai; and the Guangdong
    +# counties Deqing, Enping, Kaiping, Luoding, Taishan, Xinxing,
    +# Yangchun, Yangjiang, Yu'nan, and Yunfu.
    +Zone	Asia/Chongqing	7:06:20	-	LMT	1928 # or Chungking
    +			7:00	-	LONT	1980 May # Long-shu Time
    +			8:00	PRC	C%sT
    +# Xin-zang Time ("Xinjiang-Tibet Time")
    +# The Gansu counties Aksay, Anxi, Dunhuang, Subei; west Qinghai;
    +# the Guangdong counties  Xuwen, Haikang, Suixi, Lianjiang,
    +# Zhanjiang, Wuchuan, Huazhou, Gaozhou, Maoming, Dianbai, and Xinyi;
    +# east Tibet, including Lhasa, Chamdo, Shigaise, Jimsar, Shawan and Hutubi;
    +# east Xinjiang, including Urumqi, Turpan, Karamay, Korla, Minfeng, Jinghe,
    +# Wusu, Qiemo, Xinyan, Wulanwusu, Jinghe, Yumin, Tacheng, Tuoli, Emin,
    +# Shihezi, Changji, Yanqi, Heshuo, Tuokexun, Tulufan, Shanshan, Hami,
    +# Fukang, Kuitun, Kumukuli, Miquan, Qitai, and Turfan.
    +Zone	Asia/Urumqi	5:50:20	-	LMT	1928 # or Urumchi
    +			6:00	-	URUT	1980 May # Urumqi Time
    +			8:00	PRC	C%sT
    +# Kunlun Time
    +# West Tibet, including Pulan, Aheqi, Shufu, Shule;
    +# West Xinjiang, including Aksu, Atushi, Yining, Hetian, Cele, Luopu, Nileke,
    +# Zhaosu, Tekesi, Gongliu, Chabuchaer, Huocheng, Bole, Pishan, Suiding,
    +# and Yarkand.
    +
    +# From Luther Ma (2009-10-17):
    +# Almost all (>99.9%) ethnic Chinese (properly ethnic Han) living in
    +# Xinjiang use Chinese Standard Time. Some are aware of Xinjiang time,
    +# but have no need of it. All planes, trains, and schools function on
    +# what is called "Beijing time." When Han make an appointment in Chinese
    +# they implicitly use Beijing time.
    +#
    +# On the other hand, ethnic Uyghurs, who make up about half the
    +# population of Xinjiang, typically use "Xinjiang time" which is two
    +# hours behind Beijing time, or UTC +0600. The government of the Xinjiang
    +# Uyghur Autonomous Region, (XAUR, or just Xinjiang for short) as well as
    +# local governments such as the Urumqi city government use both times in
    +# publications, referring to what is popularly called Xinjiang time as
    +# "Urumqi time." When Uyghurs make an appointment in the Uyghur language
    +# they almost invariably use Xinjiang time.
    +#
    +# (Their ethnic Han compatriots would typically have no clue of its
    +# widespread use, however, because so extremely few of them are fluent in
    +# Uyghur, comparable to the number of Anglo-Americans fluent in Navajo.)
    +#
    +# (...As with the rest of China there was a brief interval ending in 1990
    +# or 1991 when summer time was in use.  The confusion was severe, with
    +# the province not having dual times but four times in use at the same
    +# time. Some areas remained on standard Xinjiang time or Beijing time and
    +# others moving their clocks ahead.)
    +#
    +# ...an example of an official website using of Urumqi time.
    +#
    +# The first few lines of the Google translation of
    +# 
    +# http://www.fjysgl.gov.cn/show.aspx?id=2379&cid=39
    +# 
    +# (retrieved 2009-10-13)
    +# > Urumqi fire seven people are missing the alleged losses of at least
    +# > 500 million yuan
    +# >
    +# > (Reporter Dong Liu) the day before 20:20 or so (Urumqi Time 18:20),
    +# > Urumqi City Department of International Plaza Luther Qiantang River
    +# > burst fire. As of yesterday, 18:30, Urumqi City Fire officers and men
    +# > have worked continuously for 22 hours...
    +
    +# From Luther Ma (2009-11-19):
    +# With the risk of being redundant to previous answers these are the most common
    +# English "transliterations" (w/o using non-English symbols):
    +#
    +# 1. Wulumuqi...
    +# 2. Kashi...
    +# 3. Urumqi...
    +# 4. Kashgar...
    +# ...
    +# 5. It seems that Uyghurs in Urumqi has been using Xinjiang since at least the
    +# 1960's. I know of one Han, now over 50, who grew up in the surrounding
    +# countryside and used Xinjiang time as a child.
    +#
    +# 6. Likewise for Kashgar and the rest of south Xinjiang I don't know of any
    +# start date for Xinjiang time.
    +#
    +# Without having access to local historical records, nor the ability to legally
    +# publish them, I would go with October 1, 1949, when Xinjiang became the Uyghur
    +# Autonomous Region under the PRC. (Before that Uyghurs, of course, would also
    +# not be using Beijing time, but some local time.)
    +
    +Zone	Asia/Kashgar	5:03:56	-	LMT	1928 # or Kashi or Kaxgar
    +			5:30	-	KAST	1940	 # Kashgar Time
    +			5:00	-	KAST	1980 May
    +			8:00	PRC	C%sT
    +
    +
    +# From Lee Yiu Chung (2009-10-24):
    +# I found there are some mistakes for the...DST rule for Hong
    +# Kong. [According] to the DST record from Hong Kong Observatory (actually,
    +# it is not [an] observatory, but the official meteorological agency of HK,
    +# and also serves as the official timing agency), there are some missing
    +# and incorrect rules. Although the exact switch over time is missing, I
    +# think 3:30 is correct. The official DST record for Hong Kong can be
    +# obtained from
    +# 
    +# http://www.hko.gov.hk/gts/time/Summertime.htm
    +# .
    +
    +# From Arthur David Olson (2009-10-28):
    +# Here are the dates given at
    +# 
    +# http://www.hko.gov.hk/gts/time/Summertime.htm
    +# 
    +# as of 2009-10-28:
    +# Year        Period
    +# 1941        1 Apr to 30 Sep
    +# 1942        Whole year
    +# 1943        Whole year
    +# 1944        Whole year
    +# 1945        Whole year
    +# 1946        20 Apr to 1 Dec
    +# 1947        13 Apr to 30 Dec
    +# 1948        2 May to 31 Oct
    +# 1949        3 Apr to 30 Oct
    +# 1950        2 Apr to 29 Oct
    +# 1951        1 Apr to 28 Oct
    +# 1952        6 Apr to 25 Oct
    +# 1953        5 Apr to 1 Nov
    +# 1954        21 Mar to 31 Oct
    +# 1955        20 Mar to 6 Nov
    +# 1956        18 Mar to 4 Nov
    +# 1957        24 Mar to 3 Nov
    +# 1958        23 Mar to 2 Nov
    +# 1959        22 Mar to 1 Nov
    +# 1960        20 Mar to 6 Nov
    +# 1961        19 Mar to 5 Nov
    +# 1962        18 Mar to 4 Nov
    +# 1963        24 Mar to 3 Nov
    +# 1964        22 Mar to 1 Nov
    +# 1965        18 Apr to 17 Oct
    +# 1966        17 Apr to 16 Oct
    +# 1967        16 Apr to 22 Oct
    +# 1968        21 Apr to 20 Oct
    +# 1969        20 Apr to 19 Oct
    +# 1970        19 Apr to 18 Oct
    +# 1971        18 Apr to 17 Oct
    +# 1972        16 Apr to 22 Oct
    +# 1973        22 Apr to 21 Oct
    +# 1973/74     30 Dec 73 to 20 Oct 74
    +# 1975        20 Apr to 19 Oct
    +# 1976        18 Apr to 17 Oct
    +# 1977        Nil
    +# 1978        Nil
    +# 1979        13 May to 21 Oct
    +# 1980 to Now Nil
    +# The page does not give start or end times of day.
    +# The page does not give a start date for 1942.
    +# The page does not givw an end date for 1945.
    +# The Japanese occupation of Hong Kong began on 1941-12-25.
    +# The Japanese surrender of Hong Kong was signed 1945-09-15.
    +# For lack of anything better, use start of those days as the transition times.
    +
    +# Hong Kong (Xianggang)
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	HK	1941	only	-	Apr	1	3:30	1:00	S
    +Rule	HK	1941	only	-	Sep	30	3:30	0	-
    +Rule	HK	1946	only	-	Apr	20	3:30	1:00	S
    +Rule	HK	1946	only	-	Dec	1	3:30	0	-
    +Rule	HK	1947	only	-	Apr	13	3:30	1:00	S
    +Rule	HK	1947	only	-	Dec	30	3:30	0	-
    +Rule	HK	1948	only	-	May	2	3:30	1:00	S
    +Rule	HK	1948	1951	-	Oct	lastSun	3:30	0	-
    +Rule	HK	1952	only	-	Oct	25	3:30	0	-
    +Rule	HK	1949	1953	-	Apr	Sun>=1	3:30	1:00	S
    +Rule	HK	1953	only	-	Nov	1	3:30	0	-
    +Rule	HK	1954	1964	-	Mar	Sun>=18	3:30	1:00	S
    +Rule	HK	1954	only	-	Oct	31	3:30	0	-
    +Rule	HK	1955	1964	-	Nov	Sun>=1	3:30	0	-
    +Rule	HK	1965	1976	-	Apr	Sun>=16	3:30	1:00	S
    +Rule	HK	1965	1976	-	Oct	Sun>=16	3:30	0	-
    +Rule	HK	1973	only	-	Dec	30	3:30	1:00	S
    +Rule	HK	1979	only	-	May	Sun>=8	3:30	1:00	S
    +Rule	HK	1979	only	-	Oct	Sun>=16	3:30	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Hong_Kong	7:36:36 -	LMT	1904 Oct 30
    +			8:00	HK	HK%sT	1941 Dec 25
    +			9:00	-	JST	1945 Sep 15
    +			8:00	HK	HK%sT
    +
    +###############################################################################
    +
    +# Taiwan
    +
    +# Shanks & Pottenger write that Taiwan observed DST during 1945, when it
    +# was still controlled by Japan.  This is hard to believe, but we don't
    +# have any other information.
    +
    +# From smallufo (2010-04-03):
    +# According to Taiwan's CWB,
    +# 
    +# http://www.cwb.gov.tw/V6/astronomy/cdata/summert.htm
    +# 
    +# Taipei has DST in 1979 between July 1st and Sep 30.
    +
    +# From Arthur David Olson (2010-04-07):
    +# Here's Google's translation of the table at the bottom of the "summert.htm" page:
    +# Decade 	                                                    Name                      Start and end date
    +# Republic of China 34 years to 40 years (AD 1945-1951 years) Summer Time               May 1 to September 30
    +# 41 years of the Republic of China (AD 1952)                 Daylight Saving Time      March 1 to October 31
    +# Republic of China 42 years to 43 years (AD 1953-1954 years) Daylight Saving Time      April 1 to October 31
    +# In the 44 years to 45 years (AD 1955-1956 years)            Daylight Saving Time      April 1 to September 30
    +# Republic of China 46 years to 48 years (AD 1957-1959)       Summer Time               April 1 to September 30
    +# Republic of China 49 years to 50 years (AD 1960-1961)       Summer Time               June 1 to September 30
    +# Republic of China 51 years to 62 years (AD 1962-1973 years) Stop Summer Time
    +# Republic of China 63 years to 64 years (1974-1975 AD)       Daylight Saving Time      April 1 to September 30
    +# Republic of China 65 years to 67 years (1976-1978 AD)       Stop Daylight Saving Time
    +# Republic of China 68 years (AD 1979)                        Daylight Saving Time      July 1 to September 30
    +# Republic of China since 69 years (AD 1980)                  Stop Daylight Saving Time
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Taiwan	1945	1951	-	May	1	0:00	1:00	D
    +Rule	Taiwan	1945	1951	-	Oct	1	0:00	0	S
    +Rule	Taiwan	1952	only	-	Mar	1	0:00	1:00	D
    +Rule	Taiwan	1952	1954	-	Nov	1	0:00	0	S
    +Rule	Taiwan	1953	1959	-	Apr	1	0:00	1:00	D
    +Rule	Taiwan	1955	1961	-	Oct	1	0:00	0	S
    +Rule	Taiwan	1960	1961	-	Jun	1	0:00	1:00	D
    +Rule	Taiwan	1974	1975	-	Apr	1	0:00	1:00	D
    +Rule	Taiwan	1974	1975	-	Oct	1	0:00	0	S
    +Rule	Taiwan	1979	only	-	Jun	30	0:00	1:00	D
    +Rule	Taiwan	1979	only	-	Sep	30	0:00	0	S
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Taipei	8:06:00 -	LMT	1896 # or Taibei or T'ai-pei
    +			8:00	Taiwan	C%sT
    +
    +# Macau (Macao, Aomen)
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Macau	1961	1962	-	Mar	Sun>=16	3:30	1:00	S
    +Rule	Macau	1961	1964	-	Nov	Sun>=1	3:30	0	-
    +Rule	Macau	1963	only	-	Mar	Sun>=16	0:00	1:00	S
    +Rule	Macau	1964	only	-	Mar	Sun>=16	3:30	1:00	S
    +Rule	Macau	1965	only	-	Mar	Sun>=16	0:00	1:00	S
    +Rule	Macau	1965	only	-	Oct	31	0:00	0	-
    +Rule	Macau	1966	1971	-	Apr	Sun>=16	3:30	1:00	S
    +Rule	Macau	1966	1971	-	Oct	Sun>=16	3:30	0	-
    +Rule	Macau	1972	1974	-	Apr	Sun>=15	0:00	1:00	S
    +Rule	Macau	1972	1973	-	Oct	Sun>=15	0:00	0	-
    +Rule	Macau	1974	1977	-	Oct	Sun>=15	3:30	0	-
    +Rule	Macau	1975	1977	-	Apr	Sun>=15	3:30	1:00	S
    +Rule	Macau	1978	1980	-	Apr	Sun>=15	0:00	1:00	S
    +Rule	Macau	1978	1980	-	Oct	Sun>=15	0:00	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Macau	7:34:20 -	LMT	1912
    +			8:00	Macau	MO%sT	1999 Dec 20 # return to China
    +			8:00	PRC	C%sT
    +
    +
    +###############################################################################
    +
    +# Cyprus
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Cyprus	1975	only	-	Apr	13	0:00	1:00	S
    +Rule	Cyprus	1975	only	-	Oct	12	0:00	0	-
    +Rule	Cyprus	1976	only	-	May	15	0:00	1:00	S
    +Rule	Cyprus	1976	only	-	Oct	11	0:00	0	-
    +Rule	Cyprus	1977	1980	-	Apr	Sun>=1	0:00	1:00	S
    +Rule	Cyprus	1977	only	-	Sep	25	0:00	0	-
    +Rule	Cyprus	1978	only	-	Oct	2	0:00	0	-
    +Rule	Cyprus	1979	1997	-	Sep	lastSun	0:00	0	-
    +Rule	Cyprus	1981	1998	-	Mar	lastSun	0:00	1:00	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Nicosia	2:13:28 -	LMT	1921 Nov 14
    +			2:00	Cyprus	EE%sT	1998 Sep
    +			2:00	EUAsia	EE%sT
    +# IATA SSIM (1998-09) has Cyprus using EU rules for the first time.
    +
    +# Classically, Cyprus belongs to Asia; e.g. see Herodotus, Histories, I.72.
    +# However, for various reasons many users expect to find it under Europe.
    +Link	Asia/Nicosia	Europe/Nicosia
    +
    +# Georgia
    +# From Paul Eggert (1994-11-19):
    +# Today's _Economist_ (p 60) reports that Georgia moved its clocks forward
    +# an hour recently, due to a law proposed by Zurab Murvanidze,
    +# an MP who went on a hunger strike for 11 days to force discussion about it!
    +# We have no details, but we'll guess they didn't move the clocks back in fall.
    +#
    +# From Mathew Englander, quoting AP (1996-10-23 13:05-04):
    +# Instead of putting back clocks at the end of October, Georgia
    +# will stay on daylight savings time this winter to save energy,
    +# President Eduard Shevardnadze decreed Wednesday.
    +#
    +# From the BBC via Joseph S. Myers (2004-06-27):
    +#
    +# Georgia moved closer to Western Europe on Sunday...  The former Soviet
    +# republic has changed its time zone back to that of Moscow.  As a result it
    +# is now just four hours ahead of Greenwich Mean Time, rather than five hours
    +# ahead.  The switch was decreed by the pro-Western president of Georgia,
    +# Mikhail Saakashvili, who said the change was partly prompted by the process
    +# of integration into Europe.
    +
    +# From Teimuraz Abashidze (2005-11-07):
    +# Government of Georgia ... decided to NOT CHANGE daylight savings time on
    +# [Oct.] 30, as it was done before during last more than 10 years.
    +# Currently, we are in fact GMT +4:00, as before 30 October it was GMT
    +# +3:00.... The problem is, there is NO FORMAL LAW or governmental document
    +# about it.  As far as I can find, I was told, that there is no document,
    +# because we just DIDN'T ISSUE document about switching to winter time....
    +# I don't know what can be done, especially knowing that some years ago our
    +# DST rules where changed THREE TIMES during one month.
    +
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Tbilisi	2:59:16 -	LMT	1880
    +			2:59:16	-	TBMT	1924 May  2 # Tbilisi Mean Time
    +			3:00	-	TBIT	1957 Mar    # Tbilisi Time
    +			4:00 RussiaAsia TBI%sT	1991 Mar 31 2:00s
    +			3:00	1:00	TBIST	1991 Apr  9 # independence
    +			3:00 RussiaAsia GE%sT	1992 # Georgia Time
    +			3:00 E-EurAsia	GE%sT	1994 Sep lastSun
    +			4:00 E-EurAsia	GE%sT	1996 Oct lastSun
    +			4:00	1:00	GEST	1997 Mar lastSun
    +			4:00 E-EurAsia	GE%sT	2004 Jun 27
    +			3:00 RussiaAsia	GE%sT	2005 Mar lastSun 2:00
    +			4:00	-	GET
    +
    +# East Timor
    +
    +# See Indonesia for the 1945 transition.
    +
    +# From Joao Carrascalao, brother of the former governor of East Timor, in
    +# 
    +# East Timor may be late for its millennium
    +#  (1999-12-26/31):
    +# Portugal tried to change the time forward in 1974 because the sun
    +# rises too early but the suggestion raised a lot of problems with the
    +# Timorese and I still don't think it would work today because it
    +# conflicts with their way of life.
    +
    +# From Paul Eggert (2000-12-04):
    +# We don't have any record of the above attempt.
    +# Most likely our records are incomplete, but we have no better data.
    +
    +# 
    +# From Manoel de Almeida e Silva, Deputy Spokesman for the UN Secretary-General
    +# (2000-08-16):
    +# The Cabinet of the East Timor Transition Administration decided
    +# today to advance East Timor's time by one hour.  The time change,
    +# which will be permanent, with no seasonal adjustment, will happen at
    +# midnight on Saturday, September 16.
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Dili	8:22:20 -	LMT	1912
    +			8:00	-	TLT	1942 Feb 21 23:00 # E Timor Time
    +			9:00	-	JST	1945 Sep 23
    +			9:00	-	TLT	1976 May  3
    +			8:00	-	CIT	2000 Sep 17 00:00
    +			9:00	-	TLT
    +
    +# India
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Kolkata	5:53:28 -	LMT	1880	# Kolkata
    +			5:53:20	-	HMT	1941 Oct    # Howrah Mean Time?
    +			6:30	-	BURT	1942 May 15 # Burma Time
    +			5:30	-	IST	1942 Sep
    +			5:30	1:00	IST	1945 Oct 15
    +			5:30	-	IST
    +# The following are like Asia/Kolkata:
    +#	Andaman Is
    +#	Lakshadweep (Laccadive, Minicoy and Amindivi Is)
    +#	Nicobar Is
    +
    +# Indonesia
    +#
    +# From Gwillim Law (2001-05-28), overriding Shanks & Pottenger:
    +# 
    +# says that Indonesia's time zones changed on 1988-01-01.  Looking at some
    +# time zone maps, I think that must refer to Western Borneo (Kalimantan Barat
    +# and Kalimantan Tengah) switching from UTC+8 to UTC+7.
    +#
    +# From Paul Eggert (2007-03-10):
    +# Here is another correction to Shanks & Pottenger.
    +# JohnTWB writes that Japanese forces did not surrender control in
    +# Indonesia until 1945-09-01 00:00 at the earliest (in Jakarta) and
    +# other formal surrender ceremonies were September 9, 11, and 13, plus
    +# September 12 for the regional surrender to Mountbatten in Singapore.
    +# These would be the earliest possible times for a change.
    +# Regimes horaires pour le monde entier, by Henri Le Corre, (Editions
    +# Traditionnelles, 1987, Paris) says that Java and Madura switched
    +# from JST to UTC+07:30 on 1945-09-23, and gives 1944-09-01 for Jayapura
    +# (Hollandia).  For now, assume all Indonesian locations other than Jayapura
    +# switched on 1945-09-23.
    +#
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Asia/Jakarta	7:07:12 -	LMT	1867 Aug 10
    +# Shanks & Pottenger say the next transition was at 1924 Jan 1 0:13,
    +# but this must be a typo.
    +			7:07:12	-	JMT	1923 Dec 31 23:47:12 # Jakarta
    +			7:20	-	JAVT	1932 Nov	 # Java Time
    +			7:30	-	WIT	1942 Mar 23
    +			9:00	-	JST	1945 Sep 23
    +			7:30	-	WIT	1948 May
    +			8:00	-	WIT	1950 May
    +			7:30	-	WIT	1964
    +			7:00	-	WIT
    +Zone Asia/Pontianak	7:17:20	-	LMT	1908 May
    +			7:17:20	-	PMT	1932 Nov    # Pontianak MT
    +			7:30	-	WIT	1942 Jan 29
    +			9:00	-	JST	1945 Sep 23
    +			7:30	-	WIT	1948 May
    +			8:00	-	WIT	1950 May
    +			7:30	-	WIT	1964
    +			8:00	-	CIT	1988 Jan  1
    +			7:00	-	WIT
    +Zone Asia/Makassar	7:57:36 -	LMT	1920
    +			7:57:36	-	MMT	1932 Nov    # Macassar MT
    +			8:00	-	CIT	1942 Feb  9
    +			9:00	-	JST	1945 Sep 23
    +			8:00	-	CIT
    +Zone Asia/Jayapura	9:22:48 -	LMT	1932 Nov
    +			9:00	-	EIT	1944 Sep  1
    +			9:30	-	CST	1964
    +			9:00	-	EIT
    +
    +# Iran
    +
    +# From Roozbeh Pournader (2003-03-15):
    +# This is an English translation of what I just found (originally in Persian).
    +# The Gregorian dates in brackets are mine:
    +#
    +#	Official Newspaper No. 13548-1370/6/25 [1991-09-16]
    +#	No. 16760/T233 H				1370/6/10 [1991-09-01]
    +#
    +#	The Rule About Change of the Official Time of the Country
    +#
    +#	The Board of Ministers, in the meeting dated 1370/5/23 [1991-08-14],
    +#	based on the suggestion number 2221/D dated 1370/4/22 [1991-07-13]
    +#	of the Country's Organization for Official and Employment Affairs,
    +#	and referring to the law for equating the working hours of workers
    +#	and officers in the whole country dated 1359/4/23 [1980-07-14], and
    +#	for synchronizing the official times of the country, agreed that:
    +#
    +#	The official time of the country will should move forward one hour
    +#	at the 24[:00] hours of the first day of Farvardin and should return
    +#	to its previous state at the 24[:00] hours of the 30th day of
    +#	Shahrivar.
    +#
    +#	First Deputy to the President - Hassan Habibi
    +#
    +# From personal experience, that agrees with what has been followed
    +# for at least the last 5 years.  Before that, for a few years, the
    +# date used was the first Thursday night of Farvardin and the last
    +# Thursday night of Shahrivar, but I can't give exact dates....
    +# I have also changed the abbreviations to what is considered correct
    +# here in Iran, IRST for regular time and IRDT for daylight saving time.
    +#
    +# From Roozbeh Pournader (2005-04-05):
    +# The text of the Iranian law, in effect since 1925, clearly mentions
    +# that the true solar year is the measure, and there is no arithmetic
    +# leap year calculation involved.  There has never been any serious
    +# plan to change that law....
    +#
    +# From Paul Eggert (2006-03-22):
    +# Go with Shanks & Pottenger before Sept. 1991, and with Pournader thereafter.
    +# I used Ed Reingold's cal-persia in GNU Emacs 21.2 to check Persian dates,
    +# stopping after 2037 when 32-bit time_t's overflow.
    +# That cal-persia used Birashk's approximation, which disagrees with the solar
    +# calendar predictions for the year 2025, so I corrected those dates by hand.
    +#
    +# From Oscar van Vlijmen (2005-03-30), writing about future
    +# discrepancies between cal-persia and the Iranian calendar:
    +# For 2091 solar-longitude-after yields 2091-03-20 08:40:07.7 UT for
    +# the vernal equinox and that gets so close to 12:00 some local
    +# Iranian time that the definition of the correct location needs to be
    +# known exactly, amongst other factors.  2157 is even closer:
    +# 2157-03-20 08:37:15.5 UT.  But the Gregorian year 2025 should give
    +# no interpretation problem whatsoever.  By the way, another instant
    +# in the near future where there will be a discrepancy between
    +# arithmetical and astronomical Iranian calendars will be in 2058:
    +# vernal equinox on 2058-03-20 09:03:05.9 UT.  The Java version of
    +# Reingold's/Dershowitz' calculator gives correctly the Gregorian date
    +# 2058-03-21 for 1 Farvardin 1437 (astronomical).
    +#
    +# From Steffen Thorsen (2006-03-22):
    +# Several of my users have reported that Iran will not observe DST anymore:
    +# http://www.irna.ir/en/news/view/line-17/0603193812164948.htm
    +#
    +# From Reuters (2007-09-16), with a heads-up from Jesper Norgaard Welen:
    +# ... the Guardian Council ... approved a law on Sunday to re-introduce
    +# daylight saving time ...
    +# http://uk.reuters.com/article/oilRpt/idUKBLA65048420070916
    +#
    +# From Roozbeh Pournader (2007-11-05):
    +# This is quoted from Official Gazette of the Islamic Republic of
    +# Iran, Volume 63, Number 18242, dated Tuesday 1386/6/24
    +# [2007-10-16]. I am doing the best translation I can:...
    +# The official time of the country will be moved forward for one hour
    +# on the 24 hours of the first day of the month of Farvardin and will
    +# be changed back to its previous state on the 24 hours of the
    +# thirtieth day of Shahrivar.
    +#
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Iran	1978	1980	-	Mar	21	0:00	1:00	D
    +Rule	Iran	1978	only	-	Oct	21	0:00	0	S
    +Rule	Iran	1979	only	-	Sep	19	0:00	0	S
    +Rule	Iran	1980	only	-	Sep	23	0:00	0	S
    +Rule	Iran	1991	only	-	May	 3	0:00	1:00	D
    +Rule	Iran	1992	1995	-	Mar	22	0:00	1:00	D
    +Rule	Iran	1991	1995	-	Sep	22	0:00	0	S
    +Rule	Iran	1996	only	-	Mar	21	0:00	1:00	D
    +Rule	Iran	1996	only	-	Sep	21	0:00	0	S
    +Rule	Iran	1997	1999	-	Mar	22	0:00	1:00	D
    +Rule	Iran	1997	1999	-	Sep	22	0:00	0	S
    +Rule	Iran	2000	only	-	Mar	21	0:00	1:00	D
    +Rule	Iran	2000	only	-	Sep	21	0:00	0	S
    +Rule	Iran	2001	2003	-	Mar	22	0:00	1:00	D
    +Rule	Iran	2001	2003	-	Sep	22	0:00	0	S
    +Rule	Iran	2004	only	-	Mar	21	0:00	1:00	D
    +Rule	Iran	2004	only	-	Sep	21	0:00	0	S
    +Rule	Iran	2005	only	-	Mar	22	0:00	1:00	D
    +Rule	Iran	2005	only	-	Sep	22	0:00	0	S
    +Rule	Iran	2008	only	-	Mar	21	0:00	1:00	D
    +Rule	Iran	2008	only	-	Sep	21	0:00	0	S
    +Rule	Iran	2009	2011	-	Mar	22	0:00	1:00	D
    +Rule	Iran	2009	2011	-	Sep	22	0:00	0	S
    +Rule	Iran	2012	only	-	Mar	21	0:00	1:00	D
    +Rule	Iran	2012	only	-	Sep	21	0:00	0	S
    +Rule	Iran	2013	2015	-	Mar	22	0:00	1:00	D
    +Rule	Iran	2013	2015	-	Sep	22	0:00	0	S
    +Rule	Iran	2016	only	-	Mar	21	0:00	1:00	D
    +Rule	Iran	2016	only	-	Sep	21	0:00	0	S
    +Rule	Iran	2017	2019	-	Mar	22	0:00	1:00	D
    +Rule	Iran	2017	2019	-	Sep	22	0:00	0	S
    +Rule	Iran	2020	only	-	Mar	21	0:00	1:00	D
    +Rule	Iran	2020	only	-	Sep	21	0:00	0	S
    +Rule	Iran	2021	2023	-	Mar	22	0:00	1:00	D
    +Rule	Iran	2021	2023	-	Sep	22	0:00	0	S
    +Rule	Iran	2024	only	-	Mar	21	0:00	1:00	D
    +Rule	Iran	2024	only	-	Sep	21	0:00	0	S
    +Rule	Iran	2025	2027	-	Mar	22	0:00	1:00	D
    +Rule	Iran	2025	2027	-	Sep	22	0:00	0	S
    +Rule	Iran	2028	2029	-	Mar	21	0:00	1:00	D
    +Rule	Iran	2028	2029	-	Sep	21	0:00	0	S
    +Rule	Iran	2030	2031	-	Mar	22	0:00	1:00	D
    +Rule	Iran	2030	2031	-	Sep	22	0:00	0	S
    +Rule	Iran	2032	2033	-	Mar	21	0:00	1:00	D
    +Rule	Iran	2032	2033	-	Sep	21	0:00	0	S
    +Rule	Iran	2034	2035	-	Mar	22	0:00	1:00	D
    +Rule	Iran	2034	2035	-	Sep	22	0:00	0	S
    +Rule	Iran	2036	2037	-	Mar	21	0:00	1:00	D
    +Rule	Iran	2036	2037	-	Sep	21	0:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Tehran	3:25:44	-	LMT	1916
    +			3:25:44	-	TMT	1946	# Tehran Mean Time
    +			3:30	-	IRST	1977 Nov
    +			4:00	Iran	IR%sT	1979
    +			3:30	Iran	IR%sT
    +
    +
    +# Iraq
    +#
    +# From Jonathan Lennox (2000-06-12):
    +# An article in this week's Economist ("Inside the Saddam-free zone", p. 50 in
    +# the U.S. edition) on the Iraqi Kurds contains a paragraph:
    +# "The three northern provinces ... switched their clocks this spring and
    +# are an hour ahead of Baghdad."
    +#
    +# But Rives McDow (2000-06-18) quotes a contact in Iraqi-Kurdistan as follows:
    +# In the past, some Kurdish nationalists, as a protest to the Iraqi
    +# Government, did not adhere to daylight saving time.  They referred
    +# to daylight saving as Saddam time.  But, as of today, the time zone
    +# in Iraqi-Kurdistan is on standard time with Baghdad, Iraq.
    +#
    +# So we'll ignore the Economist's claim.
    +
    +# From Steffen Thorsen (2008-03-10):
    +# The cabinet in Iraq abolished DST last week, according to the following
    +# news sources (in Arabic):
    +# 
    +# http://www.aljeeran.net/wesima_articles/news-20080305-98602.html
    +# 
    +# 
    +# http://www.aswataliraq.info/look/article.tpl?id=2047&IdLanguage=17&IdPublication=4&NrArticle=71743&NrIssue=1&NrSection=10
    +# 
    +#
    +# We have published a short article in English about the change:
    +# 
    +# http://www.timeanddate.com/news/time/iraq-dumps-daylight-saving.html
    +# 
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Iraq	1982	only	-	May	1	0:00	1:00	D
    +Rule	Iraq	1982	1984	-	Oct	1	0:00	0	S
    +Rule	Iraq	1983	only	-	Mar	31	0:00	1:00	D
    +Rule	Iraq	1984	1985	-	Apr	1	0:00	1:00	D
    +Rule	Iraq	1985	1990	-	Sep	lastSun	1:00s	0	S
    +Rule	Iraq	1986	1990	-	Mar	lastSun	1:00s	1:00	D
    +# IATA SSIM (1991/1996) says Apr 1 12:01am UTC; guess the `:01' is a typo.
    +# Shanks & Pottenger say Iraq did not observe DST 1992/1997; ignore this.
    +#
    +Rule	Iraq	1991	2007	-	Apr	 1	3:00s	1:00	D
    +Rule	Iraq	1991	2007	-	Oct	 1	3:00s	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Baghdad	2:57:40	-	LMT	1890
    +			2:57:36	-	BMT	1918	    # Baghdad Mean Time?
    +			3:00	-	AST	1982 May
    +			3:00	Iraq	A%sT
    +
    +
    +###############################################################################
    +
    +# Israel
    +
    +# From Ephraim Silverberg (2001-01-11):
    +#
    +# I coined "IST/IDT" circa 1988.  Until then there were three
    +# different abbreviations in use:
    +#
    +# JST  Jerusalem Standard Time [Danny Braniss, Hebrew University]
    +# IZT  Israel Zonal (sic) Time [Prof. Haim Papo, Technion]
    +# EEST Eastern Europe Standard Time [used by almost everyone else]
    +#
    +# Since timezones should be called by country and not capital cities,
    +# I ruled out JST.  As Israel is in Asia Minor and not Eastern Europe,
    +# EEST was equally unacceptable.  Since "zonal" was not compatible with
    +# any other timezone abbreviation, I felt that 'IST' was the way to go
    +# and, indeed, it has received almost universal acceptance in timezone
    +# settings in Israeli computers.
    +#
    +# In any case, I am happy to share timezone abbreviations with India,
    +# high on my favorite-country list (and not only because my wife's
    +# family is from India).
    +
    +# From Shanks & Pottenger:
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Zion	1940	only	-	Jun	 1	0:00	1:00	D
    +Rule	Zion	1942	1944	-	Nov	 1	0:00	0	S
    +Rule	Zion	1943	only	-	Apr	 1	2:00	1:00	D
    +Rule	Zion	1944	only	-	Apr	 1	0:00	1:00	D
    +Rule	Zion	1945	only	-	Apr	16	0:00	1:00	D
    +Rule	Zion	1945	only	-	Nov	 1	2:00	0	S
    +Rule	Zion	1946	only	-	Apr	16	2:00	1:00	D
    +Rule	Zion	1946	only	-	Nov	 1	0:00	0	S
    +Rule	Zion	1948	only	-	May	23	0:00	2:00	DD
    +Rule	Zion	1948	only	-	Sep	 1	0:00	1:00	D
    +Rule	Zion	1948	1949	-	Nov	 1	2:00	0	S
    +Rule	Zion	1949	only	-	May	 1	0:00	1:00	D
    +Rule	Zion	1950	only	-	Apr	16	0:00	1:00	D
    +Rule	Zion	1950	only	-	Sep	15	3:00	0	S
    +Rule	Zion	1951	only	-	Apr	 1	0:00	1:00	D
    +Rule	Zion	1951	only	-	Nov	11	3:00	0	S
    +Rule	Zion	1952	only	-	Apr	20	2:00	1:00	D
    +Rule	Zion	1952	only	-	Oct	19	3:00	0	S
    +Rule	Zion	1953	only	-	Apr	12	2:00	1:00	D
    +Rule	Zion	1953	only	-	Sep	13	3:00	0	S
    +Rule	Zion	1954	only	-	Jun	13	0:00	1:00	D
    +Rule	Zion	1954	only	-	Sep	12	0:00	0	S
    +Rule	Zion	1955	only	-	Jun	11	2:00	1:00	D
    +Rule	Zion	1955	only	-	Sep	11	0:00	0	S
    +Rule	Zion	1956	only	-	Jun	 3	0:00	1:00	D
    +Rule	Zion	1956	only	-	Sep	30	3:00	0	S
    +Rule	Zion	1957	only	-	Apr	29	2:00	1:00	D
    +Rule	Zion	1957	only	-	Sep	22	0:00	0	S
    +Rule	Zion	1974	only	-	Jul	 7	0:00	1:00	D
    +Rule	Zion	1974	only	-	Oct	13	0:00	0	S
    +Rule	Zion	1975	only	-	Apr	20	0:00	1:00	D
    +Rule	Zion	1975	only	-	Aug	31	0:00	0	S
    +Rule	Zion	1985	only	-	Apr	14	0:00	1:00	D
    +Rule	Zion	1985	only	-	Sep	15	0:00	0	S
    +Rule	Zion	1986	only	-	May	18	0:00	1:00	D
    +Rule	Zion	1986	only	-	Sep	 7	0:00	0	S
    +Rule	Zion	1987	only	-	Apr	15	0:00	1:00	D
    +Rule	Zion	1987	only	-	Sep	13	0:00	0	S
    +Rule	Zion	1988	only	-	Apr	 9	0:00	1:00	D
    +Rule	Zion	1988	only	-	Sep	 3	0:00	0	S
    +
    +# From Ephraim Silverberg
    +# (1997-03-04, 1998-03-16, 1998-12-28, 2000-01-17, 2000-07-25, 2004-12-22,
    +# and 2005-02-17):
    +
    +# According to the Office of the Secretary General of the Ministry of
    +# Interior, there is NO set rule for Daylight-Savings/Standard time changes.
    +# One thing is entrenched in law, however: that there must be at least 150
    +# days of daylight savings time annually.  From 1993-1998, the change to
    +# daylight savings time was on a Friday morning from midnight IST to
    +# 1 a.m IDT; up until 1998, the change back to standard time was on a
    +# Saturday night from midnight daylight savings time to 11 p.m. standard
    +# time.  1996 is an exception to this rule where the change back to standard
    +# time took place on Sunday night instead of Saturday night to avoid
    +# conflicts with the Jewish New Year.  In 1999, the change to
    +# daylight savings time was still on a Friday morning but from
    +# 2 a.m. IST to 3 a.m. IDT; furthermore, the change back to standard time
    +# was also on a Friday morning from 2 a.m. IDT to 1 a.m. IST for
    +# 1999 only.  In the year 2000, the change to daylight savings time was
    +# similar to 1999, but although the change back will be on a Friday, it
    +# will take place from 1 a.m. IDT to midnight IST.  Starting in 2001, all
    +# changes to/from will take place at 1 a.m. old time, but now there is no
    +# rule as to what day of the week it will take place in as the start date
    +# (except in 2003) is the night after the Passover Seder (i.e. the eve
    +# of the 16th of Nisan in the lunar Hebrew calendar) and the end date
    +# (except in 2002) is three nights before Yom Kippur [Day of Atonement]
    +# (the eve of the 7th of Tishrei in the lunar Hebrew calendar).
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Zion	1989	only	-	Apr	30	0:00	1:00	D
    +Rule	Zion	1989	only	-	Sep	 3	0:00	0	S
    +Rule	Zion	1990	only	-	Mar	25	0:00	1:00	D
    +Rule	Zion	1990	only	-	Aug	26	0:00	0	S
    +Rule	Zion	1991	only	-	Mar	24	0:00	1:00	D
    +Rule	Zion	1991	only	-	Sep	 1	0:00	0	S
    +Rule	Zion	1992	only	-	Mar	29	0:00	1:00	D
    +Rule	Zion	1992	only	-	Sep	 6	0:00	0	S
    +Rule	Zion	1993	only	-	Apr	 2	0:00	1:00	D
    +Rule	Zion	1993	only	-	Sep	 5	0:00	0	S
    +
    +# The dates for 1994-1995 were obtained from Office of the Spokeswoman for the
    +# Ministry of Interior, Jerusalem, Israel.  The spokeswoman can be reached by
    +# calling the office directly at 972-2-6701447 or 972-2-6701448.
    +
    +# Rule	NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
    +Rule	Zion	1994	only	-	Apr	 1	0:00	1:00	D
    +Rule	Zion	1994	only	-	Aug	28	0:00	0	S
    +Rule	Zion	1995	only	-	Mar	31	0:00	1:00	D
    +Rule	Zion	1995	only	-	Sep	 3	0:00	0	S
    +
    +# The dates for 1996 were determined by the Minister of Interior of the
    +# time, Haim Ramon.  The official announcement regarding 1996-1998
    +# (with the dates for 1997-1998 no longer being relevant) can be viewed at:
    +#
    +#   ftp://ftp.cs.huji.ac.il/pub/tz/announcements/1996-1998.ramon.ps.gz
    +#
    +# The dates for 1997-1998 were altered by his successor, Rabbi Eli Suissa.
    +#
    +# The official announcements for the years 1997-1999 can be viewed at:
    +#
    +#   ftp://ftp.cs.huji.ac.il/pub/tz/announcements/YYYY.ps.gz
    +#
    +#       where YYYY is the relevant year.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Zion	1996	only	-	Mar	15	0:00	1:00	D
    +Rule	Zion	1996	only	-	Sep	16	0:00	0	S
    +Rule	Zion	1997	only	-	Mar	21	0:00	1:00	D
    +Rule	Zion	1997	only	-	Sep	14	0:00	0	S
    +Rule	Zion	1998	only	-	Mar	20	0:00	1:00	D
    +Rule	Zion	1998	only	-	Sep	 6	0:00	0	S
    +Rule	Zion	1999	only	-	Apr	 2	2:00	1:00	D
    +Rule	Zion	1999	only	-	Sep	 3	2:00	0	S
    +
    +# The Knesset Interior Committee has changed the dates for 2000 for
    +# the third time in just over a year and have set new dates for the
    +# years 2001-2004 as well.
    +#
    +# The official announcement for the start date of 2000 can be viewed at:
    +#
    +#	ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2000-start.ps.gz
    +#
    +# The official announcement for the end date of 2000 and the dates
    +# for the years 2001-2004 can be viewed at:
    +#
    +#	ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2000-2004.ps.gz
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Zion	2000	only	-	Apr	14	2:00	1:00	D
    +Rule	Zion	2000	only	-	Oct	 6	1:00	0	S
    +Rule	Zion	2001	only	-	Apr	 9	1:00	1:00	D
    +Rule	Zion	2001	only	-	Sep	24	1:00	0	S
    +Rule	Zion	2002	only	-	Mar	29	1:00	1:00	D
    +Rule	Zion	2002	only	-	Oct	 7	1:00	0	S
    +Rule	Zion	2003	only	-	Mar	28	1:00	1:00	D
    +Rule	Zion	2003	only	-	Oct	 3	1:00	0	S
    +Rule	Zion	2004	only	-	Apr	 7	1:00	1:00	D
    +Rule	Zion	2004	only	-	Sep	22	1:00	0	S
    +
    +# The proposed law agreed upon by the Knesset Interior Committee on
    +# 2005-02-14 is that, for 2005 and beyond, DST starts at 02:00 the
    +# last Friday before April 2nd (i.e. the last Friday in March or April
    +# 1st itself if it falls on a Friday) and ends at 02:00 on the Saturday
    +# night _before_ the fast of Yom Kippur.
    +#
    +# Those who can read Hebrew can view the announcement at:
    +#
    +#	ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2005+beyond.ps
    +
    +# From Paul Eggert (2012-10-26):
    +# I used Ephraim Silverberg's dst-israel.el program
    +#  (2005-02-20)
    +# along with Ed Reingold's cal-hebrew in GNU Emacs 21.4,
    +# to generate the transitions from 2005 through 2012.
    +# (I replaced "lastFri" with "Fri>=26" by hand.)
    +# The spring transitions all correspond to the following Rule:
    +#
    +# Rule	Zion	2005	2012	-	Mar	Fri>=26	2:00	1:00	D
    +#
    +# but older zic implementations (e.g., Solaris 8) do not support
    +# "Fri>=26" to mean April 1 in years like 2005, so for now we list the
    +# springtime transitions explicitly.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Zion	2005	only	-	Apr	 1	2:00	1:00	D
    +Rule	Zion	2005	only	-	Oct	 9	2:00	0	S
    +Rule	Zion	2006	2010	-	Mar	Fri>=26	2:00	1:00	D
    +Rule	Zion	2006	only	-	Oct	 1	2:00	0	S
    +Rule	Zion	2007	only	-	Sep	16	2:00	0	S
    +Rule	Zion	2008	only	-	Oct	 5	2:00	0	S
    +Rule	Zion	2009	only	-	Sep	27	2:00	0	S
    +Rule	Zion	2010	only	-	Sep	12	2:00	0	S
    +Rule	Zion	2011	only	-	Apr	 1	2:00	1:00	D
    +Rule	Zion	2011	only	-	Oct	 2	2:00	0	S
    +Rule	Zion	2012	only	-	Mar	Fri>=26	2:00	1:00	D
    +Rule	Zion	2012	only	-	Sep	23	2:00	0	S
    +
    +# From Ephraim Silverberg (2012-10-18):
    +# Yesterday, the Interior Ministry Committee, after more than a year
    +# past, approved sending the proposed June 2011 changes to the Time
    +# Decree Law back to the Knesset for second and third (final) votes
    +# before the upcoming elections on Jan. 22, 2013.  Hence, although the
    +# changes are not yet law, they are expected to be so before February 2013.
    +#
    +# As of 2013, DST starts at 02:00 on the Friday before the last Sunday in March.
    +# DST ends at 02:00 on the first Sunday after October 1, unless it occurs on the
    +# second day of the Jewish Rosh Hashana holiday, in which case DST ends a day
    +# later (i.e. at 02:00 the first Monday after October 2).
    +# [Rosh Hashana holidays are factored in until 2100.]
    +
    +# From Ephraim Silverberg (2012-11-05):
    +# The Knesset passed today (in second and final readings) the amendment to the
    +# Time Decree Law making the changes ... law.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Zion	2013	max	-	Mar	Fri>=23	2:00	1:00	D
    +Rule	Zion	2013	2026	-	Oct	Sun>=2	2:00	0	S
    +Rule	Zion	2027	only	-	Oct	Mon>=3	2:00	0	S
    +Rule	Zion	2028	max	-	Oct	Sun>=2	2:00	0	S
    +# The following rules are commented out for now, as they break older
    +# versions of zic that support only signed 32-bit timestamps, i.e.,
    +# through 2038-01-19 03:14:07 UTC.
    +#Rule	Zion	2028	2053	-	Oct	Sun>=2	2:00	0	S
    +#Rule	Zion	2054	only	-	Oct	Mon>=3	2:00	0	S
    +#Rule	Zion	2055	2080	-	Oct	Sun>=2	2:00	0	S
    +#Rule	Zion	2081	only	-	Oct	Mon>=3	2:00	0	S
    +#Rule	Zion	2082	max	-	Oct	Sun>=2	2:00	0	S
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Jerusalem	2:20:56 -	LMT	1880
    +			2:20:40	-	JMT	1918	# Jerusalem Mean Time?
    +			2:00	Zion	I%sT
    +
    +
    +
    +###############################################################################
    +
    +# Japan
    +
    +# `9:00' and `JST' is from Guy Harris.
    +
    +# From Paul Eggert (1995-03-06):
    +# Today's _Asahi Evening News_ (page 4) reports that Japan had
    +# daylight saving between 1948 and 1951, but ``the system was discontinued
    +# because the public believed it would lead to longer working hours.''
    +
    +# From Mayumi Negishi in the 2005-08-10 Japan Times
    +# :
    +# Occupation authorities imposed daylight-saving time on Japan on
    +# [1948-05-01]....  But lack of prior debate and the execution of
    +# daylight-saving time just three days after the bill was passed generated
    +# deep hatred of the concept....  The Diet unceremoniously passed a bill to
    +# dump the unpopular system in October 1951, less than a month after the San
    +# Francisco Peace Treaty was signed.  (A government poll in 1951 showed 53%
    +# of the Japanese wanted to scrap daylight-saving time, as opposed to 30% who
    +# wanted to keep it.)
    +
    +# From Paul Eggert (2006-03-22):
    +# Shanks & Pottenger write that DST in Japan during those years was as follows:
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Japan	1948	only	-	May	Sun>=1	2:00	1:00	D
    +Rule	Japan	1948	1951	-	Sep	Sat>=8	2:00	0	S
    +Rule	Japan	1949	only	-	Apr	Sun>=1	2:00	1:00	D
    +Rule	Japan	1950	1951	-	May	Sun>=1	2:00	1:00	D
    +# but the only locations using it (for birth certificates, presumably, since
    +# their audience is astrologers) were US military bases.  For now, assume
    +# that for most purposes daylight-saving time was observed; otherwise, what
    +# would have been the point of the 1951 poll?
    +
    +# From Hideyuki Suzuki (1998-11-09):
    +# 'Tokyo' usually stands for the former location of Tokyo Astronomical
    +# Observatory: E 139 44' 40".90 (9h 18m 58s.727), N 35 39' 16".0.
    +# This data is from 'Rika Nenpyou (Chronological Scientific Tables) 1996'
    +# edited by National Astronomical Observatory of Japan....
    +# JST (Japan Standard Time) has been used since 1888-01-01 00:00 (JST).
    +# The law is enacted on 1886-07-07.
    +
    +# From Hideyuki Suzuki (1998-11-16):
    +# The ordinance No. 51 (1886) established "standard time" in Japan,
    +# which stands for the time on E 135 degree.
    +# In the ordinance No. 167 (1895), "standard time" was renamed to "central
    +# standard time".  And the same ordinance also established "western standard
    +# time", which stands for the time on E 120 degree....  But "western standard
    +# time" was abolished in the ordinance No. 529 (1937).  In the ordinance No.
    +# 167, there is no mention regarding for what place western standard time is
    +# standard....
    +#
    +# I wrote "ordinance" above, but I don't know how to translate.
    +# In Japanese it's "chokurei", which means ordinance from emperor.
    +
    +# Shanks & Pottenger claim JST in use since 1896, and that a few
    +# places (e.g. Ishigaki) use +0800; go with Suzuki.  Guess that all
    +# ordinances took effect on Jan 1.
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Tokyo	9:18:59	-	LMT	1887 Dec 31 15:00u
    +			9:00	-	JST	1896
    +			9:00	-	CJT	1938
    +			9:00	Japan	J%sT
    +# Since 1938, all Japanese possessions have been like Asia/Tokyo.
    +
    +# Jordan
    +#
    +# From 
    +# Jordan Week (1999-07-01)  via Steffen Thorsen (1999-09-09):
    +# Clocks in Jordan were forwarded one hour on Wednesday at midnight,
    +# in accordance with the government's decision to implement summer time
    +# all year round.
    +#
    +# From 
    +# Jordan Week (1999-09-30)  via Steffen Thorsen (1999-11-09):
    +# Winter time starts today Thursday, 30 September. Clocks will be turned back
    +# by one hour.  This is the latest government decision and it's final!
    +# The decision was taken because of the increase in working hours in
    +# government's departments from six to seven hours.
    +#
    +# From Paul Eggert (2005-11-22):
    +# Starting 2003 transitions are from Steffen Thorsen's web site timeanddate.com.
    +#
    +# From Steffen Thorsen (2005-11-23):
    +# For Jordan I have received multiple independent user reports every year
    +# about DST end dates, as the end-rule is different every year.
    +#
    +# From Steffen Thorsen (2006-10-01), after a heads-up from Hilal Malawi:
    +# http://www.petranews.gov.jo/nepras/2006/Sep/05/4000.htm
    +# "Jordan will switch to winter time on Friday, October 27".
    +#
    +
    +# From Phil Pizzey (2009-04-02):
    +# ...I think I may have spotted an error in the timezone data for
    +# Jordan.
    +# The current (2009d) asia file shows Jordan going to daylight
    +# saving
    +# time on the last Thursday in March.
    +#
    +# Rule  Jordan      2000  max	-  Mar   lastThu     0:00s 1:00  S
    +#
    +# However timeanddate.com, which I usually find reliable, shows Jordan
    +# going to daylight saving time on the last Friday in March since 2002.
    +# Please see
    +# 
    +# http://www.timeanddate.com/worldclock/timezone.html?n=11
    +# 
    +
    +# From Steffen Thorsen (2009-04-02):
    +# This single one might be good enough, (2009-03-24, Arabic):
    +# 
    +# http://petra.gov.jo/Artical.aspx?Lng=2&Section=8&Artical=95279
    +# 
    +#
    +# Google's translation:
    +#
    +# > The Council of Ministers decided in 2002 to adopt the principle of timely
    +# > submission of the summer at 60 minutes as of midnight on the last Thursday
    +# > of the month of March of each year.
    +#
    +# So - this means the midnight between Thursday and Friday since 2002.
    +
    +# From Arthur David Olson (2009-04-06):
    +# We still have Jordan switching to DST on Thursdays in 2000 and 2001.
    +
    +# From Steffen Thorsen (2012-10-25):
    +# Yesterday the government in Jordan announced that they will not
    +# switch back to standard time this winter, so the will stay on DST
    +# until about the same time next year (at least).
    +# http://www.petra.gov.jo/Public_News/Nws_NewsDetails.aspx?NewsID=88950
    +#
    +# From Paul Eggert (2012-10-25):
    +# For now, assume this is just a one-year measure.  If it becomes
    +# permanent, we should move Jordan from EET to AST effective tomorrow.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Jordan	1973	only	-	Jun	6	0:00	1:00	S
    +Rule	Jordan	1973	1975	-	Oct	1	0:00	0	-
    +Rule	Jordan	1974	1977	-	May	1	0:00	1:00	S
    +Rule	Jordan	1976	only	-	Nov	1	0:00	0	-
    +Rule	Jordan	1977	only	-	Oct	1	0:00	0	-
    +Rule	Jordan	1978	only	-	Apr	30	0:00	1:00	S
    +Rule	Jordan	1978	only	-	Sep	30	0:00	0	-
    +Rule	Jordan	1985	only	-	Apr	1	0:00	1:00	S
    +Rule	Jordan	1985	only	-	Oct	1	0:00	0	-
    +Rule	Jordan	1986	1988	-	Apr	Fri>=1	0:00	1:00	S
    +Rule	Jordan	1986	1990	-	Oct	Fri>=1	0:00	0	-
    +Rule	Jordan	1989	only	-	May	8	0:00	1:00	S
    +Rule	Jordan	1990	only	-	Apr	27	0:00	1:00	S
    +Rule	Jordan	1991	only	-	Apr	17	0:00	1:00	S
    +Rule	Jordan	1991	only	-	Sep	27	0:00	0	-
    +Rule	Jordan	1992	only	-	Apr	10	0:00	1:00	S
    +Rule	Jordan	1992	1993	-	Oct	Fri>=1	0:00	0	-
    +Rule	Jordan	1993	1998	-	Apr	Fri>=1	0:00	1:00	S
    +Rule	Jordan	1994	only	-	Sep	Fri>=15	0:00	0	-
    +Rule	Jordan	1995	1998	-	Sep	Fri>=15	0:00s	0	-
    +Rule	Jordan	1999	only	-	Jul	 1	0:00s	1:00	S
    +Rule	Jordan	1999	2002	-	Sep	lastFri	0:00s	0	-
    +Rule	Jordan	2000	2001	-	Mar	lastThu	0:00s	1:00	S
    +Rule	Jordan	2002	max	-	Mar	lastThu	24:00	1:00	S
    +Rule	Jordan	2003	only	-	Oct	24	0:00s	0	-
    +Rule	Jordan	2004	only	-	Oct	15	0:00s	0	-
    +Rule	Jordan	2005	only	-	Sep	lastFri	0:00s	0	-
    +Rule	Jordan	2006	2011	-	Oct	lastFri	0:00s	0	-
    +Rule	Jordan	2013	max	-	Oct	lastFri	0:00s	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Amman	2:23:44 -	LMT	1931
    +			2:00	Jordan	EE%sT
    +
    +
    +# Kazakhstan
    +
    +# From Paul Eggert (1996-11-22):
    +# Andrew Evtichov (1996-04-13) writes that Kazakhstan
    +# stayed in sync with Moscow after 1990, and that Aqtobe (formerly Aktyubinsk)
    +# and Aqtau (formerly Shevchenko) are the largest cities in their zones.
    +# Guess that Aqtau and Aqtobe diverged in 1995, since that's the first time
    +# IATA SSIM mentions a third time zone in Kazakhstan.
    +
    +# From Paul Eggert (2006-03-22):
    +# German Iofis, ELSI, Almaty (2001-10-09) reports that Kazakhstan uses
    +# RussiaAsia rules, instead of switching at 00:00 as the IATA has it.
    +# Go with Shanks & Pottenger, who have them always using RussiaAsia rules.
    +# Also go with the following claims of Shanks & Pottenger:
    +#
    +# - Kazakhstan did not observe DST in 1991.
    +# - Qyzylorda switched from +5:00 to +6:00 on 1992-01-19 02:00.
    +# - Oral switched from +5:00 to +4:00 in spring 1989.
    +
    +# 
    +# From Kazakhstan Embassy's News Bulletin #11 (2005-03-21):
    +# 
    +# The Government of Kazakhstan passed a resolution March 15 abolishing
    +# daylight saving time citing lack of economic benefits and health
    +# complications coupled with a decrease in productivity.
    +#
    +# From Branislav Kojic (in Astana) via Gwillim Law (2005-06-28):
    +# ... what happened was that the former Kazakhstan Eastern time zone
    +# was "blended" with the Central zone.  Therefore, Kazakhstan now has
    +# two time zones, and difference between them is one hour.  The zone
    +# closer to UTC is the former Western zone (probably still called the
    +# same), encompassing four provinces in the west: Aqtobe, Atyrau,
    +# Mangghystau, and West Kazakhstan.  The other zone encompasses
    +# everything else....  I guess that would make Kazakhstan time zones
    +# de jure UTC+5 and UTC+6 respectively.
    +
    +#
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +#
    +# Almaty (formerly Alma-Ata), representing most locations in Kazakhstan
    +Zone	Asia/Almaty	5:07:48 -	LMT	1924 May  2 # or Alma-Ata
    +			5:00	-	ALMT	1930 Jun 21 # Alma-Ata Time
    +			6:00 RussiaAsia ALM%sT	1991
    +			6:00	-	ALMT	1992
    +			6:00 RussiaAsia	ALM%sT	2005 Mar 15
    +			6:00	-	ALMT
    +# Qyzylorda (aka Kyzylorda, Kizilorda, Kzyl-Orda, etc.)
    +Zone	Asia/Qyzylorda	4:21:52 -	LMT	1924 May  2
    +			4:00	-	KIZT	1930 Jun 21 # Kizilorda Time
    +			5:00	-	KIZT	1981 Apr  1
    +			5:00	1:00	KIZST	1981 Oct  1
    +			6:00	-	KIZT	1982 Apr  1
    +			5:00 RussiaAsia	KIZ%sT	1991
    +			5:00	-	KIZT	1991 Dec 16 # independence
    +			5:00	-	QYZT	1992 Jan 19 2:00
    +			6:00 RussiaAsia	QYZ%sT	2005 Mar 15
    +			6:00	-	QYZT
    +# Aqtobe (aka Aktobe, formerly Akt'ubinsk)
    +Zone	Asia/Aqtobe	3:48:40	-	LMT	1924 May  2
    +			4:00	-	AKTT	1930 Jun 21 # Aktyubinsk Time
    +			5:00	-	AKTT	1981 Apr  1
    +			5:00	1:00	AKTST	1981 Oct  1
    +			6:00	-	AKTT	1982 Apr  1
    +			5:00 RussiaAsia	AKT%sT	1991
    +			5:00	-	AKTT	1991 Dec 16 # independence
    +			5:00 RussiaAsia	AQT%sT	2005 Mar 15 # Aqtobe Time
    +			5:00	-	AQTT
    +# Mangghystau
    +# Aqtau was not founded until 1963, but it represents an inhabited region,
    +# so include time stamps before 1963.
    +Zone	Asia/Aqtau	3:21:04	-	LMT	1924 May  2
    +			4:00	-	FORT	1930 Jun 21 # Fort Shevchenko T
    +			5:00	-	FORT	1963
    +			5:00	-	SHET	1981 Oct  1 # Shevchenko Time
    +			6:00	-	SHET	1982 Apr  1
    +			5:00 RussiaAsia	SHE%sT	1991
    +			5:00	-	SHET	1991 Dec 16 # independence
    +			5:00 RussiaAsia	AQT%sT	1995 Mar lastSun 2:00 # Aqtau Time
    +			4:00 RussiaAsia	AQT%sT	2005 Mar 15
    +			5:00	-	AQTT
    +# West Kazakhstan
    +Zone	Asia/Oral	3:25:24	-	LMT	1924 May  2 # or Ural'sk
    +			4:00	-	URAT	1930 Jun 21 # Ural'sk time
    +			5:00	-	URAT	1981 Apr  1
    +			5:00	1:00	URAST	1981 Oct  1
    +			6:00	-	URAT	1982 Apr  1
    +			5:00 RussiaAsia	URA%sT	1989 Mar 26 2:00
    +			4:00 RussiaAsia	URA%sT	1991
    +			4:00	-	URAT	1991 Dec 16 # independence
    +			4:00 RussiaAsia	ORA%sT	2005 Mar 15 # Oral Time
    +			5:00	-	ORAT
    +
    +# Kyrgyzstan (Kirgizstan)
    +# Transitions through 1991 are from Shanks & Pottenger.
    +
    +# From Paul Eggert (2005-08-15):
    +# According to an article dated today in the Kyrgyzstan Development Gateway
    +# 
    +# Kyrgyzstan is canceling the daylight saving time system.  I take the article
    +# to mean that they will leave their clocks at 6 hours ahead of UTC.
    +# From Malik Abdugaliev (2005-09-21):
    +# Our government cancels daylight saving time 6th of August 2005.
    +# From 2005-08-12 our GMT-offset is +6, w/o any daylight saving.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Kyrgyz	1992	1996	-	Apr	Sun>=7	0:00s	1:00	S
    +Rule	Kyrgyz	1992	1996	-	Sep	lastSun	0:00	0	-
    +Rule	Kyrgyz	1997	2005	-	Mar	lastSun	2:30	1:00	S
    +Rule	Kyrgyz	1997	2004	-	Oct	lastSun	2:30	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Bishkek	4:58:24 -	LMT	1924 May  2
    +			5:00	-	FRUT	1930 Jun 21 # Frunze Time
    +			6:00 RussiaAsia FRU%sT	1991 Mar 31 2:00s
    +			5:00	1:00	FRUST	1991 Aug 31 2:00 # independence
    +			5:00	Kyrgyz	KG%sT	2005 Aug 12    # Kyrgyzstan Time
    +			6:00	-	KGT
    +
    +###############################################################################
    +
    +# Korea (North and South)
    +
    +# From Annie I. Bang (2006-07-10) in
    +# :
    +# The Ministry of Commerce, Industry and Energy has already
    +# commissioned a research project [to reintroduce DST] and has said
    +# the system may begin as early as 2008....  Korea ran a daylight
    +# saving program from 1949-61 but stopped it during the 1950-53 Korean War.
    +
    +# From Shanks & Pottenger:
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	ROK	1960	only	-	May	15	0:00	1:00	D
    +Rule	ROK	1960	only	-	Sep	13	0:00	0	S
    +Rule	ROK	1987	1988	-	May	Sun>=8	0:00	1:00	D
    +Rule	ROK	1987	1988	-	Oct	Sun>=8	0:00	0	S
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Seoul	8:27:52	-	LMT	1890
    +			8:30	-	KST	1904 Dec
    +			9:00	-	KST	1928
    +			8:30	-	KST	1932
    +			9:00	-	KST	1954 Mar 21
    +			8:00	ROK	K%sT	1961 Aug 10
    +			8:30	-	KST	1968 Oct
    +			9:00	ROK	K%sT
    +Zone	Asia/Pyongyang	8:23:00 -	LMT	1890
    +			8:30	-	KST	1904 Dec
    +			9:00	-	KST	1928
    +			8:30	-	KST	1932
    +			9:00	-	KST	1954 Mar 21
    +			8:00	-	KST	1961 Aug 10
    +			9:00	-	KST
    +
    +###############################################################################
    +
    +# Kuwait
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +# From the Arab Times (2007-03-14):
    +# The Civil Service Commission (CSC) has approved a proposal forwarded
    +# by MP Ahmad Baqer on implementing the daylight saving time (DST) in
    +# Kuwait starting from April until the end of Sept this year, reports Al-Anba.
    +# .
    +# From Paul Eggert (2007-03-29):
    +# We don't know the details, or whether the approval means it'll happen,
    +# so for now we assume no DST.
    +Zone	Asia/Kuwait	3:11:56 -	LMT	1950
    +			3:00	-	AST
    +
    +# Laos
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Vientiane	6:50:24 -	LMT	1906 Jun  9 # or Viangchan
    +			7:06:20	-	SMT	1911 Mar 11 0:01 # Saigon MT?
    +			7:00	-	ICT	1912 May
    +			8:00	-	ICT	1931 May
    +			7:00	-	ICT
    +
    +# Lebanon
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Lebanon	1920	only	-	Mar	28	0:00	1:00	S
    +Rule	Lebanon	1920	only	-	Oct	25	0:00	0	-
    +Rule	Lebanon	1921	only	-	Apr	3	0:00	1:00	S
    +Rule	Lebanon	1921	only	-	Oct	3	0:00	0	-
    +Rule	Lebanon	1922	only	-	Mar	26	0:00	1:00	S
    +Rule	Lebanon	1922	only	-	Oct	8	0:00	0	-
    +Rule	Lebanon	1923	only	-	Apr	22	0:00	1:00	S
    +Rule	Lebanon	1923	only	-	Sep	16	0:00	0	-
    +Rule	Lebanon	1957	1961	-	May	1	0:00	1:00	S
    +Rule	Lebanon	1957	1961	-	Oct	1	0:00	0	-
    +Rule	Lebanon	1972	only	-	Jun	22	0:00	1:00	S
    +Rule	Lebanon	1972	1977	-	Oct	1	0:00	0	-
    +Rule	Lebanon	1973	1977	-	May	1	0:00	1:00	S
    +Rule	Lebanon	1978	only	-	Apr	30	0:00	1:00	S
    +Rule	Lebanon	1978	only	-	Sep	30	0:00	0	-
    +Rule	Lebanon	1984	1987	-	May	1	0:00	1:00	S
    +Rule	Lebanon	1984	1991	-	Oct	16	0:00	0	-
    +Rule	Lebanon	1988	only	-	Jun	1	0:00	1:00	S
    +Rule	Lebanon	1989	only	-	May	10	0:00	1:00	S
    +Rule	Lebanon	1990	1992	-	May	1	0:00	1:00	S
    +Rule	Lebanon	1992	only	-	Oct	4	0:00	0	-
    +Rule	Lebanon	1993	max	-	Mar	lastSun	0:00	1:00	S
    +Rule	Lebanon	1993	1998	-	Sep	lastSun	0:00	0	-
    +Rule	Lebanon	1999	max	-	Oct	lastSun	0:00	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Beirut	2:22:00 -	LMT	1880
    +			2:00	Lebanon	EE%sT
    +
    +# Malaysia
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	NBorneo	1935	1941	-	Sep	14	0:00	0:20	TS # one-Third Summer
    +Rule	NBorneo	1935	1941	-	Dec	14	0:00	0	-
    +#
    +# peninsular Malaysia
    +# The data here are taken from Mok Ly Yng (2003-10-30)
    +# .
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Asia/Kuala_Lumpur	6:46:46 -	LMT	1901 Jan  1
    +			6:55:25	-	SMT	1905 Jun  1 # Singapore M.T.
    +			7:00	-	MALT	1933 Jan  1 # Malaya Time
    +			7:00	0:20	MALST	1936 Jan  1
    +			7:20	-	MALT	1941 Sep  1
    +			7:30	-	MALT	1942 Feb 16
    +			9:00	-	JST	1945 Sep 12
    +			7:30	-	MALT	1982 Jan  1
    +			8:00	-	MYT	# Malaysia Time
    +# Sabah & Sarawak
    +# From Paul Eggert (2006-03-22):
    +# The data here are mostly from Shanks & Pottenger, but the 1942, 1945 and 1982
    +# transition dates are from Mok Ly Yng.
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Asia/Kuching	7:21:20	-	LMT	1926 Mar
    +			7:30	-	BORT	1933	# Borneo Time
    +			8:00	NBorneo	BOR%sT	1942 Feb 16
    +			9:00	-	JST	1945 Sep 12
    +			8:00	-	BORT	1982 Jan  1
    +			8:00	-	MYT
    +
    +# Maldives
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Indian/Maldives	4:54:00 -	LMT	1880	# Male
    +			4:54:00	-	MMT	1960	# Male Mean Time
    +			5:00	-	MVT		# Maldives Time
    +
    +# Mongolia
    +
    +# Shanks & Pottenger say that Mongolia has three time zones, but
    +# usno1995 and the CIA map Standard Time Zones of the World (2005-03)
    +# both say that it has just one.
    +
    +# From Oscar van Vlijmen (1999-12-11):
    +# 
    +# General Information Mongolia
    +#  (1999-09)
    +# "Time: Mongolia has two time zones. Three westernmost provinces of
    +# Bayan-Ulgii, Uvs, and Hovd are one hour earlier than the capital city, and
    +# the rest of the country follows the Ulaanbaatar time, which is UTC/GMT plus
    +# eight hours."
    +
    +# From Rives McDow (1999-12-13):
    +# Mongolia discontinued the use of daylight savings time in 1999; 1998
    +# being the last year it was implemented.  The dates of implementation I am
    +# unsure of, but most probably it was similar to Russia, except for the time
    +# of implementation may have been different....
    +# Some maps in the past have indicated that there was an additional time
    +# zone in the eastern part of Mongolia, including the provinces of Dornod,
    +# Suhbaatar, and possibly Khentij.
    +
    +# From Paul Eggert (1999-12-15):
    +# Naming and spelling is tricky in Mongolia.
    +# We'll use Hovd (also spelled Chovd and Khovd) to represent the west zone;
    +# the capital of the Hovd province is sometimes called Hovd, sometimes Dund-Us,
    +# and sometimes Jirgalanta (with variant spellings), but the name Hovd
    +# is good enough for our purposes.
    +
    +# From Rives McDow (2001-05-13):
    +# In addition to Mongolia starting daylight savings as reported earlier
    +# (adopted DST on 2001-04-27 02:00 local time, ending 2001-09-28),
    +# there are three time zones.
    +#
    +# Provinces [at 7:00]: Bayan-ulgii, Uvs, Khovd, Zavkhan, Govi-Altai
    +# Provinces [at 8:00]: Khovsgol, Bulgan, Arkhangai, Khentii, Tov,
    +#	Bayankhongor, Ovorkhangai, Dundgovi, Dornogovi, Omnogovi
    +# Provinces [at 9:00]: Dornod, Sukhbaatar
    +#
    +# [The province of Selenge is omitted from the above lists.]
    +
    +# From Ganbold Ts., Ulaanbaatar (2004-04-17):
    +# Daylight saving occurs at 02:00 local time last Saturday of March.
    +# It will change back to normal at 02:00 local time last Saturday of
    +# September.... As I remember this rule was changed in 2001.
    +#
    +# From Paul Eggert (2004-04-17):
    +# For now, assume Rives McDow's informant got confused about Friday vs
    +# Saturday, and that his 2001 dates should have 1 added to them.
    +
    +# From Paul Eggert (2005-07-26):
    +# We have wildly conflicting information about Mongolia's time zones.
    +# Bill Bonnet (2005-05-19) reports that the US Embassy in Ulaanbaatar says
    +# there is only one time zone and that DST is observed, citing Microsoft
    +# Windows XP as the source.  Risto Nykanen (2005-05-16) reports that
    +# travelmongolia.org says there are two time zones (UTC+7, UTC+8) with no DST.
    +# Oscar van Vlijmen (2005-05-20) reports that the Mongolian Embassy in
    +# Washington, DC says there are two time zones, with DST observed.
    +# He also found
    +# 
    +# which also says that there is DST, and which has a comment by "Toddius"
    +# (2005-03-31 06:05 +0700) saying "Mongolia actually has 3.5 time zones.
    +# The West (OLGII) is +7 GMT, most of the country is ULAT is +8 GMT
    +# and some Eastern provinces are +9 GMT but Sukhbaatar Aimag is SUHK +8.5 GMT.
    +# The SUKH timezone is new this year, it is one of the few things the
    +# parliament passed during the tumultuous winter session."
    +# For now, let's ignore this information, until we have more confirmation.
    +
    +# From Ganbold Ts. (2007-02-26):
    +# Parliament of Mongolia has just changed the daylight-saving rule in February.
    +# They decided not to adopt daylight-saving time....
    +# http://www.mongolnews.mn/index.php?module=unuudur&sec=view&id=15742
    +
    +# From Deborah Goldsmith (2008-03-30):
    +# We received a bug report claiming that the tz database UTC offset for
    +# Asia/Choibalsan (GMT+09:00) is incorrect, and that it should be GMT
    +# +08:00 instead. Different sources appear to disagree with the tz
    +# database on this, e.g.:
    +#
    +# 
    +# http://www.timeanddate.com/worldclock/city.html?n=1026
    +# 
    +# 
    +# http://www.worldtimeserver.com/current_time_in_MN.aspx
    +# 
    +#
    +# both say GMT+08:00.
    +
    +# From Steffen Thorsen (2008-03-31):
    +# eznis airways, which operates several domestic flights, has a flight
    +# schedule here:
    +# 
    +# http://www.eznis.com/Container.jsp?id=112
    +# 
    +# (click the English flag for English)
    +#
    +# There it appears that flights between Choibalsan and Ulaanbatar arrive
    +# about 1:35 - 1:50 hours later in local clock time, no matter the
    +# direction, while Ulaanbaatar-Khvod takes 2 hours in the Eastern
    +# direction and 3:35 back, which indicates that Ulaanbatar and Khvod are
    +# in different time zones (like we know about), while Choibalsan and
    +# Ulaanbatar are in the same time zone (correction needed).
    +
    +# From Arthur David Olson (2008-05-19):
    +# Assume that Choibalsan is indeed offset by 8:00.
    +# XXX--in the absence of better information, assume that transition
    +# was at the start of 2008-03-31 (the day of Steffen Thorsen's report);
    +# this is almost surely wrong.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Mongol	1983	1984	-	Apr	1	0:00	1:00	S
    +Rule	Mongol	1983	only	-	Oct	1	0:00	0	-
    +# Shanks & Pottenger and IATA SSIM say 1990s switches occurred at 00:00,
    +# but McDow says the 2001 switches occurred at 02:00.  Also, IATA SSIM
    +# (1996-09) says 1996-10-25.  Go with Shanks & Pottenger through 1998.
    +#
    +# Shanks & Pottenger say that the Sept. 1984 through Sept. 1990 switches
    +# in Choibalsan (more precisely, in Dornod and Sukhbaatar) took place
    +# at 02:00 standard time, not at 00:00 local time as in the rest of
    +# the country.  That would be odd, and possibly is a result of their
    +# correction of 02:00 (in the previous edition) not being done correctly
    +# in the latest edition; so ignore it for now.
    +
    +Rule	Mongol	1985	1998	-	Mar	lastSun	0:00	1:00	S
    +Rule	Mongol	1984	1998	-	Sep	lastSun	0:00	0	-
    +# IATA SSIM (1999-09) says Mongolia no longer observes DST.
    +Rule	Mongol	2001	only	-	Apr	lastSat	2:00	1:00	S
    +Rule	Mongol	2001	2006	-	Sep	lastSat	2:00	0	-
    +Rule	Mongol	2002	2006	-	Mar	lastSat	2:00	1:00	S
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +# Hovd, a.k.a. Chovd, Dund-Us, Dzhargalant, Khovd, Jirgalanta
    +Zone	Asia/Hovd	6:06:36 -	LMT	1905 Aug
    +			6:00	-	HOVT	1978	# Hovd Time
    +			7:00	Mongol	HOV%sT
    +# Ulaanbaatar, a.k.a. Ulan Bataar, Ulan Bator, Urga
    +Zone	Asia/Ulaanbaatar 7:07:32 -	LMT	1905 Aug
    +			7:00	-	ULAT	1978	# Ulaanbaatar Time
    +			8:00	Mongol	ULA%sT
    +# Choibalsan, a.k.a. Bajan Tuemen, Bajan Tumen, Chojbalsan,
    +# Choybalsan, Sanbejse, Tchoibalsan
    +Zone	Asia/Choibalsan	7:38:00 -	LMT	1905 Aug
    +			7:00	-	ULAT	1978
    +			8:00	-	ULAT	1983 Apr
    +			9:00	Mongol	CHO%sT	2008 Mar 31 # Choibalsan Time
    +			8:00	Mongol	CHO%sT
    +
    +# Nepal
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Kathmandu	5:41:16 -	LMT	1920
    +			5:30	-	IST	1986
    +			5:45	-	NPT	# Nepal Time
    +
    +# Oman
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Muscat	3:54:20 -	LMT	1920
    +			4:00	-	GST
    +
    +# Pakistan
    +
    +# From Rives McDow (2002-03-13):
    +# I have been advised that Pakistan has decided to adopt dst on a
    +# TRIAL basis for one year, starting 00:01 local time on April 7, 2002
    +# and ending at 00:01 local time October 6, 2002.  This is what I was
    +# told, but I believe that the actual time of change may be 00:00; the
    +# 00:01 was to make it clear which day it was on.
    +
    +# From Paul Eggert (2002-03-15):
    +# Jesper Norgaard found this URL:
    +# http://www.pak.gov.pk/public/news/app/app06_dec.htm
    +# (dated 2001-12-06) which says that the Cabinet adopted a scheme "to
    +# advance the clocks by one hour on the night between the first
    +# Saturday and Sunday of April and revert to the original position on
    +# 15th October each year".  This agrees with McDow's 04-07 at 00:00,
    +# but disagrees about the October transition, and makes it sound like
    +# it's not on a trial basis.  Also, the "between the first Saturday
    +# and Sunday of April" phrase, if taken literally, means that the
    +# transition takes place at 00:00 on the first Sunday on or after 04-02.
    +
    +# From Paul Eggert (2003-02-09):
    +# DAWN  reported on 2002-10-05
    +# that 2002 DST ended that day at midnight.  Go with McDow for now.
    +
    +# From Steffen Thorsen (2003-03-14):
    +# According to http://www.dawn.com/2003/03/07/top15.htm
    +# there will be no DST in Pakistan this year:
    +#
    +# ISLAMABAD, March 6: Information and Media Development Minister Sheikh
    +# Rashid Ahmed on Thursday said the cabinet had reversed a previous
    +# decision to advance clocks by one hour in summer and put them back by
    +# one hour in winter with the aim of saving light hours and energy.
    +#
    +# The minister told a news conference that the experiment had rather
    +# shown 8 per cent higher consumption of electricity.
    +
    +# From Alex Krivenyshev (2008-05-15):
    +#
    +# Here is an article that Pakistan plan to introduce Daylight Saving Time
    +# on June 1, 2008 for 3 months.
    +#
    +# "... The federal cabinet on Wednesday announced a new conservation plan to help
    +# reduce load shedding by approving the closure of commercial centres at 9pm and
    +# moving clocks forward by one hour for the next three months.
    +# ...."
    +#
    +# 
    +# http://www.worldtimezone.net/dst_news/dst_news_pakistan01.html
    +# 
    +# OR
    +# 
    +# http://www.dailytimes.com.pk/default.asp?page=2008%5C05%5C15%5Cstory_15-5-2008_pg1_4
    +# 
    +
    +# From Arthur David Olson (2008-05-19):
    +# XXX--midnight transitions is a guess; 2008 only is a guess.
    +
    +# From Alexander Krivenyshev (2008-08-28):
    +# Pakistan government has decided to keep the watches one-hour advanced
    +# for another 2 months--plan to return to Standard Time on October 31
    +# instead of August 31.
    +#
    +# 
    +# http://www.worldtimezone.com/dst_news/dst_news_pakistan02.html
    +# 
    +# OR
    +# 
    +# http://dailymailnews.com/200808/28/news/dmbrn03.html
    +# 
    +
    +# From Alexander Krivenyshev (2009-04-08):
    +# Based on previous media reports that "... proposed plan to
    +# advance clocks by one hour from May 1 will cause disturbance
    +# to the working schedules rather than bringing discipline in
    +# official working."
    +# 
    +# http://www.thenews.com.pk/daily_detail.asp?id=171280
    +# 
    +#
    +# recent news that instead of May 2009 - Pakistan plan to
    +# introduce DST from April 15, 2009
    +#
    +# FYI: Associated Press Of Pakistan
    +# April 08, 2009
    +# Cabinet okays proposal to advance clocks by one hour from April 15
    +# 
    +# http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=73043&Itemid=1
    +# 
    +#
    +# or
    +#
    +# 
    +# http://www.worldtimezone.com/dst_news/dst_news_pakistan05.html
    +# 
    +#
    +# ....
    +# The Federal Cabinet on Wednesday approved the proposal to
    +# advance clocks in the country by one hour from April 15 to
    +# conserve energy"
    +
    +# From Steffen Thorsen (2009-09-17):
    +# "The News International," Pakistan reports that: "The Federal
    +# Government has decided to restore the previous time by moving the
    +# clocks backward by one hour from October 1. A formal announcement to
    +# this effect will be made after the Prime Minister grants approval in
    +# this regard."
    +# 
    +# http://www.thenews.com.pk/updates.asp?id=87168
    +# 
    +
    +# From Alexander Krivenyshev (2009-09-28):
    +# According to Associated Press Of Pakistan, it is confirmed that
    +# Pakistan clocks across the country would be turned back by an hour from October
    +# 1, 2009.
    +#
    +# "Clocks to go back one hour from 1 Oct"
    +# 
    +# http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=86715&Itemid=2
    +# 
    +# or
    +# 
    +# http://www.worldtimezone.com/dst_news/dst_news_pakistan07.htm
    +# 
    +
    +# From Steffen Thorsen (2009-09-29):
    +# Alexander Krivenyshev wrote:
    +# > According to Associated Press Of Pakistan, it is confirmed that
    +# > Pakistan clocks across the country would be turned back by an hour from October
    +# > 1, 2009.
    +#
    +# Now they seem to have changed their mind, November 1 is the new date:
    +# 
    +# http://www.thenews.com.pk/top_story_detail.asp?Id=24742
    +# 
    +# "The country's clocks will be reversed by one hour on November 1.
    +# Officials of Federal Ministry for Interior told this to Geo News on
    +# Monday."
    +#
    +# And more importantly, it seems that these dates will be kept every year:
    +# "It has now been decided that clocks will be wound forward by one hour
    +# on April 15 and reversed by an hour on November 1 every year without
    +# obtaining prior approval, the officials added."
    +#
    +# We have confirmed this year's end date with both with the Ministry of
    +# Water and Power and the Pakistan Electric Power Company:
    +# 
    +# http://www.timeanddate.com/news/time/pakistan-ends-dst09.html
    +# 
    +
    +# From Christoph Goehre (2009-10-01):
    +# [T]he German Consulate General in Karachi reported me today that Pakistan
    +# will go back to standard time on 1st of November.
    +
    +# From Steffen Thorsen (2010-03-26):
    +# Steffen Thorsen wrote:
    +# > On Thursday (2010-03-25) it was announced that DST would start in
    +# > Pakistan on 2010-04-01.
    +# >
    +# > Then today, the president said that they might have to revert the
    +# > decision if it is not supported by the parliament. So at the time
    +# > being, it seems unclear if DST will be actually observed or not - but
    +# > April 1 could be a more likely date than April 15.
    +# Now, it seems that the decision to not observe DST in final:
    +#
    +# "Govt Withdraws Plan To Advance Clocks"
    +# 
    +# http://www.apakistannews.com/govt-withdraws-plan-to-advance-clocks-172041
    +# 
    +#
    +# "People laud PM's announcement to end DST"
    +# 
    +# http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=99374&Itemid=2
    +# 
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule Pakistan	2002	only	-	Apr	Sun>=2	0:01	1:00	S
    +Rule Pakistan	2002	only	-	Oct	Sun>=2	0:01	0	-
    +Rule Pakistan	2008	only	-	Jun	1	0:00	1:00	S
    +Rule Pakistan	2008	only	-	Nov	1	0:00	0	-
    +Rule Pakistan	2009	only	-	Apr	15	0:00	1:00	S
    +Rule Pakistan	2009	only	-	Nov	1	0:00	0	-
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Karachi	4:28:12 -	LMT	1907
    +			5:30	-	IST	1942 Sep
    +			5:30	1:00	IST	1945 Oct 15
    +			5:30	-	IST	1951 Sep 30
    +			5:00	-	KART	1971 Mar 26 # Karachi Time
    +			5:00 Pakistan	PK%sT	# Pakistan Time
    +
    +# Palestine
    +
    +# From Amos Shapir (1998-02-15):
    +#
    +# From 1917 until 1948-05-15, all of Palestine, including the parts now
    +# known as the Gaza Strip and the West Bank, was under British rule.
    +# Therefore the rules given for Israel for that period, apply there too...
    +#
    +# The Gaza Strip was under Egyptian rule between 1948-05-15 until 1967-06-05
    +# (except a short occupation by Israel from 1956-11 till 1957-03, but no
    +# time zone was affected then).  It was never formally annexed to Egypt,
    +# though.
    +#
    +# The rest of Palestine was under Jordanian rule at that time, formally
    +# annexed in 1950 as the West Bank (and the word "Trans" was dropped from
    +# the country's previous name of "the Hashemite Kingdom of the
    +# Trans-Jordan").  So the rules for Jordan for that time apply.  Major
    +# towns in that area are Nablus (Shchem), El-Halil (Hebron), Ramallah, and
    +# East Jerusalem.
    +#
    +# Both areas were occupied by Israel in June 1967, but not annexed (except
    +# for East Jerusalem).  They were on Israel time since then; there might
    +# have been a Military Governor's order about time zones, but I'm not aware
    +# of any (such orders may have been issued semi-annually whenever summer
    +# time was in effect, but maybe the legal aspect of time was just neglected).
    +#
    +# The Palestinian Authority was established in 1993, and got hold of most
    +# towns in the West Bank and Gaza by 1995.  I know that in order to
    +# demonstrate...independence, they have been switching to
    +# summer time and back on a different schedule than Israel's, but I don't
    +# know when this was started, or what algorithm is used (most likely the
    +# Jordanian one).
    +#
    +# To summarize, the table should probably look something like that:
    +#
    +# Area \ when | 1918-1947 | 1948-1967 | 1967-1995 | 1996-
    +# ------------+-----------+-----------+-----------+-----------
    +# Israel      | Zion      | Zion      | Zion      | Zion
    +# West bank   | Zion      | Jordan    | Zion      | Jordan
    +# Gaza        | Zion      | Egypt     | Zion      | Jordan
    +#
    +# I guess more info may be available from the PA's web page (if/when they
    +# have one).
    +
    +# From Paul Eggert (2006-03-22):
    +# Shanks & Pottenger write that Gaza did not observe DST until 1957, but go
    +# with Shapir and assume that it observed DST from 1940 through 1947,
    +# and that it used Jordanian rules starting in 1996.
    +# We don't yet need a separate entry for the West Bank, since
    +# the only differences between it and Gaza that we know about
    +# occurred before our cutoff date of 1970.
    +# However, as we get more information, we may need to add entries
    +# for parts of the West Bank as they transitioned from Israel's rules
    +# to Palestine's rules.
    +
    +# From IINS News Service - Israel - 1998-03-23 10:38:07 Israel time,
    +# forwarded by Ephraim Silverberg:
    +#
    +# Despite the fact that Israel changed over to daylight savings time
    +# last week, the PLO Authority (PA) has decided not to turn its clocks
    +# one-hour forward at this time.  As a sign of independence from Israeli rule,
    +# the PA has decided to implement DST in April.
    +
    +# From Paul Eggert (1999-09-20):
    +# Daoud Kuttab writes in
    +# 
    +# Holiday havoc
    +#  (Jerusalem Post, 1999-04-22) that
    +# the Palestinian National Authority changed to DST on 1999-04-15.
    +# I vaguely recall that they switch back in October (sorry, forgot the source).
    +# For now, let's assume that the spring switch was at 24:00,
    +# and that they switch at 0:00 on the 3rd Fridays of April and October.
    +
    +# From Paul Eggert (2005-11-22):
    +# Starting 2004 transitions are from Steffen Thorsen's web site timeanddate.com.
    +
    +# From Steffen Thorsen (2005-11-23):
    +# A user from Gaza reported that Gaza made the change early because of
    +# the Ramadan.  Next year Ramadan will be even earlier, so I think
    +# there is a good chance next year's end date will be around two weeks
    +# earlier--the same goes for Jordan.
    +
    +# From Steffen Thorsen (2006-08-17):
    +# I was informed by a user in Bethlehem that in Bethlehem it started the
    +# same day as Israel, and after checking with other users in the area, I
    +# was informed that they started DST one day after Israel.  I was not
    +# able to find any authoritative sources at the time, nor details if
    +# Gaza changed as well, but presumed Gaza to follow the same rules as
    +# the West Bank.
    +
    +# From Steffen Thorsen (2006-09-26):
    +# according to the Palestine News Network (2006-09-19):
    +# http://english.pnn.ps/index.php?option=com_content&task=view&id=596&Itemid=5
    +# > The Council of Ministers announced that this year its winter schedule
    +# > will begin early, as of midnight Thursday.  It is also time to turn
    +# > back the clocks for winter.  Friday will begin an hour late this week.
    +# I guess it is likely that next year's date will be moved as well,
    +# because of the Ramadan.
    +
    +# From Jesper Norgaard Welen (2007-09-18):
    +# According to Steffen Thorsen's web site the Gaza Strip and the rest of the
    +# Palestinian territories left DST early on 13.th. of September at 2:00.
    +
    +# From Paul Eggert (2007-09-20):
    +# My understanding is that Gaza and the West Bank disagree even over when
    +# the weekend is (Thursday+Friday versus Friday+Saturday), so I'd be a bit
    +# surprised if they agreed about DST.  But for now, assume they agree.
    +# For lack of better information, predict that future changes will be
    +# the 2nd Thursday of September at 02:00.
    +
    +# From Alexander Krivenyshev (2008-08-28):
    +# Here is an article, that Mideast running on different clocks at Ramadan.
    +#
    +# Gaza Strip (as Egypt) ended DST at midnight Thursday (Aug 28, 2008), while
    +# the West Bank will end Daylight Saving Time at midnight Sunday (Aug 31, 2008).
    +#
    +# 
    +# http://www.guardian.co.uk/world/feedarticle/7759001
    +# 
    +# 
    +# http://www.abcnews.go.com/International/wireStory?id=5676087
    +# 
    +# or
    +# 
    +# http://www.worldtimezone.com/dst_news/dst_news_gazastrip01.html
    +# 
    +
    +# From Alexander Krivenyshev (2009-03-26):
    +# According to the Palestine News Network (arabic.pnn.ps), Palestinian
    +# government decided to start Daylight Time on Thursday night March
    +# 26 and continue until the night of 27 September 2009.
    +#
    +# (in Arabic)
    +# 
    +# http://arabic.pnn.ps/index.php?option=com_content&task=view&id=50850
    +# 
    +#
    +# or
    +# (English translation)
    +# 
    +# http://www.worldtimezone.com/dst_news/dst_news_westbank01.html
    +# 
    +
    +# From Steffen Thorsen (2009-08-31):
    +# Palestine's Council of Ministers announced that they will revert back to
    +# winter time on Friday, 2009-09-04.
    +#
    +# One news source:
    +# 
    +# http://www.safa.ps/ara/?action=showdetail&seid=4158
    +# 
    +# (Palestinian press agency, Arabic),
    +# Google translate: "Decided that the Palestinian government in Ramallah
    +# headed by Salam Fayyad, the start of work in time for the winter of
    +# 2009, starting on Friday approved the fourth delay Sept. clock sixty
    +# minutes per hour as of Friday morning."
    +#
    +# We are not sure if Gaza will do the same, last year they had a different
    +# end date, we will keep this page updated:
    +# 
    +# http://www.timeanddate.com/news/time/westbank-gaza-dst-2009.html
    +# 
    +
    +# From Alexander Krivenyshev (2009-09-02):
    +# Seems that Gaza Strip will go back to Winter Time same date as West Bank.
    +#
    +# According to Palestinian Ministry Of Interior, West Bank and Gaza Strip plan
    +# to change time back to Standard time on September 4, 2009.
    +#
    +# "Winter time unite the West Bank and Gaza"
    +# (from Palestinian National Authority):
    +# 
    +# http://www.worldtimezone.com/dst_news/dst_news_gazastrip02.html
    +# 
    +
    +# From Alexander Krivenyshev (2010-03-19):
    +# According to Voice of Palestine DST will last for 191 days, from March
    +# 26, 2010 till "the last Sunday before the tenth day of Tishri
    +# (October), each year" (October 03, 2010?)
    +#
    +# 
    +# http://palvoice.org/forums/showthread.php?t=245697
    +# 
    +# (in Arabic)
    +# or
    +# 
    +# http://www.worldtimezone.com/dst_news/dst_news_westbank03.html
    +# 
    +
    +# From Steffen Thorsen (2010-03-24):
    +# ...Ma'an News Agency reports that Hamas cabinet has decided it will
    +# start one day later, at 12:01am. Not sure if they really mean 12:01am or
    +# noon though:
    +#
    +# 
    +# http://www.maannews.net/eng/ViewDetails.aspx?ID=271178
    +# 
    +# (Ma'an News Agency)
    +# "At 12:01am Friday, clocks in Israel and the West Bank will change to
    +# 1:01am, while Gaza clocks will change at 12:01am Saturday morning."
    +
    +# From Steffen Thorsen (2010-08-11):
    +# According to several sources, including
    +# 
    +# http://www.maannews.net/eng/ViewDetails.aspx?ID=306795
    +# 
    +# the clocks were set back one hour at 2010-08-11 00:00:00 local time in
    +# Gaza and the West Bank.
    +# Some more background info:
    +# 
    +# http://www.timeanddate.com/news/time/westbank-gaza-end-dst-2010.html
    +# 
    +
    +# From Steffen Thorsen (2011-08-26):
    +# Gaza and the West Bank did go back to standard time in the beginning of
    +# August, and will now enter daylight saving time again on 2011-08-30
    +# 00:00 (so two periods of DST in 2011). The pause was because of
    +# Ramadan.
    +#
    +# 
    +# http://www.maannews.net/eng/ViewDetails.aspx?ID=416217
    +# 
    +# Additional info:
    +# 
    +# http://www.timeanddate.com/news/time/palestine-dst-2011.html
    +# 
    +
    +# From Alexander Krivenyshev (2011-08-27):
    +# According to the article in The Jerusalem Post:
    +# "...Earlier this month, the Palestinian government in the West Bank decided to
    +# move to standard time for 30 days, during Ramadan. The Palestinians in the
    +# Gaza Strip accepted the change and also moved their clocks one hour back.
    +# The Hamas government said on Saturday that it won't observe summertime after
    +# the Muslim feast of Id al-Fitr, which begins on Tuesday..."
    +# ...
    +# 
    +# http://www.jpost.com/MiddleEast/Article.aspx?id=235650
    +# 
    +# or
    +# 
    +# http://www.worldtimezone.com/dst_news/dst_news_gazastrip05.html
    +# 
    +# The rules for Egypt are stolen from the `africa' file.
    +
    +# From Steffen Thorsen (2011-09-30):
    +# West Bank did end Daylight Saving Time this morning/midnight (2011-09-30
    +# 00:00).
    +# So West Bank and Gaza now have the same time again.
    +#
    +# Many sources, including:
    +# 
    +# http://www.maannews.net/eng/ViewDetails.aspx?ID=424808
    +# 
    +
    +# From Steffen Thorsen (2012-03-26):
    +# Palestinian news sources tell that both Gaza and West Bank will start DST
    +# on Friday (Thursday midnight, 2012-03-29 24:00).
    +# Some of many sources in Arabic:
    +# 
    +# http://www.samanews.com/index.php?act=Show&id=122638
    +# 
    +#
    +# 
    +# http://safa.ps/details/news/74352/%D8%A8%D8%AF%D8%A1-%D8%A7%D9%84%D8%AA%D9%88%D9%82%D9%8A%D8%AA-%D8%A7%D9%84%D8%B5%D9%8A%D9%81%D9%8A-%D8%A8%D8%A7%D9%84%D8%B6%D9%81%D8%A9-%D9%88%D8%BA%D8%B2%D8%A9-%D9%84%D9%8A%D9%84%D8%A9-%D8%A7%D9%84%D8%AC%D9%85%D8%B9%D8%A9.html
    +# 
    +#
    +# Our brief summary:
    +# 
    +# http://www.timeanddate.com/news/time/gaza-west-bank-dst-2012.html
    +# 
    +
    +# From Arthur David Olson (2012-03-27):
    +# The timeanddate article for 2012 says that "the end date has not yet been
    +# announced" and that "Last year, both...paused daylight saving time during...
    +# Ramadan. It is not yet known [for] 2012."
    +# For now, assume both switch back on the last Friday in September. XXX
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule EgyptAsia	1957	only	-	May	10	0:00	1:00	S
    +Rule EgyptAsia	1957	1958	-	Oct	 1	0:00	0	-
    +Rule EgyptAsia	1958	only	-	May	 1	0:00	1:00	S
    +Rule EgyptAsia	1959	1967	-	May	 1	1:00	1:00	S
    +Rule EgyptAsia	1959	1965	-	Sep	30	3:00	0	-
    +Rule EgyptAsia	1966	only	-	Oct	 1	3:00	0	-
    +
    +Rule Palestine	1999	2005	-	Apr	Fri>=15	0:00	1:00	S
    +Rule Palestine	1999	2003	-	Oct	Fri>=15	0:00	0	-
    +Rule Palestine	2004	only	-	Oct	 1	1:00	0	-
    +Rule Palestine	2005	only	-	Oct	 4	2:00	0	-
    +Rule Palestine	2006	2008	-	Apr	 1	0:00	1:00	S
    +Rule Palestine	2006	only	-	Sep	22	0:00	0	-
    +Rule Palestine	2007	only	-	Sep	Thu>=8	2:00	0	-
    +Rule Palestine	2008	only	-	Aug	lastFri	0:00	0	-
    +Rule Palestine	2009	only	-	Mar	lastFri	0:00	1:00	S
    +Rule Palestine	2009	only	-	Sep	Fri>=1	2:00	0	-
    +Rule Palestine	2010	only	-	Mar	lastSat	0:01	1:00	S
    +Rule Palestine	2010	only	-	Aug	11	0:00	0	-
    +
    +# From Arthur David Olson (2011-09-20):
    +# 2011 transitions per http://www.timeanddate.com as of 2011-09-20.
    +# From Paul Eggert (2012-10-12):
    +# 2012 transitions per http://www.timeanddate.com as of 2012-10-12.
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Gaza	2:17:52	-	LMT	1900 Oct
    +			2:00	Zion	EET	1948 May 15
    +			2:00 EgyptAsia	EE%sT	1967 Jun  5
    +			2:00	Zion	I%sT	1996
    +			2:00	Jordan	EE%sT	1999
    +			2:00 Palestine	EE%sT	2011 Apr  2 12:01
    +			2:00	1:00	EEST	2011 Aug  1
    +			2:00	-	EET	2012 Mar 30
    +			2:00	1:00	EEST	2012 Sep 21 1:00
    +			2:00	-	EET
    +
    +Zone	Asia/Hebron	2:20:23	-	LMT	1900 Oct
    +			2:00	Zion	EET	1948 May 15
    +			2:00 EgyptAsia	EE%sT	1967 Jun  5
    +			2:00	Zion	I%sT	1996
    +			2:00	Jordan	EE%sT	1999
    +			2:00 Palestine	EE%sT	2008 Aug
    +			2:00 	1:00	EEST	2008 Sep
    +			2:00 Palestine	EE%sT	2011 Apr  1 12:01
    +			2:00	1:00	EEST	2011 Aug  1
    +			2:00	-	EET	2011 Aug 30
    +			2:00	1:00	EEST	2011 Sep 30 3:00
    +			2:00	-	EET	2012 Mar 30
    +			2:00	1:00	EEST	2012 Sep 21 1:00
    +			2:00	-	EET
    +
    +# Paracel Is
    +# no information
    +
    +# Philippines
    +# On 1844-08-16, Narciso Claveria, governor-general of the
    +# Philippines, issued a proclamation announcing that 1844-12-30 was to
    +# be immediately followed by 1845-01-01.  Robert H. van Gent has a
    +# transcript of the decree in .
    +# The rest of the data are from Shanks & Pottenger.
    +
    +# From Paul Eggert (2006-04-25):
    +# Tomorrow's Manila Standard reports that the Philippines Department of
    +# Trade and Industry is considering adopting DST this June when the
    +# rainy season begins.  See
    +# .
    +# For now, we'll ignore this, since it's not definite and we lack details.
    +#
    +# From Jesper Norgaard Welen (2006-04-26):
    +# ... claims that Philippines had DST last time in 1990:
    +# http://story.philippinetimes.com/p.x/ct/9/id/145be20cc6b121c0/cid/3e5bbccc730d258c/
    +# [a story dated 2006-04-25 by Cris Larano of Dow Jones Newswires,
    +# but no details]
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Phil	1936	only	-	Nov	1	0:00	1:00	S
    +Rule	Phil	1937	only	-	Feb	1	0:00	0	-
    +Rule	Phil	1954	only	-	Apr	12	0:00	1:00	S
    +Rule	Phil	1954	only	-	Jul	1	0:00	0	-
    +Rule	Phil	1978	only	-	Mar	22	0:00	1:00	S
    +Rule	Phil	1978	only	-	Sep	21	0:00	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Manila	-15:56:00 -	LMT	1844 Dec 31
    +			8:04:00 -	LMT	1899 May 11
    +			8:00	Phil	PH%sT	1942 May
    +			9:00	-	JST	1944 Nov
    +			8:00	Phil	PH%sT
    +
    +# Qatar
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Qatar	3:26:08 -	LMT	1920	# Al Dawhah / Doha
    +			4:00	-	GST	1972 Jun
    +			3:00	-	AST
    +
    +# Saudi Arabia
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Riyadh	3:06:52 -	LMT	1950
    +			3:00	-	AST
    +
    +# Singapore
    +# The data here are taken from Mok Ly Yng (2003-10-30)
    +# .
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Singapore	6:55:25 -	LMT	1901 Jan  1
    +			6:55:25	-	SMT	1905 Jun  1 # Singapore M.T.
    +			7:00	-	MALT	1933 Jan  1 # Malaya Time
    +			7:00	0:20	MALST	1936 Jan  1
    +			7:20	-	MALT	1941 Sep  1
    +			7:30	-	MALT	1942 Feb 16
    +			9:00	-	JST	1945 Sep 12
    +			7:30	-	MALT	1965 Aug  9 # independence
    +			7:30	-	SGT	1982 Jan  1 # Singapore Time
    +			8:00	-	SGT
    +
    +# Spratly Is
    +# no information
    +
    +# Sri Lanka
    +# From Paul Eggert (1996-09-03):
    +# "Sri Lanka advances clock by an hour to avoid blackout"
    +# (www.virtual-pc.com/lankaweb/news/items/240596-2.html, 1996-05-24,
    +# no longer available as of 1999-08-17)
    +# reported ``the country's standard time will be put forward by one hour at
    +# midnight Friday (1830 GMT) `in the light of the present power crisis'.''
    +#
    +# From Dharmasiri Senanayake, Sri Lanka Media Minister (1996-10-24), as quoted
    +# by Shamindra in
    +# 
    +# Daily News - Hot News Section (1996-10-26)
    +# :
    +# With effect from 12.30 a.m. on 26th October 1996
    +# Sri Lanka will be six (06) hours ahead of GMT.
    +
    +# From Jesper Norgaard Welen (2006-04-14), quoting Sri Lanka News Online
    +#  (2006-04-13):
    +# 0030 hrs on April 15, 2006 (midnight of April 14, 2006 +30 minutes)
    +# at present, become 2400 hours of April 14, 2006 (midnight of April 14, 2006).
    +
    +# From Peter Apps and Ranga Sirila of Reuters (2006-04-12) in:
    +# 
    +# [The Tamil Tigers] never accepted the original 1996 time change and simply
    +# kept their clocks set five and a half hours ahead of Greenwich Mean
    +# Time (GMT), in line with neighbor India.
    +# From Paul Eggert (2006-04-18):
    +# People who live in regions under Tamil control can use [TZ='Asia/Kolkata'],
    +# as that zone has agreed with the Tamil areas since our cutoff date of 1970.
    +
    +# From K Sethu (2006-04-25):
    +# I think the abbreviation LKT originated from the world of computers at
    +# the time of or subsequent to the time zone changes by SL Government
    +# twice in 1996 and probably SL Government or its standardization
    +# agencies never declared an abbreviation as a national standard.
    +#
    +# I recollect before the recent change the government annoucemments
    +# mentioning it as simply changing Sri Lanka Standard Time or Sri Lanka
    +# Time and no mention was made about the abbreviation.
    +#
    +# If we look at Sri Lanka Department of Government's "Official News
    +# Website of Sri Lanka" ... http://www.news.lk/ we can see that they
    +# use SLT as abbreviation in time stamp at the beginning of each news
    +# item....
    +#
    +# Within Sri Lanka I think LKT is well known among computer users and
    +# adminsitrators.  In my opinion SLT may not be a good choice because the
    +# nation's largest telcom / internet operator Sri Lanka Telcom is well
    +# known by that abbreviation - simply as SLT (there IP domains are
    +# slt.lk and sltnet.lk).
    +#
    +# But if indeed our government has adopted SLT as standard abbreviation
    +# (that we have not known so far) then  it is better that it be used for
    +# all computers.
    +
    +# From Paul Eggert (2006-04-25):
    +# One possibility is that we wait for a bit for the dust to settle down
    +# and then see what people actually say in practice.
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Colombo	5:19:24 -	LMT	1880
    +			5:19:32	-	MMT	1906	# Moratuwa Mean Time
    +			5:30	-	IST	1942 Jan  5
    +			5:30	0:30	IHST	1942 Sep
    +			5:30	1:00	IST	1945 Oct 16 2:00
    +			5:30	-	IST	1996 May 25 0:00
    +			6:30	-	LKT	1996 Oct 26 0:30
    +			6:00	-	LKT	2006 Apr 15 0:30
    +			5:30	-	IST
    +
    +# Syria
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Syria	1920	1923	-	Apr	Sun>=15	2:00	1:00	S
    +Rule	Syria	1920	1923	-	Oct	Sun>=1	2:00	0	-
    +Rule	Syria	1962	only	-	Apr	29	2:00	1:00	S
    +Rule	Syria	1962	only	-	Oct	1	2:00	0	-
    +Rule	Syria	1963	1965	-	May	1	2:00	1:00	S
    +Rule	Syria	1963	only	-	Sep	30	2:00	0	-
    +Rule	Syria	1964	only	-	Oct	1	2:00	0	-
    +Rule	Syria	1965	only	-	Sep	30	2:00	0	-
    +Rule	Syria	1966	only	-	Apr	24	2:00	1:00	S
    +Rule	Syria	1966	1976	-	Oct	1	2:00	0	-
    +Rule	Syria	1967	1978	-	May	1	2:00	1:00	S
    +Rule	Syria	1977	1978	-	Sep	1	2:00	0	-
    +Rule	Syria	1983	1984	-	Apr	9	2:00	1:00	S
    +Rule	Syria	1983	1984	-	Oct	1	2:00	0	-
    +Rule	Syria	1986	only	-	Feb	16	2:00	1:00	S
    +Rule	Syria	1986	only	-	Oct	9	2:00	0	-
    +Rule	Syria	1987	only	-	Mar	1	2:00	1:00	S
    +Rule	Syria	1987	1988	-	Oct	31	2:00	0	-
    +Rule	Syria	1988	only	-	Mar	15	2:00	1:00	S
    +Rule	Syria	1989	only	-	Mar	31	2:00	1:00	S
    +Rule	Syria	1989	only	-	Oct	1	2:00	0	-
    +Rule	Syria	1990	only	-	Apr	1	2:00	1:00	S
    +Rule	Syria	1990	only	-	Sep	30	2:00	0	-
    +Rule	Syria	1991	only	-	Apr	 1	0:00	1:00	S
    +Rule	Syria	1991	1992	-	Oct	 1	0:00	0	-
    +Rule	Syria	1992	only	-	Apr	 8	0:00	1:00	S
    +Rule	Syria	1993	only	-	Mar	26	0:00	1:00	S
    +Rule	Syria	1993	only	-	Sep	25	0:00	0	-
    +# IATA SSIM (1998-02) says 1998-04-02;
    +# (1998-09) says 1999-03-29 and 1999-09-29; (1999-02) says 1999-04-02,
    +# 2000-04-02, and 2001-04-02; (1999-09) says 2000-03-31 and 2001-03-31;
    +# (2006) says 2006-03-31 and 2006-09-22;
    +# for now ignore all these claims and go with Shanks & Pottenger,
    +# except for the 2006-09-22 claim (which seems right for Ramadan).
    +Rule	Syria	1994	1996	-	Apr	 1	0:00	1:00	S
    +Rule	Syria	1994	2005	-	Oct	 1	0:00	0	-
    +Rule	Syria	1997	1998	-	Mar	lastMon	0:00	1:00	S
    +Rule	Syria	1999	2006	-	Apr	 1	0:00	1:00	S
    +# From Stephen Colebourne (2006-09-18):
    +# According to IATA data, Syria will change DST on 21st September [21:00 UTC]
    +# this year [only]....  This is probably related to Ramadan, like Egypt.
    +Rule	Syria	2006	only	-	Sep	22	0:00	0	-
    +# From Paul Eggert (2007-03-29):
    +# Today the AP reported "Syria will switch to summertime at midnight Thursday."
    +# http://www.iht.com/articles/ap/2007/03/29/africa/ME-GEN-Syria-Time-Change.php
    +Rule	Syria	2007	only	-	Mar	lastFri	0:00	1:00	S
    +# From Jesper Norgard (2007-10-27):
    +# The sister center ICARDA of my work CIMMYT is confirming that Syria DST will
    +# not take place 1.st November at 0:00 o'clock but 1.st November at 24:00 or
    +# rather Midnight between Thursday and Friday. This does make more sence than
    +# having it between Wednesday and Thursday (two workdays in Syria) since the
    +# weekend in Syria is not Saturday and Sunday, but Friday and Saturday. So now
    +# it is implemented at midnight of the last workday before weekend...
    +#
    +# From Steffen Thorsen (2007-10-27):
    +# Jesper Norgaard Welen wrote:
    +#
    +# > "Winter local time in Syria will be observed at midnight of Thursday 1
    +# > November 2007, and the clock will be put back 1 hour."
    +#
    +# I found confirmation on this in this gov.sy-article (Arabic):
    +# http://wehda.alwehda.gov.sy/_print_veiw.asp?FileName=12521710520070926111247
    +#
    +# which using Google's translate tools says:
    +# Council of Ministers also approved the commencement of work on
    +# identifying the winter time as of Friday, 2/11/2007 where the 60th
    +# minute delay at midnight Thursday 1/11/2007.
    +Rule	Syria	2007	only	-	Nov	 Fri>=1	0:00	0	-
    +
    +# From Stephen Colebourne (2008-03-17):
    +# For everyone's info, I saw an IATA time zone change for [Syria] for
    +# this month (March 2008) in the last day or so...This is the data IATA
    +# are now using:
    +# Country     Time Standard   --- DST Start ---   --- DST End ---  DST
    +# Name        Zone Variation   Time    Date        Time    Date
    +# Variation
    +# Syrian Arab
    +# Republic    SY    +0200      2200  03APR08       2100  30SEP08   +0300
    +#                              2200  02APR09       2100  30SEP09   +0300
    +#                              2200  01APR10       2100  30SEP10   +0300
    +
    +# From Arthur David Olson (2008-03-17):
    +# Here's a link to English-language coverage by the Syrian Arab News
    +# Agency (SANA)...
    +# 
    +# http://www.sana.sy/eng/21/2008/03/11/165173.htm
    +# ...which reads (in part) "The Cabinet approved the suggestion of the
    +# Ministry of Electricity to begin daylight savings time on Friday April
    +# 4th, advancing clocks one hour ahead on midnight of Thursday April 3rd."
    +# Since Syria is two hours east of UTC, the 2200 and 2100 transition times
    +# shown above match up with midnight in Syria.
    +
    +# From Arthur David Olson (2008-03-18):
    +# My buest guess at a Syrian rule is "the Friday nearest April 1";
    +# coding that involves either using a "Mar Fri>=29" construct that old time zone
    +# compilers can't handle  or having multiple Rules (a la Israel).
    +# For now, use "Apr Fri>=1", and go with IATA on a uniform Sep 30 end.
    +
    +# From Steffen Thorsen (2008-10-07):
    +# Syria has now officially decided to end DST on 2008-11-01 this year,
    +# according to the following article in the Syrian Arab News Agency (SANA).
    +#
    +# The article is in Arabic, and seems to tell that they will go back to
    +# winter time on 2008-11-01 at 00:00 local daylight time (delaying/setting
    +# clocks back 60 minutes).
    +#
    +# 
    +# http://sana.sy/ara/2/2008/10/07/195459.htm
    +# 
    +
    +# From Steffen Thorsen (2009-03-19):
    +# Syria will start DST on 2009-03-27 00:00 this year according to many sources,
    +# two examples:
    +#
    +# 
    +# http://www.sana.sy/eng/21/2009/03/17/217563.htm
    +# 
    +# (English, Syrian Arab News # Agency)
    +# 
    +# http://thawra.alwehda.gov.sy/_View_news2.asp?FileName=94459258720090318012209
    +# 
    +# (Arabic, gov-site)
    +#
    +# We have not found any sources saying anything about when DST ends this year.
    +#
    +# Our summary
    +# 
    +# http://www.timeanddate.com/news/time/syria-dst-starts-march-27-2009.html
    +# 
    +
    +# From Steffen Thorsen (2009-10-27):
    +# The Syrian Arab News Network on 2009-09-29 reported that Syria will
    +# revert back to winter (standard) time on midnight between Thursday
    +# 2009-10-29 and Friday 2009-10-30:
    +# 
    +# http://www.sana.sy/ara/2/2009/09/29/247012.htm (Arabic)
    +# 
    +
    +# From Arthur David Olson (2009-10-28):
    +# We'll see if future DST switching times turn out to be end of the last
    +# Thursday of the month or the start of the last Friday of the month or
    +# something else. For now, use the start of the last Friday.
    +
    +# From Steffen Thorsen (2010-03-17):
    +# The "Syrian News Station" reported on 2010-03-16 that the Council of
    +# Ministers has decided that Syria will start DST on midnight Thursday
    +# 2010-04-01: (midnight between Thursday and Friday):
    +# 
    +# http://sns.sy/sns/?path=news/read/11421 (Arabic)
    +# 
    +
    +# From Steffen Thorsen (2012-03-26):
    +# Today, Syria's government announced that they will start DST early on Friday
    +# (00:00). This is a bit earlier than the past two years.
    +#
    +# From Syrian Arab News Agency, in Arabic:
    +# 
    +# http://www.sana.sy/ara/2/2012/03/26/408215.htm
    +# 
    +#
    +# Our brief summary:
    +# 
    +# http://www.timeanddate.com/news/time/syria-dst-2012.html
    +# 
    +
    +# From Arthur David Olson (2012-03-27):
    +# Assume last Friday in March going forward XXX.
    +
    +Rule	Syria	2008	only	-	Apr	Fri>=1	0:00	1:00	S
    +Rule	Syria	2008	only	-	Nov	1	0:00	0	-
    +Rule	Syria	2009	only	-	Mar	lastFri	0:00	1:00	S
    +Rule	Syria	2010	2011	-	Apr	Fri>=1	0:00	1:00	S
    +Rule	Syria	2012	max	-	Mar	lastFri	0:00	1:00	S
    +Rule	Syria	2009	max	-	Oct	lastFri	0:00	0	-
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Damascus	2:25:12 -	LMT	1920	# Dimashq
    +			2:00	Syria	EE%sT
    +
    +# Tajikistan
    +# From Shanks & Pottenger.
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Dushanbe	4:35:12 -	LMT	1924 May  2
    +			5:00	-	DUST	1930 Jun 21 # Dushanbe Time
    +			6:00 RussiaAsia DUS%sT	1991 Mar 31 2:00s
    +			5:00	1:00	DUSST	1991 Sep  9 2:00s
    +			5:00	-	TJT		    # Tajikistan Time
    +
    +# Thailand
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Bangkok	6:42:04	-	LMT	1880
    +			6:42:04	-	BMT	1920 Apr # Bangkok Mean Time
    +			7:00	-	ICT
    +
    +# Turkmenistan
    +# From Shanks & Pottenger.
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Ashgabat	3:53:32 -	LMT	1924 May  2 # or Ashkhabad
    +			4:00	-	ASHT	1930 Jun 21 # Ashkhabad Time
    +			5:00 RussiaAsia	ASH%sT	1991 Mar 31 2:00
    +			4:00 RussiaAsia	ASH%sT	1991 Oct 27 # independence
    +			4:00 RussiaAsia	TM%sT	1992 Jan 19 2:00
    +			5:00	-	TMT
    +
    +# United Arab Emirates
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Dubai	3:41:12 -	LMT	1920
    +			4:00	-	GST
    +
    +# Uzbekistan
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Samarkand	4:27:12 -	LMT	1924 May  2
    +			4:00	-	SAMT	1930 Jun 21 # Samarkand Time
    +			5:00	-	SAMT	1981 Apr  1
    +			5:00	1:00	SAMST	1981 Oct  1
    +			6:00	-	TAST	1982 Apr  1 # Tashkent Time
    +			5:00 RussiaAsia	SAM%sT	1991 Sep  1 # independence
    +			5:00 RussiaAsia	UZ%sT	1992
    +			5:00	-	UZT
    +Zone	Asia/Tashkent	4:37:12 -	LMT	1924 May  2
    +			5:00	-	TAST	1930 Jun 21 # Tashkent Time
    +			6:00 RussiaAsia	TAS%sT	1991 Mar 31 2:00
    +			5:00 RussiaAsia	TAS%sT	1991 Sep  1 # independence
    +			5:00 RussiaAsia	UZ%sT	1992
    +			5:00	-	UZT
    +
    +# Vietnam
    +
    +# From Arthur David Olson (2008-03-18):
    +# The English-language name of Vietnam's most populous city is "Ho Chi Min City";
    +# we use Ho_Chi_Minh below to avoid a name of more than 14 characters.
    +
    +# From Shanks & Pottenger:
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Ho_Chi_Minh	7:06:40 -	LMT	1906 Jun  9
    +			7:06:20	-	SMT	1911 Mar 11 0:01 # Saigon MT?
    +			7:00	-	ICT	1912 May
    +			8:00	-	ICT	1931 May
    +			7:00	-	ICT
    +
    +# Yemen
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Asia/Aden	3:00:48	-	LMT	1950
    +			3:00	-	AST
    diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/australasia b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/australasia
    new file mode 100644
    index 0000000..93a3a41
    --- /dev/null
    +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/australasia
    @@ -0,0 +1,1719 @@
    +# 
    +# This file is in the public domain, so clarified as of
    +# 2009-05-17 by Arthur David Olson.
    +
    +# This file also includes Pacific islands.
    +
    +# Notes are at the end of this file
    +
    +###############################################################################
    +
    +# Australia
    +
    +# Please see the notes below for the controversy about "EST" versus "AEST" etc.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Aus	1917	only	-	Jan	 1	0:01	1:00	-
    +Rule	Aus	1917	only	-	Mar	25	2:00	0	-
    +Rule	Aus	1942	only	-	Jan	 1	2:00	1:00	-
    +Rule	Aus	1942	only	-	Mar	29	2:00	0	-
    +Rule	Aus	1942	only	-	Sep	27	2:00	1:00	-
    +Rule	Aus	1943	1944	-	Mar	lastSun	2:00	0	-
    +Rule	Aus	1943	only	-	Oct	 3	2:00	1:00	-
    +# Go with Whitman and the Australian National Standards Commission, which
    +# says W Australia didn't use DST in 1943/1944.  Ignore Whitman's claim that
    +# 1944/1945 was just like 1943/1944.
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +# Northern Territory
    +Zone Australia/Darwin	 8:43:20 -	LMT	1895 Feb
    +			 9:00	-	CST	1899 May
    +			 9:30	Aus	CST
    +# Western Australia
    +#
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	AW	1974	only	-	Oct	lastSun	2:00s	1:00	-
    +Rule	AW	1975	only	-	Mar	Sun>=1	2:00s	0	-
    +Rule	AW	1983	only	-	Oct	lastSun	2:00s	1:00	-
    +Rule	AW	1984	only	-	Mar	Sun>=1	2:00s	0	-
    +Rule	AW	1991	only	-	Nov	17	2:00s	1:00	-
    +Rule	AW	1992	only	-	Mar	Sun>=1	2:00s	0	-
    +Rule	AW	2006	only	-	Dec	 3	2:00s	1:00	-
    +Rule	AW	2007	2009	-	Mar	lastSun	2:00s	0	-
    +Rule	AW	2007	2008	-	Oct	lastSun	2:00s	1:00	-
    +Zone Australia/Perth	 7:43:24 -	LMT	1895 Dec
    +			 8:00	Aus	WST	1943 Jul
    +			 8:00	AW	WST
    +Zone Australia/Eucla	 8:35:28 -	LMT	1895 Dec
    +			 8:45	Aus	CWST	1943 Jul
    +			 8:45	AW	CWST
    +
    +# Queensland
    +#
    +# From Alex Livingston (1996-11-01):
    +# I have heard or read more than once that some resort islands off the coast
    +# of Queensland chose to keep observing daylight-saving time even after
    +# Queensland ceased to.
    +#
    +# From Paul Eggert (1996-11-22):
    +# IATA SSIM (1993-02/1994-09) say that the Holiday Islands (Hayman, Lindeman,
    +# Hamilton) observed DST for two years after the rest of Queensland stopped.
    +# Hamilton is the largest, but there is also a Hamilton in Victoria,
    +# so use Lindeman.
    +#
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	AQ	1971	only	-	Oct	lastSun	2:00s	1:00	-
    +Rule	AQ	1972	only	-	Feb	lastSun	2:00s	0	-
    +Rule	AQ	1989	1991	-	Oct	lastSun	2:00s	1:00	-
    +Rule	AQ	1990	1992	-	Mar	Sun>=1	2:00s	0	-
    +Rule	Holiday	1992	1993	-	Oct	lastSun	2:00s	1:00	-
    +Rule	Holiday	1993	1994	-	Mar	Sun>=1	2:00s	0	-
    +Zone Australia/Brisbane	10:12:08 -	LMT	1895
    +			10:00	Aus	EST	1971
    +			10:00	AQ	EST
    +Zone Australia/Lindeman  9:55:56 -	LMT	1895
    +			10:00	Aus	EST	1971
    +			10:00	AQ	EST	1992 Jul
    +			10:00	Holiday	EST
    +
    +# South Australia
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	AS	1971	1985	-	Oct	lastSun	2:00s	1:00	-
    +Rule	AS	1986	only	-	Oct	19	2:00s	1:00	-
    +Rule	AS	1987	2007	-	Oct	lastSun	2:00s	1:00	-
    +Rule	AS	1972	only	-	Feb	27	2:00s	0	-
    +Rule	AS	1973	1985	-	Mar	Sun>=1	2:00s	0	-
    +Rule	AS	1986	1990	-	Mar	Sun>=15	2:00s	0	-
    +Rule	AS	1991	only	-	Mar	3	2:00s	0	-
    +Rule	AS	1992	only	-	Mar	22	2:00s	0	-
    +Rule	AS	1993	only	-	Mar	7	2:00s	0	-
    +Rule	AS	1994	only	-	Mar	20	2:00s	0	-
    +Rule	AS	1995	2005	-	Mar	lastSun	2:00s	0	-
    +Rule	AS	2006	only	-	Apr	2	2:00s	0	-
    +Rule	AS	2007	only	-	Mar	lastSun	2:00s	0	-
    +Rule	AS	2008	max	-	Apr	Sun>=1	2:00s	0	-
    +Rule	AS	2008	max	-	Oct	Sun>=1	2:00s	1:00	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Australia/Adelaide	9:14:20 -	LMT	1895 Feb
    +			9:00	-	CST	1899 May
    +			9:30	Aus	CST	1971
    +			9:30	AS	CST
    +
    +# Tasmania
    +#
    +# From Paul Eggert (2005-08-16):
    +# 
    +# says King Island didn't observe DST from WWII until late 1971.
    +#
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	AT	1967	only	-	Oct	Sun>=1	2:00s	1:00	-
    +Rule	AT	1968	only	-	Mar	lastSun	2:00s	0	-
    +Rule	AT	1968	1985	-	Oct	lastSun	2:00s	1:00	-
    +Rule	AT	1969	1971	-	Mar	Sun>=8	2:00s	0	-
    +Rule	AT	1972	only	-	Feb	lastSun	2:00s	0	-
    +Rule	AT	1973	1981	-	Mar	Sun>=1	2:00s	0	-
    +Rule	AT	1982	1983	-	Mar	lastSun	2:00s	0	-
    +Rule	AT	1984	1986	-	Mar	Sun>=1	2:00s	0	-
    +Rule	AT	1986	only	-	Oct	Sun>=15	2:00s	1:00	-
    +Rule	AT	1987	1990	-	Mar	Sun>=15	2:00s	0	-
    +Rule	AT	1987	only	-	Oct	Sun>=22	2:00s	1:00	-
    +Rule	AT	1988	1990	-	Oct	lastSun	2:00s	1:00	-
    +Rule	AT	1991	1999	-	Oct	Sun>=1	2:00s	1:00	-
    +Rule	AT	1991	2005	-	Mar	lastSun	2:00s	0	-
    +Rule	AT	2000	only	-	Aug	lastSun	2:00s	1:00	-
    +Rule	AT	2001	max	-	Oct	Sun>=1	2:00s	1:00	-
    +Rule	AT	2006	only	-	Apr	Sun>=1	2:00s	0	-
    +Rule	AT	2007	only	-	Mar	lastSun	2:00s	0	-
    +Rule	AT	2008	max	-	Apr	Sun>=1	2:00s	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Australia/Hobart	9:49:16	-	LMT	1895 Sep
    +			10:00	-	EST	1916 Oct 1 2:00
    +			10:00	1:00	EST	1917 Feb
    +			10:00	Aus	EST	1967
    +			10:00	AT	EST
    +Zone Australia/Currie	9:35:28	-	LMT	1895 Sep
    +			10:00	-	EST	1916 Oct 1 2:00
    +			10:00	1:00	EST	1917 Feb
    +			10:00	Aus	EST	1971 Jul
    +			10:00	AT	EST
    +
    +# Victoria
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	AV	1971	1985	-	Oct	lastSun	2:00s	1:00	-
    +Rule	AV	1972	only	-	Feb	lastSun	2:00s	0	-
    +Rule	AV	1973	1985	-	Mar	Sun>=1	2:00s	0	-
    +Rule	AV	1986	1990	-	Mar	Sun>=15	2:00s	0	-
    +Rule	AV	1986	1987	-	Oct	Sun>=15	2:00s	1:00	-
    +Rule	AV	1988	1999	-	Oct	lastSun	2:00s	1:00	-
    +Rule	AV	1991	1994	-	Mar	Sun>=1	2:00s	0	-
    +Rule	AV	1995	2005	-	Mar	lastSun	2:00s	0	-
    +Rule	AV	2000	only	-	Aug	lastSun	2:00s	1:00	-
    +Rule	AV	2001	2007	-	Oct	lastSun	2:00s	1:00	-
    +Rule	AV	2006	only	-	Apr	Sun>=1	2:00s	0	-
    +Rule	AV	2007	only	-	Mar	lastSun	2:00s	0	-
    +Rule	AV	2008	max	-	Apr	Sun>=1	2:00s	0	-
    +Rule	AV	2008	max	-	Oct	Sun>=1	2:00s	1:00	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Australia/Melbourne 9:39:52 -	LMT	1895 Feb
    +			10:00	Aus	EST	1971
    +			10:00	AV	EST
    +
    +# New South Wales
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	AN	1971	1985	-	Oct	lastSun	2:00s	1:00	-
    +Rule	AN	1972	only	-	Feb	27	2:00s	0	-
    +Rule	AN	1973	1981	-	Mar	Sun>=1	2:00s	0	-
    +Rule	AN	1982	only	-	Apr	Sun>=1	2:00s	0	-
    +Rule	AN	1983	1985	-	Mar	Sun>=1	2:00s	0	-
    +Rule	AN	1986	1989	-	Mar	Sun>=15	2:00s	0	-
    +Rule	AN	1986	only	-	Oct	19	2:00s	1:00	-
    +Rule	AN	1987	1999	-	Oct	lastSun	2:00s	1:00	-
    +Rule	AN	1990	1995	-	Mar	Sun>=1	2:00s	0	-
    +Rule	AN	1996	2005	-	Mar	lastSun	2:00s	0	-
    +Rule	AN	2000	only	-	Aug	lastSun	2:00s	1:00	-
    +Rule	AN	2001	2007	-	Oct	lastSun	2:00s	1:00	-
    +Rule	AN	2006	only	-	Apr	Sun>=1	2:00s	0	-
    +Rule	AN	2007	only	-	Mar	lastSun	2:00s	0	-
    +Rule	AN	2008	max	-	Apr	Sun>=1	2:00s	0	-
    +Rule	AN	2008	max	-	Oct	Sun>=1	2:00s	1:00	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Australia/Sydney	10:04:52 -	LMT	1895 Feb
    +			10:00	Aus	EST	1971
    +			10:00	AN	EST
    +Zone Australia/Broken_Hill 9:25:48 -	LMT	1895 Feb
    +			10:00	-	EST	1896 Aug 23
    +			9:00	-	CST	1899 May
    +			9:30	Aus	CST	1971
    +			9:30	AN	CST	2000
    +			9:30	AS	CST
    +
    +# Lord Howe Island
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	LH	1981	1984	-	Oct	lastSun	2:00	1:00	-
    +Rule	LH	1982	1985	-	Mar	Sun>=1	2:00	0	-
    +Rule	LH	1985	only	-	Oct	lastSun	2:00	0:30	-
    +Rule	LH	1986	1989	-	Mar	Sun>=15	2:00	0	-
    +Rule	LH	1986	only	-	Oct	19	2:00	0:30	-
    +Rule	LH	1987	1999	-	Oct	lastSun	2:00	0:30	-
    +Rule	LH	1990	1995	-	Mar	Sun>=1	2:00	0	-
    +Rule	LH	1996	2005	-	Mar	lastSun	2:00	0	-
    +Rule	LH	2000	only	-	Aug	lastSun	2:00	0:30	-
    +Rule	LH	2001	2007	-	Oct	lastSun	2:00	0:30	-
    +Rule	LH	2006	only	-	Apr	Sun>=1	2:00	0	-
    +Rule	LH	2007	only	-	Mar	lastSun	2:00	0	-
    +Rule	LH	2008	max	-	Apr	Sun>=1	2:00	0	-
    +Rule	LH	2008	max	-	Oct	Sun>=1	2:00	0:30	-
    +Zone Australia/Lord_Howe 10:36:20 -	LMT	1895 Feb
    +			10:00	-	EST	1981 Mar
    +			10:30	LH	LHST
    +
    +# Australian miscellany
    +#
    +# Ashmore Is, Cartier
    +# no indigenous inhabitants; only seasonal caretakers
    +# no times are set
    +#
    +# Coral Sea Is
    +# no indigenous inhabitants; only meteorologists
    +# no times are set
    +#
    +# Macquarie
    +# permanent occupation (scientific station) since 1948;
    +# sealing and penguin oil station operated 1888/1917
    +# like Australia/Hobart
    +
    +# Christmas
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Indian/Christmas	7:02:52 -	LMT	1895 Feb
    +			7:00	-	CXT	# Christmas Island Time
    +
    +# Cook Is
    +# From Shanks & Pottenger:
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Cook	1978	only	-	Nov	12	0:00	0:30	HS
    +Rule	Cook	1979	1991	-	Mar	Sun>=1	0:00	0	-
    +Rule	Cook	1979	1990	-	Oct	lastSun	0:00	0:30	HS
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Pacific/Rarotonga	-10:39:04 -	LMT	1901		# Avarua
    +			-10:30	-	CKT	1978 Nov 12	# Cook Is Time
    +			-10:00	Cook	CK%sT
    +
    +# Cocos
    +# These islands were ruled by the Ross family from about 1830 to 1978.
    +# We don't know when standard time was introduced; for now, we guess 1900.
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Indian/Cocos	6:27:40	-	LMT	1900
    +			6:30	-	CCT	# Cocos Islands Time
    +
    +# Fiji
    +# From Alexander Krivenyshev (2009-11-10):
    +# According to Fiji Broadcasting Corporation,  Fiji plans to re-introduce DST
    +# from November 29th 2009  to April 25th 2010.
    +#
    +# "Daylight savings to commence this month"
    +# 
    +# http://www.radiofiji.com.fj/fullstory.php?id=23719
    +# 
    +# or
    +# 
    +# http://www.worldtimezone.com/dst_news/dst_news_fiji01.html
    +# 
    +
    +# From Steffen Thorsen (2009-11-10):
    +# The Fiji Government has posted some more details about the approved
    +# amendments:
    +# 
    +# http://www.fiji.gov.fj/publish/page_16198.shtml
    +# 
    +
    +# From Steffen Thorsen (2010-03-03):
    +# The Cabinet in Fiji has decided to end DST about a month early, on
    +# 2010-03-28 at 03:00.
    +# The plan is to observe DST again, from 2010-10-24 to sometime in March
    +# 2011 (last Sunday a good guess?).
    +#
    +# Official source:
    +# 
    +# http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=1096:3310-cabinet-approves-change-in-daylight-savings-dates&catid=49:cabinet-releases&Itemid=166
    +# 
    +#
    +# A bit more background info here:
    +# 
    +# http://www.timeanddate.com/news/time/fiji-dst-ends-march-2010.html
    +# 
    +
    +# From Alexander Krivenyshev (2010-10-24):
    +# According to Radio Fiji and Fiji Times online, Fiji will end DST 3
    +# weeks earlier than expected - on March 6, 2011, not March 27, 2011...
    +# Here is confirmation from Government of the Republic of the Fiji Islands,
    +# Ministry of Information (fiji.gov.fj) web site:
    +# 
    +# http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=2608:daylight-savings&catid=71:press-releases&Itemid=155
    +# 
    +# or
    +# 
    +# http://www.worldtimezone.com/dst_news/dst_news_fiji04.html
    +# 
    +
    +# From Steffen Thorsen (2011-10-03):
    +# Now the dates have been confirmed, and at least our start date
    +# assumption was correct (end date was one week wrong).
    +#
    +# 
    +# www.fiji.gov.fj/index.php?option=com_content&view=article&id=4966:daylight-saving-starts-in-fiji&catid=71:press-releases&Itemid=155
    +# 
    +# which says
    +# Members of the public are reminded to change their time to one hour in
    +# advance at 2am to 3am on October 23, 2011 and one hour back at 3am to
    +# 2am on February 26 next year.
    +
    +# From Ken Rylander (2011-10-24)
    +# Another change to the Fiji DST end date. In the TZ database the end date for
    +# Fiji DST 2012, is currently Feb 26. This has been changed to Jan 22.
    +#
    +# 
    +# http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=5017:amendments-to-daylight-savings&catid=71:press-releases&Itemid=155
    +# 
    +# states:
    +#
    +# The end of daylight saving scheduled initially for the 26th of February 2012
    +# has been brought forward to the 22nd of January 2012.
    +# The commencement of daylight saving will remain unchanged and start
    +# on the  23rd of October, 2011.
    +
    +# From the Fiji Government Online Portal (2012-08-21) via Steffen Thorsen:
    +# The Minister for Labour, Industrial Relations and Employment Mr Jone Usamate
    +# today confirmed that Fiji will start daylight savings at 2 am on Sunday 21st
    +# October 2012 and end at 3 am on Sunday 20th January 2013.
    +# http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=6702&catid=71&Itemid=155
    +#
    +# From Paul Eggert (2012-08-31):
    +# For now, guess a pattern of the penultimate Sundays in October and January.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Fiji	1998	1999	-	Nov	Sun>=1	2:00	1:00	S
    +Rule	Fiji	1999	2000	-	Feb	lastSun	3:00	0	-
    +Rule	Fiji	2009	only	-	Nov	29	2:00	1:00	S
    +Rule	Fiji	2010	only	-	Mar	lastSun	3:00	0	-
    +Rule	Fiji	2010	max	-	Oct	Sun>=18	2:00	1:00	S
    +Rule	Fiji	2011	only	-	Mar	Sun>=1	3:00	0	-
    +Rule	Fiji	2012	max	-	Jan	Sun>=18	3:00	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Pacific/Fiji	11:53:40 -	LMT	1915 Oct 26	# Suva
    +			12:00	Fiji	FJ%sT	# Fiji Time
    +
    +# French Polynesia
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Pacific/Gambier	 -8:59:48 -	LMT	1912 Oct	# Rikitea
    +			 -9:00	-	GAMT	# Gambier Time
    +Zone	Pacific/Marquesas -9:18:00 -	LMT	1912 Oct
    +			 -9:30	-	MART	# Marquesas Time
    +Zone	Pacific/Tahiti	 -9:58:16 -	LMT	1912 Oct	# Papeete
    +			-10:00	-	TAHT	# Tahiti Time
    +# Clipperton (near North America) is administered from French Polynesia;
    +# it is uninhabited.
    +
    +# Guam
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Pacific/Guam	-14:21:00 -	LMT	1844 Dec 31
    +			 9:39:00 -	LMT	1901		# Agana
    +			10:00	-	GST	2000 Dec 23	# Guam
    +			10:00	-	ChST	# Chamorro Standard Time
    +
    +# Kiribati
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Pacific/Tarawa	 11:32:04 -	LMT	1901		# Bairiki
    +			 12:00	-	GILT		 # Gilbert Is Time
    +Zone Pacific/Enderbury	-11:24:20 -	LMT	1901
    +			-12:00	-	PHOT	1979 Oct # Phoenix Is Time
    +			-11:00	-	PHOT	1995
    +			 13:00	-	PHOT
    +Zone Pacific/Kiritimati	-10:29:20 -	LMT	1901
    +			-10:40	-	LINT	1979 Oct # Line Is Time
    +			-10:00	-	LINT	1995
    +			 14:00	-	LINT
    +
    +# N Mariana Is
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Pacific/Saipan	-14:17:00 -	LMT	1844 Dec 31
    +			 9:43:00 -	LMT	1901
    +			 9:00	-	MPT	1969 Oct # N Mariana Is Time
    +			10:00	-	MPT	2000 Dec 23
    +			10:00	-	ChST	# Chamorro Standard Time
    +
    +# Marshall Is
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Pacific/Majuro	11:24:48 -	LMT	1901
    +			11:00	-	MHT	1969 Oct # Marshall Islands Time
    +			12:00	-	MHT
    +Zone Pacific/Kwajalein	11:09:20 -	LMT	1901
    +			11:00	-	MHT	1969 Oct
    +			-12:00	-	KWAT	1993 Aug 20	# Kwajalein Time
    +			12:00	-	MHT
    +
    +# Micronesia
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Pacific/Chuuk	10:07:08 -	LMT	1901
    +			10:00	-	CHUT			# Chuuk Time
    +Zone Pacific/Pohnpei	10:32:52 -	LMT	1901		# Kolonia
    +			11:00	-	PONT			# Pohnpei Time
    +Zone Pacific/Kosrae	10:51:56 -	LMT	1901
    +			11:00	-	KOST	1969 Oct	# Kosrae Time
    +			12:00	-	KOST	1999
    +			11:00	-	KOST
    +
    +# Nauru
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Pacific/Nauru	11:07:40 -	LMT	1921 Jan 15	# Uaobe
    +			11:30	-	NRT	1942 Mar 15	# Nauru Time
    +			9:00	-	JST	1944 Aug 15
    +			11:30	-	NRT	1979 May
    +			12:00	-	NRT
    +
    +# New Caledonia
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	NC	1977	1978	-	Dec	Sun>=1	0:00	1:00	S
    +Rule	NC	1978	1979	-	Feb	27	0:00	0	-
    +Rule	NC	1996	only	-	Dec	 1	2:00s	1:00	S
    +# Shanks & Pottenger say the following was at 2:00; go with IATA.
    +Rule	NC	1997	only	-	Mar	 2	2:00s	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Pacific/Noumea	11:05:48 -	LMT	1912 Jan 13
    +			11:00	NC	NC%sT
    +
    +
    +###############################################################################
    +
    +# New Zealand
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	NZ	1927	only	-	Nov	 6	2:00	1:00	S
    +Rule	NZ	1928	only	-	Mar	 4	2:00	0	M
    +Rule	NZ	1928	1933	-	Oct	Sun>=8	2:00	0:30	S
    +Rule	NZ	1929	1933	-	Mar	Sun>=15	2:00	0	M
    +Rule	NZ	1934	1940	-	Apr	lastSun	2:00	0	M
    +Rule	NZ	1934	1940	-	Sep	lastSun	2:00	0:30	S
    +Rule	NZ	1946	only	-	Jan	 1	0:00	0	S
    +# Since 1957 Chatham has been 45 minutes ahead of NZ, but there's no
    +# convenient notation for this so we must duplicate the Rule lines.
    +Rule	NZ	1974	only	-	Nov	Sun>=1	2:00s	1:00	D
    +Rule	Chatham	1974	only	-	Nov	Sun>=1	2:45s	1:00	D
    +Rule	NZ	1975	only	-	Feb	lastSun	2:00s	0	S
    +Rule	Chatham	1975	only	-	Feb	lastSun	2:45s	0	S
    +Rule	NZ	1975	1988	-	Oct	lastSun	2:00s	1:00	D
    +Rule	Chatham	1975	1988	-	Oct	lastSun	2:45s	1:00	D
    +Rule	NZ	1976	1989	-	Mar	Sun>=1	2:00s	0	S
    +Rule	Chatham	1976	1989	-	Mar	Sun>=1	2:45s	0	S
    +Rule	NZ	1989	only	-	Oct	Sun>=8	2:00s	1:00	D
    +Rule	Chatham	1989	only	-	Oct	Sun>=8	2:45s	1:00	D
    +Rule	NZ	1990	2006	-	Oct	Sun>=1	2:00s	1:00	D
    +Rule	Chatham	1990	2006	-	Oct	Sun>=1	2:45s	1:00	D
    +Rule	NZ	1990	2007	-	Mar	Sun>=15	2:00s	0	S
    +Rule	Chatham	1990	2007	-	Mar	Sun>=15	2:45s	0	S
    +Rule	NZ	2007	max	-	Sep	lastSun	2:00s	1:00	D
    +Rule	Chatham	2007	max	-	Sep	lastSun	2:45s	1:00	D
    +Rule	NZ	2008	max	-	Apr	Sun>=1	2:00s	0	S
    +Rule	Chatham	2008	max	-	Apr	Sun>=1	2:45s	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Pacific/Auckland	11:39:04 -	LMT	1868 Nov  2
    +			11:30	NZ	NZ%sT	1946 Jan  1
    +			12:00	NZ	NZ%sT
    +Zone Pacific/Chatham	12:13:48 -	LMT	1957 Jan  1
    +			12:45	Chatham	CHA%sT
    +
    +
    +# Auckland Is
    +# uninhabited; Maori and Moriori, colonial settlers, pastoralists, sealers,
    +# and scientific personnel have wintered
    +
    +# Campbell I
    +# minor whaling stations operated 1909/1914
    +# scientific station operated 1941/1995;
    +# previously whalers, sealers, pastoralists, and scientific personnel wintered
    +# was probably like Pacific/Auckland
    +
    +###############################################################################
    +
    +
    +# Niue
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Pacific/Niue	-11:19:40 -	LMT	1901		# Alofi
    +			-11:20	-	NUT	1951	# Niue Time
    +			-11:30	-	NUT	1978 Oct 1
    +			-11:00	-	NUT
    +
    +# Norfolk
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Pacific/Norfolk	11:11:52 -	LMT	1901		# Kingston
    +			11:12	-	NMT	1951	# Norfolk Mean Time
    +			11:30	-	NFT		# Norfolk Time
    +
    +# Palau (Belau)
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Pacific/Palau	8:57:56 -	LMT	1901		# Koror
    +			9:00	-	PWT	# Palau Time
    +
    +# Papua New Guinea
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Pacific/Port_Moresby 9:48:40 -	LMT	1880
    +			9:48:32	-	PMMT	1895	# Port Moresby Mean Time
    +			10:00	-	PGT		# Papua New Guinea Time
    +
    +# Pitcairn
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Pacific/Pitcairn	-8:40:20 -	LMT	1901		# Adamstown
    +			-8:30	-	PNT	1998 Apr 27 00:00
    +			-8:00	-	PST	# Pitcairn Standard Time
    +
    +# American Samoa
    +Zone Pacific/Pago_Pago	 12:37:12 -	LMT	1879 Jul  5
    +			-11:22:48 -	LMT	1911
    +			-11:30	-	SAMT	1950		# Samoa Time
    +			-11:00	-	NST	1967 Apr	# N=Nome
    +			-11:00	-	BST	1983 Nov 30	# B=Bering
    +			-11:00	-	SST			# S=Samoa
    +
    +# Samoa
    +
    +# From Steffen Thorsen (2009-10-16):
    +# We have been in contact with the government of Samoa again, and received
    +# the following info:
    +#
    +# "Cabinet has now approved Daylight Saving to be effected next year
    +# commencing from the last Sunday of September 2010 and conclude first
    +# Sunday of April 2011."
    +#
    +# Background info:
    +# 
    +# http://www.timeanddate.com/news/time/samoa-dst-plan-2009.html
    +# 
    +#
    +# Samoa's Daylight Saving Time Act 2009 is available here, but does not
    +# contain any dates:
    +# 
    +# http://www.parliament.gov.ws/documents/acts/Daylight%20Saving%20Act%20%202009%20%28English%29%20-%20Final%207-7-091.pdf
    +# 
    +
    +# From Laupue Raymond Hughes (2010-10-07):
    +# Please see
    +# 
    +# http://www.mcil.gov.ws
    +# ,
    +# the Ministry of Commerce, Industry and Labour (sideframe) "Last Sunday
    +# September 2010 (26/09/10) - adjust clocks forward from 12:00 midnight
    +# to 01:00am and First Sunday April 2011 (03/04/11) - adjust clocks
    +# backwards from 1:00am to 12:00am"
    +
    +# From Laupue Raymond Hughes (2011-03-07):
    +# I believe this will be posted shortly on the website
    +# 
    +# www.mcil.gov.ws
    +# 
    +#
    +# PUBLIC NOTICE ON DAYLIGHT SAVING TIME
    +#
    +# Pursuant to the Daylight Saving Act 2009 and Cabinets decision,
    +# businesses and the general public are hereby advised that daylight
    +# saving time is on the first Saturday of April 2011 (02/04/11).
    +#
    +# The public is therefore advised that when the standard time strikes
    +# the hour of four oclock (4.00am or 0400 Hours) on the 2nd April 2011,
    +# then all instruments used to measure standard time are to be
    +# adjusted/changed to three oclock (3:00am or 0300Hrs).
    +#
    +# Margaret Fruean ACTING CHIEF EXECUTIVE OFFICER MINISTRY OF COMMERCE,
    +# INDUSTRY AND LABOUR 28th February 2011
    +
    +# From David Zuelke (2011-05-09):
    +# Subject: Samoa to move timezone from east to west of international date line
    +#
    +# 
    +# http://www.morningstar.co.uk/uk/markets/newsfeeditem.aspx?id=138501958347963
    +# 
    +
    +# From Mark Sim-Smith (2011-08-17):
    +# I have been in contact with Leilani Tuala Warren from the Samoa Law
    +# Reform Commission, and she has sent me a copy of the Bill that she
    +# confirmed has been passed...Most of the sections are about maps rather
    +# than the time zone change, but I'll paste the relevant bits below. But
    +# the essence is that at midnight 29 Dec (UTC-11 I suppose), Samoa
    +# changes from UTC-11 to UTC+13:
    +#
    +# International Date Line Bill 2011
    +#
    +# AN ACT to provide for the change to standard time in Samoa and to make
    +# consequential amendments to the position of the International Date
    +# Line, and for related purposes.
    +#
    +# BE IT ENACTED by the Legislative Assembly of Samoa in Parliament
    +# assembled as follows:
    +#
    +# 1. Short title and commencement-(1) This Act may be cited as the
    +# International Date Line Act 2011. (2) Except for section 5(3) this Act
    +# commences at 12 o'clock midnight, on Thursday 29th December 2011. (3)
    +# Section 5(3) commences on the date of assent by the Head of State.
    +#
    +# [snip]
    +#
    +# 3. Interpretation - [snip] "Samoa standard time" in this Act and any
    +# other statute of Samoa which refers to 'Samoa standard time' means the
    +# time 13 hours in advance of Co-ordinated Universal Time.
    +#
    +# 4. Samoa standard time - (1) Upon the commencement of this Act, Samoa
    +# standard time shall be set at 13 hours in advance of Co-ordinated
    +# Universal Time for the whole of Samoa. (2) All references to Samoa's
    +# time zone and to Samoa standard time in Samoa in all legislation and
    +# instruments after the commencement of this Act shall be references to
    +# Samoa standard time as provided for in this Act. (3) Nothing in this
    +# Act affects the provisions of the Daylight Saving Act 2009, except that
    +# it defines Samoa standard time....
    +
    +# From Laupue Raymond Hughes (2011-09-02):
    +# 
    +# http://www.mcil.gov.ws/mcil_publications.html
    +# 
    +#
    +# here is the official website publication for Samoa DST and dateline change
    +#
    +# DST
    +# Year	End	Time	Start	Time
    +# 2011	- - -	- - -	24 September	3:00am to 4:00am
    +# 2012	01 April	4:00am to 3:00am	- - -	- - -
    +#
    +# Dateline Change skip Friday 30th Dec 2011
    +# Thursday 29th December 2011	23:59:59 Hours
    +# Saturday 31st December 2011	00:00:00 Hours
    +#
    +# Clarification by Tim Parenti (2012-01-03):
    +# Although Samoa has used Daylight Saving Time in the 2010-2011 and 2011-2012
    +# seasons, there is not yet any indication that this trend will continue on
    +# a regular basis. For now, we have explicitly listed the transitions below.
    +#
    +# From Nicky (2012-09-10):
    +# Daylight Saving Time commences on Sunday 30th September 2012 and
    +# ends on Sunday 7th of April 2013.
    +#
    +# Please find link below for more information.
    +# http://www.mcil.gov.ws/mcil_publications.html
    +#
    +# That publication also includes dates for Summer of 2013/4 as well
    +# which give the impression of a pattern in selecting dates for the
    +# future, so for now, we will guess this will continue.
    +
    +# Western Samoa
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	WS	2012	max	-	Sep	lastSun	3:00	1	D
    +Rule	WS	2012	max	-	Apr	Sun>=1	4:00	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Pacific/Apia	 12:33:04 -	LMT	1879 Jul  5
    +			-11:26:56 -	LMT	1911
    +			-11:30	-	SAMT	1950		# Samoa Time
    +			-11:00	-	WST	2010 Sep 26
    +			-11:00	1:00	WSDT	2011 Apr 2 4:00
    +			-11:00	-	WST	2011 Sep 24 3:00
    +			-11:00	1:00	WSDT	2011 Dec 30
    +			 13:00	1:00	WSDT	2012 Apr Sun>=1 4:00
    +			 13:00	WS	WS%sT
    +
    +# Solomon Is
    +# excludes Bougainville, for which see Papua New Guinea
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Pacific/Guadalcanal 10:39:48 -	LMT	1912 Oct	# Honiara
    +			11:00	-	SBT	# Solomon Is Time
    +
    +# Tokelau Is
    +#
    +# From Gwillim Law (2011-12-29)
    +# A correspondent informed me that Tokelau, like Samoa, will be skipping
    +# December 31 this year ...
    +#
    +# From Steffen Thorsen (2012-07-25)
    +# ... we double checked by calling hotels and offices based in Tokelau asking
    +# about the time there, and they all told a time that agrees with UTC+13....
    +# Shanks says UTC-10 from 1901 [but] ... there is a good chance the change
    +# actually was to UTC-11 back then.
    +#
    +# From Paul Eggert (2012-07-25)
    +# A Google Books snippet of Appendix to the Journals of the House of
    +# Representatives of New Zealand, Session 1948,
    +# , page 65, says Tokelau
    +# was "11 hours slow on G.M.T."  Go with Thorsen and assume Shanks & Pottenger
    +# are off by an hour starting in 1901.
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Pacific/Fakaofo	-11:24:56 -	LMT	1901
    +			-11:00	-	TKT 2011 Dec 30	# Tokelau Time
    +			13:00	-	TKT
    +
    +# Tonga
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Tonga	1999	only	-	Oct	 7	2:00s	1:00	S
    +Rule	Tonga	2000	only	-	Mar	19	2:00s	0	-
    +Rule	Tonga	2000	2001	-	Nov	Sun>=1	2:00	1:00	S
    +Rule	Tonga	2001	2002	-	Jan	lastSun	2:00	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Pacific/Tongatapu	12:19:20 -	LMT	1901
    +			12:20	-	TOT	1941 # Tonga Time
    +			13:00	-	TOT	1999
    +			13:00	Tonga	TO%sT
    +
    +# Tuvalu
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Pacific/Funafuti	11:56:52 -	LMT	1901
    +			12:00	-	TVT	# Tuvalu Time
    +
    +
    +# US minor outlying islands
    +
    +# Howland, Baker
    +# Howland was mined for guano by American companies 1857-1878 and British
    +# 1886-1891; Baker was similar but exact dates are not known.
    +# Inhabited by civilians 1935-1942; U.S. military bases 1943-1944;
    +# uninhabited thereafter.
    +# Howland observed Hawaii Standard Time (UTC-10:30) in 1937;
    +# see page 206 of Elgen M. Long and Marie K. Long,
    +# Amelia Earhart: the Mystery Solved, Simon & Schuster (2000).
    +# So most likely Howland and Baker observed Hawaii Time from 1935
    +# until they were abandoned after the war.
    +
    +# Jarvis
    +# Mined for guano by American companies 1857-1879 and British 1883?-1891?.
    +# Inhabited by civilians 1935-1942; IGY scientific base 1957-1958;
    +# uninhabited thereafter.
    +# no information; was probably like Pacific/Kiritimati
    +
    +# Johnston
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Pacific/Johnston	-10:00	-	HST
    +
    +# Kingman
    +# uninhabited
    +
    +# Midway
    +#
    +# From Mark Brader (2005-01-23):
    +# [Fallacies and Fantasies of Air Transport History, by R.E.G. Davies,
    +# published 1994 by Paladwr Press, McLean, VA, USA; ISBN 0-9626483-5-3]
    +# reproduced a Pan American Airways timeables from 1936, for their weekly
    +# "Orient Express" flights between San Francisco and Manila, and connecting
    +# flights to Chicago and the US East Coast.  As it uses some time zone
    +# designations that I've never seen before:....
    +# Fri. 6:30A Lv. HONOLOLU (Pearl Harbor), H.I.   H.L.T. Ar. 5:30P Sun.
    +#  "   3:00P Ar. MIDWAY ISLAND . . . . . . . . . M.L.T. Lv. 6:00A  "
    +#
    +Zone Pacific/Midway	-11:49:28 -	LMT	1901
    +			-11:00	-	NST	1956 Jun  3
    +			-11:00	1:00	NDT	1956 Sep  2
    +			-11:00	-	NST	1967 Apr	# N=Nome
    +			-11:00	-	BST	1983 Nov 30	# B=Bering
    +			-11:00	-	SST			# S=Samoa
    +
    +# Palmyra
    +# uninhabited since World War II; was probably like Pacific/Kiritimati
    +
    +# Wake
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Pacific/Wake	11:06:28 -	LMT	1901
    +			12:00	-	WAKT	# Wake Time
    +
    +
    +# Vanuatu
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Vanuatu	1983	only	-	Sep	25	0:00	1:00	S
    +Rule	Vanuatu	1984	1991	-	Mar	Sun>=23	0:00	0	-
    +Rule	Vanuatu	1984	only	-	Oct	23	0:00	1:00	S
    +Rule	Vanuatu	1985	1991	-	Sep	Sun>=23	0:00	1:00	S
    +Rule	Vanuatu	1992	1993	-	Jan	Sun>=23	0:00	0	-
    +Rule	Vanuatu	1992	only	-	Oct	Sun>=23	0:00	1:00	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Pacific/Efate	11:13:16 -	LMT	1912 Jan 13		# Vila
    +			11:00	Vanuatu	VU%sT	# Vanuatu Time
    +
    +# Wallis and Futuna
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Pacific/Wallis	12:15:20 -	LMT	1901
    +			12:00	-	WFT	# Wallis & Futuna Time
    +
    +###############################################################################
    +
    +# NOTES
    +
    +# This data is by no means authoritative; if you think you know better,
    +# go ahead and edit the file (and please send any changes to
    +# tz@iana.org for general use in the future).
    +
    +# From Paul Eggert (2006-03-22):
    +# A good source for time zone historical data outside the U.S. is
    +# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
    +# San Diego: ACS Publications, Inc. (2003).
    +#
    +# Gwillim Law writes that a good source
    +# for recent time zone data is the International Air Transport
    +# Association's Standard Schedules Information Manual (IATA SSIM),
    +# published semiannually.  Law sent in several helpful summaries
    +# of the IATA's data after 1990.
    +#
    +# Except where otherwise noted, Shanks & Pottenger is the source for
    +# entries through 1990, and IATA SSIM is the source for entries afterwards.
    +#
    +# Another source occasionally used is Edward W. Whitman, World Time Differences,
    +# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
    +# I found in the UCLA library.
    +#
    +# A reliable and entertaining source about time zones is
    +# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
    +#
    +# I invented the abbreviations marked `*' in the following table;
    +# the rest are from earlier versions of this file, or from other sources.
    +# Corrections are welcome!
    +#		std dst
    +#		LMT	Local Mean Time
    +#	  8:00	WST WST	Western Australia
    +#	  8:45	CWST CWST Central Western Australia*
    +#	  9:00	JST	Japan
    +#	  9:30	CST CST	Central Australia
    +#	 10:00	EST EST	Eastern Australia
    +#	 10:00	ChST	Chamorro
    +#	 10:30	LHST LHST Lord Howe*
    +#	 11:30	NZMT NZST New Zealand through 1945
    +#	 12:00	NZST NZDT New Zealand 1946-present
    +#	 12:45	CHAST CHADT Chatham*
    +#	-11:00	SST	Samoa
    +#	-10:00	HST	Hawaii
    +#	- 8:00	PST	Pitcairn*
    +#
    +# See the `northamerica' file for Hawaii.
    +# See the `southamerica' file for Easter I and the Galapagos Is.
    +
    +###############################################################################
    +
    +# Australia
    +
    +# From Paul Eggert (2005-12-08):
    +# 
    +# Implementation Dates of Daylight Saving Time within Australia
    +#  summarizes daylight saving issues in Australia.
    +
    +# From Arthur David Olson (2005-12-12):
    +# 
    +# Lawlink NSW:Daylight Saving in New South Wales
    +#  covers New South Wales in particular.
    +
    +# From John Mackin (1991-03-06):
    +# We in Australia have _never_ referred to DST as `daylight' time.
    +# It is called `summer' time.  Now by a happy coincidence, `summer'
    +# and `standard' happen to start with the same letter; hence, the
    +# abbreviation does _not_ change...
    +# The legislation does not actually define abbreviations, at least
    +# in this State, but the abbreviation is just commonly taken to be the
    +# initials of the phrase, and the legislation here uniformly uses
    +# the phrase `summer time' and does not use the phrase `daylight
    +# time'.
    +# Announcers on the Commonwealth radio network, the ABC (for Australian
    +# Broadcasting Commission), use the phrases `Eastern Standard Time'
    +# or `Eastern Summer Time'.  (Note, though, that as I say in the
    +# current australasia file, there is really no such thing.)  Announcers
    +# on its overseas service, Radio Australia, use the same phrases
    +# prefixed by the word `Australian' when referring to local times;
    +# time announcements on that service, naturally enough, are made in UTC.
    +
    +# From Arthur David Olson (1992-03-08):
    +# Given the above, what's chosen for year-round use is:
    +#	CST	for any place operating at a GMTOFF of 9:30
    +#	WST	for any place operating at a GMTOFF of 8:00
    +#	EST	for any place operating at a GMTOFF of 10:00
    +
    +# From Chuck Soper (2006-06-01):
    +# I recently found this Australian government web page on time zones:
    +# 
    +# And this government web page lists time zone names and abbreviations:
    +# 
    +
    +# From Paul Eggert (2001-04-05), summarizing a long discussion about "EST"
    +# versus "AEST" etc.:
    +#
    +# I see the following points of dispute:
    +#
    +# * How important are unique time zone abbreviations?
    +#
    +#   Here I tend to agree with the point (most recently made by Chris
    +#   Newman) that unique abbreviations should not be essential for proper
    +#   operation of software.  We have other instances of ambiguity
    +#   (e.g. "IST" denoting both "Israel Standard Time" and "Indian
    +#   Standard Time"), and they are not likely to go away any time soon.
    +#   In the old days, some software mistakenly relied on unique
    +#   abbreviations, but this is becoming less true with time, and I don't
    +#   think it's that important to cater to such software these days.
    +#
    +#   On the other hand, there is another motivation for unambiguous
    +#   abbreviations: it cuts down on human confusion.  This is
    +#   particularly true for Australia, where "EST" can mean one thing for
    +#   time T and a different thing for time T plus 1 second.
    +#
    +# * Does the relevant legislation indicate which abbreviations should be used?
    +#
    +#   Here I tend to think that things are a mess, just as they are in
    +#   many other countries.  We Americans are currently disagreeing about
    +#   which abbreviation to use for the newly legislated Chamorro Standard
    +#   Time, for example.
    +#
    +#   Personally, I would prefer to use common practice; I would like to
    +#   refer to legislation only for examples of common practice, or as a
    +#   tiebreaker.
    +#
    +# * Do Australians more often use "Eastern Daylight Time" or "Eastern
    +#   Summer Time"?  Do they typically prefix the time zone names with
    +#   the word "Australian"?
    +#
    +#   My own impression is that both "Daylight Time" and "Summer Time" are
    +#   common and are widely understood, but that "Summer Time" is more
    +#   popular; and that the leading "A" is also common but is omitted more
    +#   often than not.  I just used AltaVista advanced search and got the
    +#   following count of page hits:
    +#
    +#     1,103 "Eastern Summer Time" AND domain:au
    +#       971 "Australian Eastern Summer Time" AND domain:au
    +#       613 "Eastern Daylight Time" AND domain:au
    +#       127 "Australian Eastern Daylight Time" AND domain:au
    +#
    +#   Here "Summer" seems quite a bit more popular than "Daylight",
    +#   particularly when we know the time zone is Australian and not US,
    +#   say.  The "Australian" prefix seems to be popular for Eastern Summer
    +#   Time, but unpopular for Eastern Daylight Time.
    +#
    +#   For abbreviations, tools like AltaVista are less useful because of
    +#   ambiguity.  Many hits are not really time zones, unfortunately, and
    +#   many hits denote US time zones and not Australian ones.  But here
    +#   are the hit counts anyway:
    +#
    +#     161,304 "EST" and domain:au
    +#      25,156 "EDT" and domain:au
    +#      18,263 "AEST" and domain:au
    +#      10,416 "AEDT" and domain:au
    +#
    +#      14,538 "CST" and domain:au
    +#       5,728 "CDT" and domain:au
    +#         176 "ACST" and domain:au
    +#          29 "ACDT" and domain:au
    +#
    +#       7,539 "WST" and domain:au
    +#          68 "AWST" and domain:au
    +#
    +#   This data suggest that Australians tend to omit the "A" prefix in
    +#   practice.  The situation for "ST" versus "DT" is less clear, given
    +#   the ambiguities involved.
    +#
    +# * How do Australians feel about the abbreviations in the tz database?
    +#
    +#   If you just count Australians on this list, I count 2 in favor and 3
    +#   against.  One of the "against" votes (David Keegel) counseled delay,
    +#   saying that both AEST/AEDT and EST/EST are widely used and
    +#   understood in Australia.
    +
    +# From Paul Eggert (1995-12-19):
    +# Shanks & Pottenger report 2:00 for all autumn changes in Australia and NZ.
    +# Mark Prior writes that his newspaper
    +# reports that NSW's fall 1995 change will occur at 2:00,
    +# but Robert Elz says it's been 3:00 in Victoria since 1970
    +# and perhaps the newspaper's `2:00' is referring to standard time.
    +# For now we'll continue to assume 2:00s for changes since 1960.
    +
    +# From Eric Ulevik (1998-01-05):
    +#
    +# Here are some URLs to Australian time legislation. These URLs are stable,
    +# and should probably be included in the data file. There are probably more
    +# relevant entries in this database.
    +#
    +# NSW (including LHI and Broken Hill):
    +# 
    +# Standard Time Act 1987 (updated 1995-04-04)
    +# 
    +# ACT
    +# 
    +# Standard Time and Summer Time Act 1972
    +# 
    +# SA
    +# 
    +# Standard Time Act, 1898
    +# 
    +
    +# From David Grosz (2005-06-13):
    +# It was announced last week that Daylight Saving would be extended by
    +# one week next year to allow for the 2006 Commonwealth Games.
    +# Daylight Saving is now to end for next year only on the first Sunday
    +# in April instead of the last Sunday in March.
    +#
    +# From Gwillim Law (2005-06-14):
    +# I did some Googling and found that all of those states (and territory) plan
    +# to extend DST together in 2006.
    +# ACT: http://www.cmd.act.gov.au/mediareleases/fileread.cfm?file=86.txt
    +# New South Wales: http://www.thecouriermail.news.com.au/common/story_page/0,5936,15538869%255E1702,00.html
    +# South Australia: http://www.news.com.au/story/0,10117,15555031-1246,00.html
    +# Tasmania: http://www.media.tas.gov.au/release.php?id=14772
    +# Victoria: I wasn't able to find anything separate, but the other articles
    +# allude to it.
    +# But not Queensland
    +# http://www.news.com.au/story/0,10117,15564030-1248,00.html.
    +
    +# Northern Territory
    +
    +# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
    +# # The NORTHERN TERRITORY..  [ Courtesy N.T. Dept of the Chief Minister ]
    +# #					[ Nov 1990 ]
    +# #	N.T. have never utilised any DST due to sub-tropical/tropical location.
    +# ...
    +# Zone        Australia/North         9:30    -       CST
    +
    +# From Bradley White (1991-03-04):
    +# A recent excerpt from an Australian newspaper...
    +# the Northern Territory do[es] not have daylight saving.
    +
    +# Western Australia
    +
    +# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
    +# #  The state of WESTERN AUSTRALIA..  [ Courtesy W.A. dept Premier+Cabinet ]
    +# #						[ Nov 1990 ]
    +# #	W.A. suffers from a great deal of public and political opposition to
    +# #	DST in principle. A bill is brought before parliament in most years, but
    +# #	usually defeated either in the upper house, or in party caucus
    +# #	before reaching parliament.
    +# ...
    +# Zone	Australia/West		8:00	AW	%sST
    +# ...
    +# Rule	AW	1974	only	-	Oct	lastSun	2:00	1:00	D
    +# Rule	AW	1975	only	-	Mar	Sun>=1	3:00	0	W
    +# Rule	AW	1983	only	-	Oct	lastSun	2:00	1:00	D
    +# Rule	AW	1984	only	-	Mar	Sun>=1	3:00	0	W
    +
    +# From Bradley White (1991-03-04):
    +# A recent excerpt from an Australian newspaper...
    +# Western Australia...do[es] not have daylight saving.
    +
    +# From John D. Newman via Bradley White (1991-11-02):
    +# Western Australia is still on "winter time". Some DH in Sydney
    +# rang me at home a few days ago at 6.00am. (He had just arrived at
    +# work at 9.00am.)
    +# W.A. is switching to Summer Time on Nov 17th just to confuse
    +# everybody again.
    +
    +# From Arthur David Olson (1992-03-08):
    +# The 1992 ending date used in the rules is a best guess;
    +# it matches what was used in the past.
    +
    +# 
    +# The Australian Bureau of Meteorology FAQ
    +#  (1999-09-27) writes that Giles Meteorological Station uses
    +# South Australian time even though it's located in Western Australia.
    +
    +# Queensland
    +# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
    +# #   The state of QUEENSLAND.. [ Courtesy Qld. Dept Premier Econ&Trade Devel ]
    +# #						[ Dec 1990 ]
    +# ...
    +# Zone	Australia/Queensland	10:00	AQ	%sST
    +# ...
    +# Rule	AQ	1971	only	-	Oct	lastSun	2:00	1:00	D
    +# Rule	AQ	1972	only	-	Feb	lastSun	3:00	0	E
    +# Rule	AQ	1989	max	-	Oct	lastSun	2:00	1:00	D
    +# Rule	AQ	1990	max	-	Mar	Sun>=1	3:00	0	E
    +
    +# From Bradley White (1989-12-24):
    +# "Australia/Queensland" now observes daylight time (i.e. from
    +# October 1989).
    +
    +# From Bradley White (1991-03-04):
    +# A recent excerpt from an Australian newspaper...
    +# ...Queensland...[has] agreed to end daylight saving
    +# at 3am tomorrow (March 3)...
    +
    +# From John Mackin (1991-03-06):
    +# I can certainly confirm for my part that Daylight Saving in NSW did in fact
    +# end on Sunday, 3 March.  I don't know at what hour, though.  (It surprised
    +# me.)
    +
    +# From Bradley White (1992-03-08):
    +# ...there was recently a referendum in Queensland which resulted
    +# in the experimental daylight saving system being abandoned. So, ...
    +# ...
    +# Rule	QLD	1989	1991	-	Oct	lastSun	2:00	1:00	D
    +# Rule	QLD	1990	1992	-	Mar	Sun>=1	3:00	0	S
    +# ...
    +
    +# From Arthur David Olson (1992-03-08):
    +# The chosen rules the union of the 1971/1972 change and the 1989-1992 changes.
    +
    +# From Christopher Hunt (2006-11-21), after an advance warning
    +# from Jesper Norgaard Welen (2006-11-01):
    +# WA are trialing DST for three years.
    +# 
    +
    +# From Rives McDow (2002-04-09):
    +# The most interesting region I have found consists of three towns on the
    +# southern coast....  South Australia observes daylight saving time; Western
    +# Australia does not.  The two states are one and a half hours apart.  The
    +# residents decided to forget about this nonsense of changing the clock so
    +# much and set the local time 20 hours and 45 minutes from the
    +# international date line, or right in the middle of the time of South
    +# Australia and Western Australia....
    +#
    +# From Paul Eggert (2002-04-09):
    +# This is confirmed by the section entitled
    +# "What's the deal with time zones???" in
    +# .
    +#
    +# From Alex Livingston (2006-12-07):
    +# ... it was just on four years ago that I drove along the Eyre Highway,
    +# which passes through eastern Western Australia close to the southern
    +# coast of the continent.
    +#
    +# I paid particular attention to the time kept there. There can be no
    +# dispute that UTC+08:45 was considered "the time" from the border
    +# village just inside the border with South Australia to as far west
    +# as just east of Caiguna. There can also be no dispute that Eucla is
    +# the largest population centre in this zone....
    +#
    +# Now that Western Australia is observing daylight saving, the
    +# question arose whether this part of the state would follow suit. I
    +# just called the border village and confirmed that indeed they have,
    +# meaning that they are now observing UTC+09:45.
    +#
    +# (2006-12-09):
    +# I personally doubt that either experimentation with daylight saving
    +# in WA or its introduction in SA had anything to do with the genesis
    +# of this time zone.  My hunch is that it's been around since well
    +# before 1975.  I remember seeing it noted on road maps decades ago.
    +
    +# From Paul Eggert (2006-12-15):
    +# For lack of better info, assume the tradition dates back to the
    +# introduction of standard time in 1895.
    +
    +
    +# southeast Australia
    +#
    +# From Paul Eggert (2007-07-23):
    +# Starting autumn 2008 Victoria, NSW, South Australia, Tasmania and the ACT
    +# end DST the first Sunday in April and start DST the first Sunday in October.
    +# http://www.theage.com.au/news/national/daylight-savings-to-span-six-months/2007/06/27/1182623966703.html
    +
    +
    +# South Australia
    +
    +# From Bradley White (1991-03-04):
    +# A recent excerpt from an Australian newspaper...
    +# ...South Australia...[has] agreed to end daylight saving
    +# at 3am tomorrow (March 3)...
    +
    +# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
    +# #   The state of SOUTH AUSTRALIA....[ Courtesy of S.A. Dept of Labour ]
    +# #						[ Nov 1990 ]
    +# ...
    +# Zone	Australia/South		9:30	AS	%sST
    +# ...
    +# Rule	 AS	1971	max	-	Oct	lastSun	2:00	1:00	D
    +# Rule	 AS	1972	1985	-	Mar	Sun>=1	3:00	0	C
    +# Rule	 AS	1986	1990	-	Mar	Sun>=15	3:00	0	C
    +# Rule	 AS	1991	max	-	Mar	Sun>=1	3:00	0	C
    +
    +# From Bradley White (1992-03-11):
    +# Recent correspondence with a friend in Adelaide
    +# contained the following exchange:  "Due to the Adelaide Festival,
    +# South Australia delays setting back our clocks for a few weeks."
    +
    +# From Robert Elz (1992-03-13):
    +# I heard that apparently (or at least, it appears that)
    +# South Aus will have an extra 3 weeks daylight saving every even
    +# numbered year (from 1990).  That's when the Adelaide Festival
    +# is on...
    +
    +# From Robert Elz (1992-03-16, 00:57:07 +1000):
    +# DST didn't end in Adelaide today (yesterday)....
    +# But whether it's "4th Sunday" or "2nd last Sunday" I have no idea whatever...
    +# (it's just as likely to be "the Sunday we pick for this year"...).
    +
    +# From Bradley White (1994-04-11):
    +# If Sun, 15 March, 1992 was at +1030 as kre asserts, but yet Sun, 20 March,
    +# 1994 was at +0930 as John Connolly's customer seems to assert, then I can
    +# only conclude that the actual rule is more complicated....
    +
    +# From John Warburton (1994-10-07):
    +# The new Daylight Savings dates for South Australia ...
    +# was gazetted in the Government Hansard on Sep 26 1994....
    +# start on last Sunday in October and end in last sunday in March.
    +
    +# From Paul Eggert (2007-07-23):
    +# See "southeast Australia" above for 2008 and later.
    +
    +# Tasmania
    +
    +# The rules for 1967 through 1991 were reported by George Shepherd
    +# via Simon Woodhead via Robert Elz (1991-03-06):
    +# #  The state of TASMANIA.. [Courtesy Tasmanian Dept of Premier + Cabinet ]
    +# #					[ Nov 1990 ]
    +
    +# From Bill Hart via Guy Harris (1991-10-10):
    +# Oh yes, the new daylight savings rules are uniquely tasmanian, we have
    +# 6 weeks a year now when we are out of sync with the rest of Australia
    +# (but nothing new about that).
    +
    +# From Alex Livingston (1999-10-04):
    +# I heard on the ABC (Australian Broadcasting Corporation) radio news on the
    +# (long) weekend that Tasmania, which usually goes its own way in this regard,
    +# has decided to join with most of NSW, the ACT, and most of Victoria
    +# (Australia) and start daylight saving on the last Sunday in August in 2000
    +# instead of the first Sunday in October.
    +
    +# Sim Alam (2000-07-03) reported a legal citation for the 2000/2001 rules:
    +# http://www.thelaw.tas.gov.au/fragview/42++1968+GS3A@EN+2000070300
    +
    +# From Paul Eggert (2007-07-23):
    +# See "southeast Australia" above for 2008 and later.
    +
    +# Victoria
    +
    +# The rules for 1971 through 1991 were reported by George Shepherd
    +# via Simon Woodhead via Robert Elz (1991-03-06):
    +# #   The state of VICTORIA.. [ Courtesy of Vic. Dept of Premier + Cabinet ]
    +# #						[ Nov 1990 ]
    +
    +# From Scott Harrington (2001-08-29):
    +# On KQED's "City Arts and Lectures" program last night I heard an
    +# interesting story about daylight savings time.  Dr. John Heilbron was
    +# discussing his book "The Sun in the Church: Cathedrals as Solar
    +# Observatories"[1], and in particular the Shrine of Remembrance[2] located
    +# in Melbourne, Australia.
    +#
    +# Apparently the shrine's main purpose is a beam of sunlight which
    +# illuminates a special spot on the floor at the 11th hour of the 11th day
    +# of the 11th month (Remembrance Day) every year in memory of Australia's
    +# fallen WWI soldiers.  And if you go there on Nov. 11, at 11am local time,
    +# you will indeed see the sunbeam illuminate the special spot at the
    +# expected time.
    +#
    +# However, that is only because of some special mirror contraption that had
    +# to be employed, since due to daylight savings time, the true solar time of
    +# the remembrance moment occurs one hour later (or earlier?).  Perhaps
    +# someone with more information on this jury-rig can tell us more.
    +#
    +# [1] http://www.hup.harvard.edu/catalog/HEISUN.html
    +# [2] http://www.shrine.org.au
    +
    +# From Paul Eggert (2007-07-23):
    +# See "southeast Australia" above for 2008 and later.
    +
    +# New South Wales
    +
    +# From Arthur David Olson:
    +# New South Wales and subjurisdictions have their own ideas of a fun time.
    +# Based on law library research by John Mackin,
    +# who notes:
    +#	In Australia, time is not legislated federally, but rather by the
    +#	individual states.  Thus, while such terms as ``Eastern Standard Time''
    +#	[I mean, of course, Australian EST, not any other kind] are in common
    +#	use, _they have NO REAL MEANING_, as they are not defined in the
    +#	legislation.  This is very important to understand.
    +#	I have researched New South Wales time only...
    +
    +# From Eric Ulevik (1999-05-26):
    +# DST will start in NSW on the last Sunday of August, rather than the usual
    +# October in 2000.  [See: Matthew Moore,
    +# 
    +# Two months more daylight saving
    +# 
    +# Sydney Morning Herald (1999-05-26).]
    +
    +# From Paul Eggert (1999-09-27):
    +# See the following official NSW source:
    +# 
    +# Daylight Saving in New South Wales.
    +# 
    +#
    +# Narrabri Shire (NSW) council has announced it will ignore the extension of
    +# daylight saving next year.  See:
    +# 
    +# Narrabri Council to ignore daylight saving
    +#  (1999-07-22).  For now, we'll wait to see if this really happens.
    +#
    +# Victoria will following NSW.  See:
    +# 
    +# Vic to extend daylight saving
    +#  (1999-07-28).
    +#
    +# However, South Australia rejected the DST request.  See:
    +# 
    +# South Australia rejects Olympics daylight savings request
    +#  (1999-07-19).
    +#
    +# Queensland also will not observe DST for the Olympics.  See:
    +# 
    +# Qld says no to daylight savings for Olympics
    +#  (1999-06-01), which quotes Queensland Premier Peter Beattie as saying
    +# ``Look you've got to remember in my family when this came up last time
    +# I voted for it, my wife voted against it and she said to me it's all very
    +# well for you, you don't have to worry about getting the children out of
    +# bed, getting them to school, getting them to sleep at night.
    +# I've been through all this argument domestically...my wife rules.''
    +#
    +# Broken Hill will stick with South Australian time in 2000.  See:
    +# 
    +# Broken Hill to be behind the times
    +#  (1999-07-21).
    +
    +# IATA SSIM (1998-09) says that the spring 2000 change for Australian
    +# Capital Territory, New South Wales except Lord Howe Island and Broken
    +# Hill, and Victoria will be August 27, presumably due to the Sydney Olympics.
    +
    +# From Eric Ulevik, referring to Sydney's Sun Herald (2000-08-13), page 29:
    +# The Queensland Premier Peter Beattie is encouraging northern NSW
    +# towns to use Queensland time.
    +
    +# From Paul Eggert (2007-07-23):
    +# See "southeast Australia" above for 2008 and later.
    +
    +# Yancowinna
    +
    +# From John Mackin (1989-01-04):
    +# `Broken Hill' means the County of Yancowinna.
    +
    +# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
    +# # YANCOWINNA..  [ Confirmation courtesy of Broken Hill Postmaster ]
    +# #					[ Dec 1990 ]
    +# ...
    +# # Yancowinna uses Central Standard Time, despite [its] location on the
    +# # New South Wales side of the S.A. border. Most business and social dealings
    +# # are with CST zones, therefore CST is legislated by local government
    +# # although the switch to Summer Time occurs in line with N.S.W. There have
    +# # been years when this did not apply, but the historical data is not
    +# # presently available.
    +# Zone	Australia/Yancowinna	9:30	 AY	%sST
    +# ...
    +# Rule	 AY	1971	1985	-	Oct	lastSun	2:00	1:00	D
    +# Rule	 AY	1972	only	-	Feb	lastSun	3:00	0	C
    +# [followed by other Rules]
    +
    +# Lord Howe Island
    +
    +# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
    +# LHI...		[ Courtesy of Pauline Van Winsen ]
    +#					[ Dec 1990 ]
    +# Lord Howe Island is located off the New South Wales coast, and is half an
    +# hour ahead of NSW time.
    +
    +# From James Lonergan, Secretary, Lord Howe Island Board (2000-01-27):
    +# Lord Howe Island summer time in 2000/2001 will commence on the same
    +# date as the rest of NSW (i.e. 2000-08-27).  For your information the
    +# Lord Howe Island Board (controlling authority for the Island) is
    +# seeking the community's views on various options for summer time
    +# arrangements on the Island, e.g. advance clocks by 1 full hour
    +# instead of only 30 minutes.  [Dependent] on the wishes of residents
    +# the Board may approach the NSW government to change the existing
    +# arrangements.  The starting date for summer time on the Island will
    +# however always coincide with the rest of NSW.
    +
    +# From James Lonergan, Secretary, Lord Howe Island Board (2000-10-25):
    +# Lord Howe Island advances clocks by 30 minutes during DST in NSW and retards
    +# clocks by 30 minutes when DST finishes. Since DST was most recently
    +# introduced in NSW, the "changeover" time on the Island has been 02:00 as
    +# shown on clocks on LHI. I guess this means that for 30 minutes at the start
    +# of DST, LHI is actually 1 hour ahead of the rest of NSW.
    +
    +# From Paul Eggert (2006-03-22):
    +# For Lord Howe dates we use Shanks & Pottenger through 1989, and
    +# Lonergan thereafter.  For times we use Lonergan.
    +
    +# From Paul Eggert (2007-07-23):
    +# See "southeast Australia" above for 2008 and later.
    +
    +# From Steffen Thorsen (2009-04-28):
    +# According to the official press release, South Australia's extended daylight
    +# saving period will continue with the same rules as used during the 2008-2009
    +# summer (southern hemisphere).
    +#
    +# From
    +# 
    +# http://www.safework.sa.gov.au/uploaded_files/DaylightDatesSet.pdf
    +# 
    +# The extended daylight saving period that South Australia has been trialling
    +# for over the last year is now set to be ongoing.
    +# Daylight saving will continue to start on the first Sunday in October each
    +# year and finish on the first Sunday in April the following year.
    +# Industrial Relations Minister, Paul Caica, says this provides South Australia
    +# with a consistent half hour time difference with NSW, Victoria, Tasmania and
    +# the ACT for all 52 weeks of the year...
    +#
    +# We have a wrap-up here:
    +# 
    +# http://www.timeanddate.com/news/time/south-australia-extends-dst.html
    +# 
    +###############################################################################
    +
    +# New Zealand
    +
    +# From Mark Davies (1990-10-03):
    +# the 1989/90 year was a trial of an extended "daylight saving" period.
    +# This trial was deemed successful and the extended period adopted for
    +# subsequent years (with the addition of a further week at the start).
    +# source -- phone call to Ministry of Internal Affairs Head Office.
    +
    +# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
    +# # The Country of New Zealand   (Australia's east island -) Gee they hate that!
    +# #				   or is Australia the west island of N.Z.
    +# #	[ courtesy of Geoff Tribble.. Auckland N.Z. ]
    +# #				[ Nov 1990 ]
    +# ...
    +# Rule	NZ      1974    1988	-	Oct	lastSun	2:00	1:00	D
    +# Rule	NZ	1989	max	-	Oct	Sun>=1	2:00	1:00	D
    +# Rule	NZ      1975    1989	-	Mar	Sun>=1	3:00	0	S
    +# Rule	NZ	1990	max	-	Mar	lastSun	3:00	0	S
    +# ...
    +# Zone	NZ			12:00	NZ		NZ%sT	# New Zealand
    +# Zone	NZ-CHAT			12:45	-		NZ-CHAT # Chatham Island
    +
    +# From Arthur David Olson (1992-03-08):
    +# The chosen rules use the Davies October 8 values for the start of DST in 1989
    +# rather than the October 1 value.
    +
    +# From Paul Eggert (1995-12-19);
    +# Shank & Pottenger report 2:00 for all autumn changes in Australia and NZ.
    +# Robert Uzgalis writes that the New Zealand Daylight
    +# Savings Time Order in Council dated 1990-06-18 specifies 2:00 standard
    +# time on both the first Sunday in October and the third Sunday in March.
    +# As with Australia, we'll assume the tradition is 2:00s, not 2:00.
    +#
    +# From Paul Eggert (2006-03-22):
    +# The Department of Internal Affairs (DIA) maintains a brief history,
    +# as does Carol Squires; see tz-link.htm for the full references.
    +# Use these sources in preference to Shanks & Pottenger.
    +#
    +# For Chatham, IATA SSIM (1991/1999) gives the NZ rules but with
    +# transitions at 2:45 local standard time; this confirms that Chatham
    +# is always exactly 45 minutes ahead of Auckland.
    +
    +# From Colin Sharples (2007-04-30):
    +# DST will now start on the last Sunday in September, and end on the
    +# first Sunday in April.  The changes take effect this year, meaning
    +# that DST will begin on 2007-09-30 2008-04-06.
    +# http://www.dia.govt.nz/diawebsite.nsf/wpg_URL/Services-Daylight-Saving-Daylight-saving-to-be-extended
    +
    +###############################################################################
    +
    +
    +# Fiji
    +
    +# Howse writes (p 153) that in 1879 the British governor of Fiji
    +# enacted an ordinance standardizing the islands on Antipodean Time
    +# instead of the American system (which was one day behind).
    +
    +# From Rives McDow (1998-10-08):
    +# Fiji will introduce DST effective 0200 local time, 1998-11-01
    +# until 0300 local time 1999-02-28.  Each year the DST period will
    +# be from the first Sunday in November until the last Sunday in February.
    +
    +# From Paul Eggert (2000-01-08):
    +# IATA SSIM (1999-09) says DST ends 0100 local time.  Go with McDow.
    +
    +# From the BBC World Service (1998-10-31 11:32 UTC):
    +# The Fijiian government says the main reasons for the time change is to
    +# improve productivity and reduce road accidents.  But correspondents say it
    +# also hopes the move will boost Fiji's ability to compete with other pacific
    +# islands in the effort to attract tourists to witness the dawning of the new
    +# millenium.
    +
    +# http://www.fiji.gov.fj/press/2000_09/2000_09_13-05.shtml (2000-09-13)
    +# reports that Fiji has discontinued DST.
    +
    +# Johnston
    +
    +# Johnston data is from usno1995.
    +
    +
    +# Kiribati
    +
    +# From Paul Eggert (1996-01-22):
    +# Today's _Wall Street Journal_ (page 1) reports that Kiribati
    +# ``declared it the same day [throughout] the country as of Jan. 1, 1995''
    +# as part of the competition to be first into the 21st century.
    +
    +
    +# Kwajalein
    +
    +# In comp.risks 14.87 (26 August 1993), Peter Neumann writes:
    +# I wonder what happened in Kwajalein, where there was NO Friday,
    +# 1993-08-20.  Thursday night at midnight Kwajalein switched sides with
    +# respect to the International Date Line, to rejoin its fellow islands,
    +# going from 11:59 p.m. Thursday to 12:00 m. Saturday in a blink.
    +
    +
    +# N Mariana Is, Guam
    +
    +# Howse writes (p 153) ``The Spaniards, on the other hand, reached the
    +# Philippines and the Ladrones from America,'' and implies that the Ladrones
    +# (now called the Marianas) kept American date for quite some time.
    +# For now, we assume the Ladrones switched at the same time as the Philippines;
    +# see Asia/Manila.
    +
    +# US Public Law 106-564 (2000-12-23) made UTC+10 the official standard time,
    +# under the name "Chamorro Standard Time".  There is no official abbreviation,
    +# but Congressman Robert A. Underwood, author of the bill that became law,
    +# wrote in a press release (2000-12-27) that he will seek the use of "ChST".
    +
    +
    +# Micronesia
    +
    +# Alan Eugene Davis writes (1996-03-16),
    +# ``I am certain, having lived there for the past decade, that "Truk"
    +# (now properly known as Chuuk) ... is in the time zone GMT+10.''
    +#
    +# Shanks & Pottenger write that Truk switched from UTC+10 to UTC+11
    +# on 1978-10-01; ignore this for now.
    +
    +# From Paul Eggert (1999-10-29):
    +# The Federated States of Micronesia Visitors Board writes in
    +# 
    +# The Federated States of Micronesia - Visitor Information
    +#  (1999-01-26)
    +# that Truk and Yap are UTC+10, and Ponape and Kosrae are UTC+11.
    +# We don't know when Kosrae switched from UTC+12; assume January 1 for now.
    +
    +
    +# Midway
    +
    +# From Charles T O'Connor, KMTH DJ (1956),
    +# quoted in the KTMH section of the Radio Heritage Collection
    +#  (2002-12-31):
    +# For the past two months we've been on what is known as Daylight
    +# Saving Time.  This time has put us on air at 5am in the morning,
    +# your time down there in New Zealand.  Starting September 2, 1956
    +# we'll again go back to Standard Time.  This'll mean that we'll go to
    +# air at 6am your time.
    +#
    +# From Paul Eggert (2003-03-23):
    +# We don't know the date of that quote, but we'll guess they
    +# started DST on June 3.  Possibly DST was observed other years
    +# in Midway, but we have no record of it.
    +
    +
    +# Pitcairn
    +
    +# From Rives McDow (1999-11-08):
    +# A Proclamation was signed by the Governor of Pitcairn on the 27th March 1998
    +# with regard to Pitcairn Standard Time.  The Proclamation is as follows.
    +#
    +#	The local time for general purposes in the Islands shall be
    +#	Co-ordinated Universal time minus 8 hours and shall be known
    +#	as Pitcairn Standard Time.
    +#
    +# ... I have also seen Pitcairn listed as UTC minus 9 hours in several
    +# references, and can only assume that this was an error in interpretation
    +# somehow in light of this proclamation.
    +
    +# From Rives McDow (1999-11-09):
    +# The Proclamation regarding Pitcairn time came into effect on 27 April 1998
    +# ... at midnight.
    +
    +# From Howie Phelps (1999-11-10), who talked to a Pitcairner via shortwave:
    +# Betty Christian told me yesterday that their local time is the same as
    +# Pacific Standard Time. They used to be 1/2 hour different from us here in
    +# Sacramento but it was changed a couple of years ago.
    +
    +
    +# Samoa
    +
    +# Howse writes (p 153, citing p 10 of the 1883-11-18 New York Herald)
    +# that in 1879 the King of Samoa decided to change
    +# ``the date in his kingdom from the Antipodean to the American system,
    +# ordaining -- by a masterpiece of diplomatic flattery -- that
    +# the Fourth of July should be celebrated twice in that year.''
    +
    +
    +# Tonga
    +
    +# From Paul Eggert (1996-01-22):
    +# Today's _Wall Street Journal_ (p 1) reports that ``Tonga has been plotting
    +# to sneak ahead of [New Zealanders] by introducing daylight-saving time.''
    +# Since Kiribati has moved the Date Line it's not clear what Tonga will do.
    +
    +# Don Mundell writes in the 1997-02-20 Tonga Chronicle
    +# 
    +# How Tonga became `The Land where Time Begins'
    +# :
    +
    +# Until 1941 Tonga maintained a standard time 50 minutes ahead of NZST
    +# 12 hours and 20 minutes ahead of GMT.  When New Zealand adjusted its
    +# standard time in 1940s, Tonga had the choice of subtracting from its
    +# local time to come on the same standard time as New Zealand or of
    +# advancing its time to maintain the differential of 13 degrees
    +# (approximately 50 minutes ahead of New Zealand time).
    +#
    +# Because His Majesty King Taufa'ahau Tupou IV, then Crown Prince
    +# Tungi, preferred to ensure Tonga's title as the land where time
    +# begins, the Legislative Assembly approved the latter change.
    +#
    +# But some of the older, more conservative members from the outer
    +# islands objected. "If at midnight on Dec. 31, we move ahead 40
    +# minutes, as your Royal Highness wishes, what becomes of the 40
    +# minutes we have lost?"
    +#
    +# The Crown Prince, presented an unanswerable argument: "Remember that
    +# on the World Day of Prayer, you would be the first people on Earth
    +# to say your prayers in the morning."
    +
    +# From Paul Eggert (2006-03-22):
    +# Shanks & Pottenger say the transition was on 1968-10-01; go with Mundell.
    +
    +# From Eric Ulevik (1999-05-03):
    +# Tonga's director of tourism, who is also secretary of the National Millenium
    +# Committee, has a plan to get Tonga back in front.
    +# He has proposed a one-off move to tropical daylight saving for Tonga from
    +# October to March, which has won approval in principle from the Tongan
    +# Government.
    +
    +# From Steffen Thorsen (1999-09-09):
    +# * Tonga will introduce DST in November
    +#
    +# I was given this link by John Letts:
    +# 
    +# http://news.bbc.co.uk/hi/english/world/asia-pacific/newsid_424000/424764.stm
    +# 
    +#
    +# I have not been able to find exact dates for the transition in November
    +# yet. By reading this article it seems like Fiji will be 14 hours ahead
    +# of UTC as well, but as far as I know Fiji will only be 13 hours ahead
    +# (12 + 1 hour DST).
    +
    +# From Arthur David Olson (1999-09-20):
    +# According to 
    +# http://www.tongaonline.com/news/sept1799.html
    +# :
    +# "Daylight Savings Time will take effect on Oct. 2 through April 15, 2000
    +# and annually thereafter from the first Saturday in October through the
    +# third Saturday of April.  Under the system approved by Privy Council on
    +# Sept. 10, clocks must be turned ahead one hour on the opening day and
    +# set back an hour on the closing date."
    +# Alas, no indication of the time of day.
    +
    +# From Rives McDow (1999-10-06):
    +# Tonga started its Daylight Saving on Saturday morning October 2nd at 0200am.
    +# Daylight Saving ends on April 16 at 0300am which is Sunday morning.
    +
    +# From Steffen Thorsen (2000-10-31):
    +# Back in March I found a notice on the website http://www.tongaonline.com
    +# that Tonga changed back to standard time one month early, on March 19
    +# instead of the original reported date April 16. Unfortunately, the article
    +# is no longer available on the site, and I did not make a copy of the
    +# text, and I have forgotten to report it here.
    +# (Original URL was: http://www.tongaonline.com/news/march162000.htm )
    +
    +# From Rives McDow (2000-12-01):
    +# Tonga is observing DST as of 2000-11-04 and will stop on 2001-01-27.
    +
    +# From Sione Moala-Mafi (2001-09-20) via Rives McDow:
    +# At 2:00am on the first Sunday of November, the standard time in the Kingdom
    +# shall be moved forward by one hour to 3:00am.  At 2:00am on the last Sunday
    +# of January the standard time in the Kingdom shall be moved backward by one
    +# hour to 1:00am.
    +
    +# From Pulu 'Anau (2002-11-05):
    +# The law was for 3 years, supposedly to get renewed.  It wasn't.
    +
    +
    +# Wake
    +
    +# From Vernice Anderson, Personal Secretary to Philip Jessup,
    +# US Ambassador At Large (oral history interview, 1971-02-02):
    +#
    +# Saturday, the 14th [of October, 1950] -- ...  The time was all the
    +# more confusing at that point, because we had crossed the
    +# International Date Line, thus getting two Sundays.  Furthermore, we
    +# discovered that Wake Island had two hours of daylight saving time
    +# making calculation of time in Washington difficult if not almost
    +# impossible.
    +#
    +# http://www.trumanlibrary.org/wake/meeting.htm
    +
    +# From Paul Eggert (2003-03-23):
    +# We have no other report of DST in Wake Island, so omit this info for now.
    +
    +###############################################################################
    +
    +# The International Date Line
    +
    +# From Gwillim Law (2000-01-03):
    +#
    +# The International Date Line is not defined by any international standard,
    +# convention, or treaty.  Mapmakers are free to draw it as they please.
    +# Reputable mapmakers will simply ensure that every point of land appears on
    +# the correct side of the IDL, according to the date legally observed there.
    +#
    +# When Kiribati adopted a uniform date in 1995, thereby moving the Phoenix and
    +# Line Islands to the west side of the IDL (or, if you prefer, moving the IDL
    +# to the east side of the Phoenix and Line Islands), I suppose that most
    +# mapmakers redrew the IDL following the boundary of Kiribati.  Even that line
    +# has a rather arbitrary nature.  The straight-line boundaries between Pacific
    +# island nations that are shown on many maps are based on an international
    +# convention, but are not legally binding national borders.... The date is
    +# governed by the IDL; therefore, even on the high seas, there may be some
    +# places as late as fourteen hours later than UTC.  And, since the IDL is not
    +# an international standard, there are some places on the high seas where the
    +# correct date is ambiguous.
    +
    +# From Wikipedia  (2005-08-31):
    +# Before 1920, all ships kept local apparent time on the high seas by setting
    +# their clocks at night or at the morning sight so that, given the ship's
    +# speed and direction, it would be 12 o'clock when the Sun crossed the ship's
    +# meridian (12 o'clock = local apparent noon).  During 1917, at the
    +# Anglo-French Conference on Time-keeping at Sea, it was recommended that all
    +# ships, both military and civilian, should adopt hourly standard time zones
    +# on the high seas.  Whenever a ship was within the territorial waters of any
    +# nation it would use that nation's standard time.  The captain was permitted
    +# to change his ship's clocks at a time of his choice following his ship's
    +# entry into another zone time--he often chose midnight.  These zones were
    +# adopted by all major fleets between 1920 and 1925 but not by many
    +# independent merchant ships until World War II.
    +
    +# From Paul Eggert, using references suggested by Oscar van Vlijmen
    +# (2005-03-20):
    +#
    +# The American Practical Navigator (2002)
    +# 
    +# talks only about the 180-degree meridian with respect to ships in
    +# international waters; it ignores the international date line.
    diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/backward b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/backward
    new file mode 100644
    index 0000000..90477e9
    --- /dev/null
    +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/backward
    @@ -0,0 +1,117 @@
    +# 
    +# This file is in the public domain, so clarified as of
    +# 2009-05-17 by Arthur David Olson.
    +
    +# This file provides links between current names for time zones
    +# and their old names.  Many names changed in late 1993.
    +
    +Link	Africa/Asmara		Africa/Asmera
    +Link	Africa/Bamako		Africa/Timbuktu
    +Link	America/Argentina/Catamarca	America/Argentina/ComodRivadavia
    +Link	America/Adak		America/Atka
    +Link	America/Argentina/Buenos_Aires	America/Buenos_Aires
    +Link	America/Argentina/Catamarca	America/Catamarca
    +Link	America/Atikokan	America/Coral_Harbour
    +Link	America/Argentina/Cordoba	America/Cordoba
    +Link	America/Tijuana		America/Ensenada
    +Link	America/Indiana/Indianapolis	America/Fort_Wayne
    +Link	America/Indiana/Indianapolis	America/Indianapolis
    +Link	America/Argentina/Jujuy	America/Jujuy
    +Link	America/Indiana/Knox	America/Knox_IN
    +Link	America/Kentucky/Louisville	America/Louisville
    +Link	America/Argentina/Mendoza	America/Mendoza
    +Link	America/Rio_Branco	America/Porto_Acre
    +Link	America/Argentina/Cordoba	America/Rosario
    +Link	America/St_Thomas	America/Virgin
    +Link	Asia/Ashgabat		Asia/Ashkhabad
    +Link	Asia/Chongqing		Asia/Chungking
    +Link	Asia/Dhaka		Asia/Dacca
    +Link	Asia/Kathmandu		Asia/Katmandu
    +Link	Asia/Kolkata		Asia/Calcutta
    +Link	Asia/Macau		Asia/Macao
    +Link	Asia/Jerusalem		Asia/Tel_Aviv
    +Link	Asia/Ho_Chi_Minh	Asia/Saigon
    +Link	Asia/Thimphu		Asia/Thimbu
    +Link	Asia/Makassar		Asia/Ujung_Pandang
    +Link	Asia/Ulaanbaatar	Asia/Ulan_Bator
    +Link	Atlantic/Faroe		Atlantic/Faeroe
    +Link	Europe/Oslo		Atlantic/Jan_Mayen
    +Link	Australia/Sydney	Australia/ACT
    +Link	Australia/Sydney	Australia/Canberra
    +Link	Australia/Lord_Howe	Australia/LHI
    +Link	Australia/Sydney	Australia/NSW
    +Link	Australia/Darwin	Australia/North
    +Link	Australia/Brisbane	Australia/Queensland
    +Link	Australia/Adelaide	Australia/South
    +Link	Australia/Hobart	Australia/Tasmania
    +Link	Australia/Melbourne	Australia/Victoria
    +Link	Australia/Perth		Australia/West
    +Link	Australia/Broken_Hill	Australia/Yancowinna
    +Link	America/Rio_Branco	Brazil/Acre
    +Link	America/Noronha		Brazil/DeNoronha
    +Link	America/Sao_Paulo	Brazil/East
    +Link	America/Manaus		Brazil/West
    +Link	America/Halifax		Canada/Atlantic
    +Link	America/Winnipeg	Canada/Central
    +Link	America/Regina		Canada/East-Saskatchewan
    +Link	America/Toronto		Canada/Eastern
    +Link	America/Edmonton	Canada/Mountain
    +Link	America/St_Johns	Canada/Newfoundland
    +Link	America/Vancouver	Canada/Pacific
    +Link	America/Regina		Canada/Saskatchewan
    +Link	America/Whitehorse	Canada/Yukon
    +Link	America/Santiago	Chile/Continental
    +Link	Pacific/Easter		Chile/EasterIsland
    +Link	America/Havana		Cuba
    +Link	Africa/Cairo		Egypt
    +Link	Europe/Dublin		Eire
    +Link	Europe/London		Europe/Belfast
    +Link	Europe/Chisinau		Europe/Tiraspol
    +Link	Europe/London		GB
    +Link	Europe/London		GB-Eire
    +Link	Etc/GMT			GMT+0
    +Link	Etc/GMT			GMT-0
    +Link	Etc/GMT			GMT0
    +Link	Etc/GMT			Greenwich
    +Link	Asia/Hong_Kong		Hongkong
    +Link	Atlantic/Reykjavik	Iceland
    +Link	Asia/Tehran		Iran
    +Link	Asia/Jerusalem		Israel
    +Link	America/Jamaica		Jamaica
    +Link	Asia/Tokyo		Japan
    +Link	Pacific/Kwajalein	Kwajalein
    +Link	Africa/Tripoli		Libya
    +Link	America/Tijuana		Mexico/BajaNorte
    +Link	America/Mazatlan	Mexico/BajaSur
    +Link	America/Mexico_City	Mexico/General
    +Link	Pacific/Auckland	NZ
    +Link	Pacific/Chatham		NZ-CHAT
    +Link	America/Denver		Navajo
    +Link	Asia/Shanghai		PRC
    +Link	Pacific/Pago_Pago	Pacific/Samoa
    +Link	Pacific/Chuuk		Pacific/Yap
    +Link	Pacific/Chuuk		Pacific/Truk
    +Link	Pacific/Pohnpei		Pacific/Ponape
    +Link	Europe/Warsaw		Poland
    +Link	Europe/Lisbon		Portugal
    +Link	Asia/Taipei		ROC
    +Link	Asia/Seoul		ROK
    +Link	Asia/Singapore		Singapore
    +Link	Europe/Istanbul		Turkey
    +Link	Etc/UCT			UCT
    +Link	America/Anchorage	US/Alaska
    +Link	America/Adak		US/Aleutian
    +Link	America/Phoenix		US/Arizona
    +Link	America/Chicago		US/Central
    +Link	America/Indiana/Indianapolis	US/East-Indiana
    +Link	America/New_York	US/Eastern
    +Link	Pacific/Honolulu	US/Hawaii
    +Link	America/Indiana/Knox	US/Indiana-Starke
    +Link	America/Detroit		US/Michigan
    +Link	America/Denver		US/Mountain
    +Link	America/Los_Angeles	US/Pacific
    +Link	Pacific/Pago_Pago	US/Samoa
    +Link	Etc/UTC			UTC
    +Link	Etc/UTC			Universal
    +Link	Europe/Moscow		W-SU
    +Link	Etc/UTC			Zulu
    diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/etcetera b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/etcetera
    new file mode 100644
    index 0000000..f6a3b73
    --- /dev/null
    +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/etcetera
    @@ -0,0 +1,81 @@
    +# 
    +# This file is in the public domain, so clarified as of
    +# 2009-05-17 by Arthur David Olson.
    +
    +# These entries are mostly present for historical reasons, so that
    +# people in areas not otherwise covered by the tz files could "zic -l"
    +# to a time zone that was right for their area.  These days, the
    +# tz files cover almost all the inhabited world, and the only practical
    +# need now for the entries that are not on UTC are for ships at sea
    +# that cannot use POSIX TZ settings.
    +
    +Zone	Etc/GMT		0	-	GMT
    +Zone	Etc/UTC		0	-	UTC
    +Zone	Etc/UCT		0	-	UCT
    +
    +# The following link uses older naming conventions,
    +# but it belongs here, not in the file `backward',
    +# as functions like gmtime load the "GMT" file to handle leap seconds properly.
    +# We want this to work even on installations that omit the other older names.
    +Link	Etc/GMT				GMT
    +
    +Link	Etc/UTC				Etc/Universal
    +Link	Etc/UTC				Etc/Zulu
    +
    +Link	Etc/GMT				Etc/Greenwich
    +Link	Etc/GMT				Etc/GMT-0
    +Link	Etc/GMT				Etc/GMT+0
    +Link	Etc/GMT				Etc/GMT0
    +
    +# We use POSIX-style signs in the Zone names and the output abbreviations,
    +# even though this is the opposite of what many people expect.
    +# POSIX has positive signs west of Greenwich, but many people expect
    +# positive signs east of Greenwich.  For example, TZ='Etc/GMT+4' uses
    +# the abbreviation "GMT+4" and corresponds to 4 hours behind UTC
    +# (i.e. west of Greenwich) even though many people would expect it to
    +# mean 4 hours ahead of UTC (i.e. east of Greenwich).
    +#
    +# In the draft 5 of POSIX 1003.1-200x, the angle bracket notation allows for
    +# TZ='+4'; if you want time zone abbreviations conforming to
    +# ISO 8601 you can use TZ='<-0400>+4'.  Thus the commonly-expected
    +# offset is kept within the angle bracket (and is used for display)
    +# while the POSIX sign is kept outside the angle bracket (and is used
    +# for calculation).
    +#
    +# Do not use a TZ setting like TZ='GMT+4', which is four hours behind
    +# GMT but uses the completely misleading abbreviation "GMT".
    +
    +# Earlier incarnations of this package were not POSIX-compliant,
    +# and had lines such as
    +#		Zone	GMT-12		-12	-	GMT-1200
    +# We did not want things to change quietly if someone accustomed to the old
    +# way does a
    +#		zic -l GMT-12
    +# so we moved the names into the Etc subdirectory.
    +
    +Zone	Etc/GMT-14	14	-	GMT-14	# 14 hours ahead of GMT
    +Zone	Etc/GMT-13	13	-	GMT-13
    +Zone	Etc/GMT-12	12	-	GMT-12
    +Zone	Etc/GMT-11	11	-	GMT-11
    +Zone	Etc/GMT-10	10	-	GMT-10
    +Zone	Etc/GMT-9	9	-	GMT-9
    +Zone	Etc/GMT-8	8	-	GMT-8
    +Zone	Etc/GMT-7	7	-	GMT-7
    +Zone	Etc/GMT-6	6	-	GMT-6
    +Zone	Etc/GMT-5	5	-	GMT-5
    +Zone	Etc/GMT-4	4	-	GMT-4
    +Zone	Etc/GMT-3	3	-	GMT-3
    +Zone	Etc/GMT-2	2	-	GMT-2
    +Zone	Etc/GMT-1	1	-	GMT-1
    +Zone	Etc/GMT+1	-1	-	GMT+1
    +Zone	Etc/GMT+2	-2	-	GMT+2
    +Zone	Etc/GMT+3	-3	-	GMT+3
    +Zone	Etc/GMT+4	-4	-	GMT+4
    +Zone	Etc/GMT+5	-5	-	GMT+5
    +Zone	Etc/GMT+6	-6	-	GMT+6
    +Zone	Etc/GMT+7	-7	-	GMT+7
    +Zone	Etc/GMT+8	-8	-	GMT+8
    +Zone	Etc/GMT+9	-9	-	GMT+9
    +Zone	Etc/GMT+10	-10	-	GMT+10
    +Zone	Etc/GMT+11	-11	-	GMT+11
    +Zone	Etc/GMT+12	-12	-	GMT+12
    diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/europe b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/europe
    new file mode 100644
    index 0000000..9a5b001
    --- /dev/null
    +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/europe
    @@ -0,0 +1,2856 @@
    +# 
    +# This file is in the public domain, so clarified as of
    +# 2009-05-17 by Arthur David Olson.
    +
    +# This data is by no means authoritative; if you think you know better,
    +# go ahead and edit the file (and please send any changes to
    +# tz@iana.org for general use in the future).
    +
    +# From Paul Eggert (2006-03-22):
    +# A good source for time zone historical data outside the U.S. is
    +# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
    +# San Diego: ACS Publications, Inc. (2003).
    +#
    +# Gwillim Law writes that a good source
    +# for recent time zone data is the International Air Transport
    +# Association's Standard Schedules Information Manual (IATA SSIM),
    +# published semiannually.  Law sent in several helpful summaries
    +# of the IATA's data after 1990.
    +#
    +# Except where otherwise noted, Shanks & Pottenger is the source for
    +# entries through 1991, and IATA SSIM is the source for entries afterwards.
    +#
    +# Other sources occasionally used include:
    +#
    +#	Edward W. Whitman, World Time Differences,
    +#	Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated),
    +#	which I found in the UCLA library.
    +#
    +#	
    +#	William Willett, The Waste of Daylight, 19th edition
    +#	 (1914-03)
    +#
    +#	Brazil's Departamento Servico da Hora (DSH),
    +#	
    +#	History of Summer Time
    +#	 (1998-09-21, in Portuguese)
    +
    +#
    +# I invented the abbreviations marked `*' in the following table;
    +# the rest are from earlier versions of this file, or from other sources.
    +# Corrections are welcome!
    +#                   std dst  2dst
    +#                   LMT           Local Mean Time
    +#       -4:00       AST ADT       Atlantic
    +#       -3:00       WGT WGST      Western Greenland*
    +#       -1:00       EGT EGST      Eastern Greenland*
    +#        0:00       GMT BST  BDST Greenwich, British Summer
    +#        0:00       GMT IST       Greenwich, Irish Summer
    +#        0:00       WET WEST WEMT Western Europe
    +#        0:19:32.13 AMT NST       Amsterdam, Netherlands Summer (1835-1937)*
    +#        0:20       NET NEST      Netherlands (1937-1940)*
    +#        1:00       CET CEST CEMT Central Europe
    +#        1:00:14    SET           Swedish (1879-1899)*
    +#        2:00       EET EEST      Eastern Europe
    +#        3:00       MSK MSD       Moscow
    +#
    +# A reliable and entertaining source about time zones, especially in Britain,
    +# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
    +
    +# From Peter Ilieve (1994-12-04),
    +# The original six [EU members]: Belgium, France, (West) Germany, Italy,
    +# Luxembourg, the Netherlands.
    +# Plus, from 1 Jan 73: Denmark, Ireland, United Kingdom.
    +# Plus, from 1 Jan 81: Greece.
    +# Plus, from 1 Jan 86: Spain, Portugal.
    +# Plus, from 1 Jan 95: Austria, Finland, Sweden. (Norway negotiated terms for
    +# entry but in a referendum on 28 Nov 94 the people voted No by 52.2% to 47.8%
    +# on a turnout of 88.6%. This was almost the same result as Norway's previous
    +# referendum in 1972, they are the only country to have said No twice.
    +# Referendums in the other three countries voted Yes.)
    +# ...
    +# Estonia ... uses EU dates but not at 01:00 GMT, they use midnight GMT.
    +# I don't think they know yet what they will do from 1996 onwards.
    +# ...
    +# There shouldn't be any [current members who are not using EU rules].
    +# A Directive has the force of law, member states are obliged to enact
    +# national law to implement it. The only contentious issue was the
    +# different end date for the UK and Ireland, and this was always allowed
    +# in the Directive.
    +
    +
    +###############################################################################
    +
    +# Britain (United Kingdom) and Ireland (Eire)
    +
    +# From Peter Ilieve (1994-07-06):
    +#
    +# On 17 Jan 1994 the Independent, a UK quality newspaper, had a piece about
    +# historical vistas along the Thames in west London. There was a photo
    +# and a sketch map showing some of the sightlines involved. One paragraph
    +# of the text said:
    +#
    +# `An old stone obelisk marking a forgotten terrestrial meridian stands
    +# beside the river at Kew. In the 18th century, before time and longitude
    +# was standardised by the Royal Observatory in Greenwich, scholars observed
    +# this stone and the movement of stars from Kew Observatory nearby. They
    +# made their calculations and set the time for the Horse Guards and Parliament,
    +# but now the stone is obscured by scrubwood and can only be seen by walking
    +# along the towpath within a few yards of it.'
    +#
    +# I have a one inch to one mile map of London and my estimate of the stone's
    +# position is 51 deg. 28' 30" N, 0 deg. 18' 45" W. The longitude should
    +# be within about +-2". The Ordnance Survey grid reference is TQ172761.
    +#
    +# [This yields GMTOFF = -0:01:15 for London LMT in the 18th century.]
    +
    +# From Paul Eggert (1993-11-18):
    +#
    +# Howse writes that Britain was the first country to use standard time.
    +# The railways cared most about the inconsistencies of local mean time,
    +# and it was they who forced a uniform time on the country.
    +# The original idea was credited to Dr. William Hyde Wollaston (1766-1828)
    +# and was popularized by Abraham Follett Osler (1808-1903).
    +# The first railway to adopt London time was the Great Western Railway
    +# in November 1840; other railways followed suit, and by 1847 most
    +# (though not all) railways used London time.  On 1847-09-22 the
    +# Railway Clearing House, an industry standards body, recommended that GMT be
    +# adopted at all stations as soon as the General Post Office permitted it.
    +# The transition occurred on 12-01 for the L&NW, the Caledonian,
    +# and presumably other railways; the January 1848 Bradshaw's lists many
    +# railways as using GMT.  By 1855 the vast majority of public
    +# clocks in Britain were set to GMT (though some, like the great clock
    +# on Tom Tower at Christ Church, Oxford, were fitted with two minute hands,
    +# one for local time and one for GMT).  The last major holdout was the legal
    +# system, which stubbornly stuck to local time for many years, leading
    +# to oddities like polls opening at 08:13 and closing at 16:13.
    +# The legal system finally switched to GMT when the Statutes (Definition
    +# of Time) Act took effect; it received the Royal Assent on 1880-08-02.
    +#
    +# In the tables below, we condense this complicated story into a single
    +# transition date for London, namely 1847-12-01.  We don't know as much
    +# about Dublin, so we use 1880-08-02, the legal transition time.
    +
    +# From Paul Eggert (2003-09-27):
    +# Summer Time was first seriously proposed by William Willett (1857-1915),
    +# a London builder and member of the Royal Astronomical Society
    +# who circulated a pamphlet ``The Waste of Daylight'' (1907)
    +# that proposed advancing clocks 20 minutes on each of four Sundays in April,
    +# and retarding them by the same amount on four Sundays in September.
    +# A bill was drafted in 1909 and introduced in Parliament several times,
    +# but it met with ridicule and opposition, especially from farming interests.
    +# Later editions of the pamphlet proposed one-hour summer time, and
    +# it was eventually adopted as a wartime measure in 1916.
    +# See: Summer Time Arrives Early, The Times (2000-05-18).
    +# A monument to Willett was unveiled on 1927-05-21, in an open space in
    +# a 45-acre wood near Chislehurst, Kent that was purchased by popular
    +# subscription and open to the public.  On the south face of the monolith,
    +# designed by G. W. Miller, is the...William Willett Memorial Sundial,
    +# which is permanently set to Summer Time.
    +
    +# From Winston Churchill (1934-04-28):
    +# It is one of the paradoxes of history that we should owe the boon of
    +# summer time, which gives every year to the people of this country
    +# between 160 and 170 hours more daylight leisure, to a war which
    +# plunged Europe into darkness for four years, and shook the
    +# foundations of civilization throughout the world.
    +#	-- 
    +#	"A Silent Toast to William Willett", Pictorial Weekly
    +#	
    +
    +# From Paul Eggert (1996-09-03):
    +# The OED Supplement says that the English originally said ``Daylight Saving''
    +# when they were debating the adoption of DST in 1908; but by 1916 this
    +# term appears only in quotes taken from DST's opponents, whereas the
    +# proponents (who eventually won the argument) are quoted as using ``Summer''.
    +
    +# From Arthur David Olson (1989-01-19):
    +#
    +# A source at the British Information Office in New York avers that it's
    +# known as "British" Summer Time in all parts of the United Kingdom.
    +
    +# Date: 4 Jan 89 08:57:25 GMT (Wed)
    +# From: Jonathan Leffler
    +# [British Summer Time] is fixed annually by Act of Parliament.
    +# If you can predict what Parliament will do, you should be in
    +# politics making a fortune, not computing.
    +
    +# From Chris Carrier (1996-06-14):
    +# I remember reading in various wartime issues of the London Times the
    +# acronym BDST for British Double Summer Time.  Look for the published
    +# time of sunrise and sunset in The Times, when BDST was in effect, and
    +# if you find a zone reference it will say, "All times B.D.S.T."
    +
    +# From Joseph S. Myers (1999-09-02):
    +# ... some military cables (WO 219/4100 - this is a copy from the
    +# main SHAEF archives held in the US National Archives, SHAEF/5252/8/516)
    +# agree that the usage is BDST (this appears in a message dated 17 Feb 1945).
    +
    +# From Joseph S. Myers (2000-10-03):
    +# On 18th April 1941, Sir Stephen Tallents of the BBC wrote to Sir
    +# Alexander Maxwell of the Home Office asking whether there was any
    +# official designation; the reply of the 21st was that there wasn't
    +# but he couldn't think of anything better than the "Double British
    +# Summer Time" that the BBC had been using informally.
    +# http://student.cusu.cam.ac.uk/~jsm28/british-time/bbc-19410418.png
    +# http://student.cusu.cam.ac.uk/~jsm28/british-time/ho-19410421.png
    +
    +# From Sir Alexander Maxwell in the above-mentioned letter (1941-04-21):
    +# [N]o official designation has as far as I know been adopted for the time
    +# which is to be introduced in May....
    +# I cannot think of anything better than "Double British Summer Time"
    +# which could not be said to run counter to any official description.
    +
    +# From Paul Eggert (2000-10-02):
    +# Howse writes (p 157) `DBST' too, but `BDST' seems to have been common
    +# and follows the more usual convention of putting the location name first,
    +# so we use `BDST'.
    +
    +# Peter Ilieve (1998-04-19) described at length
    +# the history of summer time legislation in the United Kingdom.
    +# Since 1998 Joseph S. Myers has been updating
    +# and extending this list, which can be found in
    +# http://student.cusu.cam.ac.uk/~jsm28/british-time/
    +# 
    +# History of legal time in Britain
    +# 
    +# Rob Crowther (2012-01-04) reports that that URL no longer
    +# exists, and the article can now be found at:
    +# 
    +# http://www.polyomino.org.uk/british-time/
    +# 
    +
    +# From Joseph S. Myers (1998-01-06):
    +#
    +# The legal time in the UK outside of summer time is definitely GMT, not UTC;
    +# see Lord Tanlaw's speech
    +# 
    +# (Lords Hansard 11 June 1997 columns 964 to 976)
    +# .
    +
    +# From Paul Eggert (2006-03-22):
    +#
    +# For lack of other data, follow Shanks & Pottenger for Eire in 1940-1948.
    +#
    +# Given Ilieve and Myers's data, the following claims by Shanks & Pottenger
    +# are incorrect:
    +#     * Wales did not switch from GMT to daylight saving time until
    +#	1921 Apr 3, when they began to conform with the rest of Great Britain.
    +# Actually, Wales was identical after 1880.
    +#     * Eire had two transitions on 1916 Oct 1.
    +# It actually just had one transition.
    +#     * Northern Ireland used single daylight saving time throughout WW II.
    +# Actually, it conformed to Britain.
    +#     * GB-Eire changed standard time to 1 hour ahead of GMT on 1968-02-18.
    +# Actually, that date saw the usual switch to summer time.
    +# Standard time was not changed until 1968-10-27 (the clocks didn't change).
    +#
    +# Here is another incorrect claim by Shanks & Pottenger:
    +#     * Jersey, Guernsey, and the Isle of Man did not switch from GMT
    +#	to daylight saving time until 1921 Apr 3, when they began to
    +#	conform with Great Britain.
    +# S.R.&O. 1916, No. 382 and HO 45/10811/312364 (quoted above) say otherwise.
    +#
    +# The following claim by Shanks & Pottenger is possible though doubtful;
    +# we'll ignore it for now.
    +#     * Dublin's 1971-10-31 switch was at 02:00, even though London's was 03:00.
    +#
    +#
    +# Whitman says Dublin Mean Time was -0:25:21, which is more precise than
    +# Shanks & Pottenger.
    +# Perhaps this was Dunsink Observatory Time, as Dunsink Observatory
    +# (8 km NW of Dublin's center) seemingly was to Dublin as Greenwich was
    +# to London.  For example:
    +#
    +#   "Timeball on the ballast office is down.  Dunsink time."
    +#   -- James Joyce, Ulysses
    +
    +# From Joseph S. Myers (2005-01-26):
    +# Irish laws are available online at www.irishstatutebook.ie.  These include
    +# various relating to legal time, for example:
    +#
    +# ZZA13Y1923.html ZZA12Y1924.html ZZA8Y1925.html ZZSIV20PG1267.html
    +#
    +# ZZSI71Y1947.html ZZSI128Y1948.html ZZSI23Y1949.html ZZSI41Y1950.html
    +# ZZSI27Y1951.html ZZSI73Y1952.html
    +#
    +# ZZSI11Y1961.html ZZSI232Y1961.html ZZSI182Y1962.html
    +# ZZSI167Y1963.html ZZSI257Y1964.html ZZSI198Y1967.html
    +# ZZA23Y1968.html ZZA17Y1971.html
    +#
    +# ZZSI67Y1981.html ZZSI212Y1982.html ZZSI45Y1986.html
    +# ZZSI264Y1988.html ZZSI52Y1990.html ZZSI371Y1992.html
    +# ZZSI395Y1994.html ZZSI484Y1997.html ZZSI506Y2001.html
    +#
    +# [These are all relative to the root, e.g., the first is
    +# .]
    +#
    +# (These are those I found, but there could be more.  In any case these
    +# should allow various updates to the comments in the europe file to cover
    +# the laws applicable in Ireland.)
    +#
    +# (Note that the time in the Republic of Ireland since 1968 has been defined
    +# in terms of standard time being GMT+1 with a period of winter time when it
    +# is GMT, rather than standard time being GMT with a period of summer time
    +# being GMT+1.)
    +
    +# From Paul Eggert (1999-03-28):
    +# Clive Feather (, 1997-03-31)
    +# reports that Folkestone (Cheriton) Shuttle Terminal uses Concession Time
    +# (CT), equivalent to French civil time.
    +# Julian Hill (, 1998-09-30) reports that
    +# trains between Dollands Moor (the freight facility next door)
    +# and Frethun run in CT.
    +# My admittedly uninformed guess is that the terminal has two authorities,
    +# the French concession operators and the British civil authorities,
    +# and that the time depends on who you're talking to.
    +# If, say, the British police were called to the station for some reason,
    +# I would expect the official police report to use GMT/BST and not CET/CEST.
    +# This is a borderline case, but for now let's stick to GMT/BST.
    +
    +# From an anonymous contributor (1996-06-02):
    +# The law governing time in Ireland is under Statutory Instrument SI 395/94,
    +# which gives force to European Union 7th Council Directive # 94/21/EC.
    +# Under this directive, the Minister for Justice in Ireland makes appropriate
    +# regulations. I spoke this morning with the Secretary of the Department of
    +# Justice (tel +353 1 678 9711) who confirmed to me that the correct name is
    +# "Irish Summer Time", abbreviated to "IST".
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +# Summer Time Act, 1916
    +Rule	GB-Eire	1916	only	-	May	21	2:00s	1:00	BST
    +Rule	GB-Eire	1916	only	-	Oct	 1	2:00s	0	GMT
    +# S.R.&O. 1917, No. 358
    +Rule	GB-Eire	1917	only	-	Apr	 8	2:00s	1:00	BST
    +Rule	GB-Eire	1917	only	-	Sep	17	2:00s	0	GMT
    +# S.R.&O. 1918, No. 274
    +Rule	GB-Eire	1918	only	-	Mar	24	2:00s	1:00	BST
    +Rule	GB-Eire	1918	only	-	Sep	30	2:00s	0	GMT
    +# S.R.&O. 1919, No. 297
    +Rule	GB-Eire	1919	only	-	Mar	30	2:00s	1:00	BST
    +Rule	GB-Eire	1919	only	-	Sep	29	2:00s	0	GMT
    +# S.R.&O. 1920, No. 458
    +Rule	GB-Eire	1920	only	-	Mar	28	2:00s	1:00	BST
    +# S.R.&O. 1920, No. 1844
    +Rule	GB-Eire	1920	only	-	Oct	25	2:00s	0	GMT
    +# S.R.&O. 1921, No. 363
    +Rule	GB-Eire	1921	only	-	Apr	 3	2:00s	1:00	BST
    +Rule	GB-Eire	1921	only	-	Oct	 3	2:00s	0	GMT
    +# S.R.&O. 1922, No. 264
    +Rule	GB-Eire	1922	only	-	Mar	26	2:00s	1:00	BST
    +Rule	GB-Eire	1922	only	-	Oct	 8	2:00s	0	GMT
    +# The Summer Time Act, 1922
    +Rule	GB-Eire	1923	only	-	Apr	Sun>=16	2:00s	1:00	BST
    +Rule	GB-Eire	1923	1924	-	Sep	Sun>=16	2:00s	0	GMT
    +Rule	GB-Eire	1924	only	-	Apr	Sun>=9	2:00s	1:00	BST
    +Rule	GB-Eire	1925	1926	-	Apr	Sun>=16	2:00s	1:00	BST
    +# The Summer Time Act, 1925
    +Rule	GB-Eire	1925	1938	-	Oct	Sun>=2	2:00s	0	GMT
    +Rule	GB-Eire	1927	only	-	Apr	Sun>=9	2:00s	1:00	BST
    +Rule	GB-Eire	1928	1929	-	Apr	Sun>=16	2:00s	1:00	BST
    +Rule	GB-Eire	1930	only	-	Apr	Sun>=9	2:00s	1:00	BST
    +Rule	GB-Eire	1931	1932	-	Apr	Sun>=16	2:00s	1:00	BST
    +Rule	GB-Eire	1933	only	-	Apr	Sun>=9	2:00s	1:00	BST
    +Rule	GB-Eire	1934	only	-	Apr	Sun>=16	2:00s	1:00	BST
    +Rule	GB-Eire	1935	only	-	Apr	Sun>=9	2:00s	1:00	BST
    +Rule	GB-Eire	1936	1937	-	Apr	Sun>=16	2:00s	1:00	BST
    +Rule	GB-Eire	1938	only	-	Apr	Sun>=9	2:00s	1:00	BST
    +Rule	GB-Eire	1939	only	-	Apr	Sun>=16	2:00s	1:00	BST
    +# S.R.&O. 1939, No. 1379
    +Rule	GB-Eire	1939	only	-	Nov	Sun>=16	2:00s	0	GMT
    +# S.R.&O. 1940, No. 172 and No. 1883
    +Rule	GB-Eire	1940	only	-	Feb	Sun>=23	2:00s	1:00	BST
    +# S.R.&O. 1941, No. 476
    +Rule	GB-Eire	1941	only	-	May	Sun>=2	1:00s	2:00	BDST
    +Rule	GB-Eire	1941	1943	-	Aug	Sun>=9	1:00s	1:00	BST
    +# S.R.&O. 1942, No. 506
    +Rule	GB-Eire	1942	1944	-	Apr	Sun>=2	1:00s	2:00	BDST
    +# S.R.&O. 1944, No. 932
    +Rule	GB-Eire	1944	only	-	Sep	Sun>=16	1:00s	1:00	BST
    +# S.R.&O. 1945, No. 312
    +Rule	GB-Eire	1945	only	-	Apr	Mon>=2	1:00s	2:00	BDST
    +Rule	GB-Eire	1945	only	-	Jul	Sun>=9	1:00s	1:00	BST
    +# S.R.&O. 1945, No. 1208
    +Rule	GB-Eire	1945	1946	-	Oct	Sun>=2	2:00s	0	GMT
    +Rule	GB-Eire	1946	only	-	Apr	Sun>=9	2:00s	1:00	BST
    +# The Summer Time Act, 1947
    +Rule	GB-Eire	1947	only	-	Mar	16	2:00s	1:00	BST
    +Rule	GB-Eire	1947	only	-	Apr	13	1:00s	2:00	BDST
    +Rule	GB-Eire	1947	only	-	Aug	10	1:00s	1:00	BST
    +Rule	GB-Eire	1947	only	-	Nov	 2	2:00s	0	GMT
    +# Summer Time Order, 1948 (S.I. 1948/495)
    +Rule	GB-Eire	1948	only	-	Mar	14	2:00s	1:00	BST
    +Rule	GB-Eire	1948	only	-	Oct	31	2:00s	0	GMT
    +# Summer Time Order, 1949 (S.I. 1949/373)
    +Rule	GB-Eire	1949	only	-	Apr	 3	2:00s	1:00	BST
    +Rule	GB-Eire	1949	only	-	Oct	30	2:00s	0	GMT
    +# Summer Time Order, 1950 (S.I. 1950/518)
    +# Summer Time Order, 1951 (S.I. 1951/430)
    +# Summer Time Order, 1952 (S.I. 1952/451)
    +Rule	GB-Eire	1950	1952	-	Apr	Sun>=14	2:00s	1:00	BST
    +Rule	GB-Eire	1950	1952	-	Oct	Sun>=21	2:00s	0	GMT
    +# revert to the rules of the Summer Time Act, 1925
    +Rule	GB-Eire	1953	only	-	Apr	Sun>=16	2:00s	1:00	BST
    +Rule	GB-Eire	1953	1960	-	Oct	Sun>=2	2:00s	0	GMT
    +Rule	GB-Eire	1954	only	-	Apr	Sun>=9	2:00s	1:00	BST
    +Rule	GB-Eire	1955	1956	-	Apr	Sun>=16	2:00s	1:00	BST
    +Rule	GB-Eire	1957	only	-	Apr	Sun>=9	2:00s	1:00	BST
    +Rule	GB-Eire	1958	1959	-	Apr	Sun>=16	2:00s	1:00	BST
    +Rule	GB-Eire	1960	only	-	Apr	Sun>=9	2:00s	1:00	BST
    +# Summer Time Order, 1961 (S.I. 1961/71)
    +# Summer Time (1962) Order, 1961 (S.I. 1961/2465)
    +# Summer Time Order, 1963 (S.I. 1963/81)
    +Rule	GB-Eire	1961	1963	-	Mar	lastSun	2:00s	1:00	BST
    +Rule	GB-Eire	1961	1968	-	Oct	Sun>=23	2:00s	0	GMT
    +# Summer Time (1964) Order, 1963 (S.I. 1963/2101)
    +# Summer Time Order, 1964 (S.I. 1964/1201)
    +# Summer Time Order, 1967 (S.I. 1967/1148)
    +Rule	GB-Eire	1964	1967	-	Mar	Sun>=19	2:00s	1:00	BST
    +# Summer Time Order, 1968 (S.I. 1968/117)
    +Rule	GB-Eire	1968	only	-	Feb	18	2:00s	1:00	BST
    +# The British Standard Time Act, 1968
    +#	(no summer time)
    +# The Summer Time Act, 1972
    +Rule	GB-Eire	1972	1980	-	Mar	Sun>=16	2:00s	1:00	BST
    +Rule	GB-Eire	1972	1980	-	Oct	Sun>=23	2:00s	0	GMT
    +# Summer Time Order, 1980 (S.I. 1980/1089)
    +# Summer Time Order, 1982 (S.I. 1982/1673)
    +# Summer Time Order, 1986 (S.I. 1986/223)
    +# Summer Time Order, 1988 (S.I. 1988/931)
    +Rule	GB-Eire	1981	1995	-	Mar	lastSun	1:00u	1:00	BST
    +Rule	GB-Eire 1981	1989	-	Oct	Sun>=23	1:00u	0	GMT
    +# Summer Time Order, 1989 (S.I. 1989/985)
    +# Summer Time Order, 1992 (S.I. 1992/1729)
    +# Summer Time Order 1994 (S.I. 1994/2798)
    +Rule	GB-Eire 1990	1995	-	Oct	Sun>=22	1:00u	0	GMT
    +# Summer Time Order 1997 (S.I. 1997/2982)
    +# See EU for rules starting in 1996.
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/London	-0:01:15 -	LMT	1847 Dec  1 0:00s
    +			 0:00	GB-Eire	%s	1968 Oct 27
    +			 1:00	-	BST	1971 Oct 31 2:00u
    +			 0:00	GB-Eire	%s	1996
    +			 0:00	EU	GMT/BST
    +Link	Europe/London	Europe/Jersey
    +Link	Europe/London	Europe/Guernsey
    +Link	Europe/London	Europe/Isle_of_Man
    +Zone	Europe/Dublin	-0:25:00 -	LMT	1880 Aug  2
    +			-0:25:21 -	DMT	1916 May 21 2:00
    +			-0:25:21 1:00	IST	1916 Oct  1 2:00s
    +			 0:00	GB-Eire	%s	1921 Dec  6 # independence
    +			 0:00	GB-Eire	GMT/IST	1940 Feb 25 2:00
    +			 0:00	1:00	IST	1946 Oct  6 2:00
    +			 0:00	-	GMT	1947 Mar 16 2:00
    +			 0:00	1:00	IST	1947 Nov  2 2:00
    +			 0:00	-	GMT	1948 Apr 18 2:00
    +			 0:00	GB-Eire	GMT/IST	1968 Oct 27
    +			 1:00	-	IST	1971 Oct 31 2:00u
    +			 0:00	GB-Eire	GMT/IST	1996
    +			 0:00	EU	GMT/IST
    +
    +###############################################################################
    +
    +# Europe
    +
    +# EU rules are for the European Union, previously known as the EC, EEC,
    +# Common Market, etc.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	EU	1977	1980	-	Apr	Sun>=1	 1:00u	1:00	S
    +Rule	EU	1977	only	-	Sep	lastSun	 1:00u	0	-
    +Rule	EU	1978	only	-	Oct	 1	 1:00u	0	-
    +Rule	EU	1979	1995	-	Sep	lastSun	 1:00u	0	-
    +Rule	EU	1981	max	-	Mar	lastSun	 1:00u	1:00	S
    +Rule	EU	1996	max	-	Oct	lastSun	 1:00u	0	-
    +# The most recent directive covers the years starting in 2002.  See:
    +# 
    +# Directive 2000/84/EC of the European Parliament and of the Council
    +# of 19 January 2001 on summer-time arrangements.
    +# 
    +
    +# W-Eur differs from EU only in that W-Eur uses standard time.
    +Rule	W-Eur	1977	1980	-	Apr	Sun>=1	 1:00s	1:00	S
    +Rule	W-Eur	1977	only	-	Sep	lastSun	 1:00s	0	-
    +Rule	W-Eur	1978	only	-	Oct	 1	 1:00s	0	-
    +Rule	W-Eur	1979	1995	-	Sep	lastSun	 1:00s	0	-
    +Rule	W-Eur	1981	max	-	Mar	lastSun	 1:00s	1:00	S
    +Rule	W-Eur	1996	max	-	Oct	lastSun	 1:00s	0	-
    +
    +# Older C-Eur rules are for convenience in the tables.
    +# From 1977 on, C-Eur differs from EU only in that C-Eur uses standard time.
    +Rule	C-Eur	1916	only	-	Apr	30	23:00	1:00	S
    +Rule	C-Eur	1916	only	-	Oct	 1	 1:00	0	-
    +Rule	C-Eur	1917	1918	-	Apr	Mon>=15	 2:00s	1:00	S
    +Rule	C-Eur	1917	1918	-	Sep	Mon>=15	 2:00s	0	-
    +Rule	C-Eur	1940	only	-	Apr	 1	 2:00s	1:00	S
    +Rule	C-Eur	1942	only	-	Nov	 2	 2:00s	0	-
    +Rule	C-Eur	1943	only	-	Mar	29	 2:00s	1:00	S
    +Rule	C-Eur	1943	only	-	Oct	 4	 2:00s	0	-
    +Rule	C-Eur	1944	1945	-	Apr	Mon>=1	 2:00s	1:00	S
    +# Whitman gives 1944 Oct 7; go with Shanks & Pottenger.
    +Rule	C-Eur	1944	only	-	Oct	 2	 2:00s	0	-
    +# From Jesper Norgaard Welen (2008-07-13):
    +#
    +# I found what is probably a typo of 2:00 which should perhaps be 2:00s
    +# in the C-Eur rule from tz database version 2008d (this part was
    +# corrected in version 2008d). The circumstancial evidence is simply the
    +# tz database itself, as seen below:
    +#
    +# Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15  0:01
    +#    0:00 France WE%sT 1945 Sep 16  3:00
    +#
    +# Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15
    +#    0:00 France WE%sT 1945 Sep 16 3:00
    +#
    +# Zone Europe/Belgrade 1:22:00 - LMT 1884
    +#    1:00 1:00 CEST 1945 Sep 16  2:00s
    +#
    +# Rule France 1945 only - Sep 16  3:00 0 -
    +# Rule Belgium 1945 only - Sep 16  2:00s 0 -
    +# Rule Neth 1945 only - Sep 16 2:00s 0 -
    +#
    +# The rule line to be changed is:
    +#
    +# Rule C-Eur 1945 only - Sep 16  2:00 0 -
    +#
    +# It seems that Paris, Monaco, Rule France, Rule Belgium all agree on
    +# 2:00 standard time, e.g. 3:00 local time.  However there are no
    +# countries that use C-Eur rules in September 1945, so the only items
    +# affected are apparently these ficticious zones that translates acronyms
    +# CET and MET:
    +#
    +# Zone CET  1:00 C-Eur CE%sT
    +# Zone MET  1:00 C-Eur ME%sT
    +#
    +# It this is right then the corrected version would look like:
    +#
    +# Rule C-Eur 1945 only - Sep 16  2:00s 0 -
    +#
    +# A small step for mankind though 8-)
    +Rule	C-Eur	1945	only	-	Sep	16	 2:00s	0	-
    +Rule	C-Eur	1977	1980	-	Apr	Sun>=1	 2:00s	1:00	S
    +Rule	C-Eur	1977	only	-	Sep	lastSun	 2:00s	0	-
    +Rule	C-Eur	1978	only	-	Oct	 1	 2:00s	0	-
    +Rule	C-Eur	1979	1995	-	Sep	lastSun	 2:00s	0	-
    +Rule	C-Eur	1981	max	-	Mar	lastSun	 2:00s	1:00	S
    +Rule	C-Eur	1996	max	-	Oct	lastSun	 2:00s	0	-
    +
    +# E-Eur differs from EU only in that E-Eur switches at midnight local time.
    +Rule	E-Eur	1977	1980	-	Apr	Sun>=1	 0:00	1:00	S
    +Rule	E-Eur	1977	only	-	Sep	lastSun	 0:00	0	-
    +Rule	E-Eur	1978	only	-	Oct	 1	 0:00	0	-
    +Rule	E-Eur	1979	1995	-	Sep	lastSun	 0:00	0	-
    +Rule	E-Eur	1981	max	-	Mar	lastSun	 0:00	1:00	S
    +Rule	E-Eur	1996	max	-	Oct	lastSun	 0:00	0	-
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Russia	1917	only	-	Jul	 1	23:00	1:00	MST	# Moscow Summer Time
    +Rule	Russia	1917	only	-	Dec	28	 0:00	0	MMT	# Moscow Mean Time
    +Rule	Russia	1918	only	-	May	31	22:00	2:00	MDST	# Moscow Double Summer Time
    +Rule	Russia	1918	only	-	Sep	16	 1:00	1:00	MST
    +Rule	Russia	1919	only	-	May	31	23:00	2:00	MDST
    +Rule	Russia	1919	only	-	Jul	 1	 2:00	1:00	S
    +Rule	Russia	1919	only	-	Aug	16	 0:00	0	-
    +Rule	Russia	1921	only	-	Feb	14	23:00	1:00	S
    +Rule	Russia	1921	only	-	Mar	20	23:00	2:00	M # Midsummer
    +Rule	Russia	1921	only	-	Sep	 1	 0:00	1:00	S
    +Rule	Russia	1921	only	-	Oct	 1	 0:00	0	-
    +# Act No.925 of the Council of Ministers of the USSR (1980-10-24):
    +Rule	Russia	1981	1984	-	Apr	 1	 0:00	1:00	S
    +Rule	Russia	1981	1983	-	Oct	 1	 0:00	0	-
    +# Act No.967 of the Council of Ministers of the USSR (1984-09-13), repeated in
    +# Act No.227 of the Council of Ministers of the USSR (1989-03-14):
    +Rule	Russia	1984	1991	-	Sep	lastSun	 2:00s	0	-
    +Rule	Russia	1985	1991	-	Mar	lastSun	 2:00s	1:00	S
    +#
    +Rule	Russia	1992	only	-	Mar	lastSat	 23:00	1:00	S
    +Rule	Russia	1992	only	-	Sep	lastSat	 23:00	0	-
    +Rule	Russia	1993	2010	-	Mar	lastSun	 2:00s	1:00	S
    +Rule	Russia	1993	1995	-	Sep	lastSun	 2:00s	0	-
    +Rule	Russia	1996	2010	-	Oct	lastSun	 2:00s	0	-
    +
    +# From Alexander Krivenyshev (2011-06-14):
    +# According to Kremlin press service, Russian President Dmitry Medvedev
    +# signed a federal law "On calculation of time" on June 9, 2011.
    +# According to the law Russia is abolishing daylight saving time.
    +#
    +# Medvedev signed a law "On the Calculation of Time" (in russian):
    +# 
    +# http://bmockbe.ru/events/?ID=7583
    +# 
    +#
    +# Medvedev signed a law on the calculation of the time (in russian):
    +# 
    +# http://www.regnum.ru/news/polit/1413906.html
    +# 
    +
    +# From Arthur David Olson (2011-06-15):
    +# Take "abolishing daylight saving time" to mean that time is now considered
    +# to be standard.
    +
    +# These are for backward compatibility with older versions.
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	WET		0:00	EU	WE%sT
    +Zone	CET		1:00	C-Eur	CE%sT
    +Zone	MET		1:00	C-Eur	ME%sT
    +Zone	EET		2:00	EU	EE%sT
    +
    +# Previous editions of this database used abbreviations like MET DST
    +# for Central European Summer Time, but this didn't agree with common usage.
    +
    +# From Markus Kuhn (1996-07-12):
    +# The official German names ... are
    +#
    +#	Mitteleuropaeische Zeit (MEZ)         = UTC+01:00
    +#	Mitteleuropaeische Sommerzeit (MESZ)  = UTC+02:00
    +#
    +# as defined in the German Time Act (Gesetz ueber die Zeitbestimmung (ZeitG),
    +# 1978-07-25, Bundesgesetzblatt, Jahrgang 1978, Teil I, S. 1110-1111)....
    +# I wrote ... to the German Federal Physical-Technical Institution
    +#
    +#	Physikalisch-Technische Bundesanstalt (PTB)
    +#	Laboratorium 4.41 "Zeiteinheit"
    +#	Postfach 3345
    +#	D-38023 Braunschweig
    +#	phone: +49 531 592-0
    +#
    +# ... I received today an answer letter from Dr. Peter Hetzel, head of the PTB
    +# department for time and frequency transmission.  He explained that the
    +# PTB translates MEZ and MESZ into English as
    +#
    +#	Central European Time (CET)         = UTC+01:00
    +#	Central European Summer Time (CEST) = UTC+02:00
    +
    +
    +# Albania
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Albania	1940	only	-	Jun	16	0:00	1:00	S
    +Rule	Albania	1942	only	-	Nov	 2	3:00	0	-
    +Rule	Albania	1943	only	-	Mar	29	2:00	1:00	S
    +Rule	Albania	1943	only	-	Apr	10	3:00	0	-
    +Rule	Albania	1974	only	-	May	 4	0:00	1:00	S
    +Rule	Albania	1974	only	-	Oct	 2	0:00	0	-
    +Rule	Albania	1975	only	-	May	 1	0:00	1:00	S
    +Rule	Albania	1975	only	-	Oct	 2	0:00	0	-
    +Rule	Albania	1976	only	-	May	 2	0:00	1:00	S
    +Rule	Albania	1976	only	-	Oct	 3	0:00	0	-
    +Rule	Albania	1977	only	-	May	 8	0:00	1:00	S
    +Rule	Albania	1977	only	-	Oct	 2	0:00	0	-
    +Rule	Albania	1978	only	-	May	 6	0:00	1:00	S
    +Rule	Albania	1978	only	-	Oct	 1	0:00	0	-
    +Rule	Albania	1979	only	-	May	 5	0:00	1:00	S
    +Rule	Albania	1979	only	-	Sep	30	0:00	0	-
    +Rule	Albania	1980	only	-	May	 3	0:00	1:00	S
    +Rule	Albania	1980	only	-	Oct	 4	0:00	0	-
    +Rule	Albania	1981	only	-	Apr	26	0:00	1:00	S
    +Rule	Albania	1981	only	-	Sep	27	0:00	0	-
    +Rule	Albania	1982	only	-	May	 2	0:00	1:00	S
    +Rule	Albania	1982	only	-	Oct	 3	0:00	0	-
    +Rule	Albania	1983	only	-	Apr	18	0:00	1:00	S
    +Rule	Albania	1983	only	-	Oct	 1	0:00	0	-
    +Rule	Albania	1984	only	-	Apr	 1	0:00	1:00	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Tirane	1:19:20 -	LMT	1914
    +			1:00	-	CET	1940 Jun 16
    +			1:00	Albania	CE%sT	1984 Jul
    +			1:00	EU	CE%sT
    +
    +# Andorra
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Andorra	0:06:04 -	LMT	1901
    +			0:00	-	WET	1946 Sep 30
    +			1:00	-	CET	1985 Mar 31 2:00
    +			1:00	EU	CE%sT
    +
    +# Austria
    +
    +# From Paul Eggert (2006-03-22): Shanks & Pottenger give 1918-06-16 and
    +# 1945-11-18, but the Austrian Federal Office of Metrology and
    +# Surveying (BEV) gives 1918-09-16 and for Vienna gives the "alleged"
    +# date of 1945-04-12 with no time.  For the 1980-04-06 transition
    +# Shanks & Pottenger give 02:00, the BEV 00:00.  Go with the BEV,
    +# and guess 02:00 for 1945-04-12.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Austria	1920	only	-	Apr	 5	2:00s	1:00	S
    +Rule	Austria	1920	only	-	Sep	13	2:00s	0	-
    +Rule	Austria	1946	only	-	Apr	14	2:00s	1:00	S
    +Rule	Austria	1946	1948	-	Oct	Sun>=1	2:00s	0	-
    +Rule	Austria	1947	only	-	Apr	 6	2:00s	1:00	S
    +Rule	Austria	1948	only	-	Apr	18	2:00s	1:00	S
    +Rule	Austria	1980	only	-	Apr	 6	0:00	1:00	S
    +Rule	Austria	1980	only	-	Sep	28	0:00	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Vienna	1:05:20 -	LMT	1893 Apr
    +			1:00	C-Eur	CE%sT	1920
    +			1:00	Austria	CE%sT	1940 Apr  1 2:00s
    +			1:00	C-Eur	CE%sT	1945 Apr  2 2:00s
    +			1:00	1:00	CEST	1945 Apr 12 2:00s
    +			1:00	-	CET	1946
    +			1:00	Austria	CE%sT	1981
    +			1:00	EU	CE%sT
    +
    +# Belarus
    +# From Yauhen Kharuzhy (2011-09-16):
    +# By latest Belarus government act Europe/Minsk timezone was changed to
    +# GMT+3 without DST (was GMT+2 with DST).
    +#
    +# Sources (Russian language):
    +# 1.
    +# 
    +# http://www.belta.by/ru/all_news/society/V-Belarusi-otmenjaetsja-perexod-na-sezonnoe-vremja_i_572952.html
    +# 
    +# 2.
    +# 
    +# http://naviny.by/rubrics/society/2011/09/16/ic_articles_116_175144/
    +# 
    +# 3.
    +# 
    +# http://news.tut.by/society/250578.html
    +# 
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Minsk	1:50:16 -	LMT	1880
    +			1:50	-	MMT	1924 May 2 # Minsk Mean Time
    +			2:00	-	EET	1930 Jun 21
    +			3:00	-	MSK	1941 Jun 28
    +			1:00	C-Eur	CE%sT	1944 Jul  3
    +			3:00	Russia	MSK/MSD	1990
    +			3:00	-	MSK	1991 Mar 31 2:00s
    +			2:00	1:00	EEST	1991 Sep 29 2:00s
    +			2:00	-	EET	1992 Mar 29 0:00s
    +			2:00	1:00	EEST	1992 Sep 27 0:00s
    +			2:00	Russia	EE%sT	2011 Mar 27 2:00s
    +			3:00	-	FET # Further-eastern European Time
    +
    +# Belgium
    +#
    +# From Paul Eggert (1997-07-02):
    +# Entries from 1918 through 1991 are taken from:
    +#	Annuaire de L'Observatoire Royal de Belgique,
    +#	Avenue Circulaire, 3, B-1180 BRUXELLES, CLVIIe annee, 1991
    +#	(Imprimerie HAYEZ, s.p.r.l., Rue Fin, 4, 1080 BRUXELLES, MCMXC),
    +#	pp 8-9.
    +# LMT before 1892 was 0:17:30, according to the official journal of Belgium:
    +#	Moniteur Belge, Samedi 30 Avril 1892, N.121.
    +# Thanks to Pascal Delmoitie for these references.
    +# The 1918 rules are listed for completeness; they apply to unoccupied Belgium.
    +# Assume Brussels switched to WET in 1918 when the armistice took effect.
    +#
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Belgium	1918	only	-	Mar	 9	 0:00s	1:00	S
    +Rule	Belgium	1918	1919	-	Oct	Sat>=1	23:00s	0	-
    +Rule	Belgium	1919	only	-	Mar	 1	23:00s	1:00	S
    +Rule	Belgium	1920	only	-	Feb	14	23:00s	1:00	S
    +Rule	Belgium	1920	only	-	Oct	23	23:00s	0	-
    +Rule	Belgium	1921	only	-	Mar	14	23:00s	1:00	S
    +Rule	Belgium	1921	only	-	Oct	25	23:00s	0	-
    +Rule	Belgium	1922	only	-	Mar	25	23:00s	1:00	S
    +Rule	Belgium	1922	1927	-	Oct	Sat>=1	23:00s	0	-
    +Rule	Belgium	1923	only	-	Apr	21	23:00s	1:00	S
    +Rule	Belgium	1924	only	-	Mar	29	23:00s	1:00	S
    +Rule	Belgium	1925	only	-	Apr	 4	23:00s	1:00	S
    +# DSH writes that a royal decree of 1926-02-22 specified the Sun following 3rd
    +# Sat in Apr (except if it's Easter, in which case it's one Sunday earlier),
    +# to Sun following 1st Sat in Oct, and that a royal decree of 1928-09-15
    +# changed the transition times to 02:00 GMT.
    +Rule	Belgium	1926	only	-	Apr	17	23:00s	1:00	S
    +Rule	Belgium	1927	only	-	Apr	 9	23:00s	1:00	S
    +Rule	Belgium	1928	only	-	Apr	14	23:00s	1:00	S
    +Rule	Belgium	1928	1938	-	Oct	Sun>=2	 2:00s	0	-
    +Rule	Belgium	1929	only	-	Apr	21	 2:00s	1:00	S
    +Rule	Belgium	1930	only	-	Apr	13	 2:00s	1:00	S
    +Rule	Belgium	1931	only	-	Apr	19	 2:00s	1:00	S
    +Rule	Belgium	1932	only	-	Apr	 3	 2:00s	1:00	S
    +Rule	Belgium	1933	only	-	Mar	26	 2:00s	1:00	S
    +Rule	Belgium	1934	only	-	Apr	 8	 2:00s	1:00	S
    +Rule	Belgium	1935	only	-	Mar	31	 2:00s	1:00	S
    +Rule	Belgium	1936	only	-	Apr	19	 2:00s	1:00	S
    +Rule	Belgium	1937	only	-	Apr	 4	 2:00s	1:00	S
    +Rule	Belgium	1938	only	-	Mar	27	 2:00s	1:00	S
    +Rule	Belgium	1939	only	-	Apr	16	 2:00s	1:00	S
    +Rule	Belgium	1939	only	-	Nov	19	 2:00s	0	-
    +Rule	Belgium	1940	only	-	Feb	25	 2:00s	1:00	S
    +Rule	Belgium	1944	only	-	Sep	17	 2:00s	0	-
    +Rule	Belgium	1945	only	-	Apr	 2	 2:00s	1:00	S
    +Rule	Belgium	1945	only	-	Sep	16	 2:00s	0	-
    +Rule	Belgium	1946	only	-	May	19	 2:00s	1:00	S
    +Rule	Belgium	1946	only	-	Oct	 7	 2:00s	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Brussels	0:17:30 -	LMT	1880
    +			0:17:30	-	BMT	1892 May  1 12:00 # Brussels MT
    +			0:00	-	WET	1914 Nov  8
    +			1:00	-	CET	1916 May  1  0:00
    +			1:00	C-Eur	CE%sT	1918 Nov 11 11:00u
    +			0:00	Belgium	WE%sT	1940 May 20  2:00s
    +			1:00	C-Eur	CE%sT	1944 Sep  3
    +			1:00	Belgium	CE%sT	1977
    +			1:00	EU	CE%sT
    +
    +# Bosnia and Herzegovina
    +# see Serbia
    +
    +# Bulgaria
    +#
    +# From Plamen Simenov via Steffen Thorsen (1999-09-09):
    +# A document of Government of Bulgaria (No.94/1997) says:
    +# EET --> EETDST is in 03:00 Local time in last Sunday of March ...
    +# EETDST --> EET is in 04:00 Local time in last Sunday of October
    +#
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Bulg	1979	only	-	Mar	31	23:00	1:00	S
    +Rule	Bulg	1979	only	-	Oct	 1	 1:00	0	-
    +Rule	Bulg	1980	1982	-	Apr	Sat>=1	23:00	1:00	S
    +Rule	Bulg	1980	only	-	Sep	29	 1:00	0	-
    +Rule	Bulg	1981	only	-	Sep	27	 2:00	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Sofia	1:33:16 -	LMT	1880
    +			1:56:56	-	IMT	1894 Nov 30 # Istanbul MT?
    +			2:00	-	EET	1942 Nov  2  3:00
    +			1:00	C-Eur	CE%sT	1945
    +			1:00	-	CET	1945 Apr 2 3:00
    +			2:00	-	EET	1979 Mar 31 23:00
    +			2:00	Bulg	EE%sT	1982 Sep 26  2:00
    +			2:00	C-Eur	EE%sT	1991
    +			2:00	E-Eur	EE%sT	1997
    +			2:00	EU	EE%sT
    +
    +# Croatia
    +# see Serbia
    +
    +# Cyprus
    +# Please see the `asia' file for Asia/Nicosia.
    +
    +# Czech Republic
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Czech	1945	only	-	Apr	 8	2:00s	1:00	S
    +Rule	Czech	1945	only	-	Nov	18	2:00s	0	-
    +Rule	Czech	1946	only	-	May	 6	2:00s	1:00	S
    +Rule	Czech	1946	1949	-	Oct	Sun>=1	2:00s	0	-
    +Rule	Czech	1947	only	-	Apr	20	2:00s	1:00	S
    +Rule	Czech	1948	only	-	Apr	18	2:00s	1:00	S
    +Rule	Czech	1949	only	-	Apr	 9	2:00s	1:00	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Prague	0:57:44 -	LMT	1850
    +			0:57:44	-	PMT	1891 Oct     # Prague Mean Time
    +			1:00	C-Eur	CE%sT	1944 Sep 17 2:00s
    +			1:00	Czech	CE%sT	1979
    +			1:00	EU	CE%sT
    +
    +# Denmark, Faroe Islands, and Greenland
    +
    +# From Jesper Norgaard Welen (2005-04-26):
    +# http://www.hum.aau.dk/~poe/tid/tine/DanskTid.htm says that the law
    +# [introducing standard time] was in effect from 1894-01-01....
    +# The page http://www.retsinfo.dk/_GETDOCI_/ACCN/A18930008330-REGL
    +# confirms this, and states that the law was put forth 1893-03-29.
    +#
    +# The EU treaty with effect from 1973:
    +# http://www.retsinfo.dk/_GETDOCI_/ACCN/A19722110030-REGL
    +#
    +# This provoked a new law from 1974 to make possible summer time changes
    +# in subsequenet decrees with the law
    +# http://www.retsinfo.dk/_GETDOCI_/ACCN/A19740022330-REGL
    +#
    +# It seems however that no decree was set forward until 1980.  I have
    +# not found any decree, but in another related law, the effecting DST
    +# changes are stated explicitly to be from 1980-04-06 at 02:00 to
    +# 1980-09-28 at 02:00.  If this is true, this differs slightly from
    +# the EU rule in that DST runs to 02:00, not 03:00.  We don't know
    +# when Denmark began using the EU rule correctly, but we have only
    +# confirmation of the 1980-time, so I presume it was correct in 1981:
    +# The law is about the management of the extra hour, concerning
    +# working hours reported and effect on obligatory-rest rules (which
    +# was suspended on that night):
    +# http://www.retsinfo.dk/_GETDOCI_/ACCN/C19801120554-REGL
    +
    +# From Jesper Norgaard Welen (2005-06-11):
    +# The Herning Folkeblad (1980-09-26) reported that the night between
    +# Saturday and Sunday the clock is set back from three to two.
    +
    +# From Paul Eggert (2005-06-11):
    +# Hence the "02:00" of the 1980 law refers to standard time, not
    +# wall-clock time, and so the EU rules were in effect in 1980.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Denmark	1916	only	-	May	14	23:00	1:00	S
    +Rule	Denmark	1916	only	-	Sep	30	23:00	0	-
    +Rule	Denmark	1940	only	-	May	15	 0:00	1:00	S
    +Rule	Denmark	1945	only	-	Apr	 2	 2:00s	1:00	S
    +Rule	Denmark	1945	only	-	Aug	15	 2:00s	0	-
    +Rule	Denmark	1946	only	-	May	 1	 2:00s	1:00	S
    +Rule	Denmark	1946	only	-	Sep	 1	 2:00s	0	-
    +Rule	Denmark	1947	only	-	May	 4	 2:00s	1:00	S
    +Rule	Denmark	1947	only	-	Aug	10	 2:00s	0	-
    +Rule	Denmark	1948	only	-	May	 9	 2:00s	1:00	S
    +Rule	Denmark	1948	only	-	Aug	 8	 2:00s	0	-
    +#
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Europe/Copenhagen	 0:50:20 -	LMT	1890
    +			 0:50:20 -	CMT	1894 Jan  1 # Copenhagen MT
    +			 1:00	Denmark	CE%sT	1942 Nov  2 2:00s
    +			 1:00	C-Eur	CE%sT	1945 Apr  2 2:00
    +			 1:00	Denmark	CE%sT	1980
    +			 1:00	EU	CE%sT
    +Zone Atlantic/Faroe	-0:27:04 -	LMT	1908 Jan 11	# Torshavn
    +			 0:00	-	WET	1981
    +			 0:00	EU	WE%sT
    +#
    +# From Paul Eggert (2004-10-31):
    +# During World War II, Germany maintained secret manned weather stations in
    +# East Greenland and Franz Josef Land, but we don't know their time zones.
    +# My source for this is Wilhelm Dege's book mentioned under Svalbard.
    +#
    +# From Paul Eggert (2006-03-22):
    +# Greenland joined the EU as part of Denmark, obtained home rule on 1979-05-01,
    +# and left the EU on 1985-02-01.  It therefore should have been using EU
    +# rules at least through 1984.  Shanks & Pottenger say Scoresbysund and Godthab
    +# used C-Eur rules after 1980, but IATA SSIM (1991/1996) says they use EU
    +# rules since at least 1991.  Assume EU rules since 1980.
    +
    +# From Gwillin Law (2001-06-06), citing
    +#  (2001-03-15),
    +# and with translations corrected by Steffen Thorsen:
    +#
    +# Greenland has four local times, and the relation to UTC
    +# is according to the following time line:
    +#
    +# The military zone near Thule	UTC-4
    +# Standard Greenland time	UTC-3
    +# Scoresbysund			UTC-1
    +# Danmarkshavn			UTC
    +#
    +# In the military area near Thule and in Danmarkshavn DST will not be
    +# introduced.
    +
    +# From Rives McDow (2001-11-01):
    +#
    +# I correspond regularly with the Dansk Polarcenter, and wrote them at
    +# the time to clarify the situation in Thule.  Unfortunately, I have
    +# not heard back from them regarding my recent letter.  [But I have
    +# info from earlier correspondence.]
    +#
    +# According to the center, a very small local time zone around Thule
    +# Air Base keeps the time according to UTC-4, implementing daylight
    +# savings using North America rules, changing the time at 02:00 local time....
    +#
    +# The east coast of Greenland north of the community of Scoresbysund
    +# uses UTC in the same way as in Iceland, year round, with no dst.
    +# There are just a few stations on this coast, including the
    +# Danmarkshavn ICAO weather station mentioned in your September 29th
    +# email.  The other stations are two sledge patrol stations in
    +# Mestersvig and Daneborg, the air force base at Station Nord, and the
    +# DPC research station at Zackenberg.
    +#
    +# Scoresbysund and two small villages nearby keep time UTC-1 and use
    +# the same daylight savings time period as in West Greenland (Godthab).
    +#
    +# The rest of Greenland, including Godthab (this area, although it
    +# includes central Greenland, is known as west Greenland), keeps time
    +# UTC-3, with daylight savings methods according to European rules.
    +#
    +# It is common procedure to use UTC 0 in the wilderness of East and
    +# North Greenland, because it is mainly Icelandic aircraft operators
    +# maintaining traffic in these areas.  However, the official status of
    +# this area is that it sticks with Godthab time.  This area might be
    +# considered a dual time zone in some respects because of this.
    +
    +# From Rives McDow (2001-11-19):
    +# I heard back from someone stationed at Thule; the time change took place
    +# there at 2:00 AM.
    +
    +# From Paul Eggert (2006-03-22):
    +# From 1997 on the CIA map shows Danmarkshavn on GMT;
    +# the 1995 map as like Godthab.
    +# For lack of better info, assume they were like Godthab before 1996.
    +# startkart.no says Thule does not observe DST, but this is clearly an error,
    +# so go with Shanks & Pottenger for Thule transitions until this year.
    +# For 2007 on assume Thule will stay in sync with US DST rules.
    +#
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Thule	1991	1992	-	Mar	lastSun	2:00	1:00	D
    +Rule	Thule	1991	1992	-	Sep	lastSun	2:00	0	S
    +Rule	Thule	1993	2006	-	Apr	Sun>=1	2:00	1:00	D
    +Rule	Thule	1993	2006	-	Oct	lastSun	2:00	0	S
    +Rule	Thule	2007	max	-	Mar	Sun>=8	2:00	1:00	D
    +Rule	Thule	2007	max	-	Nov	Sun>=1	2:00	0	S
    +#
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Danmarkshavn -1:14:40 -	LMT	1916 Jul 28
    +			-3:00	-	WGT	1980 Apr  6 2:00
    +			-3:00	EU	WG%sT	1996
    +			0:00	-	GMT
    +Zone America/Scoresbysund -1:27:52 -	LMT	1916 Jul 28 # Ittoqqortoormiit
    +			-2:00	-	CGT	1980 Apr  6 2:00
    +			-2:00	C-Eur	CG%sT	1981 Mar 29
    +			-1:00	EU	EG%sT
    +Zone America/Godthab	-3:26:56 -	LMT	1916 Jul 28 # Nuuk
    +			-3:00	-	WGT	1980 Apr  6 2:00
    +			-3:00	EU	WG%sT
    +Zone America/Thule	-4:35:08 -	LMT	1916 Jul 28 # Pituffik air base
    +			-4:00	Thule	A%sT
    +
    +# Estonia
    +# From Peter Ilieve (1994-10-15):
    +# A relative in Tallinn confirms the accuracy of the data for 1989 onwards
    +# [through 1994] and gives the legal authority for it,
    +# a regulation of the Government of Estonia, No. 111 of 1989....
    +#
    +# From Peter Ilieve (1996-10-28):
    +# [IATA SSIM (1992/1996) claims that the Baltic republics switch at 01:00s,
    +# but a relative confirms that Estonia still switches at 02:00s, writing:]
    +# ``I do not [know] exactly but there are some little different
    +# (confusing) rules for International Air and Railway Transport Schedules
    +# conversion in Sunday connected with end of summer time in Estonia....
    +# A discussion is running about the summer time efficiency and effect on
    +# human physiology.  It seems that Estonia maybe will not change to
    +# summer time next spring.''
    +
    +# From Peter Ilieve (1998-11-04), heavily edited:
    +# 
    +# The 1998-09-22 Estonian time law
    +# 
    +# refers to the Eighth Directive and cites the association agreement between
    +# the EU and Estonia, ratified by the Estonian law (RT II 1995, 22--27, 120).
    +#
    +# I also asked [my relative] whether they use any standard abbreviation
    +# for their standard and summer times. He says no, they use "suveaeg"
    +# (summer time) and "talveaeg" (winter time).
    +
    +# From The Baltic Times (1999-09-09)
    +# via Steffen Thorsen:
    +# This year will mark the last time Estonia shifts to summer time,
    +# a council of the ruling coalition announced Sept. 6....
    +# But what this could mean for Estonia's chances of joining the European
    +# Union are still unclear.  In 1994, the EU declared summer time compulsory
    +# for all member states until 2001.  Brussels has yet to decide what to do
    +# after that.
    +
    +# From Mart Oruaas (2000-01-29):
    +# Regulation no. 301 (1999-10-12) obsoletes previous regulation
    +# no. 206 (1998-09-22) and thus sticks Estonia to +02:00 GMT for all
    +# the year round.  The regulation is effective 1999-11-01.
    +
    +# From Toomas Soome (2002-02-21):
    +# The Estonian government has changed once again timezone politics.
    +# Now we are using again EU rules.
    +#
    +# From Urmet Jaanes (2002-03-28):
    +# The legislative reference is Government decree No. 84 on 2002-02-21.
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Tallinn	1:39:00	-	LMT	1880
    +			1:39:00	-	TMT	1918 Feb # Tallinn Mean Time
    +			1:00	C-Eur	CE%sT	1919 Jul
    +			1:39:00	-	TMT	1921 May
    +			2:00	-	EET	1940 Aug  6
    +			3:00	-	MSK	1941 Sep 15
    +			1:00	C-Eur	CE%sT	1944 Sep 22
    +			3:00	Russia	MSK/MSD	1989 Mar 26 2:00s
    +			2:00	1:00	EEST	1989 Sep 24 2:00s
    +			2:00	C-Eur	EE%sT	1998 Sep 22
    +			2:00	EU	EE%sT	1999 Nov  1
    +			2:00	-	EET	2002 Feb 21
    +			2:00	EU	EE%sT
    +
    +# Finland
    +
    +# From Hannu Strang (1994-09-25 06:03:37 UTC):
    +# Well, here in Helsinki we're just changing from summer time to regular one,
    +# and it's supposed to change at 4am...
    +
    +# From Janne Snabb (2010-0715):
    +#
    +# I noticed that the Finland data is not accurate for years 1981 and 1982.
    +# During these two first trial years the DST adjustment was made one hour
    +# earlier than in forthcoming years. Starting 1983 the adjustment was made
    +# according to the central European standards.
    +#
    +# This is documented in Heikki Oja: Aikakirja 2007, published by The Almanac
    +# Office of University of Helsinki, ISBN 952-10-3221-9, available online (in
    +# Finnish) at
    +#
    +# 
    +# http://almanakka.helsinki.fi/aikakirja/Aikakirja2007kokonaan.pdf
    +# 
    +#
    +# Page 105 (56 in PDF version) has a handy table of all past daylight savings
    +# transitions. It is easy enough to interpret without Finnish skills.
    +#
    +# This is also confirmed by Finnish Broadcasting Company's archive at:
    +#
    +# 
    +# http://www.yle.fi/elavaarkisto/?s=s&g=1&ag=5&t=&a=3401
    +# 
    +#
    +# The news clip from 1981 says that "the time between 2 and 3 o'clock does not
    +# exist tonight."
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Finland	1942	only	-	Apr	3	0:00	1:00	S
    +Rule	Finland	1942	only	-	Oct	3	0:00	0	-
    +Rule	Finland	1981	1982	-	Mar	lastSun	2:00	1:00	S
    +Rule	Finland	1981	1982	-	Sep	lastSun	3:00	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Helsinki	1:39:52 -	LMT	1878 May 31
    +			1:39:52	-	HMT	1921 May    # Helsinki Mean Time
    +			2:00	Finland	EE%sT	1983
    +			2:00	EU	EE%sT
    +
    +# Aaland Is
    +Link	Europe/Helsinki	Europe/Mariehamn
    +
    +
    +# France
    +
    +# From Ciro Discepolo (2000-12-20):
    +#
    +# Henri Le Corre, Regimes Horaires pour le monde entier, Editions
    +# Traditionnelles - Paris 2 books, 1993
    +#
    +# Gabriel, Traite de l'heure dans le monde, Guy Tredaniel editeur,
    +# Paris, 1991
    +#
    +# Francoise Gauquelin, Problemes de l'heure resolus en astrologie,
    +# Guy tredaniel, Paris 1987
    +
    +
    +#
    +# Shank & Pottenger seem to use `24:00' ambiguously; resolve it with Whitman.
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	France	1916	only	-	Jun	14	23:00s	1:00	S
    +Rule	France	1916	1919	-	Oct	Sun>=1	23:00s	0	-
    +Rule	France	1917	only	-	Mar	24	23:00s	1:00	S
    +Rule	France	1918	only	-	Mar	 9	23:00s	1:00	S
    +Rule	France	1919	only	-	Mar	 1	23:00s	1:00	S
    +Rule	France	1920	only	-	Feb	14	23:00s	1:00	S
    +Rule	France	1920	only	-	Oct	23	23:00s	0	-
    +Rule	France	1921	only	-	Mar	14	23:00s	1:00	S
    +Rule	France	1921	only	-	Oct	25	23:00s	0	-
    +Rule	France	1922	only	-	Mar	25	23:00s	1:00	S
    +# DSH writes that a law of 1923-05-24 specified 3rd Sat in Apr at 23:00 to 1st
    +# Sat in Oct at 24:00; and that in 1930, because of Easter, the transitions
    +# were Apr 12 and Oct 5.  Go with Shanks & Pottenger.
    +Rule	France	1922	1938	-	Oct	Sat>=1	23:00s	0	-
    +Rule	France	1923	only	-	May	26	23:00s	1:00	S
    +Rule	France	1924	only	-	Mar	29	23:00s	1:00	S
    +Rule	France	1925	only	-	Apr	 4	23:00s	1:00	S
    +Rule	France	1926	only	-	Apr	17	23:00s	1:00	S
    +Rule	France	1927	only	-	Apr	 9	23:00s	1:00	S
    +Rule	France	1928	only	-	Apr	14	23:00s	1:00	S
    +Rule	France	1929	only	-	Apr	20	23:00s	1:00	S
    +Rule	France	1930	only	-	Apr	12	23:00s	1:00	S
    +Rule	France	1931	only	-	Apr	18	23:00s	1:00	S
    +Rule	France	1932	only	-	Apr	 2	23:00s	1:00	S
    +Rule	France	1933	only	-	Mar	25	23:00s	1:00	S
    +Rule	France	1934	only	-	Apr	 7	23:00s	1:00	S
    +Rule	France	1935	only	-	Mar	30	23:00s	1:00	S
    +Rule	France	1936	only	-	Apr	18	23:00s	1:00	S
    +Rule	France	1937	only	-	Apr	 3	23:00s	1:00	S
    +Rule	France	1938	only	-	Mar	26	23:00s	1:00	S
    +Rule	France	1939	only	-	Apr	15	23:00s	1:00	S
    +Rule	France	1939	only	-	Nov	18	23:00s	0	-
    +Rule	France	1940	only	-	Feb	25	 2:00	1:00	S
    +# The French rules for 1941-1944 were not used in Paris, but Shanks & Pottenger
    +# write that they were used in Monaco and in many French locations.
    +# Le Corre writes that the upper limit of the free zone was Arneguy, Orthez,
    +# Mont-de-Marsan, Bazas, Langon, Lamotte-Montravel, Marouil, La
    +# Rochefoucault, Champagne-Mouton, La Roche-Posay, La Haye-Descartes,
    +# Loches, Montrichard, Vierzon, Bourges, Moulins, Digoin,
    +# Paray-le-Monial, Montceau-les-Mines, Chalons-sur-Saone, Arbois,
    +# Dole, Morez, St-Claude, and Collonges (Haute-Savoie).
    +Rule	France	1941	only	-	May	 5	 0:00	2:00	M # Midsummer
    +# Shanks & Pottenger say this transition occurred at Oct 6 1:00,
    +# but go with Denis Excoffier (1997-12-12),
    +# who quotes the Ephemerides Astronomiques for 1998 from Bureau des Longitudes
    +# as saying 5/10/41 22hUT.
    +Rule	France	1941	only	-	Oct	 6	 0:00	1:00	S
    +Rule	France	1942	only	-	Mar	 9	 0:00	2:00	M
    +Rule	France	1942	only	-	Nov	 2	 3:00	1:00	S
    +Rule	France	1943	only	-	Mar	29	 2:00	2:00	M
    +Rule	France	1943	only	-	Oct	 4	 3:00	1:00	S
    +Rule	France	1944	only	-	Apr	 3	 2:00	2:00	M
    +Rule	France	1944	only	-	Oct	 8	 1:00	1:00	S
    +Rule	France	1945	only	-	Apr	 2	 2:00	2:00	M
    +Rule	France	1945	only	-	Sep	16	 3:00	0	-
    +# Shanks & Pottenger give Mar 28 2:00 and Sep 26 3:00;
    +# go with Excoffier's 28/3/76 0hUT and 25/9/76 23hUT.
    +Rule	France	1976	only	-	Mar	28	 1:00	1:00	S
    +Rule	France	1976	only	-	Sep	26	 1:00	0	-
    +# Shanks & Pottenger give 0:09:20 for Paris Mean Time, and Whitman 0:09:05,
    +# but Howse quotes the actual French legislation as saying 0:09:21.
    +# Go with Howse.  Howse writes that the time in France was officially based
    +# on PMT-0:09:21 until 1978-08-09, when the time base finally switched to UTC.
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Paris	0:09:21 -	LMT	1891 Mar 15  0:01
    +			0:09:21	-	PMT	1911 Mar 11  0:01  # Paris MT
    +# Shanks & Pottenger give 1940 Jun 14 0:00; go with Excoffier and Le Corre.
    +			0:00	France	WE%sT	1940 Jun 14 23:00
    +# Le Corre says Paris stuck with occupied-France time after the liberation;
    +# go with Shanks & Pottenger.
    +			1:00	C-Eur	CE%sT	1944 Aug 25
    +			0:00	France	WE%sT	1945 Sep 16  3:00
    +			1:00	France	CE%sT	1977
    +			1:00	EU	CE%sT
    +
    +# Germany
    +
    +# From Markus Kuhn (1998-09-29):
    +# The German time zone web site by the Physikalisch-Technische
    +# Bundesanstalt contains DST information back to 1916.
    +# [See tz-link.htm for the URL.]
    +
    +# From Joerg Schilling (2002-10-23):
    +# In 1945, Berlin was switched to Moscow Summer time (GMT+4) by
    +# 
    +# General [Nikolai] Bersarin.
    +
    +# From Paul Eggert (2003-03-08):
    +# 
    +# http://www.parlament-berlin.de/pds-fraktion.nsf/727459127c8b66ee8525662300459099/defc77cb784f180ac1256c2b0030274b/$FILE/bersarint.pdf
    +# 
    +# says that Bersarin issued an order to use Moscow time on May 20.
    +# However, Moscow did not observe daylight saving in 1945, so
    +# this was equivalent to CEMT (GMT+3), not GMT+4.
    +
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Germany	1946	only	-	Apr	14	2:00s	1:00	S
    +Rule	Germany	1946	only	-	Oct	 7	2:00s	0	-
    +Rule	Germany	1947	1949	-	Oct	Sun>=1	2:00s	0	-
    +# http://www.ptb.de/de/org/4/44/441/salt.htm says the following transition
    +# occurred at 3:00 MEZ, not the 2:00 MEZ given in Shanks & Pottenger.
    +# Go with the PTB.
    +Rule	Germany	1947	only	-	Apr	 6	3:00s	1:00	S
    +Rule	Germany	1947	only	-	May	11	2:00s	2:00	M
    +Rule	Germany	1947	only	-	Jun	29	3:00	1:00	S
    +Rule	Germany	1948	only	-	Apr	18	2:00s	1:00	S
    +Rule	Germany	1949	only	-	Apr	10	2:00s	1:00	S
    +
    +Rule SovietZone	1945	only	-	May	24	2:00	2:00	M # Midsummer
    +Rule SovietZone	1945	only	-	Sep	24	3:00	1:00	S
    +Rule SovietZone	1945	only	-	Nov	18	2:00s	0	-
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Berlin	0:53:28 -	LMT	1893 Apr
    +			1:00	C-Eur	CE%sT	1945 May 24 2:00
    +			1:00 SovietZone	CE%sT	1946
    +			1:00	Germany	CE%sT	1980
    +			1:00	EU	CE%sT
    +
    +# Georgia
    +# Please see the "asia" file for Asia/Tbilisi.
    +# Herodotus (Histories, IV.45) says Georgia north of the Phasis (now Rioni)
    +# is in Europe.  Our reference location Tbilisi is in the Asian part.
    +
    +# Gibraltar
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Europe/Gibraltar	-0:21:24 -	LMT	1880 Aug  2 0:00s
    +			0:00	GB-Eire	%s	1957 Apr 14 2:00
    +			1:00	-	CET	1982
    +			1:00	EU	CE%sT
    +
    +# Greece
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +# Whitman gives 1932 Jul 5 - Nov 1; go with Shanks & Pottenger.
    +Rule	Greece	1932	only	-	Jul	 7	0:00	1:00	S
    +Rule	Greece	1932	only	-	Sep	 1	0:00	0	-
    +# Whitman gives 1941 Apr 25 - ?; go with Shanks & Pottenger.
    +Rule	Greece	1941	only	-	Apr	 7	0:00	1:00	S
    +# Whitman gives 1942 Feb 2 - ?; go with Shanks & Pottenger.
    +Rule	Greece	1942	only	-	Nov	 2	3:00	0	-
    +Rule	Greece	1943	only	-	Mar	30	0:00	1:00	S
    +Rule	Greece	1943	only	-	Oct	 4	0:00	0	-
    +# Whitman gives 1944 Oct 3 - Oct 31; go with Shanks & Pottenger.
    +Rule	Greece	1952	only	-	Jul	 1	0:00	1:00	S
    +Rule	Greece	1952	only	-	Nov	 2	0:00	0	-
    +Rule	Greece	1975	only	-	Apr	12	0:00s	1:00	S
    +Rule	Greece	1975	only	-	Nov	26	0:00s	0	-
    +Rule	Greece	1976	only	-	Apr	11	2:00s	1:00	S
    +Rule	Greece	1976	only	-	Oct	10	2:00s	0	-
    +Rule	Greece	1977	1978	-	Apr	Sun>=1	2:00s	1:00	S
    +Rule	Greece	1977	only	-	Sep	26	2:00s	0	-
    +Rule	Greece	1978	only	-	Sep	24	4:00	0	-
    +Rule	Greece	1979	only	-	Apr	 1	9:00	1:00	S
    +Rule	Greece	1979	only	-	Sep	29	2:00	0	-
    +Rule	Greece	1980	only	-	Apr	 1	0:00	1:00	S
    +Rule	Greece	1980	only	-	Sep	28	0:00	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Athens	1:34:52 -	LMT	1895 Sep 14
    +			1:34:52	-	AMT	1916 Jul 28 0:01     # Athens MT
    +			2:00	Greece	EE%sT	1941 Apr 30
    +			1:00	Greece	CE%sT	1944 Apr  4
    +			2:00	Greece	EE%sT	1981
    +			# Shanks & Pottenger say it switched to C-Eur in 1981;
    +			# go with EU instead, since Greece joined it on Jan 1.
    +			2:00	EU	EE%sT
    +
    +# Hungary
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Hungary	1918	only	-	Apr	 1	 3:00	1:00	S
    +Rule	Hungary	1918	only	-	Sep	29	 3:00	0	-
    +Rule	Hungary	1919	only	-	Apr	15	 3:00	1:00	S
    +Rule	Hungary	1919	only	-	Sep	15	 3:00	0	-
    +Rule	Hungary	1920	only	-	Apr	 5	 3:00	1:00	S
    +Rule	Hungary	1920	only	-	Sep	30	 3:00	0	-
    +Rule	Hungary	1945	only	-	May	 1	23:00	1:00	S
    +Rule	Hungary	1945	only	-	Nov	 3	 0:00	0	-
    +Rule	Hungary	1946	only	-	Mar	31	 2:00s	1:00	S
    +Rule	Hungary	1946	1949	-	Oct	Sun>=1	 2:00s	0	-
    +Rule	Hungary	1947	1949	-	Apr	Sun>=4	 2:00s	1:00	S
    +Rule	Hungary	1950	only	-	Apr	17	 2:00s	1:00	S
    +Rule	Hungary	1950	only	-	Oct	23	 2:00s	0	-
    +Rule	Hungary	1954	1955	-	May	23	 0:00	1:00	S
    +Rule	Hungary	1954	1955	-	Oct	 3	 0:00	0	-
    +Rule	Hungary	1956	only	-	Jun	Sun>=1	 0:00	1:00	S
    +Rule	Hungary	1956	only	-	Sep	lastSun	 0:00	0	-
    +Rule	Hungary	1957	only	-	Jun	Sun>=1	 1:00	1:00	S
    +Rule	Hungary	1957	only	-	Sep	lastSun	 3:00	0	-
    +Rule	Hungary	1980	only	-	Apr	 6	 1:00	1:00	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Budapest	1:16:20 -	LMT	1890 Oct
    +			1:00	C-Eur	CE%sT	1918
    +			1:00	Hungary	CE%sT	1941 Apr  6  2:00
    +			1:00	C-Eur	CE%sT	1945
    +			1:00	Hungary	CE%sT	1980 Sep 28  2:00s
    +			1:00	EU	CE%sT
    +
    +# Iceland
    +#
    +# From Adam David (1993-11-06):
    +# The name of the timezone in Iceland for system / mail / news purposes is GMT.
    +#
    +# (1993-12-05):
    +# This material is paraphrased from the 1988 edition of the University of
    +# Iceland Almanak.
    +#
    +# From January 1st, 1908 the whole of Iceland was standardised at 1 hour
    +# behind GMT. Previously, local mean solar time was used in different parts
    +# of Iceland, the almanak had been based on Reykjavik mean solar time which
    +# was 1 hour and 28 minutes behind GMT.
    +#
    +# "first day of winter" referred to [below] means the first day of the 26 weeks
    +# of winter, according to the old icelandic calendar that dates back to the
    +# time the norsemen first settled Iceland.  The first day of winter is always
    +# Saturday, but is not dependent on the Julian or Gregorian calendars.
    +#
    +# (1993-12-10):
    +# I have a reference from the Oxford Icelandic-English dictionary for the
    +# beginning of winter, which ties it to the ecclesiastical calendar (and thus
    +# to the julian/gregorian calendar) over the period in question.
    +#	the winter begins on the Saturday next before St. Luke's day
    +#	(old style), or on St. Luke's day, if a Saturday.
    +# St. Luke's day ought to be traceable from ecclesiastical sources. "old style"
    +# might be a reference to the Julian calendar as opposed to Gregorian, or it
    +# might mean something else (???).
    +#
    +# From Paul Eggert (2006-03-22):
    +# The Iceland Almanak, Shanks & Pottenger, and Whitman disagree on many points.
    +# We go with the Almanak, except for one claim from Shanks & Pottenger, namely
    +# that Reykavik was 21W57 from 1837 to 1908, local mean time before that.
    +#
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Iceland	1917	1918	-	Feb	19	23:00	1:00	S
    +Rule	Iceland	1917	only	-	Oct	21	 1:00	0	-
    +Rule	Iceland	1918	only	-	Nov	16	 1:00	0	-
    +Rule	Iceland	1939	only	-	Apr	29	23:00	1:00	S
    +Rule	Iceland	1939	only	-	Nov	29	 2:00	0	-
    +Rule	Iceland	1940	only	-	Feb	25	 2:00	1:00	S
    +Rule	Iceland	1940	only	-	Nov	 3	 2:00	0	-
    +Rule	Iceland	1941	only	-	Mar	 2	 1:00s	1:00	S
    +Rule	Iceland	1941	only	-	Nov	 2	 1:00s	0	-
    +Rule	Iceland	1942	only	-	Mar	 8	 1:00s	1:00	S
    +Rule	Iceland	1942	only	-	Oct	25	 1:00s	0	-
    +# 1943-1946 - first Sunday in March until first Sunday in winter
    +Rule	Iceland	1943	1946	-	Mar	Sun>=1	 1:00s	1:00	S
    +Rule	Iceland	1943	1948	-	Oct	Sun>=22	 1:00s	0	-
    +# 1947-1967 - first Sunday in April until first Sunday in winter
    +Rule	Iceland	1947	1967	-	Apr	Sun>=1	 1:00s	1:00	S
    +# 1949 Oct transition delayed by 1 week
    +Rule	Iceland	1949	only	-	Oct	30	 1:00s	0	-
    +Rule	Iceland	1950	1966	-	Oct	Sun>=22	 1:00s	0	-
    +Rule	Iceland	1967	only	-	Oct	29	 1:00s	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Atlantic/Reykjavik	-1:27:24 -	LMT	1837
    +			-1:27:48 -	RMT	1908 # Reykjavik Mean Time?
    +			-1:00	Iceland	IS%sT	1968 Apr 7 1:00s
    +			 0:00	-	GMT
    +
    +# Italy
    +#
    +# From Paul Eggert (2001-03-06):
    +# Sicily and Sardinia each had their own time zones from 1866 to 1893,
    +# called Palermo Time (+00:53:28) and Cagliari Time (+00:36:32).
    +# During World War II, German-controlled Italy used German time.
    +# But these events all occurred before the 1970 cutoff,
    +# so record only the time in Rome.
    +#
    +# From Paul Eggert (2006-03-22):
    +# For Italian DST we have three sources: Shanks & Pottenger, Whitman, and
    +# F. Pollastri
    +# 
    +# Day-light Saving Time in Italy (2006-02-03)
    +# 
    +# (`FP' below), taken from an Italian National Electrotechnical Institute
    +# publication. When the three sources disagree, guess who's right, as follows:
    +#
    +# year	FP	Shanks&P. (S)	Whitman (W)	Go with:
    +# 1916	06-03	06-03 24:00	06-03 00:00	FP & W
    +#	09-30	09-30 24:00	09-30 01:00	FP; guess 24:00s
    +# 1917	04-01	03-31 24:00	03-31 00:00	FP & S
    +#	09-30	09-29 24:00	09-30 01:00	FP & W
    +# 1918	03-09	03-09 24:00	03-09 00:00	FP & S
    +#	10-06	10-05 24:00	10-06 01:00	FP & W
    +# 1919	03-01	03-01 24:00	03-01 00:00	FP & S
    +#	10-04	10-04 24:00	10-04 01:00	FP; guess 24:00s
    +# 1920	03-20	03-20 24:00	03-20 00:00	FP & S
    +#	09-18	09-18 24:00	10-01 01:00	FP; guess 24:00s
    +# 1944	04-02	04-03 02:00			S (see C-Eur)
    +#	09-16	10-02 03:00			FP; guess 24:00s
    +# 1945	09-14	09-16 24:00			FP; guess 24:00s
    +# 1970	05-21	05-31 00:00			S
    +#	09-20	09-27 00:00			S
    +#
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Italy	1916	only	-	Jun	 3	0:00s	1:00	S
    +Rule	Italy	1916	only	-	Oct	 1	0:00s	0	-
    +Rule	Italy	1917	only	-	Apr	 1	0:00s	1:00	S
    +Rule	Italy	1917	only	-	Sep	30	0:00s	0	-
    +Rule	Italy	1918	only	-	Mar	10	0:00s	1:00	S
    +Rule	Italy	1918	1919	-	Oct	Sun>=1	0:00s	0	-
    +Rule	Italy	1919	only	-	Mar	 2	0:00s	1:00	S
    +Rule	Italy	1920	only	-	Mar	21	0:00s	1:00	S
    +Rule	Italy	1920	only	-	Sep	19	0:00s	0	-
    +Rule	Italy	1940	only	-	Jun	15	0:00s	1:00	S
    +Rule	Italy	1944	only	-	Sep	17	0:00s	0	-
    +Rule	Italy	1945	only	-	Apr	 2	2:00	1:00	S
    +Rule	Italy	1945	only	-	Sep	15	0:00s	0	-
    +Rule	Italy	1946	only	-	Mar	17	2:00s	1:00	S
    +Rule	Italy	1946	only	-	Oct	 6	2:00s	0	-
    +Rule	Italy	1947	only	-	Mar	16	0:00s	1:00	S
    +Rule	Italy	1947	only	-	Oct	 5	0:00s	0	-
    +Rule	Italy	1948	only	-	Feb	29	2:00s	1:00	S
    +Rule	Italy	1948	only	-	Oct	 3	2:00s	0	-
    +Rule	Italy	1966	1968	-	May	Sun>=22	0:00	1:00	S
    +Rule	Italy	1966	1969	-	Sep	Sun>=22	0:00	0	-
    +Rule	Italy	1969	only	-	Jun	 1	0:00	1:00	S
    +Rule	Italy	1970	only	-	May	31	0:00	1:00	S
    +Rule	Italy	1970	only	-	Sep	lastSun	0:00	0	-
    +Rule	Italy	1971	1972	-	May	Sun>=22	0:00	1:00	S
    +Rule	Italy	1971	only	-	Sep	lastSun	1:00	0	-
    +Rule	Italy	1972	only	-	Oct	 1	0:00	0	-
    +Rule	Italy	1973	only	-	Jun	 3	0:00	1:00	S
    +Rule	Italy	1973	1974	-	Sep	lastSun	0:00	0	-
    +Rule	Italy	1974	only	-	May	26	0:00	1:00	S
    +Rule	Italy	1975	only	-	Jun	 1	0:00s	1:00	S
    +Rule	Italy	1975	1977	-	Sep	lastSun	0:00s	0	-
    +Rule	Italy	1976	only	-	May	30	0:00s	1:00	S
    +Rule	Italy	1977	1979	-	May	Sun>=22	0:00s	1:00	S
    +Rule	Italy	1978	only	-	Oct	 1	0:00s	0	-
    +Rule	Italy	1979	only	-	Sep	30	0:00s	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Rome	0:49:56 -	LMT	1866 Sep 22
    +			0:49:56	-	RMT	1893 Nov  1 0:00s # Rome Mean
    +			1:00	Italy	CE%sT	1942 Nov  2 2:00s
    +			1:00	C-Eur	CE%sT	1944 Jul
    +			1:00	Italy	CE%sT	1980
    +			1:00	EU	CE%sT
    +
    +Link	Europe/Rome	Europe/Vatican
    +Link	Europe/Rome	Europe/San_Marino
    +
    +# Latvia
    +
    +# From Liene Kanepe (1998-09-17):
    +
    +# I asked about this matter Scientific Secretary of the Institute of Astronomy
    +# of The University of Latvia Dr. paed Mr. Ilgonis Vilks. I also searched the
    +# correct data in juridical acts and I found some juridical documents about
    +# changes in the counting of time in Latvia from 1981....
    +#
    +# Act No.35 of the Council of Ministers of Latvian SSR of 1981-01-22 ...
    +# according to the Act No.925 of the Council of Ministers of USSR of 1980-10-24
    +# ...: all year round the time of 2nd time zone + 1 hour, in addition turning
    +# the hands of the clock 1 hour forward on 1 April at 00:00 (GMT 31 March 21:00)
    +# and 1 hour backward on the 1 October at 00:00 (GMT 30 September 20:00).
    +#
    +# Act No.592 of the Council of Ministers of Latvian SSR of 1984-09-24 ...
    +# according to the Act No.967 of the Council of Ministers of USSR of 1984-09-13
    +# ...: all year round the time of 2nd time zone + 1 hour, in addition turning
    +# the hands of the clock 1 hour forward on the last Sunday of March at 02:00
    +# (GMT 23:00 on the previous day) and 1 hour backward on the last Sunday of
    +# September at 03:00 (GMT 23:00 on the previous day).
    +#
    +# Act No.81 of the Council of Ministers of Latvian SSR of 1989-03-22 ...
    +# according to the Act No.227 of the Council of Ministers of USSR of 1989-03-14
    +# ...: since the last Sunday of March 1989 in Lithuanian SSR, Latvian SSR,
    +# Estonian SSR and Kaliningrad region of Russian Federation all year round the
    +# time of 2nd time zone (Moscow time minus one hour). On the territory of Latvia
    +# transition to summer time is performed on the last Sunday of March at 02:00
    +# (GMT 00:00), turning the hands of the clock 1 hour forward.  The end of
    +# daylight saving time is performed on the last Sunday of September at 03:00
    +# (GMT 00:00), turning the hands of the clock 1 hour backward. Exception is
    +# 1989-03-26, when we must not turn the hands of the clock....
    +#
    +# The Regulations of the Cabinet of Ministers of the Republic of Latvia of
    +# 1997-01-21 on transition to Summer time ... established the same order of
    +# daylight savings time settings as in the States of the European Union.
    +
    +# From Andrei Ivanov (2000-03-06):
    +# This year Latvia will not switch to Daylight Savings Time (as specified in
    +# 
    +# The Regulations of the Cabinet of Ministers of the Rep. of Latvia of
    +# 29-Feb-2000 (#79), in Latvian for subscribers only).
    +
    +# 
    +# From RFE/RL Newsline (2001-01-03), noted after a heads-up by Rives McDow:
    +# 
    +# The Latvian government on 2 January decided that the country will
    +# institute daylight-saving time this spring, LETA reported.
    +# Last February the three Baltic states decided not to turn back their
    +# clocks one hour in the spring....
    +# Minister of Economy Aigars Kalvitis noted that Latvia had too few
    +# daylight hours and thus decided to comply with a draft European
    +# Commission directive that provides for instituting daylight-saving
    +# time in EU countries between 2002 and 2006. The Latvian government
    +# urged Lithuania and Estonia to adopt a similar time policy, but it
    +# appears that they will not do so....
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Latvia	1989	1996	-	Mar	lastSun	 2:00s	1:00	S
    +Rule	Latvia	1989	1996	-	Sep	lastSun	 2:00s	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Riga	1:36:24	-	LMT	1880
    +			1:36:24	-	RMT	1918 Apr 15 2:00 #Riga Mean Time
    +			1:36:24	1:00	LST	1918 Sep 16 3:00 #Latvian Summer
    +			1:36:24	-	RMT	1919 Apr  1 2:00
    +			1:36:24	1:00	LST	1919 May 22 3:00
    +			1:36:24	-	RMT	1926 May 11
    +			2:00	-	EET	1940 Aug  5
    +			3:00	-	MSK	1941 Jul
    +			1:00	C-Eur	CE%sT	1944 Oct 13
    +			3:00	Russia	MSK/MSD	1989 Mar lastSun 2:00s
    +			2:00	1:00	EEST	1989 Sep lastSun 2:00s
    +			2:00	Latvia	EE%sT	1997 Jan 21
    +			2:00	EU	EE%sT	2000 Feb 29
    +			2:00	-	EET	2001 Jan  2
    +			2:00	EU	EE%sT
    +
    +# Liechtenstein
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Vaduz	0:38:04 -	LMT	1894 Jun
    +			1:00	-	CET	1981
    +			1:00	EU	CE%sT
    +
    +# Lithuania
    +
    +# From Paul Eggert (1996-11-22):
    +# IATA SSIM (1992/1996) says Lithuania uses W-Eur rules, but since it is
    +# known to be wrong about Estonia and Latvia, assume it's wrong here too.
    +
    +# From Marius Gedminas (1998-08-07):
    +# I would like to inform that in this year Lithuanian time zone
    +# (Europe/Vilnius) was changed.
    +
    +# From ELTA No. 972 (2582) (1999-09-29),
    +# via Steffen Thorsen:
    +# Lithuania has shifted back to the second time zone (GMT plus two hours)
    +# to be valid here starting from October 31,
    +# as decided by the national government on Wednesday....
    +# The Lithuanian government also announced plans to consider a
    +# motion to give up shifting to summer time in spring, as it was
    +# already done by Estonia.
    +
    +# From the 
    +# Fact File, Lithuanian State Department of Tourism
    +#  (2000-03-27): Local time is GMT+2 hours ..., no daylight saving.
    +
    +# From a user via Klaus Marten (2003-02-07):
    +# As a candidate for membership of the European Union, Lithuania will
    +# observe Summer Time in 2003, changing its clocks at the times laid
    +# down in EU Directive 2000/84 of 19.I.01 (i.e. at the same times as its
    +# neighbour Latvia). The text of the Lithuanian government Order of
    +# 7.XI.02 to this effect can be found at
    +# http://www.lrvk.lt/nut/11/n1749.htm
    +
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Vilnius	1:41:16	-	LMT	1880
    +			1:24:00	-	WMT	1917	    # Warsaw Mean Time
    +			1:35:36	-	KMT	1919 Oct 10 # Kaunas Mean Time
    +			1:00	-	CET	1920 Jul 12
    +			2:00	-	EET	1920 Oct  9
    +			1:00	-	CET	1940 Aug  3
    +			3:00	-	MSK	1941 Jun 24
    +			1:00	C-Eur	CE%sT	1944 Aug
    +			3:00	Russia	MSK/MSD	1991 Mar 31 2:00s
    +			2:00	1:00	EEST	1991 Sep 29 2:00s
    +			2:00	C-Eur	EE%sT	1998
    +			2:00	-	EET	1998 Mar 29 1:00u
    +			1:00	EU	CE%sT	1999 Oct 31 1:00u
    +			2:00	-	EET	2003 Jan  1
    +			2:00	EU	EE%sT
    +
    +# Luxembourg
    +# Whitman disagrees with most of these dates in minor ways;
    +# go with Shanks & Pottenger.
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Lux	1916	only	-	May	14	23:00	1:00	S
    +Rule	Lux	1916	only	-	Oct	 1	 1:00	0	-
    +Rule	Lux	1917	only	-	Apr	28	23:00	1:00	S
    +Rule	Lux	1917	only	-	Sep	17	 1:00	0	-
    +Rule	Lux	1918	only	-	Apr	Mon>=15	 2:00s	1:00	S
    +Rule	Lux	1918	only	-	Sep	Mon>=15	 2:00s	0	-
    +Rule	Lux	1919	only	-	Mar	 1	23:00	1:00	S
    +Rule	Lux	1919	only	-	Oct	 5	 3:00	0	-
    +Rule	Lux	1920	only	-	Feb	14	23:00	1:00	S
    +Rule	Lux	1920	only	-	Oct	24	 2:00	0	-
    +Rule	Lux	1921	only	-	Mar	14	23:00	1:00	S
    +Rule	Lux	1921	only	-	Oct	26	 2:00	0	-
    +Rule	Lux	1922	only	-	Mar	25	23:00	1:00	S
    +Rule	Lux	1922	only	-	Oct	Sun>=2	 1:00	0	-
    +Rule	Lux	1923	only	-	Apr	21	23:00	1:00	S
    +Rule	Lux	1923	only	-	Oct	Sun>=2	 2:00	0	-
    +Rule	Lux	1924	only	-	Mar	29	23:00	1:00	S
    +Rule	Lux	1924	1928	-	Oct	Sun>=2	 1:00	0	-
    +Rule	Lux	1925	only	-	Apr	 5	23:00	1:00	S
    +Rule	Lux	1926	only	-	Apr	17	23:00	1:00	S
    +Rule	Lux	1927	only	-	Apr	 9	23:00	1:00	S
    +Rule	Lux	1928	only	-	Apr	14	23:00	1:00	S
    +Rule	Lux	1929	only	-	Apr	20	23:00	1:00	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Europe/Luxembourg	0:24:36 -	LMT	1904 Jun
    +			1:00	Lux	CE%sT	1918 Nov 25
    +			0:00	Lux	WE%sT	1929 Oct  6 2:00s
    +			0:00	Belgium	WE%sT	1940 May 14 3:00
    +			1:00	C-Eur	WE%sT	1944 Sep 18 3:00
    +			1:00	Belgium	CE%sT	1977
    +			1:00	EU	CE%sT
    +
    +# Macedonia
    +# see Serbia
    +
    +# Malta
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Malta	1973	only	-	Mar	31	0:00s	1:00	S
    +Rule	Malta	1973	only	-	Sep	29	0:00s	0	-
    +Rule	Malta	1974	only	-	Apr	21	0:00s	1:00	S
    +Rule	Malta	1974	only	-	Sep	16	0:00s	0	-
    +Rule	Malta	1975	1979	-	Apr	Sun>=15	2:00	1:00	S
    +Rule	Malta	1975	1980	-	Sep	Sun>=15	2:00	0	-
    +Rule	Malta	1980	only	-	Mar	31	2:00	1:00	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Malta	0:58:04 -	LMT	1893 Nov  2 0:00s # Valletta
    +			1:00	Italy	CE%sT	1942 Nov  2 2:00s
    +			1:00	C-Eur	CE%sT	1945 Apr  2 2:00s
    +			1:00	Italy	CE%sT	1973 Mar 31
    +			1:00	Malta	CE%sT	1981
    +			1:00	EU	CE%sT
    +
    +# Moldova
    +
    +# From Paul Eggert (2006-03-22):
    +# A previous version of this database followed Shanks & Pottenger, who write
    +# that Tiraspol switched to Moscow time on 1992-01-19 at 02:00.
    +# However, this is most likely an error, as Moldova declared independence
    +# on 1991-08-27 (the 1992-01-19 date is that of a Russian decree).
    +# In early 1992 there was large-scale interethnic violence in the area
    +# and it's possible that some Russophones continued to observe Moscow time.
    +# But [two people] separately reported via
    +# Jesper Norgaard that as of 2001-01-24 Tiraspol was like Chisinau.
    +# The Tiraspol entry has therefore been removed for now.
    +#
    +# From Alexander Krivenyshev (2011-10-17):
    +# Pridnestrovian Moldavian Republic (PMR, also known as
    +# "Pridnestrovie") has abolished seasonal clock change (no transition
    +# to the Winter Time).
    +#
    +# News (in Russian):
    +# 
    +# http://www.kyivpost.ua/russia/news/pridnestrove-otkazalos-ot-perehoda-na-zimnee-vremya-30954.html
    +# 
    +#
    +# 
    +# http://www.allmoldova.com/moldova-news/1249064116.html
    +# 
    +#
    +# The substance of this change (reinstatement of the Tiraspol entry)
    +# is from a patch from Petr Machata (2011-10-17)
    +#
    +# From Tim Parenti (2011-10-19)
    +# In addition, being situated at +4651+2938 would give Tiraspol
    +# a pre-1880 LMT offset of 1:58:32.
    +#
    +# (which agrees with the earlier entry that had been removed)
    +#
    +# From Alexander Krivenyshev (2011-10-26)
    +# NO need to divide Moldova into two timezones at this point.
    +# As of today, Transnistria (Pridnestrovie)- Tiraspol reversed its own
    +# decision to abolish DST this winter.
    +# Following Moldova and neighboring Ukraine- Transnistria (Pridnestrovie)-
    +# Tiraspol will go back to winter time on October 30, 2011.
    +# News from Moldova (in russian):
    +# 
    +# http://ru.publika.md/link_317061.html
    +# 
    +
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Chisinau	1:55:20 -	LMT	1880
    +			1:55	-	CMT	1918 Feb 15 # Chisinau MT
    +			1:44:24	-	BMT	1931 Jul 24 # Bucharest MT
    +			2:00	Romania	EE%sT	1940 Aug 15
    +			2:00	1:00	EEST	1941 Jul 17
    +			1:00	C-Eur	CE%sT	1944 Aug 24
    +			3:00	Russia	MSK/MSD	1990
    +			3:00	-	MSK	1990 May 6
    +			2:00	-	EET	1991
    +			2:00	Russia	EE%sT	1992
    +			2:00	E-Eur	EE%sT	1997
    +# See Romania commentary for the guessed 1997 transition to EU rules.
    +			2:00	EU	EE%sT
    +
    +# Monaco
    +# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
    +# more precise 0:09:21.
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Monaco	0:29:32 -	LMT	1891 Mar 15
    +			0:09:21	-	PMT	1911 Mar 11    # Paris Mean Time
    +			0:00	France	WE%sT	1945 Sep 16 3:00
    +			1:00	France	CE%sT	1977
    +			1:00	EU	CE%sT
    +
    +# Montenegro
    +# see Serbia
    +
    +# Netherlands
    +
    +# Howse writes that the Netherlands' railways used GMT between 1892 and 1940,
    +# but for other purposes the Netherlands used Amsterdam mean time.
    +
    +# However, Robert H. van Gent writes (2001-04-01):
    +# Howse's statement is only correct up to 1909. From 1909-05-01 (00:00:00
    +# Amsterdam mean time) onwards, the whole of the Netherlands (including
    +# the Dutch railways) was required by law to observe Amsterdam mean time
    +# (19 minutes 32.13 seconds ahead of GMT). This had already been the
    +# common practice (except for the railways) for many decades but it was
    +# not until 1909 when the Dutch government finally defined this by law.
    +# On 1937-07-01 this was changed to 20 minutes (exactly) ahead of GMT and
    +# was generally known as Dutch Time ("Nederlandse Tijd").
    +#
    +# (2001-04-08):
    +# 1892-05-01 was the date when the Dutch railways were by law required to
    +# observe GMT while the remainder of the Netherlands adhered to the common
    +# practice of following Amsterdam mean time.
    +#
    +# (2001-04-09):
    +# In 1835 the authorities of the province of North Holland requested the
    +# municipal authorities of the towns and cities in the province to observe
    +# Amsterdam mean time but I do not know in how many cases this request was
    +# actually followed.
    +#
    +# From 1852 onwards the Dutch telegraph offices were by law required to
    +# observe Amsterdam mean time. As the time signals from the observatory of
    +# Leiden were also distributed by the telegraph system, I assume that most
    +# places linked up with the telegraph (and railway) system automatically
    +# adopted Amsterdam mean time.
    +#
    +# Although the early Dutch railway companies initially observed a variety
    +# of times, most of them had adopted Amsterdam mean time by 1858 but it
    +# was not until 1866 when they were all required by law to observe
    +# Amsterdam mean time.
    +
    +# The data before 1945 are taken from
    +# .
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Neth	1916	only	-	May	 1	0:00	1:00	NST	# Netherlands Summer Time
    +Rule	Neth	1916	only	-	Oct	 1	0:00	0	AMT	# Amsterdam Mean Time
    +Rule	Neth	1917	only	-	Apr	16	2:00s	1:00	NST
    +Rule	Neth	1917	only	-	Sep	17	2:00s	0	AMT
    +Rule	Neth	1918	1921	-	Apr	Mon>=1	2:00s	1:00	NST
    +Rule	Neth	1918	1921	-	Sep	lastMon	2:00s	0	AMT
    +Rule	Neth	1922	only	-	Mar	lastSun	2:00s	1:00	NST
    +Rule	Neth	1922	1936	-	Oct	Sun>=2	2:00s	0	AMT
    +Rule	Neth	1923	only	-	Jun	Fri>=1	2:00s	1:00	NST
    +Rule	Neth	1924	only	-	Mar	lastSun	2:00s	1:00	NST
    +Rule	Neth	1925	only	-	Jun	Fri>=1	2:00s	1:00	NST
    +# From 1926 through 1939 DST began 05-15, except that it was delayed by a week
    +# in years when 05-15 fell in the Pentecost weekend.
    +Rule	Neth	1926	1931	-	May	15	2:00s	1:00	NST
    +Rule	Neth	1932	only	-	May	22	2:00s	1:00	NST
    +Rule	Neth	1933	1936	-	May	15	2:00s	1:00	NST
    +Rule	Neth	1937	only	-	May	22	2:00s	1:00	NST
    +Rule	Neth	1937	only	-	Jul	 1	0:00	1:00	S
    +Rule	Neth	1937	1939	-	Oct	Sun>=2	2:00s	0	-
    +Rule	Neth	1938	1939	-	May	15	2:00s	1:00	S
    +Rule	Neth	1945	only	-	Apr	 2	2:00s	1:00	S
    +Rule	Neth	1945	only	-	Sep	16	2:00s	0	-
    +#
    +# Amsterdam Mean Time was +00:19:32.13 exactly, but the .13 is omitted
    +# below because the current format requires GMTOFF to be an integer.
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Europe/Amsterdam	0:19:32 -	LMT	1835
    +			0:19:32	Neth	%s	1937 Jul  1
    +			0:20	Neth	NE%sT	1940 May 16 0:00 # Dutch Time
    +			1:00	C-Eur	CE%sT	1945 Apr  2 2:00
    +			1:00	Neth	CE%sT	1977
    +			1:00	EU	CE%sT
    +
    +# Norway
    +# http://met.no/met/met_lex/q_u/sommertid.html (2004-01) agrees with Shanks &
    +# Pottenger.
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Norway	1916	only	-	May	22	1:00	1:00	S
    +Rule	Norway	1916	only	-	Sep	30	0:00	0	-
    +Rule	Norway	1945	only	-	Apr	 2	2:00s	1:00	S
    +Rule	Norway	1945	only	-	Oct	 1	2:00s	0	-
    +Rule	Norway	1959	1964	-	Mar	Sun>=15	2:00s	1:00	S
    +Rule	Norway	1959	1965	-	Sep	Sun>=15	2:00s	0	-
    +Rule	Norway	1965	only	-	Apr	25	2:00s	1:00	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Oslo	0:43:00 -	LMT	1895 Jan  1
    +			1:00	Norway	CE%sT	1940 Aug 10 23:00
    +			1:00	C-Eur	CE%sT	1945 Apr  2  2:00
    +			1:00	Norway	CE%sT	1980
    +			1:00	EU	CE%sT
    +
    +# Svalbard & Jan Mayen
    +
    +# From Steffen Thorsen (2001-05-01):
    +# Although I could not find it explicitly, it seems that Jan Mayen and
    +# Svalbard have been using the same time as Norway at least since the
    +# time they were declared as parts of Norway.  Svalbard was declared
    +# as a part of Norway by law of 1925-07-17 no 11, section 4 and Jan
    +# Mayen by law of 1930-02-27 no 2, section 2. (From
    +# http://www.lovdata.no/all/nl-19250717-011.html and
    +# http://www.lovdata.no/all/nl-19300227-002.html).  The law/regulation
    +# for normal/standard time in Norway is from 1894-06-29 no 1 (came
    +# into operation on 1895-01-01) and Svalbard/Jan Mayen seem to be a
    +# part of this law since 1925/1930. (From
    +# http://www.lovdata.no/all/nl-18940629-001.html ) I have not been
    +# able to find if Jan Mayen used a different time zone (e.g. -0100)
    +# before 1930. Jan Mayen has only been "inhabitated" since 1921 by
    +# Norwegian meteorologists and maybe used the same time as Norway ever
    +# since 1921.  Svalbard (Arctic/Longyearbyen) has been inhabited since
    +# before 1895, and therefore probably changed the local time somewhere
    +# between 1895 and 1925 (inclusive).
    +
    +# From Paul Eggert (2001-05-01):
    +#
    +# Actually, Jan Mayen was never occupied by Germany during World War II,
    +# so it must have diverged from Oslo time during the war, as Oslo was
    +# keeping Berlin time.
    +#
    +#  says that the meteorologists
    +# burned down their station in 1940 and left the island, but returned in
    +# 1941 with a small Norwegian garrison and continued operations despite
    +# frequent air ttacks from Germans.  In 1943 the Americans established a
    +# radiolocating station on the island, called "Atlantic City".  Possibly
    +# the UTC offset changed during the war, but I think it unlikely that
    +# Jan Mayen used German daylight-saving rules.
    +#
    +# Svalbard is more complicated, as it was raided in August 1941 by an
    +# Allied party that evacuated the civilian population to England (says
    +# ).  The Svalbard FAQ
    +#  says that the Germans were
    +# expelled on 1942-05-14.  However, small parties of Germans did return,
    +# and according to Wilhelm Dege's book "War North of 80" (1954)
    +# 
    +# the German armed forces at the Svalbard weather station code-named
    +# Haudegen did not surrender to the Allies until September 1945.
    +#
    +# All these events predate our cutoff date of 1970.  Unless we can
    +# come up with more definitive info about the timekeeping during the
    +# war years it's probably best just do...the following for now:
    +Link	Europe/Oslo	Arctic/Longyearbyen
    +
    +# Poland
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Poland	1918	1919	-	Sep	16	2:00s	0	-
    +Rule	Poland	1919	only	-	Apr	15	2:00s	1:00	S
    +Rule	Poland	1944	only	-	Apr	 3	2:00s	1:00	S
    +# Whitman gives 1944 Nov 30; go with Shanks & Pottenger.
    +Rule	Poland	1944	only	-	Oct	 4	2:00	0	-
    +# For 1944-1948 Whitman gives the previous day; go with Shanks & Pottenger.
    +Rule	Poland	1945	only	-	Apr	29	0:00	1:00	S
    +Rule	Poland	1945	only	-	Nov	 1	0:00	0	-
    +# For 1946 on the source is Kazimierz Borkowski,
    +# Torun Center for Astronomy, Dept. of Radio Astronomy, Nicolaus Copernicus U.,
    +# 
    +# Thanks to Przemyslaw Augustyniak (2005-05-28) for this reference.
    +# He also gives these further references:
    +# Mon Pol nr 13, poz 162 (1995) 
    +# Druk nr 2180 (2003) 
    +Rule	Poland	1946	only	-	Apr	14	0:00s	1:00	S
    +Rule	Poland	1946	only	-	Oct	 7	2:00s	0	-
    +Rule	Poland	1947	only	-	May	 4	2:00s	1:00	S
    +Rule	Poland	1947	1949	-	Oct	Sun>=1	2:00s	0	-
    +Rule	Poland	1948	only	-	Apr	18	2:00s	1:00	S
    +Rule	Poland	1949	only	-	Apr	10	2:00s	1:00	S
    +Rule	Poland	1957	only	-	Jun	 2	1:00s	1:00	S
    +Rule	Poland	1957	1958	-	Sep	lastSun	1:00s	0	-
    +Rule	Poland	1958	only	-	Mar	30	1:00s	1:00	S
    +Rule	Poland	1959	only	-	May	31	1:00s	1:00	S
    +Rule	Poland	1959	1961	-	Oct	Sun>=1	1:00s	0	-
    +Rule	Poland	1960	only	-	Apr	 3	1:00s	1:00	S
    +Rule	Poland	1961	1964	-	May	lastSun	1:00s	1:00	S
    +Rule	Poland	1962	1964	-	Sep	lastSun	1:00s	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Warsaw	1:24:00 -	LMT	1880
    +			1:24:00	-	WMT	1915 Aug  5   # Warsaw Mean Time
    +			1:00	C-Eur	CE%sT	1918 Sep 16 3:00
    +			2:00	Poland	EE%sT	1922 Jun
    +			1:00	Poland	CE%sT	1940 Jun 23 2:00
    +			1:00	C-Eur	CE%sT	1944 Oct
    +			1:00	Poland	CE%sT	1977
    +			1:00	W-Eur	CE%sT	1988
    +			1:00	EU	CE%sT
    +
    +# Portugal
    +#
    +# From Rui Pedro Salgueiro (1992-11-12):
    +# Portugal has recently (September, 27) changed timezone
    +# (from WET to MET or CET) to harmonize with EEC.
    +#
    +# Martin Bruckmann (1996-02-29) reports via Peter Ilieve
    +# that Portugal is reverting to 0:00 by not moving its clocks this spring.
    +# The new Prime Minister was fed up with getting up in the dark in the winter.
    +#
    +# From Paul Eggert (1996-11-12):
    +# IATA SSIM (1991-09) reports several 1991-09 and 1992-09 transitions
    +# at 02:00u, not 01:00u.  Assume that these are typos.
    +# IATA SSIM (1991/1992) reports that the Azores were at -1:00.
    +# IATA SSIM (1993-02) says +0:00; later issues (through 1996-09) say -1:00.
    +# Guess that the Azores changed to EU rules in 1992 (since that's when Portugal
    +# harmonized with the EU), and that they stayed +0:00 that winter.
    +#
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +# DSH writes that despite Decree 1,469 (1915), the change to the clocks was not
    +# done every year, depending on what Spain did, because of railroad schedules.
    +# Go with Shanks & Pottenger.
    +Rule	Port	1916	only	-	Jun	17	23:00	1:00	S
    +# Whitman gives 1916 Oct 31; go with Shanks & Pottenger.
    +Rule	Port	1916	only	-	Nov	 1	 1:00	0	-
    +Rule	Port	1917	only	-	Feb	28	23:00s	1:00	S
    +Rule	Port	1917	1921	-	Oct	14	23:00s	0	-
    +Rule	Port	1918	only	-	Mar	 1	23:00s	1:00	S
    +Rule	Port	1919	only	-	Feb	28	23:00s	1:00	S
    +Rule	Port	1920	only	-	Feb	29	23:00s	1:00	S
    +Rule	Port	1921	only	-	Feb	28	23:00s	1:00	S
    +Rule	Port	1924	only	-	Apr	16	23:00s	1:00	S
    +Rule	Port	1924	only	-	Oct	14	23:00s	0	-
    +Rule	Port	1926	only	-	Apr	17	23:00s	1:00	S
    +Rule	Port	1926	1929	-	Oct	Sat>=1	23:00s	0	-
    +Rule	Port	1927	only	-	Apr	 9	23:00s	1:00	S
    +Rule	Port	1928	only	-	Apr	14	23:00s	1:00	S
    +Rule	Port	1929	only	-	Apr	20	23:00s	1:00	S
    +Rule	Port	1931	only	-	Apr	18	23:00s	1:00	S
    +# Whitman gives 1931 Oct 8; go with Shanks & Pottenger.
    +Rule	Port	1931	1932	-	Oct	Sat>=1	23:00s	0	-
    +Rule	Port	1932	only	-	Apr	 2	23:00s	1:00	S
    +Rule	Port	1934	only	-	Apr	 7	23:00s	1:00	S
    +# Whitman gives 1934 Oct 5; go with Shanks & Pottenger.
    +Rule	Port	1934	1938	-	Oct	Sat>=1	23:00s	0	-
    +# Shanks & Pottenger give 1935 Apr 30; go with Whitman.
    +Rule	Port	1935	only	-	Mar	30	23:00s	1:00	S
    +Rule	Port	1936	only	-	Apr	18	23:00s	1:00	S
    +# Whitman gives 1937 Apr 2; go with Shanks & Pottenger.
    +Rule	Port	1937	only	-	Apr	 3	23:00s	1:00	S
    +Rule	Port	1938	only	-	Mar	26	23:00s	1:00	S
    +Rule	Port	1939	only	-	Apr	15	23:00s	1:00	S
    +# Whitman gives 1939 Oct 7; go with Shanks & Pottenger.
    +Rule	Port	1939	only	-	Nov	18	23:00s	0	-
    +Rule	Port	1940	only	-	Feb	24	23:00s	1:00	S
    +# Shanks & Pottenger give 1940 Oct 7; go with Whitman.
    +Rule	Port	1940	1941	-	Oct	 5	23:00s	0	-
    +Rule	Port	1941	only	-	Apr	 5	23:00s	1:00	S
    +Rule	Port	1942	1945	-	Mar	Sat>=8	23:00s	1:00	S
    +Rule	Port	1942	only	-	Apr	25	22:00s	2:00	M # Midsummer
    +Rule	Port	1942	only	-	Aug	15	22:00s	1:00	S
    +Rule	Port	1942	1945	-	Oct	Sat>=24	23:00s	0	-
    +Rule	Port	1943	only	-	Apr	17	22:00s	2:00	M
    +Rule	Port	1943	1945	-	Aug	Sat>=25	22:00s	1:00	S
    +Rule	Port	1944	1945	-	Apr	Sat>=21	22:00s	2:00	M
    +Rule	Port	1946	only	-	Apr	Sat>=1	23:00s	1:00	S
    +Rule	Port	1946	only	-	Oct	Sat>=1	23:00s	0	-
    +Rule	Port	1947	1949	-	Apr	Sun>=1	 2:00s	1:00	S
    +Rule	Port	1947	1949	-	Oct	Sun>=1	 2:00s	0	-
    +# Shanks & Pottenger say DST was observed in 1950; go with Whitman.
    +# Whitman gives Oct lastSun for 1952 on; go with Shanks & Pottenger.
    +Rule	Port	1951	1965	-	Apr	Sun>=1	 2:00s	1:00	S
    +Rule	Port	1951	1965	-	Oct	Sun>=1	 2:00s	0	-
    +Rule	Port	1977	only	-	Mar	27	 0:00s	1:00	S
    +Rule	Port	1977	only	-	Sep	25	 0:00s	0	-
    +Rule	Port	1978	1979	-	Apr	Sun>=1	 0:00s	1:00	S
    +Rule	Port	1978	only	-	Oct	 1	 0:00s	0	-
    +Rule	Port	1979	1982	-	Sep	lastSun	 1:00s	0	-
    +Rule	Port	1980	only	-	Mar	lastSun	 0:00s	1:00	S
    +Rule	Port	1981	1982	-	Mar	lastSun	 1:00s	1:00	S
    +Rule	Port	1983	only	-	Mar	lastSun	 2:00s	1:00	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +# Shanks & Pottenger say the transition from LMT to WET occurred 1911-05-24;
    +# Willett says 1912-01-01.  Go with Willett.
    +Zone	Europe/Lisbon	-0:36:32 -	LMT	1884
    +			-0:36:32 -	LMT	1912 Jan  1  # Lisbon Mean Time
    +			 0:00	Port	WE%sT	1966 Apr  3 2:00
    +			 1:00	-	CET	1976 Sep 26 1:00
    +			 0:00	Port	WE%sT	1983 Sep 25 1:00s
    +			 0:00	W-Eur	WE%sT	1992 Sep 27 1:00s
    +			 1:00	EU	CE%sT	1996 Mar 31 1:00u
    +			 0:00	EU	WE%sT
    +Zone Atlantic/Azores	-1:42:40 -	LMT	1884		# Ponta Delgada
    +			-1:54:32 -	HMT	1911 May 24  # Horta Mean Time
    +			-2:00	Port	AZO%sT	1966 Apr  3 2:00 # Azores Time
    +			-1:00	Port	AZO%sT	1983 Sep 25 1:00s
    +			-1:00	W-Eur	AZO%sT	1992 Sep 27 1:00s
    +			 0:00	EU	WE%sT	1993 Mar 28 1:00u
    +			-1:00	EU	AZO%sT
    +Zone Atlantic/Madeira	-1:07:36 -	LMT	1884		# Funchal
    +			-1:07:36 -	FMT	1911 May 24  # Funchal Mean Time
    +			-1:00	Port	MAD%sT	1966 Apr  3 2:00 # Madeira Time
    +			 0:00	Port	WE%sT	1983 Sep 25 1:00s
    +			 0:00	EU	WE%sT
    +
    +# Romania
    +#
    +# From Paul Eggert (1999-10-07):
    +# 
    +# Nine O'clock (1998-10-23) reports that the switch occurred at
    +# 04:00 local time in fall 1998.  For lack of better info,
    +# assume that Romania and Moldova switched to EU rules in 1997,
    +# the same year as Bulgaria.
    +#
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Romania	1932	only	-	May	21	 0:00s	1:00	S
    +Rule	Romania	1932	1939	-	Oct	Sun>=1	 0:00s	0	-
    +Rule	Romania	1933	1939	-	Apr	Sun>=2	 0:00s	1:00	S
    +Rule	Romania	1979	only	-	May	27	 0:00	1:00	S
    +Rule	Romania	1979	only	-	Sep	lastSun	 0:00	0	-
    +Rule	Romania	1980	only	-	Apr	 5	23:00	1:00	S
    +Rule	Romania	1980	only	-	Sep	lastSun	 1:00	0	-
    +Rule	Romania	1991	1993	-	Mar	lastSun	 0:00s	1:00	S
    +Rule	Romania	1991	1993	-	Sep	lastSun	 0:00s	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Europe/Bucharest	1:44:24 -	LMT	1891 Oct
    +			1:44:24	-	BMT	1931 Jul 24	# Bucharest MT
    +			2:00	Romania	EE%sT	1981 Mar 29 2:00s
    +			2:00	C-Eur	EE%sT	1991
    +			2:00	Romania	EE%sT	1994
    +			2:00	E-Eur	EE%sT	1997
    +			2:00	EU	EE%sT
    +
    +# Russia
    +
    +# From Paul Eggert (2006-03-22):
    +# Except for Moscow after 1919-07-01, I invented the time zone abbreviations.
    +# Moscow time zone abbreviations after 1919-07-01, and Moscow rules after 1991,
    +# are from Andrey A. Chernov.  The rest is from Shanks & Pottenger,
    +# except we follow Chernov's report that 1992 DST transitions were Sat
    +# 23:00, not Sun 02:00s.
    +#
    +# From Stanislaw A. Kuzikowski (1994-06-29):
    +# But now it is some months since Novosibirsk is 3 hours ahead of Moscow!
    +# I do not know why they have decided to make this change;
    +# as far as I remember it was done exactly during winter->summer switching
    +# so we (Novosibirsk) simply did not switch.
    +#
    +# From Andrey A. Chernov (1996-10-04):
    +# `MSK' and `MSD' were born and used initially on Moscow computers with
    +# UNIX-like OSes by several developer groups (e.g. Demos group, Kiae group)....
    +# The next step was the UUCP network, the Relcom predecessor
    +# (used mainly for mail), and MSK/MSD was actively used there.
    +#
    +# From Chris Carrier (1996-10-30):
    +# According to a friend of mine who rode the Trans-Siberian Railroad from
    +# Moscow to Irkutsk in 1995, public air and rail transport in Russia ...
    +# still follows Moscow time, no matter where in Russia it is located.
    +#
    +# For Grozny, Chechnya, we have the following story from
    +# John Daniszewski, "Scavengers in the Rubble", Los Angeles Times (2001-02-07):
    +# News--often false--is spread by word of mouth.  A rumor that it was
    +# time to move the clocks back put this whole city out of sync with
    +# the rest of Russia for two weeks--even soldiers stationed here began
    +# enforcing curfew at the wrong time.
    +#
    +# From Gwillim Law (2001-06-05):
    +# There's considerable evidence that Sakhalin Island used to be in
    +# UTC+11, and has changed to UTC+10, in this decade.  I start with the
    +# SSIM, which listed Yuzhno-Sakhalinsk in zone RU10 along with Magadan
    +# until February 1997, and then in RU9 with Khabarovsk and Vladivostok
    +# since September 1997....  Although the Kuril Islands are
    +# administratively part of Sakhalin oblast', they appear to have
    +# remained on UTC+11 along with Magadan.
    +#
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +#
    +# Kaliningradskaya oblast'.
    +Zone Europe/Kaliningrad	 1:22:00 -	LMT	1893 Apr
    +			 1:00	C-Eur	CE%sT	1945
    +			 2:00	Poland	CE%sT	1946
    +			 3:00	Russia	MSK/MSD	1991 Mar 31 2:00s
    +			 2:00	Russia	EE%sT	2011 Mar 27 2:00s
    +			 3:00	-	FET # Further-eastern European Time
    +#
    +# From Oscar van Vlijmen (2001-08-25): [This region consists of]
    +# Respublika Adygeya, Arkhangel'skaya oblast',
    +# Belgorodskaya oblast', Bryanskaya oblast', Vladimirskaya oblast',
    +# Vologodskaya oblast', Voronezhskaya oblast',
    +# Respublika Dagestan, Ivanovskaya oblast', Respublika Ingushetiya,
    +# Kabarbino-Balkarskaya Respublika, Respublika Kalmykiya,
    +# Kalyzhskaya oblast', Respublika Karachaevo-Cherkessiya,
    +# Respublika Kareliya, Respublika Komi,
    +# Kostromskaya oblast', Krasnodarskij kraj, Kurskaya oblast',
    +# Leningradskaya oblast', Lipetskaya oblast', Respublika Marij El,
    +# Respublika Mordoviya, Moskva, Moskovskaya oblast',
    +# Murmanskaya oblast', Nenetskij avtonomnyj okrug,
    +# Nizhegorodskaya oblast', Novgorodskaya oblast', Orlovskaya oblast',
    +# Penzenskaya oblast', Pskovskaya oblast', Rostovskaya oblast',
    +# Ryazanskaya oblast', Sankt-Peterburg,
    +# Respublika Severnaya Osetiya, Smolenskaya oblast',
    +# Stavropol'skij kraj, Tambovskaya oblast', Respublika Tatarstan,
    +# Tverskaya oblast', Tyl'skaya oblast', Ul'yanovskaya oblast',
    +# Chechenskaya Respublika, Chuvashskaya oblast',
    +# Yaroslavskaya oblast'
    +Zone Europe/Moscow	 2:30:20 -	LMT	1880
    +			 2:30	-	MMT	1916 Jul  3 # Moscow Mean Time
    +			 2:30:48 Russia	%s	1919 Jul  1 2:00
    +			 3:00	Russia	MSK/MSD	1922 Oct
    +			 2:00	-	EET	1930 Jun 21
    +			 3:00	Russia	MSK/MSD	1991 Mar 31 2:00s
    +			 2:00	Russia	EE%sT	1992 Jan 19 2:00s
    +			 3:00	Russia	MSK/MSD	2011 Mar 27 2:00s
    +			 4:00	-	MSK
    +#
    +# Astrakhanskaya oblast', Kirovskaya oblast', Saratovskaya oblast',
    +# Volgogradskaya oblast'.  Shanks & Pottenger say Kirov is still at +0400
    +# but Wikipedia (2006-05-09) says +0300.  Perhaps it switched after the
    +# others?  But we have no data.
    +Zone Europe/Volgograd	 2:57:40 -	LMT	1920 Jan  3
    +			 3:00	-	TSAT	1925 Apr  6 # Tsaritsyn Time
    +			 3:00	-	STAT	1930 Jun 21 # Stalingrad Time
    +			 4:00	-	STAT	1961 Nov 11
    +			 4:00	Russia	VOL%sT	1989 Mar 26 2:00s # Volgograd T
    +			 3:00	Russia	VOL%sT	1991 Mar 31 2:00s
    +			 4:00	-	VOLT	1992 Mar 29 2:00s
    +			 3:00	Russia	VOL%sT	2011 Mar 27 2:00s
    +			 4:00	-	VOLT
    +#
    +# From Oscar van Vlijmen (2001-08-25): [This region consists of]
    +# Samarskaya oblast', Udmyrtskaya respublika
    +Zone Europe/Samara	 3:20:36 -	LMT	1919 Jul  1 2:00
    +			 3:00	-	SAMT	1930 Jun 21
    +			 4:00	-	SAMT	1935 Jan 27
    +			 4:00	Russia	KUY%sT	1989 Mar 26 2:00s # Kuybyshev
    +			 3:00	Russia	KUY%sT	1991 Mar 31 2:00s
    +			 2:00	Russia	KUY%sT	1991 Sep 29 2:00s
    +			 3:00	-	KUYT	1991 Oct 20 3:00
    +			 4:00	Russia	SAM%sT	2010 Mar 28 2:00s # Samara Time
    +			 3:00	Russia	SAM%sT	2011 Mar 27 2:00s
    +			 4:00	-	SAMT
    +
    +#
    +# From Oscar van Vlijmen (2001-08-25): [This region consists of]
    +# Respublika Bashkortostan, Komi-Permyatskij avtonomnyj okrug,
    +# Kurganskaya oblast', Orenburgskaya oblast', Permskaya oblast',
    +# Sverdlovskaya oblast', Tyumenskaya oblast',
    +# Khanty-Manskijskij avtonomnyj okrug, Chelyabinskaya oblast',
    +# Yamalo-Nenetskij avtonomnyj okrug.
    +Zone Asia/Yekaterinburg	 4:02:24 -	LMT	1919 Jul 15 4:00
    +			 4:00	-	SVET	1930 Jun 21 # Sverdlovsk Time
    +			 5:00	Russia	SVE%sT	1991 Mar 31 2:00s
    +			 4:00	Russia	SVE%sT	1992 Jan 19 2:00s
    +			 5:00	Russia	YEK%sT	2011 Mar 27 2:00s
    +			 6:00	-	YEKT	# Yekaterinburg Time
    +#
    +# From Oscar van Vlijmen (2001-08-25): [This region consists of]
    +# Respublika Altaj, Altajskij kraj, Omskaya oblast'.
    +Zone Asia/Omsk		 4:53:36 -	LMT	1919 Nov 14
    +			 5:00	-	OMST	1930 Jun 21 # Omsk TIme
    +			 6:00	Russia	OMS%sT	1991 Mar 31 2:00s
    +			 5:00	Russia	OMS%sT	1992 Jan 19 2:00s
    +			 6:00	Russia	OMS%sT	2011 Mar 27 2:00s
    +			 7:00	-	OMST
    +#
    +# From Paul Eggert (2006-08-19): I'm guessing about Tomsk here; it's
    +# not clear when it switched from +7 to +6.
    +# Novosibirskaya oblast', Tomskaya oblast'.
    +Zone Asia/Novosibirsk	 5:31:40 -	LMT	1919 Dec 14 6:00
    +			 6:00	-	NOVT	1930 Jun 21 # Novosibirsk Time
    +			 7:00	Russia	NOV%sT	1991 Mar 31 2:00s
    +			 6:00	Russia	NOV%sT	1992 Jan 19 2:00s
    +			 7:00	Russia	NOV%sT	1993 May 23 # say Shanks & P.
    +			 6:00	Russia	NOV%sT	2011 Mar 27 2:00s
    +			 7:00	-	NOVT
    +
    +# From Alexander Krivenyshev (2009-10-13):
    +# Kemerovo oblast' (Kemerovo region) in Russia will change current time zone on
    +# March 28, 2010:
    +# from current Russia Zone 6 - Krasnoyarsk Time Zone (KRA) UTC +0700
    +# to Russia Zone 5 - Novosibirsk Time Zone (NOV) UTC +0600
    +#
    +# This is according to Government of Russia decree # 740, on September
    +# 14, 2009 "Application in the territory of the Kemerovo region the Fifth
    +# time zone." ("Russia Zone 5" or old "USSR Zone 5" is GMT +0600)
    +#
    +# Russian Government web site (Russian language)
    +# 
    +# http://www.government.ru/content/governmentactivity/rfgovernmentdecisions/archive/2009/09/14/991633.htm
    +# 
    +# or Russian-English translation by WorldTimeZone.com with reference
    +# map to local region and new Russia Time Zone map after March 28, 2010
    +# 
    +# http://www.worldtimezone.com/dst_news/dst_news_russia03.html
    +# 
    +#
    +# Thus, when Russia will switch to DST on the night of March 28, 2010
    +# Kemerovo region (Kemerovo oblast') will not change the clock.
    +#
    +# As a result, Kemerovo oblast' will be in the same time zone as
    +# Novosibirsk, Omsk, Tomsk, Barnaul and Altai Republic.
    +
    +Zone Asia/Novokuznetsk	 5:48:48 -	NMT	1920 Jan  6
    +			 6:00	-	KRAT	1930 Jun 21 # Krasnoyarsk Time
    +			 7:00	Russia	KRA%sT	1991 Mar 31 2:00s
    +			 6:00	Russia	KRA%sT	1992 Jan 19 2:00s
    +			 7:00	Russia	KRA%sT	2010 Mar 28 2:00s
    +			 6:00	Russia	NOV%sT	2011 Mar 27 2:00s
    +			 7:00	-	NOVT # Novosibirsk/Novokuznetsk Time
    +
    +#
    +# From Oscar van Vlijmen (2001-08-25): [This region consists of]
    +# Krasnoyarskij kraj,
    +# Tajmyrskij (Dolgano-Nenetskij) avtonomnyj okrug,
    +# Respublika Tuva, Respublika Khakasiya, Evenkijskij avtonomnyj okrug.
    +Zone Asia/Krasnoyarsk	 6:11:20 -	LMT	1920 Jan  6
    +			 6:00	-	KRAT	1930 Jun 21 # Krasnoyarsk Time
    +			 7:00	Russia	KRA%sT	1991 Mar 31 2:00s
    +			 6:00	Russia	KRA%sT	1992 Jan 19 2:00s
    +			 7:00	Russia	KRA%sT	2011 Mar 27 2:00s
    +			 8:00	-	KRAT
    +#
    +# From Oscar van Vlijmen (2001-08-25): [This region consists of]
    +# Respublika Buryatiya, Irkutskaya oblast',
    +# Ust'-Ordynskij Buryatskij avtonomnyj okrug.
    +Zone Asia/Irkutsk	 6:57:20 -	LMT	1880
    +			 6:57:20 -	IMT	1920 Jan 25 # Irkutsk Mean Time
    +			 7:00	-	IRKT	1930 Jun 21 # Irkutsk Time
    +			 8:00	Russia	IRK%sT	1991 Mar 31 2:00s
    +			 7:00	Russia	IRK%sT	1992 Jan 19 2:00s
    +			 8:00	Russia	IRK%sT	2011 Mar 27 2:00s
    +			 9:00	-	IRKT
    +#
    +# From Oscar van Vlijmen (2003-10-18): [This region consists of]
    +# Aginskij Buryatskij avtonomnyj okrug, Amurskaya oblast',
    +# [parts of] Respublika Sakha (Yakutiya), Chitinskaya oblast'.
    +
    +# From Oscar van Vlijmen (2009-11-29):
    +# ...some regions of [Russia] were merged with others since 2005...
    +# Some names were changed, no big deal, except for one instance: a new name.
    +# YAK/YAKST: UTC+9 Zabajkal'skij kraj.
    +
    +# From Oscar van Vlijmen (2009-11-29):
    +# The Sakha districts are: Aldanskij, Amginskij, Anabarskij,
    +# Verkhnevilyujskij, Vilyujskij, Gornyj,
    +# Zhiganskij, Kobyajskij, Lenskij, Megino-Kangalasskij, Mirninskij,
    +# Namskij, Nyurbinskij, Olenyokskij, Olyokminskij,
    +# Suntarskij, Tattinskij, Ust'-Aldanskij, Khangalasskij,
    +# Churapchinskij, Eveno-Bytantajskij Natsional'nij.
    +
    +Zone Asia/Yakutsk	 8:38:40 -	LMT	1919 Dec 15
    +			 8:00	-	YAKT	1930 Jun 21 # Yakutsk Time
    +			 9:00	Russia	YAK%sT	1991 Mar 31 2:00s
    +			 8:00	Russia	YAK%sT	1992 Jan 19 2:00s
    +			 9:00	Russia	YAK%sT	2011 Mar 27 2:00s
    +			 10:00	-	YAKT
    +#
    +# From Oscar van Vlijmen (2003-10-18): [This region consists of]
    +# Evrejskaya avtonomnaya oblast', Khabarovskij kraj, Primorskij kraj,
    +# [parts of] Respublika Sakha (Yakutiya).
    +
    +# From Oscar van Vlijmen (2009-11-29):
    +# The Sakha districts are: Bulunskij, Verkhoyanskij, Tomponskij, Ust'-Majskij,
    +# Ust'-Yanskij.
    +Zone Asia/Vladivostok	 8:47:44 -	LMT	1922 Nov 15
    +			 9:00	-	VLAT	1930 Jun 21 # Vladivostok Time
    +			10:00	Russia	VLA%sT	1991 Mar 31 2:00s
    +			 9:00	Russia	VLA%sST	1992 Jan 19 2:00s
    +			10:00	Russia	VLA%sT	2011 Mar 27 2:00s
    +			11:00	-	VLAT
    +#
    +# Sakhalinskaya oblast'.
    +# The Zone name should be Yuzhno-Sakhalinsk, but that's too long.
    +Zone Asia/Sakhalin	 9:30:48 -	LMT	1905 Aug 23
    +			 9:00	-	CJT	1938
    +			 9:00	-	JST	1945 Aug 25
    +			11:00	Russia	SAK%sT	1991 Mar 31 2:00s # Sakhalin T.
    +			10:00	Russia	SAK%sT	1992 Jan 19 2:00s
    +			11:00	Russia	SAK%sT	1997 Mar lastSun 2:00s
    +			10:00	Russia	SAK%sT	2011 Mar 27 2:00s
    +			11:00	-	SAKT
    +#
    +# From Oscar van Vlijmen (2003-10-18): [This region consists of]
    +# Magadanskaya oblast', Respublika Sakha (Yakutiya).
    +# Probably also: Kuril Islands.
    +
    +# From Oscar van Vlijmen (2009-11-29):
    +# The Sakha districts are: Abyjskij, Allaikhovskij, Verkhhhnekolymskij, Momskij,
    +# Nizhnekolymskij, Ojmyakonskij, Srednekolymskij.
    +Zone Asia/Magadan	10:03:12 -	LMT	1924 May  2
    +			10:00	-	MAGT	1930 Jun 21 # Magadan Time
    +			11:00	Russia	MAG%sT	1991 Mar 31 2:00s
    +			10:00	Russia	MAG%sT	1992 Jan 19 2:00s
    +			11:00	Russia	MAG%sT	2011 Mar 27 2:00s
    +			12:00	-	MAGT
    +#
    +# From Oscar van Vlijmen (2001-08-25): [This region consists of]
    +# Kamchatskaya oblast', Koryakskij avtonomnyj okrug.
    +#
    +# The Zone name should be Asia/Petropavlovsk-Kamchatski, but that's too long.
    +Zone Asia/Kamchatka	10:34:36 -	LMT	1922 Nov 10
    +			11:00	-	PETT	1930 Jun 21 # P-K Time
    +			12:00	Russia	PET%sT	1991 Mar 31 2:00s
    +			11:00	Russia	PET%sT	1992 Jan 19 2:00s
    +			12:00	Russia	PET%sT	2010 Mar 28 2:00s
    +			11:00	Russia	PET%sT	2011 Mar 27 2:00s
    +			12:00	-	PETT
    +#
    +# Chukotskij avtonomnyj okrug
    +Zone Asia/Anadyr	11:49:56 -	LMT	1924 May  2
    +			12:00	-	ANAT	1930 Jun 21 # Anadyr Time
    +			13:00	Russia	ANA%sT	1982 Apr  1 0:00s
    +			12:00	Russia	ANA%sT	1991 Mar 31 2:00s
    +			11:00	Russia	ANA%sT	1992 Jan 19 2:00s
    +			12:00	Russia	ANA%sT	2010 Mar 28 2:00s
    +			11:00	Russia	ANA%sT	2011 Mar 27 2:00s
    +			12:00	-	ANAT
    +
    +# Serbia
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Belgrade	1:22:00	-	LMT	1884
    +			1:00	-	CET	1941 Apr 18 23:00
    +			1:00	C-Eur	CE%sT	1945
    +			1:00	-	CET	1945 May 8 2:00s
    +			1:00	1:00	CEST	1945 Sep 16  2:00s
    +# Metod Kozelj reports that the legal date of
    +# transition to EU rules was 1982-11-27, for all of Yugoslavia at the time.
    +# Shanks & Pottenger don't give as much detail, so go with Kozelj.
    +			1:00	-	CET	1982 Nov 27
    +			1:00	EU	CE%sT
    +Link Europe/Belgrade Europe/Ljubljana	# Slovenia
    +Link Europe/Belgrade Europe/Podgorica	# Montenegro
    +Link Europe/Belgrade Europe/Sarajevo	# Bosnia and Herzegovina
    +Link Europe/Belgrade Europe/Skopje	# Macedonia
    +Link Europe/Belgrade Europe/Zagreb	# Croatia
    +
    +# Slovakia
    +Link Europe/Prague Europe/Bratislava
    +
    +# Slovenia
    +# see Serbia
    +
    +# Spain
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +# For 1917-1919 Whitman gives Apr Sat>=1 - Oct Sat>=1;
    +# go with Shanks & Pottenger.
    +Rule	Spain	1917	only	-	May	 5	23:00s	1:00	S
    +Rule	Spain	1917	1919	-	Oct	 6	23:00s	0	-
    +Rule	Spain	1918	only	-	Apr	15	23:00s	1:00	S
    +Rule	Spain	1919	only	-	Apr	 5	23:00s	1:00	S
    +# Whitman gives 1921 Feb 28 - Oct 14; go with Shanks & Pottenger.
    +Rule	Spain	1924	only	-	Apr	16	23:00s	1:00	S
    +# Whitman gives 1924 Oct 14; go with Shanks & Pottenger.
    +Rule	Spain	1924	only	-	Oct	 4	23:00s	0	-
    +Rule	Spain	1926	only	-	Apr	17	23:00s	1:00	S
    +# Whitman says no DST in 1929; go with Shanks & Pottenger.
    +Rule	Spain	1926	1929	-	Oct	Sat>=1	23:00s	0	-
    +Rule	Spain	1927	only	-	Apr	 9	23:00s	1:00	S
    +Rule	Spain	1928	only	-	Apr	14	23:00s	1:00	S
    +Rule	Spain	1929	only	-	Apr	20	23:00s	1:00	S
    +# Whitman gives 1937 Jun 16, 1938 Apr 16, 1940 Apr 13;
    +# go with Shanks & Pottenger.
    +Rule	Spain	1937	only	-	May	22	23:00s	1:00	S
    +Rule	Spain	1937	1939	-	Oct	Sat>=1	23:00s	0	-
    +Rule	Spain	1938	only	-	Mar	22	23:00s	1:00	S
    +Rule	Spain	1939	only	-	Apr	15	23:00s	1:00	S
    +Rule	Spain	1940	only	-	Mar	16	23:00s	1:00	S
    +# Whitman says no DST 1942-1945; go with Shanks & Pottenger.
    +Rule	Spain	1942	only	-	May	 2	22:00s	2:00	M # Midsummer
    +Rule	Spain	1942	only	-	Sep	 1	22:00s	1:00	S
    +Rule	Spain	1943	1946	-	Apr	Sat>=13	22:00s	2:00	M
    +Rule	Spain	1943	only	-	Oct	 3	22:00s	1:00	S
    +Rule	Spain	1944	only	-	Oct	10	22:00s	1:00	S
    +Rule	Spain	1945	only	-	Sep	30	 1:00	1:00	S
    +Rule	Spain	1946	only	-	Sep	30	 0:00	0	-
    +Rule	Spain	1949	only	-	Apr	30	23:00	1:00	S
    +Rule	Spain	1949	only	-	Sep	30	 1:00	0	-
    +Rule	Spain	1974	1975	-	Apr	Sat>=13	23:00	1:00	S
    +Rule	Spain	1974	1975	-	Oct	Sun>=1	 1:00	0	-
    +Rule	Spain	1976	only	-	Mar	27	23:00	1:00	S
    +Rule	Spain	1976	1977	-	Sep	lastSun	 1:00	0	-
    +Rule	Spain	1977	1978	-	Apr	 2	23:00	1:00	S
    +Rule	Spain	1978	only	-	Oct	 1	 1:00	0	-
    +# The following rules are copied from Morocco from 1967 through 1978.
    +Rule SpainAfrica 1967	only	-	Jun	 3	12:00	1:00	S
    +Rule SpainAfrica 1967	only	-	Oct	 1	 0:00	0	-
    +Rule SpainAfrica 1974	only	-	Jun	24	 0:00	1:00	S
    +Rule SpainAfrica 1974	only	-	Sep	 1	 0:00	0	-
    +Rule SpainAfrica 1976	1977	-	May	 1	 0:00	1:00	S
    +Rule SpainAfrica 1976	only	-	Aug	 1	 0:00	0	-
    +Rule SpainAfrica 1977	only	-	Sep	28	 0:00	0	-
    +Rule SpainAfrica 1978	only	-	Jun	 1	 0:00	1:00	S
    +Rule SpainAfrica 1978	only	-	Aug	 4	 0:00	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Madrid	-0:14:44 -	LMT	1901 Jan  1  0:00s
    +			 0:00	Spain	WE%sT	1946 Sep 30
    +			 1:00	Spain	CE%sT	1979
    +			 1:00	EU	CE%sT
    +Zone	Africa/Ceuta	-0:21:16 -	LMT	1901
    +			 0:00	-	WET	1918 May  6 23:00
    +			 0:00	1:00	WEST	1918 Oct  7 23:00
    +			 0:00	-	WET	1924
    +			 0:00	Spain	WE%sT	1929
    +			 0:00 SpainAfrica WE%sT 1984 Mar 16
    +			 1:00	-	CET	1986
    +			 1:00	EU	CE%sT
    +Zone	Atlantic/Canary	-1:01:36 -	LMT	1922 Mar # Las Palmas de Gran C.
    +			-1:00	-	CANT	1946 Sep 30 1:00 # Canaries Time
    +			 0:00	-	WET	1980 Apr  6 0:00s
    +			 0:00	1:00	WEST	1980 Sep 28 0:00s
    +			 0:00	EU	WE%sT
    +# IATA SSIM (1996-09) says the Canaries switch at 2:00u, not 1:00u.
    +# Ignore this for now, as the Canaries are part of the EU.
    +
    +# Sweden
    +
    +# From Ivan Nilsson (2001-04-13), superseding Shanks & Pottenger:
    +#
    +# The law "Svensk forfattningssamling 1878, no 14" about standard time in 1879:
    +# From the beginning of 1879 (that is 01-01 00:00) the time for all
    +# places in the country is "the mean solar time for the meridian at
    +# three degrees, or twelve minutes of time, to the west of the
    +# meridian of the Observatory of Stockholm".  The law is dated 1878-05-31.
    +#
    +# The observatory at that time had the meridian 18 degrees 03' 30"
    +# eastern longitude = 01:12:14 in time.  Less 12 minutes gives the
    +# national standard time as 01:00:14 ahead of GMT....
    +#
    +# About the beginning of CET in Sweden. The lawtext ("Svensk
    +# forfattningssamling 1899, no 44") states, that "from the beginning
    +# of 1900... ... the same as the mean solar time for the meridian at
    +# the distance of one hour of time from the meridian of the English
    +# observatory at Greenwich, or at 12 minutes 14 seconds to the west
    +# from the meridian of the Observatory of Stockholm". The law is dated
    +# 1899-06-16.  In short: At 1900-01-01 00:00:00 the new standard time
    +# in Sweden is 01:00:00 ahead of GMT.
    +#
    +# 1916: The lawtext ("Svensk forfattningssamling 1916, no 124") states
    +# that "1916-05-15 is considered to begin one hour earlier". It is
    +# pretty obvious that at 05-14 23:00 the clocks are set to 05-15 00:00....
    +# Further the law says, that "1916-09-30 is considered to end one hour later".
    +#
    +# The laws regulating [DST] are available on the site of the Swedish
    +# Parliament beginning with 1985 - the laws regulating 1980/1984 are
    +# not available on the site (to my knowledge they are only available
    +# in Swedish):  (type
    +# "sommartid" without the quotes in the field "Fritext" and then click
    +# the Sok-button).
    +#
    +# (2001-05-13):
    +#
    +# I have now found a newspaper stating that at 1916-10-01 01:00
    +# summertime the church-clocks etc were set back one hour to show
    +# 1916-10-01 00:00 standard time.  The article also reports that some
    +# people thought the switch to standard time would take place already
    +# at 1916-10-01 00:00 summer time, but they had to wait for another
    +# hour before the event took place.
    +#
    +# Source: The newspaper "Dagens Nyheter", 1916-10-01, page 7 upper left.
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Europe/Stockholm	1:12:12 -	LMT	1879 Jan  1
    +			1:00:14	-	SET	1900 Jan  1	# Swedish Time
    +			1:00	-	CET	1916 May 14 23:00
    +			1:00	1:00	CEST	1916 Oct  1 01:00
    +			1:00	-	CET	1980
    +			1:00	EU	CE%sT
    +
    +# Switzerland
    +# From Howse:
    +# By the end of the 18th century clocks and watches became commonplace
    +# and their performance improved enormously.  Communities began to keep
    +# mean time in preference to apparent time -- Geneva from 1780 ....
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +# From Whitman (who writes ``Midnight?''):
    +# Rule	Swiss	1940	only	-	Nov	 2	0:00	1:00	S
    +# Rule	Swiss	1940	only	-	Dec	31	0:00	0	-
    +# From Shanks & Pottenger:
    +# Rule	Swiss	1941	1942	-	May	Sun>=1	2:00	1:00	S
    +# Rule	Swiss	1941	1942	-	Oct	Sun>=1	0:00	0	-
    +
    +# From Alois Treindl (2008-12-17):
    +# I have researched the DST usage in Switzerland during the 1940ies.
    +#
    +# As I wrote in an earlier message, I suspected the current tzdata values
    +# to be wrong. This is now verified.
    +#
    +# I have found copies of the original ruling by the Swiss Federal
    +# government, in 'Eidgen[o]ssische Gesetzessammlung 1941 and 1942' (Swiss
    +# federal law collection)...
    +#
    +# DST began on Monday 5 May 1941, 1:00 am by shifting the clocks to 2:00 am
    +# DST ended on Monday 6 Oct 1941, 2:00 am by shifting the clocks to 1:00 am.
    +#
    +# DST began on Monday, 4 May 1942 at 01:00 am
    +# DST ended on Monday, 5 Oct 1942 at 02:00 am
    +#
    +# There was no DST in 1940, I have checked the law collection carefully.
    +# It is also indicated by the fact that the 1942 entry in the law
    +# collection points back to 1941 as a reference, but no reference to any
    +# other years are made.
    +#
    +# Newspaper articles I have read in the archives on 6 May 1941 reported
    +# about the introduction of DST (Sommerzeit in German) during the previous
    +# night as an absolute novelty, because this was the first time that such
    +# a thing had happened in Switzerland.
    +#
    +# I have also checked 1916, because one book source (Gabriel, Traite de
    +# l'heure dans le monde) claims that Switzerland had DST in 1916. This is
    +# false, no official document could be found. Probably Gabriel got misled
    +# by references to Germany, which introduced DST in 1916 for the first time.
    +#
    +# The tzdata rules for Switzerland must be changed to:
    +# Rule  Swiss   1941    1942    -       May     Mon>=1  1:00    1:00    S
    +# Rule  Swiss   1941    1942    -       Oct     Mon>=1  2:00    0       -
    +#
    +# The 1940 rules must be deleted.
    +#
    +# One further detail for Switzerland, which is probably out of scope for
    +# most users of tzdata:
    +# The zone file
    +# Zone    Europe/Zurich   0:34:08 -       LMT     1848 Sep 12
    +#                          0:29:44 -       BMT     1894 Jun #Bern Mean Time
    +#                          1:00    Swiss   CE%sT   1981
    +#                          1:00    EU      CE%sT
    +# describes all of Switzerland correctly, with the exception of
    +# the Cantone Geneve (Geneva, Genf). Between 1848 and 1894 Geneve did not
    +# follow Bern Mean Time but kept its own local mean time.
    +# To represent this, an extra zone would be needed.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Swiss	1941	1942	-	May	Mon>=1	1:00	1:00	S
    +Rule	Swiss	1941	1942	-	Oct	Mon>=1	2:00	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Zurich	0:34:08 -	LMT	1848 Sep 12
    +			0:29:44	-	BMT	1894 Jun # Bern Mean Time
    +			1:00	Swiss	CE%sT	1981
    +			1:00	EU	CE%sT
    +
    +# Turkey
    +
    +# From Amar Devegowda (2007-01-03):
    +# The time zone rules for Istanbul, Turkey have not been changed for years now.
    +# ... The latest rules are available at -
    +# http://www.timeanddate.com/worldclock/timezone.html?n=107
    +# From Steffen Thorsen (2007-01-03):
    +# I have been able to find press records back to 1996 which all say that
    +# DST started 01:00 local time and end at 02:00 local time.  I am not sure
    +# what happened before that.  One example for each year from 1996 to 2001:
    +# http://newspot.byegm.gov.tr/arsiv/1996/21/N4.htm
    +# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING97/03/97X03X25.TXT
    +# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING98/03/98X03X02.HTM
    +# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING99/10/99X10X26.HTM#%2016
    +# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING2000/03/00X03X06.HTM#%2021
    +# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING2001/03/23x03x01.HTM#%2027
    +# From Paul Eggert (2007-01-03):
    +# Prefer the above source to Shanks & Pottenger for time stamps after 1990.
    +
    +# From Steffen Thorsen (2007-03-09):
    +# Starting 2007 though, it seems that they are adopting EU's 1:00 UTC
    +# start/end time, according to the following page (2007-03-07):
    +# http://www.ntvmsnbc.com/news/402029.asp
    +# The official document is located here - it is in Turkish...:
    +# http://rega.basbakanlik.gov.tr/eskiler/2007/03/20070307-7.htm
    +# I was able to locate the following seemingly official document
    +# (on a non-government server though) describing dates between 2002 and 2006:
    +# http://www.alomaliye.com/bkk_2002_3769.htm
    +
    +# From Gökdeniz Karadağ (2011-03-10):
    +#
    +# According to the articles linked below, Turkey will change into summer
    +# time zone (GMT+3) on March 28, 2011 at 3:00 a.m. instead of March 27.
    +# This change is due to a nationwide exam on 27th.
    +#
    +# 
    +# http://www.worldbulletin.net/?aType=haber&ArticleID=70872
    +# 
    +# Turkish:
    +# 
    +# http://www.hurriyet.com.tr/ekonomi/17230464.asp?gid=373
    +# 
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Turkey	1916	only	-	May	 1	0:00	1:00	S
    +Rule	Turkey	1916	only	-	Oct	 1	0:00	0	-
    +Rule	Turkey	1920	only	-	Mar	28	0:00	1:00	S
    +Rule	Turkey	1920	only	-	Oct	25	0:00	0	-
    +Rule	Turkey	1921	only	-	Apr	 3	0:00	1:00	S
    +Rule	Turkey	1921	only	-	Oct	 3	0:00	0	-
    +Rule	Turkey	1922	only	-	Mar	26	0:00	1:00	S
    +Rule	Turkey	1922	only	-	Oct	 8	0:00	0	-
    +# Whitman gives 1923 Apr 28 - Sep 16 and no DST in 1924-1925;
    +# go with Shanks & Pottenger.
    +Rule	Turkey	1924	only	-	May	13	0:00	1:00	S
    +Rule	Turkey	1924	1925	-	Oct	 1	0:00	0	-
    +Rule	Turkey	1925	only	-	May	 1	0:00	1:00	S
    +Rule	Turkey	1940	only	-	Jun	30	0:00	1:00	S
    +Rule	Turkey	1940	only	-	Oct	 5	0:00	0	-
    +Rule	Turkey	1940	only	-	Dec	 1	0:00	1:00	S
    +Rule	Turkey	1941	only	-	Sep	21	0:00	0	-
    +Rule	Turkey	1942	only	-	Apr	 1	0:00	1:00	S
    +# Whitman omits the next two transition and gives 1945 Oct 1;
    +# go with Shanks & Pottenger.
    +Rule	Turkey	1942	only	-	Nov	 1	0:00	0	-
    +Rule	Turkey	1945	only	-	Apr	 2	0:00	1:00	S
    +Rule	Turkey	1945	only	-	Oct	 8	0:00	0	-
    +Rule	Turkey	1946	only	-	Jun	 1	0:00	1:00	S
    +Rule	Turkey	1946	only	-	Oct	 1	0:00	0	-
    +Rule	Turkey	1947	1948	-	Apr	Sun>=16	0:00	1:00	S
    +Rule	Turkey	1947	1950	-	Oct	Sun>=2	0:00	0	-
    +Rule	Turkey	1949	only	-	Apr	10	0:00	1:00	S
    +Rule	Turkey	1950	only	-	Apr	19	0:00	1:00	S
    +Rule	Turkey	1951	only	-	Apr	22	0:00	1:00	S
    +Rule	Turkey	1951	only	-	Oct	 8	0:00	0	-
    +Rule	Turkey	1962	only	-	Jul	15	0:00	1:00	S
    +Rule	Turkey	1962	only	-	Oct	 8	0:00	0	-
    +Rule	Turkey	1964	only	-	May	15	0:00	1:00	S
    +Rule	Turkey	1964	only	-	Oct	 1	0:00	0	-
    +Rule	Turkey	1970	1972	-	May	Sun>=2	0:00	1:00	S
    +Rule	Turkey	1970	1972	-	Oct	Sun>=2	0:00	0	-
    +Rule	Turkey	1973	only	-	Jun	 3	1:00	1:00	S
    +Rule	Turkey	1973	only	-	Nov	 4	3:00	0	-
    +Rule	Turkey	1974	only	-	Mar	31	2:00	1:00	S
    +Rule	Turkey	1974	only	-	Nov	 3	5:00	0	-
    +Rule	Turkey	1975	only	-	Mar	30	0:00	1:00	S
    +Rule	Turkey	1975	1976	-	Oct	lastSun	0:00	0	-
    +Rule	Turkey	1976	only	-	Jun	 1	0:00	1:00	S
    +Rule	Turkey	1977	1978	-	Apr	Sun>=1	0:00	1:00	S
    +Rule	Turkey	1977	only	-	Oct	16	0:00	0	-
    +Rule	Turkey	1979	1980	-	Apr	Sun>=1	3:00	1:00	S
    +Rule	Turkey	1979	1982	-	Oct	Mon>=11	0:00	0	-
    +Rule	Turkey	1981	1982	-	Mar	lastSun	3:00	1:00	S
    +Rule	Turkey	1983	only	-	Jul	31	0:00	1:00	S
    +Rule	Turkey	1983	only	-	Oct	 2	0:00	0	-
    +Rule	Turkey	1985	only	-	Apr	20	0:00	1:00	S
    +Rule	Turkey	1985	only	-	Sep	28	0:00	0	-
    +Rule	Turkey	1986	1990	-	Mar	lastSun	2:00s	1:00	S
    +Rule	Turkey	1986	1990	-	Sep	lastSun	2:00s	0	-
    +Rule	Turkey	1991	2006	-	Mar	lastSun	1:00s	1:00	S
    +Rule	Turkey	1991	1995	-	Sep	lastSun	1:00s	0	-
    +Rule	Turkey	1996	2006	-	Oct	lastSun	1:00s	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	Europe/Istanbul	1:55:52 -	LMT	1880
    +			1:56:56	-	IMT	1910 Oct # Istanbul Mean Time?
    +			2:00	Turkey	EE%sT	1978 Oct 15
    +			3:00	Turkey	TR%sT	1985 Apr 20 # Turkey Time
    +			2:00	Turkey	EE%sT	2007
    +			2:00	EU	EE%sT	2011 Mar 27 1:00u
    +			2:00	-	EET	2011 Mar 28 1:00u
    +			2:00	EU	EE%sT
    +Link	Europe/Istanbul	Asia/Istanbul	# Istanbul is in both continents.
    +
    +# Ukraine
    +#
    +# From Igor Karpov, who works for the Ukranian Ministry of Justice,
    +# via Garrett Wollman (2003-01-27):
    +# BTW, I've found the official document on this matter. It's goverment
    +# regulations number 509, May 13, 1996. In my poor translation it says:
    +# "Time in Ukraine is set to second timezone (Kiev time). Each last Sunday
    +# of March at 3am the time is changing to 4am and each last Sunday of
    +# October the time at 4am is changing to 3am"
    +
    +# From Alexander Krivenyshev (2011-09-20):
    +# On September 20, 2011 the deputies of the Verkhovna Rada agreed to
    +# abolish the transfer clock to winter time.
    +#
    +# Bill number 8330 of MP from the Party of Regions Oleg Nadoshi got
    +# approval from 266 deputies.
    +#
    +# Ukraine abolishes transter back to the winter time (in Russian)
    +# 
    +# http://news.mail.ru/politics/6861560/
    +# 
    +#
    +# The Ukrainians will no longer change the clock (in Russian)
    +# 
    +# http://www.segodnya.ua/news/14290482.html
    +# 
    +#
    +# Deputies cancelled the winter time (in Russian)
    +# 
    +# http://www.pravda.com.ua/rus/news/2011/09/20/6600616/
    +# 
    +#
    +# From Philip Pizzey (2011-10-18):
    +# Today my Ukrainian colleagues have informed me that the
    +# Ukrainian parliament have decided that they will go to winter
    +# time this year after all.
    +#
    +# From Udo Schwedt (2011-10-18):
    +# As far as I understand, the recent change to the Ukranian time zone
    +# (Europe/Kiev) to introduce permanent daylight saving time (similar
    +# to Russia) was reverted today:
    +#
    +# 
    +# http://portal.rada.gov.ua/rada/control/en/publish/article/info_left?art_id=287324&cat_id=105995
    +# 
    +#
    +# Also reported by Alexander Bokovoy (2011-10-18) who also noted:
    +# The law documents themselves are at
    +#
    +# 
    +# http://w1.c1.rada.gov.ua/pls/zweb_n/webproc4_1?id=&pf3511=41484
    +# 
    +
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +# Most of Ukraine since 1970 has been like Kiev.
    +# "Kyiv" is the transliteration of the Ukrainian name, but
    +# "Kiev" is more common in English.
    +Zone Europe/Kiev	2:02:04 -	LMT	1880
    +			2:02:04	-	KMT	1924 May  2 # Kiev Mean Time
    +			2:00	-	EET	1930 Jun 21
    +			3:00	-	MSK	1941 Sep 20
    +			1:00	C-Eur	CE%sT	1943 Nov  6
    +			3:00	Russia	MSK/MSD	1990
    +			3:00	-	MSK	1990 Jul  1 2:00
    +			2:00	-	EET	1992
    +			2:00	E-Eur	EE%sT	1995
    +			2:00	EU	EE%sT
    +# Ruthenia used CET 1990/1991.
    +# "Uzhhorod" is the transliteration of the Ukrainian name, but
    +# "Uzhgorod" is more common in English.
    +Zone Europe/Uzhgorod	1:29:12 -	LMT	1890 Oct
    +			1:00	-	CET	1940
    +			1:00	C-Eur	CE%sT	1944 Oct
    +			1:00	1:00	CEST	1944 Oct 26
    +			1:00	-	CET	1945 Jun 29
    +			3:00	Russia	MSK/MSD	1990
    +			3:00	-	MSK	1990 Jul  1 2:00
    +			1:00	-	CET	1991 Mar 31 3:00
    +			2:00	-	EET	1992
    +			2:00	E-Eur	EE%sT	1995
    +			2:00	EU	EE%sT
    +# Zaporozh'ye and eastern Lugansk oblasts observed DST 1990/1991.
    +# "Zaporizhia" is the transliteration of the Ukrainian name, but
    +# "Zaporozh'ye" is more common in English.  Use the common English
    +# spelling, except omit the apostrophe as it is not allowed in
    +# portable Posix file names.
    +Zone Europe/Zaporozhye	2:20:40 -	LMT	1880
    +			2:20	-	CUT	1924 May  2 # Central Ukraine T
    +			2:00	-	EET	1930 Jun 21
    +			3:00	-	MSK	1941 Aug 25
    +			1:00	C-Eur	CE%sT	1943 Oct 25
    +			3:00	Russia	MSK/MSD	1991 Mar 31 2:00
    +			2:00	E-Eur	EE%sT	1995
    +			2:00	EU	EE%sT
    +# Central Crimea used Moscow time 1994/1997.
    +Zone Europe/Simferopol	2:16:24 -	LMT	1880
    +			2:16	-	SMT	1924 May  2 # Simferopol Mean T
    +			2:00	-	EET	1930 Jun 21
    +			3:00	-	MSK	1941 Nov
    +			1:00	C-Eur	CE%sT	1944 Apr 13
    +			3:00	Russia	MSK/MSD	1990
    +			3:00	-	MSK	1990 Jul  1 2:00
    +			2:00	-	EET	1992
    +# From Paul Eggert (2006-03-22):
    +# The _Economist_ (1994-05-28, p 45) reports that central Crimea switched
    +# from Kiev to Moscow time sometime after the January 1994 elections.
    +# Shanks (1999) says ``date of change uncertain'', but implies that it happened
    +# sometime between the 1994 DST switches.  Shanks & Pottenger simply say
    +# 1994-09-25 03:00, but that can't be right.  For now, guess it
    +# changed in May.
    +			2:00	E-Eur	EE%sT	1994 May
    +# From IATA SSIM (1994/1997), which also says that Kerch is still like Kiev.
    +			3:00	E-Eur	MSK/MSD	1996 Mar 31 3:00s
    +			3:00	1:00	MSD	1996 Oct 27 3:00s
    +# IATA SSIM (1997-09) says Crimea switched to EET/EEST.
    +# Assume it happened in March by not changing the clocks.
    +			3:00	Russia	MSK/MSD	1997
    +			3:00	-	MSK	1997 Mar lastSun 1:00u
    +			2:00	EU	EE%sT
    +
    +###############################################################################
    +
    +# One source shows that Bulgaria, Cyprus, Finland, and Greece observe DST from
    +# the last Sunday in March to the last Sunday in September in 1986.
    +# The source shows Romania changing a day later than everybody else.
    +#
    +# According to Bernard Sieloff's source, Poland is in the MET time zone but
    +# uses the WE DST rules.  The Western USSR uses EET+1 and ME DST rules.
    +# Bernard Sieloff's source claims Romania switches on the same day, but at
    +# 00:00 standard time (i.e., 01:00 DST).  It also claims that Turkey
    +# switches on the same day, but switches on at 01:00 standard time
    +# and off at 00:00 standard time (i.e., 01:00 DST)
    +
    +# ...
    +# Date: Wed, 28 Jan 87 16:56:27 -0100
    +# From: Tom Hofmann
    +# ...
    +#
    +# ...the European time rules are...standardized since 1981, when
    +# most European coun[tr]ies started DST.  Before that year, only
    +# a few countries (UK, France, Italy) had DST, each according
    +# to own national rules.  In 1981, however, DST started on
    +# 'Apr firstSun', and not on 'Mar lastSun' as in the following
    +# years...
    +# But also since 1981 there are some more national exceptions
    +# than listed in 'europe': Switzerland, for example, joined DST
    +# one year later, Denmark ended DST on 'Oct 1' instead of 'Sep
    +# lastSun' in 1981---I don't know how they handle now.
    +#
    +# Finally, DST ist always from 'Apr 1' to 'Oct 1' in the
    +# Soviet Union (as far as I know).
    +#
    +# Tom Hofmann, Scientific Computer Center, CIBA-GEIGY AG,
    +# 4002 Basle, Switzerland
    +# ...
    +
    +# ...
    +# Date: Wed, 4 Feb 87 22:35:22 +0100
    +# From: Dik T. Winter
    +# ...
    +#
    +# The information from Tom Hofmann is (as far as I know) not entirely correct.
    +# After a request from chongo at amdahl I tried to retrieve all information
    +# about DST in Europe.  I was able to find all from about 1969.
    +#
    +# ...standardization on DST in Europe started in about 1977 with switches on
    +# first Sunday in April and last Sunday in September...
    +# In 1981 UK joined Europe insofar that
    +# the starting day for both shifted to last Sunday in March.  And from 1982
    +# the whole of Europe used DST, with switch dates April 1 and October 1 in
    +# the Sov[i]et Union.  In 1985 the SU reverted to standard Europe[a]n switch
    +# dates...
    +#
    +# It should also be remembered that time-zones are not constants; e.g.
    +# Portugal switched in 1976 from MET (or CET) to WET with DST...
    +# Note also that though there were rules for switch dates not
    +# all countries abided to these dates, and many individual deviations
    +# occurred, though not since 1982 I believe.  Another note: it is always
    +# assumed that DST is 1 hour ahead of normal time, this need not be the
    +# case; at least in the Netherlands there have been times when DST was 2 hours
    +# in advance of normal time.
    +#
    +# ...
    +# dik t. winter, cwi, amsterdam, nederland
    +# ...
    +
    +# From Bob Devine (1988-01-28):
    +# ...
    +# Greece: Last Sunday in April to last Sunday in September (iffy on dates).
    +# Since 1978.  Change at midnight.
    +# ...
    +# Monaco: has same DST as France.
    +# ...
    diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/factory b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/factory
    new file mode 100644
    index 0000000..7143f73
    --- /dev/null
    +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/factory
    @@ -0,0 +1,10 @@
    +# 
    +# This file is in the public domain, so clarified as of
    +# 2009-05-17 by Arthur David Olson.
    +
    +# For companies who don't want to put time zone specification in
    +# their installation procedures.  When users run date, they'll get the message.
    +# Also useful for the "comp.sources" version.
    +
    +# Zone	NAME	GMTOFF	RULES	FORMAT
    +Zone	Factory	0	- "Local time zone must be set--see zic manual page"
    diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/iso3166.tab b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/iso3166.tab
    new file mode 100644
    index 0000000..c0d1850
    --- /dev/null
    +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/iso3166.tab
    @@ -0,0 +1,276 @@
    +# 
    +# This file is in the public domain, so clarified as of
    +# 2009-05-17 by Arthur David Olson.
    +# ISO 3166 alpha-2 country codes
    +#
    +# From Paul Eggert (2006-09-27):
    +#
    +# This file contains a table with the following columns:
    +# 1.  ISO 3166-1 alpha-2 country code, current as of
    +#     ISO 3166-1 Newsletter VI-1 (2007-09-21).  See:
    +#     
    +#     ISO 3166 Maintenance agency (ISO 3166/MA)
    +#     .
    +# 2.  The usual English name for the country,
    +#     chosen so that alphabetic sorting of subsets produces helpful lists.
    +#     This is not the same as the English name in the ISO 3166 tables.
    +#
    +# Columns are separated by a single tab.
    +# The table is sorted by country code.
    +#
    +# Lines beginning with `#' are comments.
    +#
    +# From Arthur David Olson (2011-08-17):
    +# Resynchronized today with the ISO 3166 site (adding SS for South Sudan).
    +#
    +#country-
    +#code	country name
    +AD	Andorra
    +AE	United Arab Emirates
    +AF	Afghanistan
    +AG	Antigua & Barbuda
    +AI	Anguilla
    +AL	Albania
    +AM	Armenia
    +AO	Angola
    +AQ	Antarctica
    +AR	Argentina
    +AS	Samoa (American)
    +AT	Austria
    +AU	Australia
    +AW	Aruba
    +AX	Aaland Islands
    +AZ	Azerbaijan
    +BA	Bosnia & Herzegovina
    +BB	Barbados
    +BD	Bangladesh
    +BE	Belgium
    +BF	Burkina Faso
    +BG	Bulgaria
    +BH	Bahrain
    +BI	Burundi
    +BJ	Benin
    +BL	St Barthelemy
    +BM	Bermuda
    +BN	Brunei
    +BO	Bolivia
    +BQ	Bonaire Sint Eustatius & Saba
    +BR	Brazil
    +BS	Bahamas
    +BT	Bhutan
    +BV	Bouvet Island
    +BW	Botswana
    +BY	Belarus
    +BZ	Belize
    +CA	Canada
    +CC	Cocos (Keeling) Islands
    +CD	Congo (Dem. Rep.)
    +CF	Central African Rep.
    +CG	Congo (Rep.)
    +CH	Switzerland
    +CI	Cote d'Ivoire
    +CK	Cook Islands
    +CL	Chile
    +CM	Cameroon
    +CN	China
    +CO	Colombia
    +CR	Costa Rica
    +CU	Cuba
    +CV	Cape Verde
    +CW	Curacao
    +CX	Christmas Island
    +CY	Cyprus
    +CZ	Czech Republic
    +DE	Germany
    +DJ	Djibouti
    +DK	Denmark
    +DM	Dominica
    +DO	Dominican Republic
    +DZ	Algeria
    +EC	Ecuador
    +EE	Estonia
    +EG	Egypt
    +EH	Western Sahara
    +ER	Eritrea
    +ES	Spain
    +ET	Ethiopia
    +FI	Finland
    +FJ	Fiji
    +FK	Falkland Islands
    +FM	Micronesia
    +FO	Faroe Islands
    +FR	France
    +GA	Gabon
    +GB	Britain (UK)
    +GD	Grenada
    +GE	Georgia
    +GF	French Guiana
    +GG	Guernsey
    +GH	Ghana
    +GI	Gibraltar
    +GL	Greenland
    +GM	Gambia
    +GN	Guinea
    +GP	Guadeloupe
    +GQ	Equatorial Guinea
    +GR	Greece
    +GS	South Georgia & the South Sandwich Islands
    +GT	Guatemala
    +GU	Guam
    +GW	Guinea-Bissau
    +GY	Guyana
    +HK	Hong Kong
    +HM	Heard Island & McDonald Islands
    +HN	Honduras
    +HR	Croatia
    +HT	Haiti
    +HU	Hungary
    +ID	Indonesia
    +IE	Ireland
    +IL	Israel
    +IM	Isle of Man
    +IN	India
    +IO	British Indian Ocean Territory
    +IQ	Iraq
    +IR	Iran
    +IS	Iceland
    +IT	Italy
    +JE	Jersey
    +JM	Jamaica
    +JO	Jordan
    +JP	Japan
    +KE	Kenya
    +KG	Kyrgyzstan
    +KH	Cambodia
    +KI	Kiribati
    +KM	Comoros
    +KN	St Kitts & Nevis
    +KP	Korea (North)
    +KR	Korea (South)
    +KW	Kuwait
    +KY	Cayman Islands
    +KZ	Kazakhstan
    +LA	Laos
    +LB	Lebanon
    +LC	St Lucia
    +LI	Liechtenstein
    +LK	Sri Lanka
    +LR	Liberia
    +LS	Lesotho
    +LT	Lithuania
    +LU	Luxembourg
    +LV	Latvia
    +LY	Libya
    +MA	Morocco
    +MC	Monaco
    +MD	Moldova
    +ME	Montenegro
    +MF	St Martin (French part)
    +MG	Madagascar
    +MH	Marshall Islands
    +MK	Macedonia
    +ML	Mali
    +MM	Myanmar (Burma)
    +MN	Mongolia
    +MO	Macau
    +MP	Northern Mariana Islands
    +MQ	Martinique
    +MR	Mauritania
    +MS	Montserrat
    +MT	Malta
    +MU	Mauritius
    +MV	Maldives
    +MW	Malawi
    +MX	Mexico
    +MY	Malaysia
    +MZ	Mozambique
    +NA	Namibia
    +NC	New Caledonia
    +NE	Niger
    +NF	Norfolk Island
    +NG	Nigeria
    +NI	Nicaragua
    +NL	Netherlands
    +NO	Norway
    +NP	Nepal
    +NR	Nauru
    +NU	Niue
    +NZ	New Zealand
    +OM	Oman
    +PA	Panama
    +PE	Peru
    +PF	French Polynesia
    +PG	Papua New Guinea
    +PH	Philippines
    +PK	Pakistan
    +PL	Poland
    +PM	St Pierre & Miquelon
    +PN	Pitcairn
    +PR	Puerto Rico
    +PS	Palestine
    +PT	Portugal
    +PW	Palau
    +PY	Paraguay
    +QA	Qatar
    +RE	Reunion
    +RO	Romania
    +RS	Serbia
    +RU	Russia
    +RW	Rwanda
    +SA	Saudi Arabia
    +SB	Solomon Islands
    +SC	Seychelles
    +SD	Sudan
    +SE	Sweden
    +SG	Singapore
    +SH	St Helena
    +SI	Slovenia
    +SJ	Svalbard & Jan Mayen
    +SK	Slovakia
    +SL	Sierra Leone
    +SM	San Marino
    +SN	Senegal
    +SO	Somalia
    +SR	Suriname
    +SS	South Sudan
    +ST	Sao Tome & Principe
    +SV	El Salvador
    +SX	Sint Maarten
    +SY	Syria
    +SZ	Swaziland
    +TC	Turks & Caicos Is
    +TD	Chad
    +TF	French Southern & Antarctic Lands
    +TG	Togo
    +TH	Thailand
    +TJ	Tajikistan
    +TK	Tokelau
    +TL	East Timor
    +TM	Turkmenistan
    +TN	Tunisia
    +TO	Tonga
    +TR	Turkey
    +TT	Trinidad & Tobago
    +TV	Tuvalu
    +TW	Taiwan
    +TZ	Tanzania
    +UA	Ukraine
    +UG	Uganda
    +UM	US minor outlying islands
    +US	United States
    +UY	Uruguay
    +UZ	Uzbekistan
    +VA	Vatican City
    +VC	St Vincent
    +VE	Venezuela
    +VG	Virgin Islands (UK)
    +VI	Virgin Islands (US)
    +VN	Vietnam
    +VU	Vanuatu
    +WF	Wallis & Futuna
    +WS	Samoa (western)
    +YE	Yemen
    +YT	Mayotte
    +ZA	South Africa
    +ZM	Zambia
    +ZW	Zimbabwe
    diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/leapseconds b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/leapseconds
    new file mode 100644
    index 0000000..bd1e096
    --- /dev/null
    +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/leapseconds
    @@ -0,0 +1,100 @@
    +# 
    +# This file is in the public domain, so clarified as of
    +# 2009-05-17 by Arthur David Olson.
    +
    +# Allowance for leapseconds added to each timezone file.
    +
    +# The International Earth Rotation Service periodically uses leap seconds
    +# to keep UTC to within 0.9 s of UT1
    +# (which measures the true angular orientation of the earth in space); see
    +# Terry J Quinn, The BIPM and the accurate measure of time,
    +# Proc IEEE 79, 7 (July 1991), 894-905.
    +# There were no leap seconds before 1972, because the official mechanism
    +# accounting for the discrepancy between atomic time and the earth's rotation
    +# did not exist until the early 1970s.
    +
    +# The correction (+ or -) is made at the given time, so lines
    +# will typically look like:
    +#	Leap	YEAR	MON	DAY	23:59:60	+	R/S
    +# or
    +#	Leap	YEAR	MON	DAY	23:59:59	-	R/S
    +
    +# If the leapsecond is Rolling (R) the given time is local time
    +# If the leapsecond is Stationary (S) the given time is UTC
    +
    +# Leap	YEAR	MONTH	DAY	HH:MM:SS	CORR	R/S
    +Leap	1972	Jun	30	23:59:60	+	S
    +Leap	1972	Dec	31	23:59:60	+	S
    +Leap	1973	Dec	31	23:59:60	+	S
    +Leap	1974	Dec	31	23:59:60	+	S
    +Leap	1975	Dec	31	23:59:60	+	S
    +Leap	1976	Dec	31	23:59:60	+	S
    +Leap	1977	Dec	31	23:59:60	+	S
    +Leap	1978	Dec	31	23:59:60	+	S
    +Leap	1979	Dec	31	23:59:60	+	S
    +Leap	1981	Jun	30	23:59:60	+	S
    +Leap	1982	Jun	30	23:59:60	+	S
    +Leap	1983	Jun	30	23:59:60	+	S
    +Leap	1985	Jun	30	23:59:60	+	S
    +Leap	1987	Dec	31	23:59:60	+	S
    +Leap	1989	Dec	31	23:59:60	+	S
    +Leap	1990	Dec	31	23:59:60	+	S
    +Leap	1992	Jun	30	23:59:60	+	S
    +Leap	1993	Jun	30	23:59:60	+	S
    +Leap	1994	Jun	30	23:59:60	+	S
    +Leap	1995	Dec	31	23:59:60	+	S
    +Leap	1997	Jun	30	23:59:60	+	S
    +Leap	1998	Dec	31	23:59:60	+	S
    +Leap	2005	Dec	31	23:59:60	+	S
    +Leap	2008	Dec	31	23:59:60	+	S
    +Leap	2012	Jun	30	23:59:60	+	S
    +
    +# INTERNATIONAL EARTH ROTATION AND REFERENCE SYSTEMS SERVICE (IERS)
    +#
    +# SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE ET DES SYSTEMES DE REFERENCE
    +#
    +#
    +# SERVICE DE LA ROTATION TERRESTRE
    +# OBSERVATOIRE DE PARIS
    +# 61, Av. de l'Observatoire 75014 PARIS (France)
    +# Tel.      : 33 (0) 1 40 51 22 26
    +# FAX       : 33 (0) 1 40 51 22 91
    +# e-mail    : (E-Mail Removed)
    +# http://hpiers.obspm.fr/eop-pc
    +#
    +# Paris, 5 January 2012
    +#
    +#
    +# Bulletin C 43
    +#
    +# To authorities responsible
    +# for the measurement and
    +# distribution of time
    +#
    +#
    +# UTC TIME STEP
    +# on the 1st of July 2012
    +#
    +#
    +# A positive leap second will be introduced at the end of June 2012.
    +# The sequence of dates of the UTC second markers will be:
    +#
    +#                          2012 June 30,     23h 59m 59s
    +#                          2012 June 30,     23h 59m 60s
    +#                          2012 July  1,      0h  0m  0s
    +#
    +# The difference between UTC and the International Atomic Time TAI is:
    +#
    +# from 2009 January 1, 0h UTC, to 2012 July 1  0h UTC  : UTC-TAI = - 34s
    +# from 2012 July 1,    0h UTC, until further notice    : UTC-TAI = - 35s
    +#
    +# Leap seconds can be introduced in UTC at the end of the months of December
    +# or June, depending on the evolution of UT1-TAI. Bulletin C is mailed every
    +# six months, either to announce a time step in UTC or to confirm that there
    +# will be no time step at the next possible date.
    +#
    +#
    +# Daniel GAMBIS
    +# Head
    +# Earth Orientation Center of IERS
    +# Observatoire de Paris, France
    diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/northamerica b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/northamerica
    new file mode 100644
    index 0000000..330c43f
    --- /dev/null
    +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/northamerica
    @@ -0,0 +1,3235 @@
    +# 
    +# This file is in the public domain, so clarified as of
    +# 2009-05-17 by Arthur David Olson.
    +
    +# also includes Central America and the Caribbean
    +
    +# This data is by no means authoritative; if you think you know better,
    +# go ahead and edit the file (and please send any changes to
    +# tz@iana.org for general use in the future).
    +
    +# From Paul Eggert (1999-03-22):
    +# A reliable and entertaining source about time zones is
    +# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
    +
    +###############################################################################
    +
    +# United States
    +
    +# From Paul Eggert (1999-03-31):
    +# Howse writes (pp 121-125) that time zones were invented by
    +# Professor Charles Ferdinand Dowd (1825-1904),
    +# Principal of Temple Grove Ladies' Seminary (Saratoga Springs, NY).
    +# His pamphlet ``A System of National Time for Railroads'' (1870)
    +# was the result of his proposals at the Convention of Railroad Trunk Lines
    +# in New York City (1869-10).  His 1870 proposal was based on Washington, DC,
    +# but in 1872-05 he moved the proposed origin to Greenwich.
    +# His proposal was adopted by the railroads on 1883-11-18 at 12:00,
    +# and the most of the country soon followed suit.
    +
    +# From Paul Eggert (2005-04-16):
    +# That 1883 transition occurred at 12:00 new time, not at 12:00 old time.
    +# See p 46 of David Prerau, Seize the daylight, Thunder's Mouth Press (2005).
    +
    +# From Paul Eggert (2006-03-22):
    +# A good source for time zone historical data in the US is
    +# Thomas G. Shanks, The American Atlas (5th edition),
    +# San Diego: ACS Publications, Inc. (1991).
    +# Make sure you have the errata sheet; the book is somewhat useless without it.
    +# It is the source for most of the pre-1991 US entries below.
    +
    +# From Paul Eggert (2001-03-06):
    +# Daylight Saving Time was first suggested as a joke by Benjamin Franklin
    +# in his whimsical essay ``An Economical Project for Diminishing the Cost
    +# of Light'' published in the Journal de Paris (1784-04-26).
    +# Not everyone is happy with the results:
    +#
    +#	I don't really care how time is reckoned so long as there is some
    +#	agreement about it, but I object to being told that I am saving
    +#	daylight when my reason tells me that I am doing nothing of the kind.
    +#	I even object to the implication that I am wasting something
    +#	valuable if I stay in bed after the sun has risen.  As an admirer
    +#	of moonlight I resent the bossy insistence of those who want to
    +#	reduce my time for enjoying it.  At the back of the Daylight Saving
    +#	scheme I detect the bony, blue-fingered hand of Puritanism, eager
    +#	to push people into bed earlier, and get them up earlier, to make
    +#	them healthy, wealthy and wise in spite of themselves.
    +#
    +#	-- Robertson Davies, The diary of Samuel Marchbanks,
    +#	   Clarke, Irwin (1947), XIX, Sunday
    +#
    +# For more about the first ten years of DST in the United States, see
    +# Robert Garland's 
    +# Ten years of daylight saving from the Pittsburgh standpoint
    +# (Carnegie Library of Pittsburgh, 1927).
    +#
    +# Shanks says that DST was called "War Time" in the US in 1918 and 1919.
    +# However, DST was imposed by the Standard Time Act of 1918, which
    +# was the first nationwide legal time standard, and apparently
    +# time was just called "Standard Time" or "Daylight Saving Time".
    +
    +# From Arthur David Olson:
    +# US Daylight Saving Time ended on the last Sunday of *October* in 1974.
    +# See, for example, the front page of the Saturday, 1974-10-26
    +# and Sunday, 1974-10-27 editions of the Washington Post.
    +
    +# From Arthur David Olson:
    +# Before the Uniform Time Act of 1966 took effect in 1967, observance of
    +# Daylight Saving Time in the US was by local option, except during wartime.
    +
    +# From Arthur David Olson (2000-09-25):
    +# Last night I heard part of a rebroadcast of a 1945 Arch Oboler radio drama.
    +# In the introduction, Oboler spoke of "Eastern Peace Time."
    +# An AltaVista search turned up
    +# :
    +# "When the time is announced over the radio now, it is 'Eastern Peace
    +# Time' instead of the old familiar 'Eastern War Time.'  Peace is wonderful."
    +#  (August 1945) by way of confirmation.
    +
    +# From Joseph Gallant citing
    +# George H. Douglas, _The Early Days of Radio Broadcasting_ (1987):
    +# At 7 P.M. (Eastern War Time) [on 1945-08-14], the networks were set
    +# to switch to London for Attlee's address, but the American people
    +# never got to hear his speech live. According to one press account,
    +# CBS' Bob Trout was first to announce the word of Japan's surrender,
    +# but a few seconds later, NBC, ABC and Mutual also flashed the word
    +# of surrender, all of whom interrupting the bells of Big Ben in
    +# London which were to precede Mr. Attlee's speech.
    +
    +# From Paul Eggert (2003-02-09): It was Robert St John, not Bob Trout.  From
    +# Myrna Oliver's obituary of St John on page B16 of today's Los Angeles Times:
    +#
    +# ... a war-weary U.S. clung to radios, awaiting word of Japan's surrender.
    +# Any announcement from Asia would reach St. John's New York newsroom on a
    +# wire service teletype machine, which had prescribed signals for major news.
    +# Associated Press, for example, would ring five bells before spewing out
    +# typed copy of an important story, and 10 bells for news "of transcendental
    +# importance."
    +#
    +# On Aug. 14, stalling while talking steadily into the NBC networks' open
    +# microphone, St. John heard five bells and waited only to hear a sixth bell,
    +# before announcing confidently: "Ladies and gentlemen, World War II is over.
    +# The Japanese have agreed to our surrender terms."
    +#
    +# He had scored a 20-second scoop on other broadcasters.
    +
    +# From Arthur David Olson (2005-08-22):
    +# Paul has been careful to use the "US" rules only in those locations
    +# that are part of the United States; this reflects the real scope of
    +# U.S. government action.  So even though the "US" rules have changed
    +# in the latest release, other countries won't be affected.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	US	1918	1919	-	Mar	lastSun	2:00	1:00	D
    +Rule	US	1918	1919	-	Oct	lastSun	2:00	0	S
    +Rule	US	1942	only	-	Feb	9	2:00	1:00	W # War
    +Rule	US	1945	only	-	Aug	14	23:00u	1:00	P # Peace
    +Rule	US	1945	only	-	Sep	30	2:00	0	S
    +Rule	US	1967	2006	-	Oct	lastSun	2:00	0	S
    +Rule	US	1967	1973	-	Apr	lastSun	2:00	1:00	D
    +Rule	US	1974	only	-	Jan	6	2:00	1:00	D
    +Rule	US	1975	only	-	Feb	23	2:00	1:00	D
    +Rule	US	1976	1986	-	Apr	lastSun	2:00	1:00	D
    +Rule	US	1987	2006	-	Apr	Sun>=1	2:00	1:00	D
    +Rule	US	2007	max	-	Mar	Sun>=8	2:00	1:00	D
    +Rule	US	2007	max	-	Nov	Sun>=1	2:00	0	S
    +
    +# From Arthur David Olson, 2005-12-19
    +# We generate the files specified below to guard against old files with
    +# obsolete information being left in the time zone binary directory.
    +# We limit the list to names that have appeared in previous versions of
    +# this time zone package.
    +# We do these as separate Zones rather than as Links to avoid problems if
    +# a particular place changes whether it observes DST.
    +# We put these specifications here in the northamerica file both to
    +# increase the chances that they'll actually get compiled and to
    +# avoid the need to duplicate the US rules in another file.
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	EST		 -5:00	-	EST
    +Zone	MST		 -7:00	-	MST
    +Zone	HST		-10:00	-	HST
    +Zone	EST5EDT		 -5:00	US	E%sT
    +Zone	CST6CDT		 -6:00	US	C%sT
    +Zone	MST7MDT		 -7:00	US	M%sT
    +Zone	PST8PDT		 -8:00	US	P%sT
    +
    +# From Bob Devine (1988-01-28):
    +# ...Alaska (and Hawaii) had the timezone names changed in 1967.
    +#    old			 new
    +#    Pacific Standard Time(PST)  -same-
    +#    Yukon Standard Time(YST)    -same-
    +#    Central Alaska S.T. (CAT)   Alaska-Hawaii St[an]dard Time (AHST)
    +#    Nome Standard Time (NT)     Bering Standard Time (BST)
    +#
    +# ...Alaska's timezone lines were redrawn in 1983 to give only 2 tz.
    +#    The YST zone now covers nearly all of the state, AHST just part
    +#    of the Aleutian islands.   No DST.
    +
    +# From Paul Eggert (1995-12-19):
    +# The tables below use `NST', not `NT', for Nome Standard Time.
    +# I invented `CAWT' for Central Alaska War Time.
    +
    +# From U. S. Naval Observatory (1989-01-19):
    +# USA  EASTERN       5 H  BEHIND UTC    NEW YORK, WASHINGTON
    +# USA  EASTERN       4 H  BEHIND UTC    APR 3 - OCT 30
    +# USA  CENTRAL       6 H  BEHIND UTC    CHICAGO, HOUSTON
    +# USA  CENTRAL       5 H  BEHIND UTC    APR 3 - OCT 30
    +# USA  MOUNTAIN      7 H  BEHIND UTC    DENVER
    +# USA  MOUNTAIN      6 H  BEHIND UTC    APR 3 - OCT 30
    +# USA  PACIFIC       8 H  BEHIND UTC    L.A., SAN FRANCISCO
    +# USA  PACIFIC       7 H  BEHIND UTC    APR 3 - OCT 30
    +# USA  ALASKA STD    9 H  BEHIND UTC    MOST OF ALASKA     (AKST)
    +# USA  ALASKA STD    8 H  BEHIND UTC    APR 3 - OCT 30 (AKDT)
    +# USA  ALEUTIAN     10 H  BEHIND UTC    ISLANDS WEST OF 170W
    +# USA  - " -         9 H  BEHIND UTC    APR 3 - OCT 30
    +# USA  HAWAII       10 H  BEHIND UTC
    +# USA  BERING       11 H  BEHIND UTC    SAMOA, MIDWAY
    +
    +# From Arthur David Olson (1989-01-21):
    +# The above dates are for 1988.
    +# Note the "AKST" and "AKDT" abbreviations, the claim that there's
    +# no DST in Samoa, and the claim that there is DST in Alaska and the
    +# Aleutians.
    +
    +# From Arthur David Olson (1988-02-13):
    +# Legal standard time zone names, from United States Code (1982 Edition and
    +# Supplement III), Title 15, Chapter 6, Section 260 and forward.  First, names
    +# up to 1967-04-01 (when most provisions of the Uniform Time Act of 1966
    +# took effect), as explained in sections 263 and 261:
    +#	(none)
    +#	United States standard eastern time
    +#	United States standard mountain time
    +#	United States standard central time
    +#	United States standard Pacific time
    +#	(none)
    +#	United States standard Alaska time
    +#	(none)
    +# Next, names from 1967-04-01 until 1983-11-30 (the date for
    +# public law 98-181):
    +#	Atlantic standard time
    +#	eastern standard time
    +#	central standard time
    +#	mountain standard time
    +#	Pacific standard time
    +#	Yukon standard time
    +#	Alaska-Hawaii standard time
    +#	Bering standard time
    +# And after 1983-11-30:
    +#	Atlantic standard time
    +#	eastern standard time
    +#	central standard time
    +#	mountain standard time
    +#	Pacific standard time
    +#	Alaska standard time
    +#	Hawaii-Aleutian standard time
    +#	Samoa standard time
    +# The law doesn't give abbreviations.
    +#
    +# From Paul Eggert (2000-01-08), following a heads-up from Rives McDow:
    +# Public law 106-564 (2000-12-23) introduced the abbreviation
    +# "Chamorro Standard Time" for time in Guam and the Northern Marianas.
    +# See the file "australasia".
    +
    +# From Arthur David Olson, 2005-08-09
    +# The following was signed into law on 2005-08-08.
    +#
    +# H.R. 6, Energy Policy Act of 2005, SEC. 110. DAYLIGHT SAVINGS.
    +#   (a) Amendment- Section 3(a) of the Uniform Time Act of 1966 (15
    +#   U.S.C. 260a(a)) is amended--
    +#     (1) by striking `first Sunday of April' and inserting `second
    +#     Sunday of March'; and
    +#     (2) by striking `last Sunday of October' and inserting `first
    +#     Sunday of November'.
    +#   (b) Effective Date- Subsection (a) shall take effect 1 year after the
    +#   date of enactment of this Act or March 1, 2007, whichever is later.
    +#   (c) Report to Congress- Not later than 9 months after the effective
    +#   date stated in subsection (b), the Secretary shall report to Congress
    +#   on the impact of this section on energy consumption in the United
    +#   States.
    +#   (d) Right to Revert- Congress retains the right to revert the
    +#   Daylight Saving Time back to the 2005 time schedules once the
    +#   Department study is complete.
    +
    +# US eastern time, represented by New York
    +
    +# Connecticut, Delaware, District of Columbia, most of Florida,
    +# Georgia, southeast Indiana (Dearborn and Ohio counties), eastern Kentucky
    +# (except America/Kentucky/Louisville below), Maine, Maryland, Massachusetts,
    +# New Hampshire, New Jersey, New York, North Carolina, Ohio,
    +# Pennsylvania, Rhode Island, South Carolina, eastern Tennessee,
    +# Vermont, Virginia, West Virginia
    +
    +# From Dave Cantor (2004-11-02):
    +# Early this summer I had the occasion to visit the Mount Washington
    +# Observatory weather station atop (of course!) Mount Washington [, NH]....
    +# One of the staff members said that the station was on Eastern Standard Time
    +# and didn't change their clocks for Daylight Saving ... so that their
    +# reports will always have times which are 5 hours behind UTC.
    +
    +# From Paul Eggert (2005-08-26):
    +# According to today's Huntsville Times
    +# 
    +# a few towns on Alabama's "eastern border with Georgia, such as Phenix City
    +# in Russell County, Lanett in Chambers County and some towns in Lee County,
    +# set their watches and clocks on Eastern time."  It quotes H.H. "Bubba"
    +# Roberts, city administrator in Phenix City. as saying "We are in the Central
    +# time zone, but we do go by the Eastern time zone because so many people work
    +# in Columbus."
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
    +Rule	NYC	1920	only	-	Mar	lastSun	2:00	1:00	D
    +Rule	NYC	1920	only	-	Oct	lastSun	2:00	0	S
    +Rule	NYC	1921	1966	-	Apr	lastSun	2:00	1:00	D
    +Rule	NYC	1921	1954	-	Sep	lastSun	2:00	0	S
    +Rule	NYC	1955	1966	-	Oct	lastSun	2:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/New_York	-4:56:02 -	LMT	1883 Nov 18 12:03:58
    +			-5:00	US	E%sT	1920
    +			-5:00	NYC	E%sT	1942
    +			-5:00	US	E%sT	1946
    +			-5:00	NYC	E%sT	1967
    +			-5:00	US	E%sT
    +
    +# US central time, represented by Chicago
    +
    +# Alabama, Arkansas, Florida panhandle (Bay, Calhoun, Escambia,
    +# Gulf, Holmes, Jackson, Okaloosa, Santa Rosa, Walton, and
    +# Washington counties), Illinois, western Indiana
    +# (Gibson, Jasper, Lake, LaPorte, Newton, Porter, Posey, Spencer,
    +# Vanderburgh, and Warrick counties), Iowa, most of Kansas, western
    +# Kentucky, Louisiana, Minnesota, Mississippi, Missouri, eastern
    +# Nebraska, eastern North Dakota, Oklahoma, eastern South Dakota,
    +# western Tennessee, most of Texas, Wisconsin
    +
    +# From Larry M. Smith (2006-04-26) re Wisconsin:
    +# http://www.legis.state.wi.us/statutes/Stat0175.pdf ...
    +# is currently enforced at the 01:00 time of change.  Because the local
    +# "bar time" in the state corresponds to 02:00, a number of citations
    +# are issued for the "sale of class 'B' alcohol after prohibited
    +# hours" within the deviated hour of this change every year....
    +#
    +# From Douglas R. Bomberg (2007-03-12):
    +# Wisconsin has enacted (nearly eleventh-hour) legislation to get WI
    +# Statue 175 closer in synch with the US Congress' intent....
    +# http://www.legis.state.wi.us/2007/data/acts/07Act3.pdf
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
    +Rule	Chicago	1920	only	-	Jun	13	2:00	1:00	D
    +Rule	Chicago	1920	1921	-	Oct	lastSun	2:00	0	S
    +Rule	Chicago	1921	only	-	Mar	lastSun	2:00	1:00	D
    +Rule	Chicago	1922	1966	-	Apr	lastSun	2:00	1:00	D
    +Rule	Chicago	1922	1954	-	Sep	lastSun	2:00	0	S
    +Rule	Chicago	1955	1966	-	Oct	lastSun	2:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Chicago	-5:50:36 -	LMT	1883 Nov 18 12:09:24
    +			-6:00	US	C%sT	1920
    +			-6:00	Chicago	C%sT	1936 Mar  1 2:00
    +			-5:00	-	EST	1936 Nov 15 2:00
    +			-6:00	Chicago	C%sT	1942
    +			-6:00	US	C%sT	1946
    +			-6:00	Chicago	C%sT	1967
    +			-6:00	US	C%sT
    +# Oliver County, ND switched from mountain to central time on 1992-10-25.
    +Zone America/North_Dakota/Center -6:45:12 - LMT	1883 Nov 18 12:14:48
    +			-7:00	US	M%sT	1992 Oct 25 02:00
    +			-6:00	US	C%sT
    +# Morton County, ND, switched from mountain to central time on
    +# 2003-10-26, except for the area around Mandan which was already central time.
    +# See .
    +# Officially this switch also included part of Sioux County, and
    +# Jones, Mellette, and Todd Counties in South Dakota;
    +# but in practice these other counties were already observing central time.
    +# See .
    +Zone America/North_Dakota/New_Salem -6:45:39 - LMT 1883 Nov 18 12:14:21
    +			-7:00	US	M%sT	2003 Oct 26 02:00
    +			-6:00	US	C%sT
    +
    +# From Josh Findley (2011-01-21):
    +# ...it appears that Mercer County, North Dakota, changed from the
    +# mountain time zone to the central time zone at the last transition from
    +# daylight-saving to standard time (on Nov. 7, 2010):
    +# 
    +# http://www.gpo.gov/fdsys/pkg/FR-2010-09-29/html/2010-24376.htm
    +# 
    +# 
    +# http://www.bismarcktribune.com/news/local/article_1eb1b588-c758-11df-b472-001cc4c03286.html
    +# 
    +
    +# From Andy Lipscomb (2011-01-24):
    +# ...according to the Census Bureau, the largest city is Beulah (although
    +# it's commonly referred to as Beulah-Hazen, with Hazen being the next
    +# largest city in Mercer County).  Google Maps places Beulah's city hall
    +# at 4715'51" north, 10146'40" west, which yields an offset of 6h47'07".
    +
    +Zone America/North_Dakota/Beulah -6:47:07 - LMT 1883 Nov 18 12:12:53
    +			-7:00	US	M%sT	2010 Nov  7 2:00
    +			-6:00	US	C%sT
    +
    +# US mountain time, represented by Denver
    +#
    +# Colorado, far western Kansas, Montana, western
    +# Nebraska, Nevada border (Jackpot, Owyhee, and Mountain City),
    +# New Mexico, southwestern North Dakota,
    +# western South Dakota, far western Texas (El Paso County, Hudspeth County,
    +# and Pine Springs and Nickel Creek in Culberson County), Utah, Wyoming
    +#
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
    +Rule	Denver	1920	1921	-	Mar	lastSun	2:00	1:00	D
    +Rule	Denver	1920	only	-	Oct	lastSun	2:00	0	S
    +Rule	Denver	1921	only	-	May	22	2:00	0	S
    +Rule	Denver	1965	1966	-	Apr	lastSun	2:00	1:00	D
    +Rule	Denver	1965	1966	-	Oct	lastSun	2:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Denver	-6:59:56 -	LMT	1883 Nov 18 12:00:04
    +			-7:00	US	M%sT	1920
    +			-7:00	Denver	M%sT	1942
    +			-7:00	US	M%sT	1946
    +			-7:00	Denver	M%sT	1967
    +			-7:00	US	M%sT
    +
    +# US Pacific time, represented by Los Angeles
    +#
    +# California, northern Idaho (Benewah, Bonner, Boundary, Clearwater,
    +# Idaho, Kootenai, Latah, Lewis, Nez Perce, and Shoshone counties,
    +# and the northern three-quarters of Idaho county),
    +# most of Nevada, most of Oregon, and Washington
    +#
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
    +Rule	CA	1948	only	-	Mar	14	2:00	1:00	D
    +Rule	CA	1949	only	-	Jan	 1	2:00	0	S
    +Rule	CA	1950	1966	-	Apr	lastSun	2:00	1:00	D
    +Rule	CA	1950	1961	-	Sep	lastSun	2:00	0	S
    +Rule	CA	1962	1966	-	Oct	lastSun	2:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Los_Angeles -7:52:58 -	LMT	1883 Nov 18 12:07:02
    +			-8:00	US	P%sT	1946
    +			-8:00	CA	P%sT	1967
    +			-8:00	US	P%sT
    +
    +# Alaska
    +# AK%sT is the modern abbreviation for -9:00 per USNO.
    +#
    +# From Paul Eggert (2001-05-30):
    +# Howse writes that Alaska switched from the Julian to the Gregorian calendar,
    +# and from east-of-GMT to west-of-GMT days, when the US bought it from Russia.
    +# This was on 1867-10-18, a Friday; the previous day was 1867-10-06 Julian,
    +# also a Friday.  Include only the time zone part of this transition,
    +# ignoring the switch from Julian to Gregorian, since we can't represent
    +# the Julian calendar.
    +#
    +# As far as we know, none of the exact locations mentioned below were
    +# permanently inhabited in 1867 by anyone using either calendar.
    +# (Yakutat was colonized by the Russians in 1799, but the settlement
    +# was destroyed in 1805 by a Yakutat-kon war party.)  However, there
    +# were nearby inhabitants in some cases and for our purposes perhaps
    +# it's best to simply use the official transition.
    +#
    +
    +# From Steve Ferguson (2011-01-31):
    +# The author lives in Alaska and many of the references listed are only
    +# available to Alaskan residents.
    +#
    +# 
    +# http://www.alaskahistoricalsociety.org/index.cfm?section=discover%20alaska&page=Glimpses%20of%20the%20Past&viewpost=2&ContentId=98
    +# 
    +
    +# From Arthur David Olson (2011-02-01):
    +# Here's database-relevant material from the 2001 "Alaska History" article:
    +#
    +# On September 20 [1979]...DOT...officials decreed that on April 27,
    +# 1980, Juneau and other nearby communities would move to Yukon Time.
    +# Sitka, Petersburg, Wrangell, and Ketchikan, however, would remain on
    +# Pacific Time.
    +#
    +# ...on September 22, 1980, DOT Secretary Neil E. Goldschmidt rescinded the
    +# Department's September 1979 decision. Juneau and other communities in
    +# northern Southeast reverted to Pacific Time on October 26.
    +#
    +# On October 28 [1983]...the Metlakatla Indian Community Council voted
    +# unanimously to keep the reservation on Pacific Time.
    +#
    +# According to DOT official Joanne Petrie, Indian reservations are not
    +# bound to follow time zones imposed by neighboring jurisdictions.
    +#
    +# (The last is consistent with how the database now handles the Navajo
    +# Nation.)
    +
    +# From Arthur David Olson (2011-02-09):
    +# I just spoke by phone with a staff member at the Metlakatla Indian
    +# Community office (using contact information available at
    +# 
    +# http://www.commerce.state.ak.us/dca/commdb/CIS.cfm?Comm_Boro_name=Metlakatla
    +# ).
    +# It's shortly after 1:00 here on the east coast of the United States;
    +# the staffer said it was shortly after 10:00 there. When I asked whether
    +# that meant they were on Pacific time, they said no--they were on their
    +# own time. I asked about daylight saving; they said it wasn't used. I
    +# did not inquire about practices in the past.
    +
    +# From Arthur David Olson (2011-08-17):
    +# For lack of better information, assume that Metlakatla's
    +# abandonment of use of daylight saving resulted from the 1983 vote.
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Juneau	 15:02:19 -	LMT	1867 Oct 18
    +			 -8:57:41 -	LMT	1900 Aug 20 12:00
    +			 -8:00	-	PST	1942
    +			 -8:00	US	P%sT	1946
    +			 -8:00	-	PST	1969
    +			 -8:00	US	P%sT	1980 Apr 27 2:00
    +			 -9:00	US	Y%sT	1980 Oct 26 2:00
    +			 -8:00	US	P%sT	1983 Oct 30 2:00
    +			 -9:00	US	Y%sT	1983 Nov 30
    +			 -9:00	US	AK%sT
    +Zone America/Sitka	 14:58:47 -	LMT	1867 Oct 18
    +			 -9:01:13 -	LMT	1900 Aug 20 12:00
    +			 -8:00	-	PST	1942
    +			 -8:00	US	P%sT	1946
    +			 -8:00	-	PST	1969
    +			 -8:00	US	P%sT	1983 Oct 30 2:00
    +			 -9:00	US	Y%sT	1983 Nov 30
    +			 -9:00	US	AK%sT
    +Zone America/Metlakatla	 15:13:42 -	LMT	1867 Oct 18
    +			 -8:46:18 -	LMT	1900 Aug 20 12:00
    +			 -8:00	-	PST	1942
    +			 -8:00	US	P%sT	1946
    +			 -8:00	-	PST	1969
    +			 -8:00	US	P%sT	1983 Oct 30 2:00
    +			 -8:00	-	MeST
    +Zone America/Yakutat	 14:41:05 -	LMT	1867 Oct 18
    +			 -9:18:55 -	LMT	1900 Aug 20 12:00
    +			 -9:00	-	YST	1942
    +			 -9:00	US	Y%sT	1946
    +			 -9:00	-	YST	1969
    +			 -9:00	US	Y%sT	1983 Nov 30
    +			 -9:00	US	AK%sT
    +Zone America/Anchorage	 14:00:24 -	LMT	1867 Oct 18
    +			 -9:59:36 -	LMT	1900 Aug 20 12:00
    +			-10:00	-	CAT	1942
    +			-10:00	US	CAT/CAWT 1945 Aug 14 23:00u
    +			-10:00	US	CAT/CAPT 1946 # Peace
    +			-10:00	-	CAT	1967 Apr
    +			-10:00	-	AHST	1969
    +			-10:00	US	AH%sT	1983 Oct 30 2:00
    +			 -9:00	US	Y%sT	1983 Nov 30
    +			 -9:00	US	AK%sT
    +Zone America/Nome	 12:58:21 -	LMT	1867 Oct 18
    +			-11:01:38 -	LMT	1900 Aug 20 12:00
    +			-11:00	-	NST	1942
    +			-11:00	US	N%sT	1946
    +			-11:00	-	NST	1967 Apr
    +			-11:00	-	BST	1969
    +			-11:00	US	B%sT	1983 Oct 30 2:00
    +			 -9:00	US	Y%sT	1983 Nov 30
    +			 -9:00	US	AK%sT
    +Zone America/Adak	 12:13:21 -	LMT	1867 Oct 18
    +			-11:46:38 -	LMT	1900 Aug 20 12:00
    +			-11:00	-	NST	1942
    +			-11:00	US	N%sT	1946
    +			-11:00	-	NST	1967 Apr
    +			-11:00	-	BST	1969
    +			-11:00	US	B%sT	1983 Oct 30 2:00
    +			-10:00	US	AH%sT	1983 Nov 30
    +			-10:00	US	HA%sT
    +# The following switches don't quite make our 1970 cutoff.
    +#
    +# Shanks writes that part of southwest Alaska (e.g. Aniak)
    +# switched from -11:00 to -10:00 on 1968-09-22 at 02:00,
    +# and another part (e.g. Akiak) made the same switch five weeks later.
    +#
    +# From David Flater (2004-11-09):
    +# In e-mail, 2004-11-02, Ray Hudson, historian/liaison to the Unalaska
    +# Historic Preservation Commission, provided this information, which
    +# suggests that Unalaska deviated from statutory time from early 1967
    +# possibly until 1983:
    +#
    +#  Minutes of the Unalaska City Council Meeting, January 10, 1967:
    +#  "Except for St. Paul and Akutan, Unalaska is the only important
    +#  location not on Alaska Standard Time.  The following resolution was
    +#  made by William Robinson and seconded by Henry Swanson:  Be it
    +#  resolved that the City of Unalaska hereby goes to Alaska Standard
    +#  Time as of midnight Friday, January 13, 1967 (1 A.M. Saturday,
    +#  January 14, Alaska Standard Time.)  This resolution was passed with
    +#  three votes for and one against."
    +
    +# Hawaii
    +
    +# From Arthur David Olson (2010-12-09):
    +# "Hawaiian Time" by Robert C. Schmitt and Doak C. Cox appears on pages 207-225
    +# of volume 26 of The Hawaiian Journal of History (1992). As of 2010-12-09,
    +# the article is available at
    +# 
    +# http://evols.library.manoa.hawaii.edu/bitstream/10524/239/2/JL26215.pdf
    +# 
    +# and indicates that standard time was adopted effective noon, January
    +# 13, 1896 (page 218), that in "1933, the Legislature decreed daylight
    +# saving for the period between the last Sunday of each April and the
    +# last Sunday of each September, but less than a month later repealed the
    +# act," (page 220), that year-round daylight saving time was in effect
    +# from 1942-02-09 to 1945-09-30 (page 221, with no time of day given for
    +# when clocks changed) and that clocks were changed by 30 minutes
    +# effective the second Sunday of June, 1947 (page 219, with no time of
    +# day given for when clocks changed). A footnote for the 1933 changes
    +# cites Session Laws of Hawaii 1933, "Act. 90 (approved 26 Apr. 1933)
    +# and Act 163 (approved 21 May 1933)."
    +
    +# From Arthur David Olson (2011-01-19):
    +# The following is from "Laws of the Territory of Hawaii Passed by the
    +# Seventeenth Legislature: Regular Session 1933," available (as of
    +# 2011-01-19) at American University's Pence Law Library. Page 85: "Act
    +# 90...At 2 o'clock ante meridian of the last Sunday in April of each
    +# year, the standard time of this Territory shall be advanced one
    +# hour...This Act shall take effect upon its approval. Approved this 26th
    +# day of April, A. D. 1933. LAWRENCE M JUDD, Governor of the Territory of
    +# Hawaii." Page 172:  "Act 163...Act 90 of the Session Laws of 1933 is
    +# hereby repealed...This Act shall take effect upon its approval, upon
    +# which date the standard time of this Territory shall be restored to
    +# that existing immediately prior to the taking effect of said Act 90.
    +# Approved this 21st day of May, A. D. 1933. LAWRENCE M. JUDD, Governor
    +# of the Territory of Hawaii."
    +#
    +# Note that 1933-05-21 was a Sunday.
    +# We're left to guess the time of day when Act 163 was approved; guess noon.
    +
    +Zone Pacific/Honolulu	-10:31:26 -	LMT	1896 Jan 13 12:00 #Schmitt&Cox
    +			-10:30	-	HST	1933 Apr 30 2:00 #Laws 1933
    +			-10:30	1:00	HDT	1933 May 21 12:00 #Laws 1933+12
    +			-10:30	-	HST	1942 Feb 09 2:00 #Schmitt&Cox+2
    +			-10:30	1:00	HDT	1945 Sep 30 2:00 #Schmitt&Cox+2
    +			-10:30	-	HST	1947 Jun  8 2:00 #Schmitt&Cox+2
    +			-10:00	-	HST
    +
    +# Now we turn to US areas that have diverged from the consensus since 1970.
    +
    +# Arizona mostly uses MST.
    +
    +# From Paul Eggert (2002-10-20):
    +#
    +# The information in the rest of this paragraph is derived from the
    +# 
    +# Daylight Saving Time web page (2002-01-23) maintained by the
    +# Arizona State Library, Archives and Public Records.
    +# Between 1944-01-01 and 1944-04-01 the State of Arizona used standard
    +# time, but by federal law railroads, airlines, bus lines, military
    +# personnel, and some engaged in interstate commerce continued to
    +# observe war (i.e., daylight saving) time.  The 1944-03-17 Phoenix
    +# Gazette says that was the date the law changed, and that 04-01 was
    +# the date the state's clocks would change.  In 1945 the State of
    +# Arizona used standard time all year, again with exceptions only as
    +# mandated by federal law.  Arizona observed DST in 1967, but Arizona
    +# Laws 1968, ch. 183 (effective 1968-03-21) repealed DST.
    +#
    +# Shanks says the 1944 experiment came to an end on 1944-03-17.
    +# Go with the Arizona State Library instead.
    +
    +Zone America/Phoenix	-7:28:18 -	LMT	1883 Nov 18 11:31:42
    +			-7:00	US	M%sT	1944 Jan  1 00:01
    +			-7:00	-	MST	1944 Apr  1 00:01
    +			-7:00	US	M%sT	1944 Oct  1 00:01
    +			-7:00	-	MST	1967
    +			-7:00	US	M%sT	1968 Mar 21
    +			-7:00	-	MST
    +# From Arthur David Olson (1988-02-13):
    +# A writer from the Inter Tribal Council of Arizona, Inc.,
    +# notes in private correspondence dated 1987-12-28 that "Presently, only the
    +# Navajo Nation participates in the Daylight Saving Time policy, due to its
    +# large size and location in three states."  (The "only" means that other
    +# tribal nations don't use DST.)
    +
    +Link America/Denver America/Shiprock
    +
    +# Southern Idaho (Ada, Adams, Bannock, Bear Lake, Bingham, Blaine,
    +# Boise, Bonneville, Butte, Camas, Canyon, Caribou, Cassia, Clark,
    +# Custer, Elmore, Franklin, Fremont, Gem, Gooding, Jefferson, Jerome,
    +# Lemhi, Lincoln, Madison, Minidoka, Oneida, Owyhee, Payette, Power,
    +# Teton, Twin Falls, Valley, Washington counties, and the southern
    +# quarter of Idaho county) and eastern Oregon (most of Malheur County)
    +# switched four weeks late in 1974.
    +#
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Boise	-7:44:49 -	LMT	1883 Nov 18 12:15:11
    +			-8:00	US	P%sT	1923 May 13 2:00
    +			-7:00	US	M%sT	1974
    +			-7:00	-	MST	1974 Feb  3 2:00
    +			-7:00	US	M%sT
    +
    +# Indiana
    +#
    +# For a map of Indiana's time zone regions, see:
    +# 
    +# What time is it in Indiana?
    +#  (2006-03-01)
    +#
    +# From Paul Eggert (2007-08-17):
    +# Since 1970, most of Indiana has been like America/Indiana/Indianapolis,
    +# with the following exceptions:
    +#
    +# - Gibson, Jasper, Lake, LaPorte, Newton, Porter, Posey, Spencer,
    +#   Vandenburgh, and Warrick counties have been like America/Chicago.
    +#
    +# - Dearborn and Ohio counties have been like America/New_York.
    +#
    +# - Clark, Floyd, and Harrison counties have been like
    +#   America/Kentucky/Louisville.
    +#
    +# - Crawford, Daviess, Dubois, Knox, Martin, Perry, Pike, Pulaski, Starke,
    +#   and Switzerland counties have their own time zone histories as noted below.
    +#
    +# Shanks partitioned Indiana into 345 regions, each with its own time history,
    +# and wrote ``Even newspaper reports present contradictory information.''
    +# Those Hoosiers!  Such a flighty and changeable people!
    +# Fortunately, most of the complexity occurred before our cutoff date of 1970.
    +#
    +# Other than Indianapolis, the Indiana place names are so nondescript
    +# that they would be ambiguous if we left them at the `America' level.
    +# So we reluctantly put them all in a subdirectory `America/Indiana'.
    +
    +# From Paul Eggert (2005-08-16):
    +# http://www.mccsc.edu/time.html says that Indiana will use DST starting 2006.
    +
    +# From Nathan Stratton Treadway (2006-03-30):
    +# http://www.dot.gov/affairs/dot0406.htm [3705 B]
    +# From Deborah Goldsmith (2006-01-18):
    +# http://dmses.dot.gov/docimages/pdf95/382329_web.pdf [2.9 MB]
    +# From Paul Eggert (2006-01-20):
    +# It says "DOT is relocating the time zone boundary in Indiana to move Starke,
    +# Pulaski, Knox, Daviess, Martin, Pike, Dubois, and Perry Counties from the
    +# Eastern Time Zone to the Central Time Zone.... The effective date of
    +# this rule is 2:OO a.m. EST Sunday, April 2, 2006, which is the
    +# changeover date from standard time to Daylight Saving Time."
    +# Strictly speaking, this means the affected counties will change their
    +# clocks twice that night, but this obviously is in error.  The intent
    +# is that 01:59:59 EST be followed by 02:00:00 CDT.
    +
    +# From Gwillim Law (2007-02-10):
    +# The Associated Press has been reporting that Pulaski County, Indiana is
    +# going to switch from Central to Eastern Time on March 11, 2007....
    +# http://www.indystar.com/apps/pbcs.dll/article?AID=/20070207/LOCAL190108/702070524/0/LOCAL
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
    +Rule Indianapolis 1941	only	-	Jun	22	2:00	1:00	D
    +Rule Indianapolis 1941	1954	-	Sep	lastSun	2:00	0	S
    +Rule Indianapolis 1946	1954	-	Apr	lastSun	2:00	1:00	D
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Indiana/Indianapolis -5:44:38 - LMT 1883 Nov 18 12:15:22
    +			-6:00	US	C%sT	1920
    +			-6:00 Indianapolis C%sT	1942
    +			-6:00	US	C%sT	1946
    +			-6:00 Indianapolis C%sT	1955 Apr 24 2:00
    +			-5:00	-	EST	1957 Sep 29 2:00
    +			-6:00	-	CST	1958 Apr 27 2:00
    +			-5:00	-	EST	1969
    +			-5:00	US	E%sT	1971
    +			-5:00	-	EST	2006
    +			-5:00	US	E%sT
    +#
    +# Eastern Crawford County, Indiana, left its clocks alone in 1974,
    +# as well as from 1976 through 2005.
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
    +Rule	Marengo	1951	only	-	Apr	lastSun	2:00	1:00	D
    +Rule	Marengo	1951	only	-	Sep	lastSun	2:00	0	S
    +Rule	Marengo	1954	1960	-	Apr	lastSun	2:00	1:00	D
    +Rule	Marengo	1954	1960	-	Sep	lastSun	2:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Indiana/Marengo -5:45:23 -	LMT	1883 Nov 18 12:14:37
    +			-6:00	US	C%sT	1951
    +			-6:00	Marengo	C%sT	1961 Apr 30 2:00
    +			-5:00	-	EST	1969
    +			-5:00	US	E%sT	1974 Jan  6 2:00
    +			-6:00	1:00	CDT	1974 Oct 27 2:00
    +			-5:00	US	E%sT	1976
    +			-5:00	-	EST	2006
    +			-5:00	US	E%sT
    +#
    +# Daviess, Dubois, Knox, and Martin Counties, Indiana,
    +# switched from eastern to central time in April 2006, then switched back
    +# in November 2007.
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
    +Rule Vincennes	1946	only	-	Apr	lastSun	2:00	1:00	D
    +Rule Vincennes	1946	only	-	Sep	lastSun	2:00	0	S
    +Rule Vincennes	1953	1954	-	Apr	lastSun	2:00	1:00	D
    +Rule Vincennes	1953	1959	-	Sep	lastSun	2:00	0	S
    +Rule Vincennes	1955	only	-	May	 1	0:00	1:00	D
    +Rule Vincennes	1956	1963	-	Apr	lastSun	2:00	1:00	D
    +Rule Vincennes	1960	only	-	Oct	lastSun	2:00	0	S
    +Rule Vincennes	1961	only	-	Sep	lastSun	2:00	0	S
    +Rule Vincennes	1962	1963	-	Oct	lastSun	2:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Indiana/Vincennes -5:50:07 - LMT	1883 Nov 18 12:09:53
    +			-6:00	US	C%sT	1946
    +			-6:00 Vincennes	C%sT	1964 Apr 26 2:00
    +			-5:00	-	EST	1969
    +			-5:00	US	E%sT	1971
    +			-5:00	-	EST	2006 Apr  2 2:00
    +			-6:00	US	C%sT	2007 Nov  4 2:00
    +			-5:00	US	E%sT
    +#
    +# Perry County, Indiana, switched from eastern to central time in April 2006.
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
    +Rule Perry	1946	only	-	Apr	lastSun	2:00	1:00	D
    +Rule Perry	1946	only	-	Sep	lastSun	2:00	0	S
    +Rule Perry	1953	1954	-	Apr	lastSun	2:00	1:00	D
    +Rule Perry	1953	1959	-	Sep	lastSun	2:00	0	S
    +Rule Perry	1955	only	-	May	 1	0:00	1:00	D
    +Rule Perry	1956	1963	-	Apr	lastSun	2:00	1:00	D
    +Rule Perry	1960	only	-	Oct	lastSun	2:00	0	S
    +Rule Perry	1961	only	-	Sep	lastSun	2:00	0	S
    +Rule Perry	1962	1963	-	Oct	lastSun	2:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Indiana/Tell_City -5:47:03 - LMT	1883 Nov 18 12:12:57
    +			-6:00	US	C%sT	1946
    +			-6:00 Perry	C%sT	1964 Apr 26 2:00
    +			-5:00	-	EST	1969
    +			-5:00	US	E%sT	1971
    +			-5:00	-	EST	2006 Apr  2 2:00
    +			-6:00	US	C%sT
    +#
    +# Pike County, Indiana moved from central to eastern time in 1977,
    +# then switched back in 2006, then switched back again in 2007.
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
    +Rule	Pike	1955	only	-	May	 1	0:00	1:00	D
    +Rule	Pike	1955	1960	-	Sep	lastSun	2:00	0	S
    +Rule	Pike	1956	1964	-	Apr	lastSun	2:00	1:00	D
    +Rule	Pike	1961	1964	-	Oct	lastSun	2:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Indiana/Petersburg -5:49:07 - LMT	1883 Nov 18 12:10:53
    +			-6:00	US	C%sT	1955
    +			-6:00	Pike	C%sT	1965 Apr 25 2:00
    +			-5:00	-	EST	1966 Oct 30 2:00
    +			-6:00	US	C%sT	1977 Oct 30 2:00
    +			-5:00	-	EST	2006 Apr  2 2:00
    +			-6:00	US	C%sT	2007 Nov  4 2:00
    +			-5:00	US	E%sT
    +#
    +# Starke County, Indiana moved from central to eastern time in 1991,
    +# then switched back in 2006.
    +# From Arthur David Olson (1991-10-28):
    +# An article on page A3 of the Sunday, 1991-10-27 Washington Post
    +# notes that Starke County switched from Central time to Eastern time as of
    +# 1991-10-27.
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
    +Rule	Starke	1947	1961	-	Apr	lastSun	2:00	1:00	D
    +Rule	Starke	1947	1954	-	Sep	lastSun	2:00	0	S
    +Rule	Starke	1955	1956	-	Oct	lastSun	2:00	0	S
    +Rule	Starke	1957	1958	-	Sep	lastSun	2:00	0	S
    +Rule	Starke	1959	1961	-	Oct	lastSun	2:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Indiana/Knox -5:46:30 -	LMT	1883 Nov 18 12:13:30
    +			-6:00	US	C%sT	1947
    +			-6:00	Starke	C%sT	1962 Apr 29 2:00
    +			-5:00	-	EST	1963 Oct 27 2:00
    +			-6:00	US	C%sT	1991 Oct 27 2:00
    +			-5:00	-	EST	2006 Apr  2 2:00
    +			-6:00	US	C%sT
    +#
    +# Pulaski County, Indiana, switched from eastern to central time in
    +# April 2006 and then switched back in March 2007.
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
    +Rule	Pulaski	1946	1960	-	Apr	lastSun	2:00	1:00	D
    +Rule	Pulaski	1946	1954	-	Sep	lastSun	2:00	0	S
    +Rule	Pulaski	1955	1956	-	Oct	lastSun	2:00	0	S
    +Rule	Pulaski	1957	1960	-	Sep	lastSun	2:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Indiana/Winamac -5:46:25 - LMT	1883 Nov 18 12:13:35
    +			-6:00	US	C%sT	1946
    +			-6:00	Pulaski	C%sT	1961 Apr 30 2:00
    +			-5:00	-	EST	1969
    +			-5:00	US	E%sT	1971
    +			-5:00	-	EST	2006 Apr  2 2:00
    +			-6:00	US	C%sT	2007 Mar 11 2:00
    +			-5:00	US	E%sT
    +#
    +# Switzerland County, Indiana, did not observe DST from 1973 through 2005.
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Indiana/Vevay -5:40:16 -	LMT	1883 Nov 18 12:19:44
    +			-6:00	US	C%sT	1954 Apr 25 2:00
    +			-5:00	-	EST	1969
    +			-5:00	US	E%sT	1973
    +			-5:00	-	EST	2006
    +			-5:00	US	E%sT
    +
    +# Part of Kentucky left its clocks alone in 1974.
    +# This also includes Clark, Floyd, and Harrison counties in Indiana.
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
    +Rule Louisville	1921	only	-	May	1	2:00	1:00	D
    +Rule Louisville	1921	only	-	Sep	1	2:00	0	S
    +Rule Louisville	1941	1961	-	Apr	lastSun	2:00	1:00	D
    +Rule Louisville	1941	only	-	Sep	lastSun	2:00	0	S
    +Rule Louisville	1946	only	-	Jun	2	2:00	0	S
    +Rule Louisville	1950	1955	-	Sep	lastSun	2:00	0	S
    +Rule Louisville	1956	1960	-	Oct	lastSun	2:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Kentucky/Louisville -5:43:02 -	LMT	1883 Nov 18 12:16:58
    +			-6:00	US	C%sT	1921
    +			-6:00 Louisville C%sT	1942
    +			-6:00	US	C%sT	1946
    +			-6:00 Louisville C%sT	1961 Jul 23 2:00
    +			-5:00	-	EST	1968
    +			-5:00	US	E%sT	1974 Jan  6 2:00
    +			-6:00	1:00	CDT	1974 Oct 27 2:00
    +			-5:00	US	E%sT
    +#
    +# Wayne County, Kentucky
    +#
    +# From
    +# 
    +# Lake Cumberland LIFE
    +#  (1999-01-29) via WKYM-101.7:
    +# Clinton County has joined Wayne County in asking the DoT to change from
    +# the Central to the Eastern time zone....  The Wayne County government made
    +# the same request in December.  And while Russell County officials have not
    +# taken action, the majority of respondents to a poll conducted there in
    +# August indicated they would like to change to "fast time" also.
    +# The three Lake Cumberland counties are the farthest east of any U.S.
    +# location in the Central time zone.
    +#
    +# From Rich Wales (2000-08-29):
    +# After prolonged debate, and despite continuing deep differences of opinion,
    +# Wayne County (central Kentucky) is switching from Central (-0600) to Eastern
    +# (-0500) time.  They won't "fall back" this year.  See Sara Shipley,
    +# The difference an hour makes, Nando Times (2000-08-29 15:33 -0400).
    +#
    +# From Paul Eggert (2001-07-16):
    +# The final rule was published in the
    +# 
    +# Federal Register 65, 160 (2000-08-17), page 50154-50158.
    +# 
    +#
    +Zone America/Kentucky/Monticello -5:39:24 - LMT	1883 Nov 18 12:20:36
    +			-6:00	US	C%sT	1946
    +			-6:00	-	CST	1968
    +			-6:00	US	C%sT	2000 Oct 29  2:00
    +			-5:00	US	E%sT
    +
    +
    +# From Rives McDow (2000-08-30):
    +# Here ... are all the changes in the US since 1985.
    +# Kearny County, KS (put all of county on central;
    +#	previously split between MST and CST) ... 1990-10
    +# Starke County, IN (from CST to EST) ... 1991-10
    +# Oliver County, ND (from MST to CST) ... 1992-10
    +# West Wendover, NV (from PST TO MST) ... 1999-10
    +# Wayne County, KY (from CST to EST) ... 2000-10
    +#
    +# From Paul Eggert (2001-07-17):
    +# We don't know where the line used to be within Kearny County, KS,
    +# so omit that change for now.
    +# See America/Indiana/Knox for the Starke County, IN change.
    +# See America/North_Dakota/Center for the Oliver County, ND change.
    +# West Wendover, NV officially switched from Pacific to mountain time on
    +# 1999-10-31.  See the
    +# 
    +# Federal Register 64, 203 (1999-10-21), page 56705-56707.
    +# 
    +# However, the Federal Register says that West Wendover already operated
    +# on mountain time, and the rule merely made this official;
    +# hence a separate tz entry is not needed.
    +
    +# Michigan
    +#
    +# From Bob Devine (1988-01-28):
    +# Michigan didn't observe DST from 1968 to 1973.
    +#
    +# From Paul Eggert (1999-03-31):
    +# Shanks writes that Michigan started using standard time on 1885-09-18,
    +# but Howse writes (pp 124-125, referring to Popular Astronomy, 1901-01)
    +# that Detroit kept
    +#
    +#	local time until 1900 when the City Council decreed that clocks should
    +#	be put back twenty-eight minutes to Central Standard Time.  Half the
    +#	city obeyed, half refused.  After considerable debate, the decision
    +#	was rescinded and the city reverted to Sun time.  A derisive offer to
    +#	erect a sundial in front of the city hall was referred to the
    +#	Committee on Sewers.  Then, in 1905, Central time was adopted
    +#	by city vote.
    +#
    +# This story is too entertaining to be false, so go with Howse over Shanks.
    +#
    +# From Paul Eggert (2001-03-06):
    +# Garland (1927) writes ``Cleveland and Detroit advanced their clocks
    +# one hour in 1914.''  This change is not in Shanks.  We have no more
    +# info, so omit this for now.
    +#
    +# Most of Michigan observed DST from 1973 on, but was a bit late in 1975.
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
    +Rule	Detroit	1948	only	-	Apr	lastSun	2:00	1:00	D
    +Rule	Detroit	1948	only	-	Sep	lastSun	2:00	0	S
    +Rule	Detroit	1967	only	-	Jun	14	2:00	1:00	D
    +Rule	Detroit	1967	only	-	Oct	lastSun	2:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Detroit	-5:32:11 -	LMT	1905
    +			-6:00	-	CST	1915 May 15 2:00
    +			-5:00	-	EST	1942
    +			-5:00	US	E%sT	1946
    +			-5:00	Detroit	E%sT	1973
    +			-5:00	US	E%sT	1975
    +			-5:00	-	EST	1975 Apr 27 2:00
    +			-5:00	US	E%sT
    +#
    +# Dickinson, Gogebic, Iron, and Menominee Counties, Michigan,
    +# switched from EST to CST/CDT in 1973.
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
    +Rule Menominee	1946	only	-	Apr	lastSun	2:00	1:00	D
    +Rule Menominee	1946	only	-	Sep	lastSun	2:00	0	S
    +Rule Menominee	1966	only	-	Apr	lastSun	2:00	1:00	D
    +Rule Menominee	1966	only	-	Oct	lastSun	2:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Menominee	-5:50:27 -	LMT	1885 Sep 18 12:00
    +			-6:00	US	C%sT	1946
    +			-6:00 Menominee	C%sT	1969 Apr 27 2:00
    +			-5:00	-	EST	1973 Apr 29 2:00
    +			-6:00	US	C%sT
    +
    +# Navassa
    +# administered by the US Fish and Wildlife Service
    +# claimed by US under the provisions of the 1856 Guano Islands Act
    +# also claimed by Haiti
    +# occupied 1857/1900 by the Navassa Phosphate Co
    +# US lighthouse 1917/1996-09
    +# currently uninhabited
    +# see Mark Fineman, ``An Isle Rich in Guano and Discord'',
    +# _Los Angeles Times_ (1998-11-10), A1, A10; it cites
    +# Jimmy Skaggs, _The Great Guano Rush_ (1994).
    +
    +################################################################################
    +
    +
    +# From Paul Eggert (2006-03-22):
    +# A good source for time zone historical data outside the U.S. is
    +# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
    +# San Diego: ACS Publications, Inc. (2003).
    +#
    +# Gwillim Law writes that a good source
    +# for recent time zone data is the International Air Transport
    +# Association's Standard Schedules Information Manual (IATA SSIM),
    +# published semiannually.  Law sent in several helpful summaries
    +# of the IATA's data after 1990.
    +#
    +# Except where otherwise noted, Shanks & Pottenger is the source for
    +# entries through 1990, and IATA SSIM is the source for entries afterwards.
    +#
    +# Other sources occasionally used include:
    +#
    +#	Edward W. Whitman, World Time Differences,
    +#	Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated),
    +#	which I found in the UCLA library.
    +#
    +#	
    +#	William Willett, The Waste of Daylight, 19th edition
    +#	 (1914-03)
    +#
    +# See the `europe' file for Greenland.
    +
    +# Canada
    +
    +# From Alain LaBont (1994-11-14):
    +# I post here the time zone abbreviations standardized in Canada
    +# for both English and French in the CAN/CSA-Z234.4-89 standard....
    +#
    +#	UTC	Standard time	Daylight savings time
    +#	offset	French	English	French	English
    +#	-2:30	-	-	HAT	NDT
    +#	-3	-	-	HAA	ADT
    +#	-3:30	HNT	NST	-	-
    +#	-4	HNA	AST	HAE	EDT
    +#	-5	HNE	EST	HAC	CDT
    +#	-6	HNC	CST	HAR	MDT
    +#	-7	HNR	MST	HAP	PDT
    +#	-8	HNP	PST	HAY	YDT
    +#	-9	HNY	YST	-	-
    +#
    +#	HN: Heure Normale	ST: Standard Time
    +#	HA: Heure Avance	DT: Daylight saving Time
    +#
    +#	A: de l'Atlantique	Atlantic
    +#	C: du Centre		Central
    +#	E: de l'Est		Eastern
    +#	M:			Mountain
    +#	N:			Newfoundland
    +#	P: du Pacifique		Pacific
    +#	R: des Rocheuses
    +#	T: de Terre-Neuve
    +#	Y: du Yukon		Yukon
    +#
    +# From Paul Eggert (1994-11-22):
    +# Alas, this sort of thing must be handled by localization software.
    +
    +# Unless otherwise specified, the data for Canada are all from Shanks
    +# & Pottenger.
    +
    +# From Chris Walton (2006-04-01, 2006-04-25, 2006-06-26, 2007-01-31,
    +# 2007-03-01):
    +# The British Columbia government announced yesterday that it will
    +# adjust daylight savings next year to align with changes in the
    +# U.S. and the rest of Canada....
    +# http://www2.news.gov.bc.ca/news_releases_2005-2009/2006AG0014-000330.htm
    +# ...
    +# Nova Scotia
    +# Daylight saving time will be extended by four weeks starting in 2007....
    +# http://www.gov.ns.ca/just/regulations/rg2/2006/ma1206.pdf
    +#
    +# [For New Brunswick] the new legislation dictates that the time change is to
    +# be done at 02:00 instead of 00:01.
    +# http://www.gnb.ca/0062/acts/BBA-2006/Chap-19.pdf
    +# ...
    +# Manitoba has traditionally changed the clock every fall at 03:00.
    +# As of 2006, the transition is to take place one hour earlier at 02:00.
    +# http://web2.gov.mb.ca/laws/statutes/ccsm/o030e.php
    +# ...
    +# [Alberta, Ontario, Quebec] will follow US rules.
    +# http://www.qp.gov.ab.ca/documents/spring/CH03_06.CFM
    +# http://www.e-laws.gov.on.ca/DBLaws/Source/Regs/English/2006/R06111_e.htm
    +# http://www2.publicationsduquebec.gouv.qc.ca/dynamicSearch/telecharge.php?type=5&file=2006C39A.PDF
    +# ...
    +# P.E.I. will follow US rules....
    +# http://www.assembly.pe.ca/bills/pdf_chapter/62/3/chapter-41.pdf
    +# ...
    +# Province of Newfoundland and Labrador....
    +# http://www.hoa.gov.nl.ca/hoa/bills/Bill0634.htm
    +# ...
    +# Yukon
    +# http://www.gov.yk.ca/legislation/regs/oic2006_127.pdf
    +# ...
    +# N.W.T. will follow US rules.  Whoever maintains the government web site
    +# does not seem to believe in bookmarks.  To see the news release, click the
    +# following link and search for "Daylight Savings Time Change".  Press the
    +# "Daylight Savings Time Change" link; it will fire off a popup using
    +# JavaScript.
    +# http://www.exec.gov.nt.ca/currentnews/currentPR.asp?mode=archive
    +# ...
    +# Nunavut
    +# An amendment to the Interpretation Act was registered on February 19/2007....
    +# http://action.attavik.ca/home/justice-gn/attach/2007/gaz02part2.pdf
    +
    +# From Paul Eggert (2006-04-25):
    +# H. David Matthews and Mary Vincent's map
    +# 
    +# "It's about TIME", _Canadian Geographic_ (September-October 1998)
    +#  contains detailed boundaries for regions observing nonstandard
    +# time and daylight saving time arrangements in Canada circa 1998.
    +#
    +# INMS, the Institute for National Measurement Standards in Ottawa, has 
    +# information about standard and daylight saving time zones in Canada.
    +#  (updated periodically).
    +# Its unofficial information is often taken from Matthews and Vincent.
    +
    +# From Paul Eggert (2006-06-27):
    +# For now, assume all of DST-observing Canada will fall into line with the
    +# new US DST rules,
    +
    +# From Chris Walton (2011-12-01)
    +# In the first of Tammy Hardwick's articles
    +# 
    +# http://www.ilovecreston.com/?p=articles&t=spec&ar=260
    +# 
    +# she quotes the Friday November 1/1918 edition of the Creston Review.
    +# The quote includes these two statements:
    +# 'Sunday the CPR went back to the old system of time...'
    +# '... The daylight saving scheme was dropped all over Canada at the same time,'
    +# These statements refer to a transition from daylight time to standard time
    +# that occurred nationally on Sunday October 27/1918.  This transition was
    +# also documented in the Saturday October 26/1918 edition of the Toronto Star.
    +
    +# In light of that evidence, we alter the date from the earlier believed
    +# Oct 31, to Oct 27, 1918 (and Sunday is a more likely transition day
    +# than Thursday) in all Canadian rulesets.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Canada	1918	only	-	Apr	14	2:00	1:00	D
    +Rule	Canada	1918	only	-	Oct	27	2:00	0	S
    +Rule	Canada	1942	only	-	Feb	 9	2:00	1:00	W # War
    +Rule	Canada	1945	only	-	Aug	14	23:00u	1:00	P # Peace
    +Rule	Canada	1945	only	-	Sep	30	2:00	0	S
    +Rule	Canada	1974	1986	-	Apr	lastSun	2:00	1:00	D
    +Rule	Canada	1974	2006	-	Oct	lastSun	2:00	0	S
    +Rule	Canada	1987	2006	-	Apr	Sun>=1	2:00	1:00	D
    +Rule	Canada	2007	max	-	Mar	Sun>=8	2:00	1:00	D
    +Rule	Canada	2007	max	-	Nov	Sun>=1	2:00	0	S
    +
    +
    +# Newfoundland and Labrador
    +
    +# From Paul Eggert (2000-10-02):
    +# Matthews and Vincent (1998) write that Labrador should use NST/NDT,
    +# but the only part of Labrador that follows the rules is the
    +# southeast corner, including Port Hope Simpson and Mary's Harbour,
    +# but excluding, say, Black Tickle.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	StJohns	1917	only	-	Apr	 8	2:00	1:00	D
    +Rule	StJohns	1917	only	-	Sep	17	2:00	0	S
    +# Whitman gives 1919 Apr 5 and 1920 Apr 5; go with Shanks & Pottenger.
    +Rule	StJohns	1919	only	-	May	 5	23:00	1:00	D
    +Rule	StJohns	1919	only	-	Aug	12	23:00	0	S
    +# For 1931-1935 Whitman gives Apr same date; go with Shanks & Pottenger.
    +Rule	StJohns	1920	1935	-	May	Sun>=1	23:00	1:00	D
    +Rule	StJohns	1920	1935	-	Oct	lastSun	23:00	0	S
    +# For 1936-1941 Whitman gives May Sun>=8 and Oct Sun>=1; go with Shanks &
    +# Pottenger.
    +Rule	StJohns	1936	1941	-	May	Mon>=9	0:00	1:00	D
    +Rule	StJohns	1936	1941	-	Oct	Mon>=2	0:00	0	S
    +# Whitman gives the following transitions:
    +# 1942 03-01/12-31, 1943 05-30/09-05, 1944 07-10/09-02, 1945 01-01/10-07
    +# but go with Shanks & Pottenger and assume they used Canadian rules.
    +# For 1946-9 Whitman gives May 5,4,9,1 - Oct 1,5,3,2, and for 1950 he gives
    +# Apr 30 - Sep 24; go with Shanks & Pottenger.
    +Rule	StJohns	1946	1950	-	May	Sun>=8	2:00	1:00	D
    +Rule	StJohns	1946	1950	-	Oct	Sun>=2	2:00	0	S
    +Rule	StJohns	1951	1986	-	Apr	lastSun	2:00	1:00	D
    +Rule	StJohns	1951	1959	-	Sep	lastSun	2:00	0	S
    +Rule	StJohns	1960	1986	-	Oct	lastSun	2:00	0	S
    +# From Paul Eggert (2000-10-02):
    +# INMS (2000-09-12) says that, since 1988 at least, Newfoundland switches
    +# at 00:01 local time.  For now, assume it started in 1987.
    +
    +# From Michael Pelley (2011-09-12):
    +# We received today, Monday, September 12, 2011, notification that the
    +# changes to the Newfoundland Standard Time Act have been proclaimed.
    +# The change in the Act stipulates that the change from Daylight Savings
    +# Time to Standard Time and from Standard Time to Daylight Savings Time
    +# now occurs at 2:00AM.
    +# ...
    +# 
    +# http://www.assembly.nl.ca/legislation/sr/annualstatutes/2011/1106.chp.htm
    +# 
    +# ...
    +# MICHAEL PELLEY  |  Manager of Enterprise Architecture - Solution Delivery
    +# Office of the Chief Information Officer
    +# Executive Council
    +# Government of Newfoundland & Labrador
    +
    +Rule	StJohns	1987	only	-	Apr	Sun>=1	0:01	1:00	D
    +Rule	StJohns	1987	2006	-	Oct	lastSun	0:01	0	S
    +Rule	StJohns	1988	only	-	Apr	Sun>=1	0:01	2:00	DD
    +Rule	StJohns	1989	2006	-	Apr	Sun>=1	0:01	1:00	D
    +Rule	StJohns	2007	2011	-	Mar	Sun>=8	0:01	1:00	D
    +Rule	StJohns	2007	2010	-	Nov	Sun>=1	0:01	0	S
    +#
    +# St John's has an apostrophe, but Posix file names can't have apostrophes.
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/St_Johns	-3:30:52 -	LMT	1884
    +			-3:30:52 StJohns N%sT	1918
    +			-3:30:52 Canada	N%sT	1919
    +			-3:30:52 StJohns N%sT	1935 Mar 30
    +			-3:30	StJohns	N%sT	1942 May 11
    +			-3:30	Canada	N%sT	1946
    +			-3:30	StJohns	N%sT	2011 Nov
    +			-3:30	Canada	N%sT
    +
    +# most of east Labrador
    +
    +# The name `Happy Valley-Goose Bay' is too long; use `Goose Bay'.
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Goose_Bay	-4:01:40 -	LMT	1884 # Happy Valley-Goose Bay
    +			-3:30:52 -	NST	1918
    +			-3:30:52 Canada N%sT	1919
    +			-3:30:52 -	NST	1935 Mar 30
    +			-3:30	-	NST	1936
    +			-3:30	StJohns	N%sT	1942 May 11
    +			-3:30	Canada	N%sT	1946
    +			-3:30	StJohns	N%sT	1966 Mar 15 2:00
    +			-4:00	StJohns	A%sT	2011 Nov
    +			-4:00	Canada	A%sT
    +
    +
    +# west Labrador, Nova Scotia, Prince Edward I
    +
    +# From Paul Eggert (2006-03-22):
    +# Shanks & Pottenger write that since 1970 most of this region has been like
    +# Halifax.  Many locales did not observe peacetime DST until 1972;
    +# Glace Bay, NS is the largest that we know of.
    +# Shanks & Pottenger also write that Liverpool, NS was the only town
    +# in Canada to observe DST in 1971 but not 1970; for now we'll assume
    +# this is a typo.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Halifax	1916	only	-	Apr	 1	0:00	1:00	D
    +Rule	Halifax	1916	only	-	Oct	 1	0:00	0	S
    +Rule	Halifax	1920	only	-	May	 9	0:00	1:00	D
    +Rule	Halifax	1920	only	-	Aug	29	0:00	0	S
    +Rule	Halifax	1921	only	-	May	 6	0:00	1:00	D
    +Rule	Halifax	1921	1922	-	Sep	 5	0:00	0	S
    +Rule	Halifax	1922	only	-	Apr	30	0:00	1:00	D
    +Rule	Halifax	1923	1925	-	May	Sun>=1	0:00	1:00	D
    +Rule	Halifax	1923	only	-	Sep	 4	0:00	0	S
    +Rule	Halifax	1924	only	-	Sep	15	0:00	0	S
    +Rule	Halifax	1925	only	-	Sep	28	0:00	0	S
    +Rule	Halifax	1926	only	-	May	16	0:00	1:00	D
    +Rule	Halifax	1926	only	-	Sep	13	0:00	0	S
    +Rule	Halifax	1927	only	-	May	 1	0:00	1:00	D
    +Rule	Halifax	1927	only	-	Sep	26	0:00	0	S
    +Rule	Halifax	1928	1931	-	May	Sun>=8	0:00	1:00	D
    +Rule	Halifax	1928	only	-	Sep	 9	0:00	0	S
    +Rule	Halifax	1929	only	-	Sep	 3	0:00	0	S
    +Rule	Halifax	1930	only	-	Sep	15	0:00	0	S
    +Rule	Halifax	1931	1932	-	Sep	Mon>=24	0:00	0	S
    +Rule	Halifax	1932	only	-	May	 1	0:00	1:00	D
    +Rule	Halifax	1933	only	-	Apr	30	0:00	1:00	D
    +Rule	Halifax	1933	only	-	Oct	 2	0:00	0	S
    +Rule	Halifax	1934	only	-	May	20	0:00	1:00	D
    +Rule	Halifax	1934	only	-	Sep	16	0:00	0	S
    +Rule	Halifax	1935	only	-	Jun	 2	0:00	1:00	D
    +Rule	Halifax	1935	only	-	Sep	30	0:00	0	S
    +Rule	Halifax	1936	only	-	Jun	 1	0:00	1:00	D
    +Rule	Halifax	1936	only	-	Sep	14	0:00	0	S
    +Rule	Halifax	1937	1938	-	May	Sun>=1	0:00	1:00	D
    +Rule	Halifax	1937	1941	-	Sep	Mon>=24	0:00	0	S
    +Rule	Halifax	1939	only	-	May	28	0:00	1:00	D
    +Rule	Halifax	1940	1941	-	May	Sun>=1	0:00	1:00	D
    +Rule	Halifax	1946	1949	-	Apr	lastSun	2:00	1:00	D
    +Rule	Halifax	1946	1949	-	Sep	lastSun	2:00	0	S
    +Rule	Halifax	1951	1954	-	Apr	lastSun	2:00	1:00	D
    +Rule	Halifax	1951	1954	-	Sep	lastSun	2:00	0	S
    +Rule	Halifax	1956	1959	-	Apr	lastSun	2:00	1:00	D
    +Rule	Halifax	1956	1959	-	Sep	lastSun	2:00	0	S
    +Rule	Halifax	1962	1973	-	Apr	lastSun	2:00	1:00	D
    +Rule	Halifax	1962	1973	-	Oct	lastSun	2:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Halifax	-4:14:24 -	LMT	1902 Jun 15
    +			-4:00	Halifax	A%sT	1918
    +			-4:00	Canada	A%sT	1919
    +			-4:00	Halifax	A%sT	1942 Feb  9 2:00s
    +			-4:00	Canada	A%sT	1946
    +			-4:00	Halifax	A%sT	1974
    +			-4:00	Canada	A%sT
    +Zone America/Glace_Bay	-3:59:48 -	LMT	1902 Jun 15
    +			-4:00	Canada	A%sT	1953
    +			-4:00	Halifax	A%sT	1954
    +			-4:00	-	AST	1972
    +			-4:00	Halifax	A%sT	1974
    +			-4:00	Canada	A%sT
    +
    +# New Brunswick
    +
    +# From Paul Eggert (2007-01-31):
    +# The Time Definition Act 
    +# says they changed at 00:01 through 2006, and
    +#  makes it
    +# clear that this was the case since at least 1993.
    +# For now, assume it started in 1993.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Moncton	1933	1935	-	Jun	Sun>=8	1:00	1:00	D
    +Rule	Moncton	1933	1935	-	Sep	Sun>=8	1:00	0	S
    +Rule	Moncton	1936	1938	-	Jun	Sun>=1	1:00	1:00	D
    +Rule	Moncton	1936	1938	-	Sep	Sun>=1	1:00	0	S
    +Rule	Moncton	1939	only	-	May	27	1:00	1:00	D
    +Rule	Moncton	1939	1941	-	Sep	Sat>=21	1:00	0	S
    +Rule	Moncton	1940	only	-	May	19	1:00	1:00	D
    +Rule	Moncton	1941	only	-	May	 4	1:00	1:00	D
    +Rule	Moncton	1946	1972	-	Apr	lastSun	2:00	1:00	D
    +Rule	Moncton	1946	1956	-	Sep	lastSun	2:00	0	S
    +Rule	Moncton	1957	1972	-	Oct	lastSun	2:00	0	S
    +Rule	Moncton	1993	2006	-	Apr	Sun>=1	0:01	1:00	D
    +Rule	Moncton	1993	2006	-	Oct	lastSun	0:01	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Moncton	-4:19:08 -	LMT	1883 Dec  9
    +			-5:00	-	EST	1902 Jun 15
    +			-4:00	Canada	A%sT	1933
    +			-4:00	Moncton	A%sT	1942
    +			-4:00	Canada	A%sT	1946
    +			-4:00	Moncton	A%sT	1973
    +			-4:00	Canada	A%sT	1993
    +			-4:00	Moncton	A%sT	2007
    +			-4:00	Canada	A%sT
    +
    +# Quebec
    +
    +# From Paul Eggert (2006-07-09):
    +# Shanks & Pottenger write that since 1970 most of Quebec has been
    +# like Montreal.
    +
    +# From Paul Eggert (2006-06-27):
    +# Matthews and Vincent (1998) also write that Quebec east of the -63
    +# meridian is supposed to observe AST, but residents as far east as
    +# Natashquan use EST/EDT, and residents east of Natashquan use AST.
    +# In "Official time in Quebec" the Quebec department of justice writes in
    +# http://www.justice.gouv.qc.ca/english/publications/generale/temps-regl-1-a.htm
    +# that "The residents of the Municipality of the
    +# Cote-Nord-du-Golfe-Saint-Laurent and the municipalities of Saint-Augustin,
    +# Bonne-Esperance and Blanc-Sablon apply the Official Time Act as it is
    +# written and use Atlantic standard time all year round. The same applies to
    +# the residents of the Native facilities along the lower North Shore."
    +# 
    +# says this common practice was codified into law as of 2007.
    +# For lack of better info, guess this practice began around 1970, contra to
    +# Shanks & Pottenger who have this region observing AST/ADT.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Mont	1917	only	-	Mar	25	2:00	1:00	D
    +Rule	Mont	1917	only	-	Apr	24	0:00	0	S
    +Rule	Mont	1919	only	-	Mar	31	2:30	1:00	D
    +Rule	Mont	1919	only	-	Oct	25	2:30	0	S
    +Rule	Mont	1920	only	-	May	 2	2:30	1:00	D
    +Rule	Mont	1920	1922	-	Oct	Sun>=1	2:30	0	S
    +Rule	Mont	1921	only	-	May	 1	2:00	1:00	D
    +Rule	Mont	1922	only	-	Apr	30	2:00	1:00	D
    +Rule	Mont	1924	only	-	May	17	2:00	1:00	D
    +Rule	Mont	1924	1926	-	Sep	lastSun	2:30	0	S
    +Rule	Mont	1925	1926	-	May	Sun>=1	2:00	1:00	D
    +# The 1927-to-1937 rules can be expressed more simply as
    +# Rule	Mont	1927	1937	-	Apr	lastSat	24:00	1:00	D
    +# Rule	Mont	1927	1937	-	Sep	lastSat	24:00	0	S
    +# The rules below avoid use of 24:00
    +# (which pre-1998 versions of zic cannot handle).
    +Rule	Mont	1927	only	-	May	1	0:00	1:00	D
    +Rule	Mont	1927	1932	-	Sep	lastSun	0:00	0	S
    +Rule	Mont	1928	1931	-	Apr	lastSun	0:00	1:00	D
    +Rule	Mont	1932	only	-	May	1	0:00	1:00	D
    +Rule	Mont	1933	1940	-	Apr	lastSun	0:00	1:00	D
    +Rule	Mont	1933	only	-	Oct	1	0:00	0	S
    +Rule	Mont	1934	1939	-	Sep	lastSun	0:00	0	S
    +Rule	Mont	1946	1973	-	Apr	lastSun	2:00	1:00	D
    +Rule	Mont	1945	1948	-	Sep	lastSun	2:00	0	S
    +Rule	Mont	1949	1950	-	Oct	lastSun	2:00	0	S
    +Rule	Mont	1951	1956	-	Sep	lastSun	2:00	0	S
    +Rule	Mont	1957	1973	-	Oct	lastSun	2:00	0	S
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Blanc-Sablon -3:48:28 -	LMT	1884
    +			-4:00	Canada	A%sT	1970
    +			-4:00	-	AST
    +Zone America/Montreal	-4:54:16 -	LMT	1884
    +			-5:00	Mont	E%sT	1918
    +			-5:00	Canada	E%sT	1919
    +			-5:00	Mont	E%sT	1942 Feb  9 2:00s
    +			-5:00	Canada	E%sT	1946
    +			-5:00	Mont	E%sT	1974
    +			-5:00	Canada	E%sT
    +
    +
    +# Ontario
    +
    +# From Paul Eggert (2006-07-09):
    +# Shanks & Pottenger write that since 1970 most of Ontario has been like
    +# Toronto.
    +# Thunder Bay skipped DST in 1973.
    +# Many smaller locales did not observe peacetime DST until 1974;
    +# Nipigon (EST) and Rainy River (CST) are the largest that we know of.
    +# Far west Ontario is like Winnipeg; far east Quebec is like Halifax.
    +
    +# From Mark Brader (2003-07-26):
    +# [According to the Toronto Star] Orillia, Ontario, adopted DST
    +# effective Saturday, 1912-06-22, 22:00; the article mentions that
    +# Port Arthur (now part of Thunder Bay, Ontario) as well as Moose Jaw
    +# have already done so.  In Orillia DST was to run until Saturday,
    +# 1912-08-31 (no time mentioned), but it was met with considerable
    +# hostility from certain segments of the public, and was revoked after
    +# only two weeks -- I copied it as Saturday, 1912-07-07, 22:00, but
    +# presumably that should be -07-06.  (1912-06-19, -07-12; also letters
    +# earlier in June).
    +#
    +# Kenora, Ontario, was to abandon DST on 1914-06-01 (-05-21).
    +
    +# From Paul Eggert (1997-10-17):
    +# Mark Brader writes that an article in the 1997-10-14 Toronto Star
    +# says that Atikokan, Ontario currently does not observe DST,
    +# but will vote on 11-10 whether to use EST/EDT.
    +# He also writes that the
    +# 
    +# Ontario Time Act (1990, Chapter T.9)
    +# 
    +# says that Ontario east of 90W uses EST/EDT, and west of 90W uses CST/CDT.
    +# Officially Atikokan is therefore on CST/CDT, and most likely this report
    +# concerns a non-official time observed as a matter of local practice.
    +#
    +# From Paul Eggert (2000-10-02):
    +# Matthews and Vincent (1998) write that Atikokan, Pickle Lake, and
    +# New Osnaburgh observe CST all year, that Big Trout Lake observes
    +# CST/CDT, and that Upsala and Shebandowan observe EST/EDT, all in
    +# violation of the official Ontario rules.
    +#
    +# From Paul Eggert (2006-07-09):
    +# Chris Walton (2006-07-06) mentioned an article by Stephanie MacLellan in the
    +# 2005-07-21 Chronicle-Journal, which said:
    +#
    +#	The clocks in Atikokan stay set on standard time year-round.
    +#	This means they spend about half the time on central time and
    +#	the other half on eastern time.
    +#
    +#	For the most part, the system works, Mayor Dennis Brown said.
    +#
    +#	"The majority of businesses in Atikokan deal more with Eastern
    +#	Canada, but there are some that deal with Western Canada," he
    +#	said.  "I don't see any changes happening here."
    +#
    +# Walton also writes "Supposedly Pickle Lake and Mishkeegogamang
    +# [New Osnaburgh] follow the same practice."
    +
    +# From Garry McKinnon (2006-07-14) via Chris Walton:
    +# I chatted with a member of my board who has an outstanding memory
    +# and a long history in Atikokan (and in the telecom industry) and he
    +# can say for certain that Atikokan has been practicing the current
    +# time keeping since 1952, at least.
    +
    +# From Paul Eggert (2006-07-17):
    +# Shanks & Pottenger say that Atikokan has agreed with Rainy River
    +# ever since standard time was introduced, but the information from
    +# McKinnon sounds more authoritative.  For now, assume that Atikokan
    +# switched to EST immediately after WWII era daylight saving time
    +# ended.  This matches the old (less-populous) America/Coral_Harbour
    +# entry since our cutoff date of 1970, so we can move
    +# America/Coral_Harbour to the 'backward' file.
    +
    +# From Mark Brader (2010-03-06):
    +#
    +# Currently the database has:
    +#
    +# # Ontario
    +#
    +# # From Paul Eggert (2006-07-09):
    +# # Shanks & Pottenger write that since 1970 most of Ontario has been like
    +# # Toronto.
    +# # Thunder Bay skipped DST in 1973.
    +# # Many smaller locales did not observe peacetime DST until 1974;
    +# # Nipigon (EST) and Rainy River (CST) are the largest that we know of.
    +#
    +# In the (Toronto) Globe and Mail for Saturday, 1955-09-24, in the bottom
    +# right corner of page 1, it says that Toronto will return to standard
    +# time at 2 am Sunday morning (which agrees with the database), and that:
    +#
    +#     The one-hour setback will go into effect throughout most of Ontario,
    +#     except in areas like Windsor which remains on standard time all year.
    +#
    +# Windsor is, of course, a lot larger than Nipigon.
    +#
    +# I only came across this incidentally.  I don't know if Windsor began
    +# observing DST when Detroit did, or in 1974, or on some other date.
    +#
    +# By the way, the article continues by noting that:
    +#
    +#     Some cities in the United States have pushed the deadline back
    +#     three weeks and will change over from daylight saving in October.
    +
    +# From Arthur David Olson (2010-07-17):
    +#
    +# "Standard Time and Time Zones in Canada" appeared in
    +# The Journal of The Royal Astronomical Society of Canada,
    +# volume 26, number 2 (February 1932) and, as of 2010-07-17,
    +# was available at
    +# 
    +# http://adsabs.harvard.edu/full/1932JRASC..26...49S
    +# 
    +#
    +# It includes the text below (starting on page 57):
    +#
    +#   A list of the places in Canada using daylight saving time would
    +# require yearly revision. From information kindly furnished by
    +# the provincial governments and by the postmasters in many cities
    +# and towns, it is found that the following places used daylight sav-
    +# ing in 1930. The information for the province of Quebec is definite,
    +# for the other provinces only approximate:
    +#
    +# 	Province	Daylight saving time used
    +# Prince Edward Island	Not used.
    +# Nova Scotia		In Halifax only.
    +# New Brunswick		In St. John only.
    +# Quebec		In the following places:
    +# 			Montreal	Lachine
    +# 			Quebec		Mont-Royal
    +# 			Levis		Iberville
    +# 			St. Lambert	Cap de la Madeleine
    +# 			Verdun		Loretteville
    +# 			Westmount	Richmond
    +# 			Outremont	St. Jerome
    +# 			Longueuil	Greenfield Park
    +# 			Arvida		Waterloo
    +# 			Chambly-Canton	Beaulieu
    +# 			Melbourne	La Tuque
    +# 			St. Theophile	Buckingham
    +# Ontario		Used generally in the cities and towns along
    +# 			the southerly part of the province. Not
    +# 			used in the northwesterlhy part.
    +# Manitoba		Not used.
    +# Saskatchewan		In Regina only.
    +# Alberta		Not used.
    +# British Columbia	Not used.
    +#
    +#   With some exceptions, the use of daylight saving may be said to be limited
    +# to those cities and towns lying between Quebec city and Windsor, Ont.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Toronto	1919	only	-	Mar	30	23:30	1:00	D
    +Rule	Toronto	1919	only	-	Oct	26	0:00	0	S
    +Rule	Toronto	1920	only	-	May	 2	2:00	1:00	D
    +Rule	Toronto	1920	only	-	Sep	26	0:00	0	S
    +Rule	Toronto	1921	only	-	May	15	2:00	1:00	D
    +Rule	Toronto	1921	only	-	Sep	15	2:00	0	S
    +Rule	Toronto	1922	1923	-	May	Sun>=8	2:00	1:00	D
    +# Shanks & Pottenger say 1923-09-19; assume it's a typo and that "-16"
    +# was meant.
    +Rule	Toronto	1922	1926	-	Sep	Sun>=15	2:00	0	S
    +Rule	Toronto	1924	1927	-	May	Sun>=1	2:00	1:00	D
    +# The 1927-to-1939 rules can be expressed more simply as
    +# Rule	Toronto	1927	1937	-	Sep	Sun>=25	2:00	0	S
    +# Rule	Toronto	1928	1937	-	Apr	Sun>=25	2:00	1:00	D
    +# Rule	Toronto	1938	1940	-	Apr	lastSun	2:00	1:00	D
    +# Rule	Toronto	1938	1939	-	Sep	lastSun	2:00	0	S
    +# The rules below avoid use of Sun>=25
    +# (which pre-2004 versions of zic cannot handle).
    +Rule	Toronto	1927	1932	-	Sep	lastSun	2:00	0	S
    +Rule	Toronto	1928	1931	-	Apr	lastSun	2:00	1:00	D
    +Rule	Toronto	1932	only	-	May	1	2:00	1:00	D
    +Rule	Toronto	1933	1940	-	Apr	lastSun	2:00	1:00	D
    +Rule	Toronto	1933	only	-	Oct	1	2:00	0	S
    +Rule	Toronto	1934	1939	-	Sep	lastSun	2:00	0	S
    +Rule	Toronto	1945	1946	-	Sep	lastSun	2:00	0	S
    +Rule	Toronto	1946	only	-	Apr	lastSun	2:00	1:00	D
    +Rule	Toronto	1947	1949	-	Apr	lastSun	0:00	1:00	D
    +Rule	Toronto	1947	1948	-	Sep	lastSun	0:00	0	S
    +Rule	Toronto	1949	only	-	Nov	lastSun	0:00	0	S
    +Rule	Toronto	1950	1973	-	Apr	lastSun	2:00	1:00	D
    +Rule	Toronto	1950	only	-	Nov	lastSun	2:00	0	S
    +Rule	Toronto	1951	1956	-	Sep	lastSun	2:00	0	S
    +# Shanks & Pottenger say Toronto ended DST a week early in 1971,
    +# namely on 1971-10-24, but Mark Brader wrote (2003-05-31) that this
    +# is wrong, and that he had confirmed it by checking the 1971-10-30
    +# Toronto Star, which said that DST was ending 1971-10-31 as usual.
    +Rule	Toronto	1957	1973	-	Oct	lastSun	2:00	0	S
    +
    +# From Paul Eggert (2003-07-27):
    +# Willett (1914-03) writes (p. 17) "In the Cities of Fort William, and
    +# Port Arthur, Ontario, the principle of the Bill has been in
    +# operation for the past three years, and in the City of Moose Jaw,
    +# Saskatchewan, for one year."
    +
    +# From David Bryan via Tory Tronrud, Director/Curator,
    +# Thunder Bay Museum (2003-11-12):
    +# There is some suggestion, however, that, by-law or not, daylight
    +# savings time was being practiced in Fort William and Port Arthur
    +# before 1909.... [I]n 1910, the line between the Eastern and Central
    +# Time Zones was permanently moved about two hundred miles west to
    +# include the Thunder Bay area....  When Canada adopted daylight
    +# savings time in 1916, Fort William and Port Arthur, having done so
    +# already, did not change their clocks....  During the Second World
    +# War,... [t]he cities agreed to implement DST during the summer
    +# months for the remainder of the war years.
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Toronto	-5:17:32 -	LMT	1895
    +			-5:00	Canada	E%sT	1919
    +			-5:00	Toronto	E%sT	1942 Feb  9 2:00s
    +			-5:00	Canada	E%sT	1946
    +			-5:00	Toronto	E%sT	1974
    +			-5:00	Canada	E%sT
    +Zone America/Thunder_Bay -5:57:00 -	LMT	1895
    +			-6:00	-	CST	1910
    +			-5:00	-	EST	1942
    +			-5:00	Canada	E%sT	1970
    +			-5:00	Mont	E%sT	1973
    +			-5:00	-	EST	1974
    +			-5:00	Canada	E%sT
    +Zone America/Nipigon	-5:53:04 -	LMT	1895
    +			-5:00	Canada	E%sT	1940 Sep 29
    +			-5:00	1:00	EDT	1942 Feb  9 2:00s
    +			-5:00	Canada	E%sT
    +Zone America/Rainy_River -6:18:16 -	LMT	1895
    +			-6:00	Canada	C%sT	1940 Sep 29
    +			-6:00	1:00	CDT	1942 Feb  9 2:00s
    +			-6:00	Canada	C%sT
    +Zone America/Atikokan	-6:06:28 -	LMT	1895
    +			-6:00	Canada	C%sT	1940 Sep 29
    +			-6:00	1:00	CDT	1942 Feb  9 2:00s
    +			-6:00	Canada	C%sT	1945 Sep 30 2:00
    +			-5:00	-	EST
    +
    +
    +# Manitoba
    +
    +# From Rob Douglas (2006-04-06):
    +# the old Manitoba Time Act - as amended by Bill 2, assented to
    +# March 27, 1987 ... said ...
    +# "between two o'clock Central Standard Time in the morning of
    +# the first Sunday of April of each year and two o'clock Central
    +# Standard Time in the morning of the last Sunday of October next
    +# following, one hour in advance of Central Standard Time."...
    +# I believe that the English legislation [of the old time act] had =
    +# been assented to (March 22, 1967)....
    +# Also, as far as I can tell, there was no order-in-council varying
    +# the time of Daylight Saving Time for 2005 and so the provisions of
    +# the 1987 version would apply - the changeover was at 2:00 Central
    +# Standard Time (i.e. not until 3:00 Central Daylight Time).
    +
    +# From Paul Eggert (2006-04-10):
    +# Shanks & Pottenger say Manitoba switched at 02:00 (not 02:00s)
    +# starting 1966.  Since 02:00s is clearly correct for 1967 on, assume
    +# it was also 02:00s in 1966.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Winn	1916	only	-	Apr	23	0:00	1:00	D
    +Rule	Winn	1916	only	-	Sep	17	0:00	0	S
    +Rule	Winn	1918	only	-	Apr	14	2:00	1:00	D
    +Rule	Winn	1918	only	-	Oct	27	2:00	0	S
    +Rule	Winn	1937	only	-	May	16	2:00	1:00	D
    +Rule	Winn	1937	only	-	Sep	26	2:00	0	S
    +Rule	Winn	1942	only	-	Feb	 9	2:00	1:00	W # War
    +Rule	Winn	1945	only	-	Aug	14	23:00u	1:00	P # Peace
    +Rule	Winn	1945	only	-	Sep	lastSun	2:00	0	S
    +Rule	Winn	1946	only	-	May	12	2:00	1:00	D
    +Rule	Winn	1946	only	-	Oct	13	2:00	0	S
    +Rule	Winn	1947	1949	-	Apr	lastSun	2:00	1:00	D
    +Rule	Winn	1947	1949	-	Sep	lastSun	2:00	0	S
    +Rule	Winn	1950	only	-	May	 1	2:00	1:00	D
    +Rule	Winn	1950	only	-	Sep	30	2:00	0	S
    +Rule	Winn	1951	1960	-	Apr	lastSun	2:00	1:00	D
    +Rule	Winn	1951	1958	-	Sep	lastSun	2:00	0	S
    +Rule	Winn	1959	only	-	Oct	lastSun	2:00	0	S
    +Rule	Winn	1960	only	-	Sep	lastSun	2:00	0	S
    +Rule	Winn	1963	only	-	Apr	lastSun	2:00	1:00	D
    +Rule	Winn	1963	only	-	Sep	22	2:00	0	S
    +Rule	Winn	1966	1986	-	Apr	lastSun	2:00s	1:00	D
    +Rule	Winn	1966	2005	-	Oct	lastSun	2:00s	0	S
    +Rule	Winn	1987	2005	-	Apr	Sun>=1	2:00s	1:00	D
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Winnipeg	-6:28:36 -	LMT	1887 Jul 16
    +			-6:00	Winn	C%sT	2006
    +			-6:00	Canada	C%sT
    +
    +
    +# Saskatchewan
    +
    +# From Mark Brader (2003-07-26):
    +# The first actual adoption of DST in Canada was at the municipal
    +# level.  As the [Toronto] Star put it (1912-06-07), "While people
    +# elsewhere have long been talking of legislation to save daylight,
    +# the city of Moose Jaw [Saskatchewan] has acted on its own hook."
    +# DST in Moose Jaw began on Saturday, 1912-06-01 (no time mentioned:
    +# presumably late evening, as below), and would run until "the end of
    +# the summer".  The discrepancy between municipal time and railroad
    +# time was noted.
    +
    +# From Paul Eggert (2003-07-27):
    +# Willett (1914-03) notes that DST "has been in operation ... in the
    +# City of Moose Jaw, Saskatchewan, for one year."
    +
    +# From Paul Eggert (2006-03-22):
    +# Shanks & Pottenger say that since 1970 this region has mostly been as Regina.
    +# Some western towns (e.g. Swift Current) switched from MST/MDT to CST in 1972.
    +# Other western towns (e.g. Lloydminster) are like Edmonton.
    +# Matthews and Vincent (1998) write that Denare Beach and Creighton
    +# are like Winnipeg, in violation of Saskatchewan law.
    +
    +# From W. Jones (1992-11-06):
    +# The. . .below is based on information I got from our law library, the
    +# provincial archives, and the provincial Community Services department.
    +# A precise history would require digging through newspaper archives, and
    +# since you didn't say what you wanted, I didn't bother.
    +#
    +# Saskatchewan is split by a time zone meridian (105W) and over the years
    +# the boundary became pretty ragged as communities near it reevaluated
    +# their affiliations in one direction or the other.  In 1965 a provincial
    +# referendum favoured legislating common time practices.
    +#
    +# On 15 April 1966 the Time Act (c. T-14, Revised Statutes of
    +# Saskatchewan 1978) was proclaimed, and established that the eastern
    +# part of Saskatchewan would use CST year round, that districts in
    +# northwest Saskatchewan would by default follow CST but could opt to
    +# follow Mountain Time rules (thus 1 hour difference in the winter and
    +# zero in the summer), and that districts in southwest Saskatchewan would
    +# by default follow MT but could opt to follow CST.
    +#
    +# It took a few years for the dust to settle (I know one story of a town
    +# on one time zone having its school in another, such that a mom had to
    +# serve her family lunch in two shifts), but presently it seems that only
    +# a few towns on the border with Alberta (e.g. Lloydminster) follow MT
    +# rules any more; all other districts appear to have used CST year round
    +# since sometime in the 1960s.
    +
    +# From Chris Walton (2006-06-26):
    +# The Saskatchewan time act which was last updated in 1996 is about 30 pages
    +# long and rather painful to read.
    +# http://www.qp.gov.sk.ca/documents/English/Statutes/Statutes/T14.pdf
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Regina	1918	only	-	Apr	14	2:00	1:00	D
    +Rule	Regina	1918	only	-	Oct	27	2:00	0	S
    +Rule	Regina	1930	1934	-	May	Sun>=1	0:00	1:00	D
    +Rule	Regina	1930	1934	-	Oct	Sun>=1	0:00	0	S
    +Rule	Regina	1937	1941	-	Apr	Sun>=8	0:00	1:00	D
    +Rule	Regina	1937	only	-	Oct	Sun>=8	0:00	0	S
    +Rule	Regina	1938	only	-	Oct	Sun>=1	0:00	0	S
    +Rule	Regina	1939	1941	-	Oct	Sun>=8	0:00	0	S
    +Rule	Regina	1942	only	-	Feb	 9	2:00	1:00	W # War
    +Rule	Regina	1945	only	-	Aug	14	23:00u	1:00	P # Peace
    +Rule	Regina	1945	only	-	Sep	lastSun	2:00	0	S
    +Rule	Regina	1946	only	-	Apr	Sun>=8	2:00	1:00	D
    +Rule	Regina	1946	only	-	Oct	Sun>=8	2:00	0	S
    +Rule	Regina	1947	1957	-	Apr	lastSun	2:00	1:00	D
    +Rule	Regina	1947	1957	-	Sep	lastSun	2:00	0	S
    +Rule	Regina	1959	only	-	Apr	lastSun	2:00	1:00	D
    +Rule	Regina	1959	only	-	Oct	lastSun	2:00	0	S
    +#
    +Rule	Swift	1957	only	-	Apr	lastSun	2:00	1:00	D
    +Rule	Swift	1957	only	-	Oct	lastSun	2:00	0	S
    +Rule	Swift	1959	1961	-	Apr	lastSun	2:00	1:00	D
    +Rule	Swift	1959	only	-	Oct	lastSun	2:00	0	S
    +Rule	Swift	1960	1961	-	Sep	lastSun	2:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Regina	-6:58:36 -	LMT	1905 Sep
    +			-7:00	Regina	M%sT	1960 Apr lastSun 2:00
    +			-6:00	-	CST
    +Zone America/Swift_Current -7:11:20 -	LMT	1905 Sep
    +			-7:00	Canada	M%sT	1946 Apr lastSun 2:00
    +			-7:00	Regina	M%sT	1950
    +			-7:00	Swift	M%sT	1972 Apr lastSun 2:00
    +			-6:00	-	CST
    +
    +
    +# Alberta
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Edm	1918	1919	-	Apr	Sun>=8	2:00	1:00	D
    +Rule	Edm	1918	only	-	Oct	27	2:00	0	S
    +Rule	Edm	1919	only	-	May	27	2:00	0	S
    +Rule	Edm	1920	1923	-	Apr	lastSun	2:00	1:00	D
    +Rule	Edm	1920	only	-	Oct	lastSun	2:00	0	S
    +Rule	Edm	1921	1923	-	Sep	lastSun	2:00	0	S
    +Rule	Edm	1942	only	-	Feb	 9	2:00	1:00	W # War
    +Rule	Edm	1945	only	-	Aug	14	23:00u	1:00	P # Peace
    +Rule	Edm	1945	only	-	Sep	lastSun	2:00	0	S
    +Rule	Edm	1947	only	-	Apr	lastSun	2:00	1:00	D
    +Rule	Edm	1947	only	-	Sep	lastSun	2:00	0	S
    +Rule	Edm	1967	only	-	Apr	lastSun	2:00	1:00	D
    +Rule	Edm	1967	only	-	Oct	lastSun	2:00	0	S
    +Rule	Edm	1969	only	-	Apr	lastSun	2:00	1:00	D
    +Rule	Edm	1969	only	-	Oct	lastSun	2:00	0	S
    +Rule	Edm	1972	1986	-	Apr	lastSun	2:00	1:00	D
    +Rule	Edm	1972	2006	-	Oct	lastSun	2:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Edmonton	-7:33:52 -	LMT	1906 Sep
    +			-7:00	Edm	M%sT	1987
    +			-7:00	Canada	M%sT
    +
    +
    +# British Columbia
    +
    +# From Paul Eggert (2006-03-22):
    +# Shanks & Pottenger write that since 1970 most of this region has
    +# been like Vancouver.
    +# Dawson Creek uses MST.  Much of east BC is like Edmonton.
    +# Matthews and Vincent (1998) write that Creston is like Dawson Creek.
    +
    +# It seems though that (re: Creston) is not entirely correct:
    +
    +# From Chris Walton (2011-12-01):
    +# There are two areas within the Canadian province of British Columbia
    +# that do not currently observe daylight saving:
    +# a) The Creston Valley (includes the town of Creston and surrounding area)
    +# b) The eastern half of the Peace River Regional District
    +# (includes the cities of Dawson Creek and Fort St. John)
    +
    +# Earlier this year I stumbled across a detailed article about the time
    +# keeping history of Creston; it was written by Tammy Hardwick who is the
    +# manager of the Creston & District Museum. The article was written in May 2009.
    +# 
    +# http://www.ilovecreston.com/?p=articles&t=spec&ar=260
    +# 
    +# According to the article, Creston has not changed its clocks since June 1918.
    +# i.e. Creston has been stuck on UTC-7 for 93 years.
    +# Dawson Creek, on the other hand, changed its clocks as recently as April 1972.
    +
    +# Unfortunately the exact date for the time change in June 1918 remains
    +# unknown and will be difficult to ascertain.  I e-mailed Tammy a few months
    +# ago to ask if Sunday June 2 was a reasonable guess.  She said it was just
    +# as plausible as any other date (in June).  She also said that after writing the
    +# article she had discovered another time change in 1916; this is the subject
    +# of another article which she wrote in October 2010.
    +# 
    +# http://www.creston.museum.bc.ca/index.php?module=comments&uop=view_comment&cm+id=56
    +# 
    +
    +# Here is a summary of the three clock change events in Creston's history:
    +# 1. 1884 or 1885: adoption of Mountain Standard Time (GMT-7)
    +# Exact date unknown
    +# 2. Oct 1916: switch to Pacific Standard Time (GMT-8)
    +# Exact date in October unknown;  Sunday October 1 is a reasonable guess.
    +# 3. June 1918: switch to Pacific Daylight Time (GMT-7)
    +# Exact date in June unknown; Sunday June 2 is a reasonable guess.
    +# note#1:
    +# On Oct 27/1918 when daylight saving ended in the rest of Canada,
    +# Creston did not change its clocks.
    +# note#2:
    +# During WWII when the Federal Government legislated a mandatory clock change,
    +# Creston did not oblige.
    +# note#3:
    +# There is no guarantee that Creston will remain on Mountain Standard Time
    +# (UTC-7) forever.
    +# The subject was debated at least once this year by the town Council.
    +# 
    +# http://www.bclocalnews.com/kootenay_rockies/crestonvalleyadvance/news/116760809.html
    +# 
    +
    +# During a period WWII, summer time (Daylight saying) was mandatory in Canada.
    +# In Creston, that was handled by shifting the area to PST (-8:00) then applying
    +# summer time to cause the offset to be -7:00, the same as it had been before
    +# the change.  It can be argued that the timezone abbreviation during this
    +# period should be PDT rather than MST, but that doesn't seem important enough
    +# (to anyone) to further complicate the rules.
    +
    +# The transition dates (and times) are guesses.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Vanc	1918	only	-	Apr	14	2:00	1:00	D
    +Rule	Vanc	1918	only	-	Oct	27	2:00	0	S
    +Rule	Vanc	1942	only	-	Feb	 9	2:00	1:00	W # War
    +Rule	Vanc	1945	only	-	Aug	14	23:00u	1:00	P # Peace
    +Rule	Vanc	1945	only	-	Sep	30	2:00	0	S
    +Rule	Vanc	1946	1986	-	Apr	lastSun	2:00	1:00	D
    +Rule	Vanc	1946	only	-	Oct	13	2:00	0	S
    +Rule	Vanc	1947	1961	-	Sep	lastSun	2:00	0	S
    +Rule	Vanc	1962	2006	-	Oct	lastSun	2:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Vancouver	-8:12:28 -	LMT	1884
    +			-8:00	Vanc	P%sT	1987
    +			-8:00	Canada	P%sT
    +Zone America/Dawson_Creek -8:00:56 -	LMT	1884
    +			-8:00	Canada	P%sT	1947
    +			-8:00	Vanc	P%sT	1972 Aug 30 2:00
    +			-7:00	-	MST
    +Zone America/Creston	-7:46:04 -	LMT	1884
    +			-7:00	-	MST	1916 Oct 1
    +			-8:00	-	PST	1918 Jun 2
    +			-7:00	-	MST
    +
    +# Northwest Territories, Nunavut, Yukon
    +
    +# From Paul Eggert (2006-03-22):
    +# Dawson switched to PST in 1973.  Inuvik switched to MST in 1979.
    +# Mathew Englander (1996-10-07) gives the following refs:
    +#	* 1967. Paragraph 28(34)(g) of the Interpretation Act, S.C. 1967-68,
    +#	c. 7 defines Yukon standard time as UTC-9.  This is still valid;
    +#	see Interpretation Act, R.S.C. 1985, c. I-21, s. 35(1).
    +#	* C.O. 1973/214 switched Yukon to PST on 1973-10-28 00:00.
    +#	* O.I.C. 1980/02 established DST.
    +#	* O.I.C. 1987/056 changed DST to Apr firstSun 2:00 to Oct lastSun 2:00.
    +# Shanks & Pottenger say Yukon's 1973-10-28 switch was at 2:00; go
    +# with Englander.
    +# From Chris Walton (2006-06-26):
    +# Here is a link to the old daylight saving portion of the interpretation
    +# act which was last updated in 1987:
    +# http://www.gov.yk.ca/legislation/regs/oic1987_056.pdf
    +
    +# From Rives McDow (1999-09-04):
    +# Nunavut ... moved ... to incorporate the whole territory into one time zone.
    +# 
    +# Nunavut moves to single time zone Oct. 31
    +# 
    +#
    +# From Antoine Leca (1999-09-06):
    +# We then need to create a new timezone for the Kitikmeot region of Nunavut
    +# to differentiate it from the Yellowknife region.
    +
    +# From Paul Eggert (1999-09-20):
    +# 
    +# Basic Facts: The New Territory
    +#  (1999) reports that Pangnirtung operates on eastern time,
    +# and that Coral Harbour does not observe DST.  We don't know when
    +# Pangnirtung switched to eastern time; we'll guess 1995.
    +
    +# From Rives McDow (1999-11-08):
    +# On October 31, when the rest of Nunavut went to Central time,
    +# Pangnirtung wobbled.  Here is the result of their wobble:
    +#
    +# The following businesses and organizations in Pangnirtung use Central Time:
    +#
    +#	First Air, Power Corp, Nunavut Construction, Health Center, RCMP,
    +#	Eastern Arctic National Parks, A & D Specialist
    +#
    +# The following businesses and organizations in Pangnirtung use Eastern Time:
    +#
    +#	Hamlet office, All other businesses, Both schools, Airport operator
    +#
    +# This has made for an interesting situation there, which warranted the news.
    +# No one there that I spoke with seems concerned, or has plans to
    +# change the local methods of keeping time, as it evidently does not
    +# really interfere with any activities or make things difficult locally.
    +# They plan to celebrate New Year's turn-over twice, one hour apart,
    +# so it appears that the situation will last at least that long.
    +# The Nunavut Intergovernmental Affairs hopes that they will "come to
    +# their senses", but the locals evidently don't see any problem with
    +# the current state of affairs.
    +
    +# From Michaela Rodrigue, writing in the
    +# 
    +# Nunatsiaq News (1999-11-19):
    +# Clyde River, Pangnirtung and Sanikiluaq now operate with two time zones,
    +# central - or Nunavut time - for government offices, and eastern time
    +# for municipal offices and schools....  Igloolik [was similar but then]
    +# made the switch to central time on Saturday, Nov. 6.
    +
    +# From Paul Eggert (2000-10-02):
    +# Matthews and Vincent (1998) say the following, but we lack histories
    +# for these potential new Zones.
    +#
    +# The Canadian Forces station at Alert uses Eastern Time while the
    +# handful of residents at the Eureka weather station [in the Central
    +# zone] skip daylight savings.  Baffin Island, which is crossed by the
    +# Central, Eastern and Atlantic Time zones only uses Eastern Time.
    +# Gjoa Haven, Taloyoak and Pelly Bay all use Mountain instead of
    +# Central Time and Southampton Island [in the Central zone] is not
    +# required to use daylight savings.
    +
    +# From
    +# 
    +# Nunavut now has two time zones
    +#  (2000-11-10):
    +# The Nunavut government would allow its employees in Kugluktuk and
    +# Cambridge Bay to operate on central time year-round, putting them
    +# one hour behind the rest of Nunavut for six months during the winter.
    +# At the end of October the two communities had rebelled against
    +# Nunavut's unified time zone, refusing to shift to eastern time with
    +# the rest of the territory for the winter.  Cambridge Bay remained on
    +# central time, while Kugluktuk, even farther west, reverted to
    +# mountain time, which they had used before the advent of Nunavut's
    +# unified time zone in 1999.
    +#
    +# From Rives McDow (2001-01-20), quoting the Nunavut government:
    +# The preceding decision came into effect at midnight, Saturday Nov 4, 2000.
    +
    +# From Paul Eggert (2000-12-04):
    +# Let's just keep track of the official times for now.
    +
    +# From Rives McDow (2001-03-07):
    +# The premier of Nunavut has issued a ministerial statement advising
    +# that effective 2001-04-01, the territory of Nunavut will revert
    +# back to three time zones (mountain, central, and eastern).  Of the
    +# cities in Nunavut, Coral Harbor is the only one that I know of that
    +# has said it will not observe dst, staying on EST year round.  I'm
    +# checking for more info, and will get back to you if I come up with
    +# more.
    +# [Also see  (2001-03-09).]
    +
    +# From Gwillim Law (2005-05-21):
    +# According to maps at
    +# http://inms-ienm.nrc-cnrc.gc.ca/images/time_services/TZ01SWE.jpg
    +# http://inms-ienm.nrc-cnrc.gc.ca/images/time_services/TZ01SSE.jpg
    +# (both dated 2003), and
    +# http://www.canadiangeographic.ca/Magazine/SO98/geomap.asp
    +# (from a 1998 Canadian Geographic article), the de facto and de jure time
    +# for Southampton Island (at the north end of Hudson Bay) is UTC-5 all year
    +# round.  Using Google, it's easy to find other websites that confirm this.
    +# I wasn't able to find how far back this time regimen goes, but since it
    +# predates the creation of Nunavut, it probably goes back many years....
    +# The Inuktitut name of Coral Harbour is Sallit, but it's rarely used.
    +#
    +# From Paul Eggert (2005-07-26):
    +# For lack of better information, assume that Southampton Island observed
    +# daylight saving only during wartime.
    +
    +# From Chris Walton (2007-03-01):
    +# ... the community of Resolute (located on Cornwallis Island in
    +# Nunavut) moved from Central Time to Eastern Time last November.
    +# Basically the community did not change its clocks at the end of
    +# daylight saving....
    +# http://www.nnsl.com/frames/newspapers/2006-11/nov13_06none.html
    +
    +# From Chris Walton (2011-03-21):
    +# Back in 2007 I initiated the creation of a new "zone file" for Resolute
    +# Bay. Resolute Bay is a small community located about 900km north of
    +# the Arctic Circle. The zone file was required because Resolute Bay had
    +# decided to use UTC-5 instead of UTC-6 for the winter of 2006-2007.
    +#
    +# According to new information which I received last week, Resolute Bay
    +# went back to using UTC-6 in the winter of 2007-2008...
    +#
    +# On March 11/2007 most of Canada went onto daylight saving. On March
    +# 14/2007 I phoned the Resolute Bay hamlet office to do a "time check." I
    +# talked to somebody that was both knowledgeable and helpful. I was able
    +# to confirm that Resolute Bay was still operating on UTC-5. It was
    +# explained to me that Resolute Bay had been on the Eastern Time zone
    +# (EST) in the winter, and was now back on the Central Time zone (CDT).
    +# i.e. the time zone had changed twice in the last year but the clocks
    +# had not moved. The residents had to know which time zone they were in
    +# so they could follow the correct TV schedule...
    +#
    +# On Nov 02/2008 most of Canada went onto standard time. On Nov 03/2008 I
    +# phoned the Resolute Bay hamlet office...[D]ue to the challenging nature
    +# of the phone call, I decided to seek out an alternate source of
    +# information. I found an e-mail address for somebody by the name of
    +# Stephanie Adams whose job was listed as "Inns North Support Officer for
    +# Arctic Co-operatives." I was under the impression that Stephanie lived
    +# and worked in Resolute Bay...
    +#
    +# On March 14/2011 I phoned the hamlet office again. I was told that
    +# Resolute Bay had been using Central Standard Time over the winter of
    +# 2010-2011 and that the clocks had therefore been moved one hour ahead
    +# on March 13/2011. The person I talked to was aware that Resolute Bay
    +# had previously experimented with Eastern Standard Time but he could not
    +# tell me when the practice had stopped.
    +#
    +# On March 17/2011 I searched the Web to find an e-mail address of
    +# somebody that might be able to tell me exactly when Resolute Bay went
    +# off Eastern Standard Time. I stumbled on the name "Aziz Kheraj." Aziz
    +# used to be the mayor of Resolute Bay and he apparently owns half the
    +# businesses including "South Camp Inn." This website has some info on
    +# Aziz:
    +# 
    +# http://www.uphere.ca/node/493
    +# 
    +#
    +# I sent Aziz an e-mail asking when Resolute Bay had stopped using
    +# Eastern Standard Time.
    +#
    +# Aziz responded quickly with this: "hi, The time was not changed for the
    +# 1 year only, the following year, the community went back to the old way
    +# of "spring ahead-fall behind" currently we are zulu plus 5 hrs and in
    +# the winter Zulu plus 6 hrs"
    +#
    +# This of course conflicted with everything I had ascertained in November 2008.
    +#
    +# I sent Aziz a copy of my 2008 e-mail exchange with Stephanie. Aziz
    +# responded with this: "Hi, Stephanie lives in Winnipeg. I live here, You
    +# may want to check with the weather office in Resolute Bay or do a
    +# search on the weather through Env. Canada. web site"
    +#
    +# If I had realized the Stephanie did not live in Resolute Bay I would
    +# never have contacted her.  I now believe that all the information I
    +# obtained in November 2008 should be ignored...
    +# I apologize for reporting incorrect information in 2008.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	NT_YK	1918	only	-	Apr	14	2:00	1:00	D
    +Rule	NT_YK	1918	only	-	Oct	27	2:00	0	S
    +Rule	NT_YK	1919	only	-	May	25	2:00	1:00	D
    +Rule	NT_YK	1919	only	-	Nov	 1	0:00	0	S
    +Rule	NT_YK	1942	only	-	Feb	 9	2:00	1:00	W # War
    +Rule	NT_YK	1945	only	-	Aug	14	23:00u	1:00	P # Peace
    +Rule	NT_YK	1945	only	-	Sep	30	2:00	0	S
    +Rule	NT_YK	1965	only	-	Apr	lastSun	0:00	2:00	DD
    +Rule	NT_YK	1965	only	-	Oct	lastSun	2:00	0	S
    +Rule	NT_YK	1980	1986	-	Apr	lastSun	2:00	1:00	D
    +Rule	NT_YK	1980	2006	-	Oct	lastSun	2:00	0	S
    +Rule	NT_YK	1987	2006	-	Apr	Sun>=1	2:00	1:00	D
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +# aka Panniqtuuq
    +Zone America/Pangnirtung 0	-	zzz	1921 # trading post est.
    +			-4:00	NT_YK	A%sT	1995 Apr Sun>=1 2:00
    +			-5:00	Canada	E%sT	1999 Oct 31 2:00
    +			-6:00	Canada	C%sT	2000 Oct 29 2:00
    +			-5:00	Canada	E%sT
    +# formerly Frobisher Bay
    +Zone America/Iqaluit	0	-	zzz	1942 Aug # Frobisher Bay est.
    +			-5:00	NT_YK	E%sT	1999 Oct 31 2:00
    +			-6:00	Canada	C%sT	2000 Oct 29 2:00
    +			-5:00	Canada	E%sT
    +# aka Qausuittuq
    +Zone America/Resolute	0	-	zzz	1947 Aug 31 # Resolute founded
    +			-6:00	NT_YK	C%sT	2000 Oct 29 2:00
    +			-5:00	-	EST	2001 Apr  1 3:00
    +			-6:00	Canada	C%sT	2006 Oct 29 2:00
    +			-5:00	-	EST	2007 Mar 11 3:00
    +			-6:00	Canada	C%sT
    +# aka Kangiqiniq
    +Zone America/Rankin_Inlet 0	-	zzz	1957 # Rankin Inlet founded
    +			-6:00	NT_YK	C%sT	2000 Oct 29 2:00
    +			-5:00	-	EST	2001 Apr  1 3:00
    +			-6:00	Canada	C%sT
    +# aka Iqaluktuuttiaq
    +Zone America/Cambridge_Bay 0	-	zzz	1920 # trading post est.?
    +			-7:00	NT_YK	M%sT	1999 Oct 31 2:00
    +			-6:00	Canada	C%sT	2000 Oct 29 2:00
    +			-5:00	-	EST	2000 Nov  5 0:00
    +			-6:00	-	CST	2001 Apr  1 3:00
    +			-7:00	Canada	M%sT
    +Zone America/Yellowknife 0	-	zzz	1935 # Yellowknife founded?
    +			-7:00	NT_YK	M%sT	1980
    +			-7:00	Canada	M%sT
    +Zone America/Inuvik	0	-	zzz	1953 # Inuvik founded
    +			-8:00	NT_YK	P%sT	1979 Apr lastSun 2:00
    +			-7:00	NT_YK	M%sT	1980
    +			-7:00	Canada	M%sT
    +Zone America/Whitehorse	-9:00:12 -	LMT	1900 Aug 20
    +			-9:00	NT_YK	Y%sT	1966 Jul 1 2:00
    +			-8:00	NT_YK	P%sT	1980
    +			-8:00	Canada	P%sT
    +Zone America/Dawson	-9:17:40 -	LMT	1900 Aug 20
    +			-9:00	NT_YK	Y%sT	1973 Oct 28 0:00
    +			-8:00	NT_YK	P%sT	1980
    +			-8:00	Canada	P%sT
    +
    +
    +###############################################################################
    +
    +# Mexico
    +
    +# From Paul Eggert (2001-03-05):
    +# The Investigation and Analysis Service of the
    +# Mexican Library of Congress (MLoC) has published a
    +# 
    +# history of Mexican local time (in Spanish)
    +# .
    +#
    +# Here are the discrepancies between Shanks & Pottenger (S&P) and the MLoC.
    +# (In all cases we go with the MLoC.)
    +# S&P report that Baja was at -8:00 in 1922/1923.
    +# S&P say the 1930 transition in Baja was 1930-11-16.
    +# S&P report no DST during summer 1931.
    +# S&P report a transition at 1932-03-30 23:00, not 1932-04-01.
    +
    +# From Gwillim Law (2001-02-20):
    +# There are some other discrepancies between the Decrees page and the
    +# tz database.  I think they can best be explained by supposing that
    +# the researchers who prepared the Decrees page failed to find some of
    +# the relevant documents.
    +
    +# From Alan Perry (1996-02-15):
    +# A guy from our Mexico subsidiary finally found the Presidential Decree
    +# outlining the timezone changes in Mexico.
    +#
    +# ------------- Begin Forwarded Message -------------
    +#
    +# I finally got my hands on the Official Presidential Decree that sets up the
    +# rules for the DST changes. The rules are:
    +#
    +# 1. The country is divided in 3 timezones:
    +#    - Baja California Norte (the Mexico/BajaNorte TZ)
    +#    - Baja California Sur, Nayarit, Sinaloa and Sonora (the Mexico/BajaSur TZ)
    +#    - The rest of the country (the Mexico/General TZ)
    +#
    +# 2. From the first Sunday in April at 2:00 AM to the last Sunday in October
    +#    at 2:00 AM, the times in each zone are as follows:
    +#    BajaNorte: GMT+7
    +#    BajaSur:   GMT+6
    +#    General:   GMT+5
    +#
    +# 3. The rest of the year, the times are as follows:
    +#    BajaNorte: GMT+8
    +#    BajaSur:   GMT+7
    +#    General:   GMT+6
    +#
    +# The Decree was published in Mexico's Official Newspaper on January 4th.
    +#
    +# -------------- End Forwarded Message --------------
    +# From Paul Eggert (1996-06-12):
    +# For an English translation of the decree, see
    +# 
    +# ``Diario Oficial: Time Zone Changeover'' (1996-01-04).
    +# 
    +
    +# From Rives McDow (1998-10-08):
    +# The State of Quintana Roo has reverted back to central STD and DST times
    +# (i.e. UTC -0600 and -0500 as of 1998-08-02).
    +
    +# From Rives McDow (2000-01-10):
    +# Effective April 4, 1999 at 2:00 AM local time, Sonora changed to the time
    +# zone 5 hours from the International Date Line, and will not observe daylight
    +# savings time so as to stay on the same time zone as the southern part of
    +# Arizona year round.
    +
    +# From Jesper Norgaard, translating
    +#  (2001-01-17):
    +# In Oaxaca, the 55.000 teachers from the Section 22 of the National
    +# Syndicate of Education Workers, refuse to apply daylight saving each
    +# year, so that the more than 10,000 schools work at normal hour the
    +# whole year.
    +
    +# From Gwillim Law (2001-01-19):
    +#  ... says
    +# (translated):...
    +# January 17, 2000 - The Energy Secretary, Ernesto Martens, announced
    +# that Summer Time will be reduced from seven to five months, starting
    +# this year....
    +# 
    +# [translated], says "summer time will ... take effect on the first Sunday
    +# in May, and end on the last Sunday of September.
    +
    +# From Arthur David Olson (2001-01-25):
    +# The 2001-01-24 traditional Washington Post contained the page one
    +# story "Timely Issue Divides Mexicans."...
    +# http://www.washingtonpost.com/wp-dyn/articles/A37383-2001Jan23.html
    +# ... Mexico City Mayor Lopez Obrador "...is threatening to keep
    +# Mexico City and its 20 million residents on a different time than
    +# the rest of the country..." In particular, Lopez Obrador would abolish
    +# observation of Daylight Saving Time.
    +
    +# 
    +# Official statute published by the Energy Department
    +#  (2001-02-01) shows Baja and Chihauhua as still using US DST rules,
    +# and Sonora with no DST.  This was reported by Jesper Norgaard (2001-02-03).
    +
    +# From Paul Eggert (2001-03-03):
    +#
    +# 
    +# James F. Smith writes in today's LA Times
    +# 
    +# * Sonora will continue to observe standard time.
    +# * Last week Mexico City's mayor Andres Manuel Lopez Obrador decreed that
    +#   the Federal District will not adopt DST.
    +# * 4 of 16 district leaders announced they'll ignore the decree.
    +# * The decree does not affect federal-controlled facilities including
    +#   the airport, banks, hospitals, and schools.
    +#
    +# For now we'll assume that the Federal District will bow to federal rules.
    +
    +# From Jesper Norgaard (2001-04-01):
    +# I found some references to the Mexican application of daylight
    +# saving, which modifies what I had already sent you, stating earlier
    +# that a number of northern Mexican states would go on daylight
    +# saving. The modification reverts this to only cover Baja California
    +# (Norte), while all other states (except Sonora, who has no daylight
    +# saving all year) will follow the original decree of president
    +# Vicente Fox, starting daylight saving May 6, 2001 and ending
    +# September 30, 2001.
    +# References: "Diario de Monterrey" 
    +# Palabra  (2001-03-31)
    +
    +# From Reuters (2001-09-04):
    +# Mexico's Supreme Court on Tuesday declared that daylight savings was
    +# unconstitutional in Mexico City, creating the possibility the
    +# capital will be in a different time zone from the rest of the nation
    +# next year....  The Supreme Court's ruling takes effect at 2:00
    +# a.m. (0800 GMT) on Sept. 30, when Mexico is scheduled to revert to
    +# standard time. "This is so residents of the Federal District are not
    +# subject to unexpected time changes," a statement from the court said.
    +
    +# From Jesper Norgaard Welen (2002-03-12):
    +# ... consulting my local grocery store(!) and my coworkers, they all insisted
    +# that a new decision had been made to reinstate US style DST in Mexico....
    +# http://www.conae.gob.mx/ahorro/horaver2001_m1_2002.html (2002-02-20)
    +# confirms this.  Sonora as usual is the only state where DST is not applied.
    +
    +# From Steffen Thorsen (2009-12-28):
    +#
    +# Steffen Thorsen wrote:
    +# > Mexico's House of Representatives has approved a proposal for northern
    +# > Mexico's border cities to share the same daylight saving schedule as
    +# > the United States.
    +# Now this has passed both the Congress and the Senate, so starting from
    +# 2010, some border regions will be the same:
    +# 
    +# http://www.signonsandiego.com/news/2009/dec/28/clocks-will-match-both-sides-border/
    +# 
    +# 
    +# http://www.elmananarey.com/diario/noticia/nacional/noticias/empatan_horario_de_frontera_con_eu/621939
    +# 
    +# (Spanish)
    +#
    +# Could not find the new law text, but the proposed law text changes are here:
    +# 
    +# http://gaceta.diputados.gob.mx/Gaceta/61/2009/dic/20091210-V.pdf
    +# 
    +# (Gaceta Parlamentaria)
    +#
    +# There is also a list of the votes here:
    +# 
    +# http://gaceta.diputados.gob.mx/Gaceta/61/2009/dic/V2-101209.html
    +# 
    +#
    +# Our page:
    +# 
    +# http://www.timeanddate.com/news/time/north-mexico-dst-change.html
    +# 
    +
    +# From Arthur David Olson (2010-01-20):
    +# The page
    +# 
    +# http://dof.gob.mx/nota_detalle.php?codigo=5127480&fecha=06/01/2010
    +# 
    +# includes this text:
    +# En los municipios fronterizos de Tijuana y Mexicali en Baja California;
    +# Juárez y Ojinaga en Chihuahua; Acuña y Piedras Negras en Coahuila;
    +# Anáhuac en Nuevo León; y Nuevo Laredo, Reynosa y Matamoros en
    +# Tamaulipas, la aplicación de este horario estacional surtirá efecto
    +# desde las dos horas del segundo domingo de marzo y concluirá a las dos
    +# horas del primer domingo de noviembre.
    +# En los municipios fronterizos que se encuentren ubicados en la franja
    +# fronteriza norte en el territorio comprendido entre la línea
    +# internacional y la línea paralela ubicada a una distancia de veinte
    +# kilómetros, así como la Ciudad de Ensenada, Baja California, hacia el
    +# interior del país, la aplicación de este horario estacional surtirá
    +# efecto desde las dos horas del segundo domingo de marzo y concluirá a
    +# las dos horas del primer domingo de noviembre.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Mexico	1939	only	-	Feb	5	0:00	1:00	D
    +Rule	Mexico	1939	only	-	Jun	25	0:00	0	S
    +Rule	Mexico	1940	only	-	Dec	9	0:00	1:00	D
    +Rule	Mexico	1941	only	-	Apr	1	0:00	0	S
    +Rule	Mexico	1943	only	-	Dec	16	0:00	1:00	W # War
    +Rule	Mexico	1944	only	-	May	1	0:00	0	S
    +Rule	Mexico	1950	only	-	Feb	12	0:00	1:00	D
    +Rule	Mexico	1950	only	-	Jul	30	0:00	0	S
    +Rule	Mexico	1996	2000	-	Apr	Sun>=1	2:00	1:00	D
    +Rule	Mexico	1996	2000	-	Oct	lastSun	2:00	0	S
    +Rule	Mexico	2001	only	-	May	Sun>=1	2:00	1:00	D
    +Rule	Mexico	2001	only	-	Sep	lastSun	2:00	0	S
    +Rule	Mexico	2002	max	-	Apr	Sun>=1	2:00	1:00	D
    +Rule	Mexico	2002	max	-	Oct	lastSun	2:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +# Quintana Roo
    +Zone America/Cancun	-5:47:04 -	LMT	1922 Jan  1  0:12:56
    +			-6:00	-	CST	1981 Dec 23
    +			-5:00	Mexico	E%sT	1998 Aug  2  2:00
    +			-6:00	Mexico	C%sT
    +# Campeche, Yucatan
    +Zone America/Merida	-5:58:28 -	LMT	1922 Jan  1  0:01:32
    +			-6:00	-	CST	1981 Dec 23
    +			-5:00	-	EST	1982 Dec  2
    +			-6:00	Mexico	C%sT
    +# Coahuila, Durango, Nuevo Leon, Tamaulipas (near US border)
    +Zone America/Matamoros	-6:40:00 -	LMT	1921 Dec 31 23:20:00
    +			-6:00	-	CST	1988
    +			-6:00	US	C%sT	1989
    +			-6:00	Mexico	C%sT	2010
    +			-6:00	US	C%sT
    +# Coahuila, Durango, Nuevo Leon, Tamaulipas (away from US border)
    +Zone America/Monterrey	-6:41:16 -	LMT	1921 Dec 31 23:18:44
    +			-6:00	-	CST	1988
    +			-6:00	US	C%sT	1989
    +			-6:00	Mexico	C%sT
    +# Central Mexico
    +Zone America/Mexico_City -6:36:36 -	LMT	1922 Jan  1 0:23:24
    +			-7:00	-	MST	1927 Jun 10 23:00
    +			-6:00	-	CST	1930 Nov 15
    +			-7:00	-	MST	1931 May  1 23:00
    +			-6:00	-	CST	1931 Oct
    +			-7:00	-	MST	1932 Apr  1
    +			-6:00	Mexico	C%sT	2001 Sep 30 02:00
    +			-6:00	-	CST	2002 Feb 20
    +			-6:00	Mexico	C%sT
    +# Chihuahua (near US border)
    +Zone America/Ojinaga	-6:57:40 -	LMT	1922 Jan 1 0:02:20
    +			-7:00	-	MST	1927 Jun 10 23:00
    +			-6:00	-	CST	1930 Nov 15
    +			-7:00	-	MST	1931 May  1 23:00
    +			-6:00	-	CST	1931 Oct
    +			-7:00	-	MST	1932 Apr  1
    +			-6:00	-	CST	1996
    +			-6:00	Mexico	C%sT	1998
    +			-6:00	-	CST	1998 Apr Sun>=1 3:00
    +			-7:00	Mexico	M%sT	2010
    +			-7:00	US	M%sT
    +# Chihuahua (away from US border)
    +Zone America/Chihuahua	-7:04:20 -	LMT	1921 Dec 31 23:55:40
    +			-7:00	-	MST	1927 Jun 10 23:00
    +			-6:00	-	CST	1930 Nov 15
    +			-7:00	-	MST	1931 May  1 23:00
    +			-6:00	-	CST	1931 Oct
    +			-7:00	-	MST	1932 Apr  1
    +			-6:00	-	CST	1996
    +			-6:00	Mexico	C%sT	1998
    +			-6:00	-	CST	1998 Apr Sun>=1 3:00
    +			-7:00	Mexico	M%sT
    +# Sonora
    +Zone America/Hermosillo	-7:23:52 -	LMT	1921 Dec 31 23:36:08
    +			-7:00	-	MST	1927 Jun 10 23:00
    +			-6:00	-	CST	1930 Nov 15
    +			-7:00	-	MST	1931 May  1 23:00
    +			-6:00	-	CST	1931 Oct
    +			-7:00	-	MST	1932 Apr  1
    +			-6:00	-	CST	1942 Apr 24
    +			-7:00	-	MST	1949 Jan 14
    +			-8:00	-	PST	1970
    +			-7:00	Mexico	M%sT	1999
    +			-7:00	-	MST
    +
    +# From Alexander Krivenyshev (2010-04-21):
    +# According to news, Bahía de Banderas (Mexican state of Nayarit)
    +# changed time zone UTC-7 to new time zone UTC-6 on April 4, 2010 (to
    +# share the same time zone as nearby city Puerto Vallarta, Jalisco).
    +#
    +# (Spanish)
    +# Bahía de Banderas homologa su horario al del centro del
    +# país, a partir de este domingo
    +# 
    +# http://www.nayarit.gob.mx/notes.asp?id=20748
    +# 
    +#
    +# Bahía de Banderas homologa su horario con el del Centro del
    +# País
    +# 
    +# http://www.bahiadebanderas.gob.mx/principal/index.php?option=com_content&view=article&id=261:bahia-de-banderas-homologa-su-horario-con-el-del-centro-del-pais&catid=42:comunicacion-social&Itemid=50"
    +# 
    +#
    +# (English)
    +# Puerto Vallarta and Bahía de Banderas: One Time Zone
    +# 
    +# http://virtualvallarta.com/puertovallarta/puertovallarta/localnews/2009-12-03-Puerto-Vallarta-and-Bahia-de-Banderas-One-Time-Zone.shtml
    +# 
    +#
    +# or
    +# 
    +# http://www.worldtimezone.com/dst_news/dst_news_mexico08.html
    +# 
    +#
    +# "Mexico's Senate approved the amendments to the Mexican Schedule System that
    +# will allow Bahía de Banderas and Puerto Vallarta to share the same time
    +# zone ..."
    +# Baja California Sur, Nayarit, Sinaloa
    +
    +# From Arthur David Olson (2010-05-01):
    +# Use "Bahia_Banderas" to keep the name to fourteen characters.
    +
    +Zone America/Mazatlan	-7:05:40 -	LMT	1921 Dec 31 23:54:20
    +			-7:00	-	MST	1927 Jun 10 23:00
    +			-6:00	-	CST	1930 Nov 15
    +			-7:00	-	MST	1931 May  1 23:00
    +			-6:00	-	CST	1931 Oct
    +			-7:00	-	MST	1932 Apr  1
    +			-6:00	-	CST	1942 Apr 24
    +			-7:00	-	MST	1949 Jan 14
    +			-8:00	-	PST	1970
    +			-7:00	Mexico	M%sT
    +
    +Zone America/Bahia_Banderas	-7:01:00 -	LMT	1921 Dec 31 23:59:00
    +			-7:00	-	MST	1927 Jun 10 23:00
    +			-6:00	-	CST	1930 Nov 15
    +			-7:00	-	MST	1931 May  1 23:00
    +			-6:00	-	CST	1931 Oct
    +			-7:00	-	MST	1932 Apr  1
    +			-6:00	-	CST	1942 Apr 24
    +			-7:00	-	MST	1949 Jan 14
    +			-8:00	-	PST	1970
    +			-7:00	Mexico	M%sT	2010 Apr 4 2:00
    +			-6:00	Mexico	C%sT
    +
    +# Baja California (near US border)
    +Zone America/Tijuana	-7:48:04 -	LMT	1922 Jan  1  0:11:56
    +			-7:00	-	MST	1924
    +			-8:00	-	PST	1927 Jun 10 23:00
    +			-7:00	-	MST	1930 Nov 15
    +			-8:00	-	PST	1931 Apr  1
    +			-8:00	1:00	PDT	1931 Sep 30
    +			-8:00	-	PST	1942 Apr 24
    +			-8:00	1:00	PWT	1945 Aug 14 23:00u
    +			-8:00	1:00	PPT	1945 Nov 12 # Peace
    +			-8:00	-	PST	1948 Apr  5
    +			-8:00	1:00	PDT	1949 Jan 14
    +			-8:00	-	PST	1954
    +			-8:00	CA	P%sT	1961
    +			-8:00	-	PST	1976
    +			-8:00	US	P%sT	1996
    +			-8:00	Mexico	P%sT	2001
    +			-8:00	US	P%sT	2002 Feb 20
    +			-8:00	Mexico	P%sT	2010
    +			-8:00	US	P%sT
    +# Baja California (away from US border)
    +Zone America/Santa_Isabel	-7:39:28 -	LMT	1922 Jan  1  0:20:32
    +			-7:00	-	MST	1924
    +			-8:00	-	PST	1927 Jun 10 23:00
    +			-7:00	-	MST	1930 Nov 15
    +			-8:00	-	PST	1931 Apr  1
    +			-8:00	1:00	PDT	1931 Sep 30
    +			-8:00	-	PST	1942 Apr 24
    +			-8:00	1:00	PWT	1945 Aug 14 23:00u
    +			-8:00	1:00	PPT	1945 Nov 12 # Peace
    +			-8:00	-	PST	1948 Apr  5
    +			-8:00	1:00	PDT	1949 Jan 14
    +			-8:00	-	PST	1954
    +			-8:00	CA	P%sT	1961
    +			-8:00	-	PST	1976
    +			-8:00	US	P%sT	1996
    +			-8:00	Mexico	P%sT	2001
    +			-8:00	US	P%sT	2002 Feb 20
    +			-8:00	Mexico	P%sT
    +# From Paul Eggert (2006-03-22):
    +# Formerly there was an America/Ensenada zone, which differed from
    +# America/Tijuana only in that it did not observe DST from 1976
    +# through 1995.  This was as per Shanks (1999).  But Shanks & Pottenger say
    +# Ensenada did not observe DST from 1948 through 1975.  Guy Harris reports
    +# that the 1987 OAG says "Only Ensenada, Mexicale, San Felipe and
    +# Tijuana observe DST," which agrees with Shanks & Pottenger but implies that
    +# DST-observance was a town-by-town matter back then.  This concerns
    +# data after 1970 so most likely there should be at least one Zone
    +# other than America/Tijuana for Baja, but it's not clear yet what its
    +# name or contents should be.
    +#
    +# Revillagigedo Is
    +# no information
    +
    +###############################################################################
    +
    +# Anguilla
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Anguilla	-4:12:16 -	LMT	1912 Mar 2
    +			-4:00	-	AST
    +
    +# Antigua and Barbuda
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	America/Antigua	-4:07:12 -	LMT	1912 Mar 2
    +			-5:00	-	EST	1951
    +			-4:00	-	AST
    +
    +# Bahamas
    +#
    +# From Sue Williams (2006-12-07):
    +# The Bahamas announced about a month ago that they plan to change their DST
    +# rules to sync with the U.S. starting in 2007....
    +# http://www.jonesbahamas.com/?c=45&a=10412
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Bahamas	1964	1975	-	Oct	lastSun	2:00	0	S
    +Rule	Bahamas	1964	1975	-	Apr	lastSun	2:00	1:00	D
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	America/Nassau	-5:09:24 -	LMT	1912 Mar 2
    +			-5:00	Bahamas	E%sT	1976
    +			-5:00	US	E%sT
    +
    +# Barbados
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Barb	1977	only	-	Jun	12	2:00	1:00	D
    +Rule	Barb	1977	1978	-	Oct	Sun>=1	2:00	0	S
    +Rule	Barb	1978	1980	-	Apr	Sun>=15	2:00	1:00	D
    +Rule	Barb	1979	only	-	Sep	30	2:00	0	S
    +Rule	Barb	1980	only	-	Sep	25	2:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Barbados	-3:58:28 -	LMT	1924		# Bridgetown
    +			-3:58:28 -	BMT	1932	  # Bridgetown Mean Time
    +			-4:00	Barb	A%sT
    +
    +# Belize
    +# Whitman entirely disagrees with Shanks; go with Shanks & Pottenger.
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Belize	1918	1942	-	Oct	Sun>=2	0:00	0:30	HD
    +Rule	Belize	1919	1943	-	Feb	Sun>=9	0:00	0	S
    +Rule	Belize	1973	only	-	Dec	 5	0:00	1:00	D
    +Rule	Belize	1974	only	-	Feb	 9	0:00	0	S
    +Rule	Belize	1982	only	-	Dec	18	0:00	1:00	D
    +Rule	Belize	1983	only	-	Feb	12	0:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	America/Belize	-5:52:48 -	LMT	1912 Apr
    +			-6:00	Belize	C%sT
    +
    +# Bermuda
    +
    +# From Dan Jones, reporting in The Royal Gazette (2006-06-26):
    +
    +# Next year, however, clocks in the US will go forward on the second Sunday
    +# in March, until the first Sunday in November.  And, after the Time Zone
    +# (Seasonal Variation) Bill 2006 was passed in the House of Assembly on
    +# Friday, the same thing will happen in Bermuda.
    +# http://www.theroyalgazette.com/apps/pbcs.dll/article?AID=/20060529/NEWS/105290135
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Atlantic/Bermuda	-4:19:04 -	LMT	1930 Jan  1 2:00    # Hamilton
    +			-4:00	-	AST	1974 Apr 28 2:00
    +			-4:00	Bahamas	A%sT	1976
    +			-4:00	US	A%sT
    +
    +# Cayman Is
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	America/Cayman	-5:25:32 -	LMT	1890		# Georgetown
    +			-5:07:12 -	KMT	1912 Feb    # Kingston Mean Time
    +			-5:00	-	EST
    +
    +# Costa Rica
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	CR	1979	1980	-	Feb	lastSun	0:00	1:00	D
    +Rule	CR	1979	1980	-	Jun	Sun>=1	0:00	0	S
    +Rule	CR	1991	1992	-	Jan	Sat>=15	0:00	1:00	D
    +# IATA SSIM (1991-09) says the following was at 1:00;
    +# go with Shanks & Pottenger.
    +Rule	CR	1991	only	-	Jul	 1	0:00	0	S
    +Rule	CR	1992	only	-	Mar	15	0:00	0	S
    +# There are too many San Joses elsewhere, so we'll use `Costa Rica'.
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Costa_Rica	-5:36:20 -	LMT	1890		# San Jose
    +			-5:36:20 -	SJMT	1921 Jan 15 # San Jose Mean Time
    +			-6:00	CR	C%sT
    +# Coco
    +# no information; probably like America/Costa_Rica
    +
    +# Cuba
    +
    +# From Arthur David Olson (1999-03-29):
    +# The 1999-03-28 exhibition baseball game held in Havana, Cuba, between
    +# the Cuban National Team and the Baltimore Orioles was carried live on
    +# the Orioles Radio Network, including affiliate WTOP in Washington, DC.
    +# During the game, play-by-play announcer Jim Hunter noted that
    +# "We'll be losing two hours of sleep...Cuba switched to Daylight Saving
    +# Time today."  (The "two hour" remark referred to losing one hour of
    +# sleep on 1999-03-28--when the announcers were in Cuba as it switched
    +# to DST--and one more hour on 1999-04-04--when the announcers will have
    +# returned to Baltimore, which switches on that date.)
    +
    +# From Evert van der Veer via Steffen Thorsen (2004-10-28):
    +# Cuba is not going back to standard time this year.
    +# From Paul Eggert (2006-03-22):
    +# http://www.granma.cu/ingles/2004/septiembre/juev30/41medid-i.html
    +# says that it's due to a problem at the Antonio Guiteras
    +# thermoelectric plant, and says "This October there will be no return
    +# to normal hours (after daylight saving time)".
    +# For now, let's assume that it's a temporary measure.
    +
    +# From Carlos A. Carnero Delgado (2005-11-12):
    +# This year (just like in 2004-2005) there's no change in time zone
    +# adjustment in Cuba.  We will stay in daylight saving time:
    +# http://www.granma.cu/espanol/2005/noviembre/mier9/horario.html
    +
    +# From Jesper Norgaard Welen (2006-10-21):
    +# An article in GRANMA INTERNACIONAL claims that Cuba will end
    +# the 3 years of permanent DST next weekend, see
    +# http://www.granma.cu/ingles/2006/octubre/lun16/43horario.html
    +# "On Saturday night, October 28 going into Sunday, October 29, at 01:00,
    +# watches should be set back one hour -- going back to 00:00 hours -- returning
    +# to the normal schedule....
    +
    +# From Paul Eggert (2007-03-02):
    +# http://www.granma.cubaweb.cu/english/news/art89.html, dated yesterday,
    +# says Cuban clocks will advance at midnight on March 10.
    +# For lack of better information, assume Cuba will use US rules,
    +# except that it switches at midnight standard time as usual.
    +#
    +# From Steffen Thorsen (2007-10-25):
    +# Carlos Alberto Fonseca Arauz informed me that Cuba will end DST one week
    +# earlier - on the last Sunday of October, just like in 2006.
    +#
    +# He supplied these references:
    +#
    +# http://www.prensalatina.com.mx/article.asp?ID=%7B4CC32C1B-A9F7-42FB-8A07-8631AFC923AF%7D&language=ES
    +# http://actualidad.terra.es/sociedad/articulo/cuba_llama_ahorrar_energia_cambio_1957044.htm
    +#
    +# From Alex Kryvenishev (2007-10-25):
    +# Here is also article from Granma (Cuba):
    +#
    +# [Regira] el Horario Normal desde el [proximo] domingo 28 de octubre
    +# http://www.granma.cubaweb.cu/2007/10/24/nacional/artic07.html
    +#
    +# http://www.worldtimezone.com/dst_news/dst_news_cuba03.html
    +
    +# From Arthur David Olson (2008-03-09):
    +# I'm in Maryland which is now observing United States Eastern Daylight
    +# Time. At 9:44 local time I used RealPlayer to listen to
    +# 
    +# http://media.enet.cu/radioreloj
    +# , a Cuban information station, and heard
    +# the time announced as "ocho cuarenta y cuatro" ("eight forty-four"),
    +# indicating that Cuba is still on standard time.
    +
    +# From Steffen Thorsen (2008-03-12):
    +# It seems that Cuba will start DST on Sunday, 2007-03-16...
    +# It was announced yesterday, according to this source (in Spanish):
    +# 
    +# http://www.nnc.cubaweb.cu/marzo-2008/cien-1-11-3-08.htm
    +# 
    +#
    +# Some more background information is posted here:
    +# 
    +# http://www.timeanddate.com/news/time/cuba-starts-dst-march-16.html
    +# 
    +#
    +# The article also says that Cuba has been observing DST since 1963,
    +# while Shanks (and tzdata) has 1965 as the first date (except in the
    +# 1940's). Many other web pages in Cuba also claim that it has been
    +# observed since 1963, but with the exception of 1970 - an exception
    +# which is not present in tzdata/Shanks. So there is a chance we need to
    +# change some historic records as well.
    +#
    +# One example:
    +# 
    +# http://www.radiohc.cu/espanol/noticias/mar07/11mar/hor.htm
    +# 
    +
    +# From Jesper Norgaard Welen (2008-03-13):
    +# The Cuban time change has just been confirmed on the most authoritative
    +# web site, the Granma.  Please check out
    +# 
    +# http://www.granma.cubaweb.cu/2008/03/13/nacional/artic10.html
    +# 
    +#
    +# Basically as expected after Steffen Thorsens information, the change
    +# will take place midnight between Saturday and Sunday.
    +
    +# From Arthur David Olson (2008-03-12):
    +# Assume Sun>=15 (third Sunday) going forward.
    +
    +# From Alexander Krivenyshev (2009-03-04)
    +# According to the Radio Reloj - Cuba will start Daylight Saving Time on
    +# midnight between Saturday, March 07, 2009 and Sunday, March 08, 2009-
    +# not on midnight March 14 / March 15 as previously thought.
    +#
    +# 
    +# http://www.worldtimezone.com/dst_news/dst_news_cuba05.html
    +# (in Spanish)
    +# 
    +
    +# From Arthur David Olson (2009-03-09)
    +# I listened over the Internet to
    +# 
    +# http://media.enet.cu/readioreloj
    +# 
    +# this morning; when it was 10:05 a. m. here in Bethesda, Maryland the
    +# the time was announced as "diez cinco"--the same time as here, indicating
    +# that has indeed switched to DST. Assume second Sunday from 2009 forward.
    +
    +# From Steffen Thorsen (2011-03-08):
    +# Granma announced that Cuba is going to start DST on 2011-03-20 00:00:00
    +# this year. Nothing about the end date known so far (if that has
    +# changed at all).
    +#
    +# Source:
    +# 
    +# http://granma.co.cu/2011/03/08/nacional/artic01.html
    +# 
    +#
    +# Our info:
    +# 
    +# http://www.timeanddate.com/news/time/cuba-starts-dst-2011.html
    +# 
    +#
    +# From Steffen Thorsen (2011-10-30)
    +# Cuba will end DST two weeks later this year. Instead of going back
    +# tonight, it has been delayed to 2011-11-13 at 01:00.
    +#
    +# One source (Spanish)
    +# 
    +# http://www.radioangulo.cu/noticias/cuba/17105-cuba-restablecera-el-horario-del-meridiano-de-greenwich.html
    +# 
    +#
    +# Our page:
    +# 
    +# http://www.timeanddate.com/news/time/cuba-time-changes-2011.html
    +# 
    +#
    +# From Steffen Thorsen (2012-03-01)
    +# According to Radio Reloj, Cuba will start DST on Midnight between March
    +# 31 and April 1.
    +#
    +# Radio Reloj has the following info (Spanish):
    +# 
    +# http://www.radioreloj.cu/index.php/noticias-radio-reloj/71-miscelaneas/7529-cuba-aplicara-el-horario-de-verano-desde-el-1-de-abril
    +# 
    +#
    +# Our info on it:
    +# 
    +# http://www.timeanddate.com/news/time/cuba-starts-dst-2012.html
    +# 
    +
    +# From Steffen Thorsen (2012-11-03):
    +# Radio Reloj and many other sources report that Cuba is changing back
    +# to standard time on 2012-11-04:
    +# http://www.radioreloj.cu/index.php/noticias-radio-reloj/36-nacionales/9961-regira-horario-normal-en-cuba-desde-el-domingo-cuatro-de-noviembre
    +# From Paul Eggert (2012-11-03):
    +# For now, assume the future rule is first Sunday in November.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Cuba	1928	only	-	Jun	10	0:00	1:00	D
    +Rule	Cuba	1928	only	-	Oct	10	0:00	0	S
    +Rule	Cuba	1940	1942	-	Jun	Sun>=1	0:00	1:00	D
    +Rule	Cuba	1940	1942	-	Sep	Sun>=1	0:00	0	S
    +Rule	Cuba	1945	1946	-	Jun	Sun>=1	0:00	1:00	D
    +Rule	Cuba	1945	1946	-	Sep	Sun>=1	0:00	0	S
    +Rule	Cuba	1965	only	-	Jun	1	0:00	1:00	D
    +Rule	Cuba	1965	only	-	Sep	30	0:00	0	S
    +Rule	Cuba	1966	only	-	May	29	0:00	1:00	D
    +Rule	Cuba	1966	only	-	Oct	2	0:00	0	S
    +Rule	Cuba	1967	only	-	Apr	8	0:00	1:00	D
    +Rule	Cuba	1967	1968	-	Sep	Sun>=8	0:00	0	S
    +Rule	Cuba	1968	only	-	Apr	14	0:00	1:00	D
    +Rule	Cuba	1969	1977	-	Apr	lastSun	0:00	1:00	D
    +Rule	Cuba	1969	1971	-	Oct	lastSun	0:00	0	S
    +Rule	Cuba	1972	1974	-	Oct	8	0:00	0	S
    +Rule	Cuba	1975	1977	-	Oct	lastSun	0:00	0	S
    +Rule	Cuba	1978	only	-	May	7	0:00	1:00	D
    +Rule	Cuba	1978	1990	-	Oct	Sun>=8	0:00	0	S
    +Rule	Cuba	1979	1980	-	Mar	Sun>=15	0:00	1:00	D
    +Rule	Cuba	1981	1985	-	May	Sun>=5	0:00	1:00	D
    +Rule	Cuba	1986	1989	-	Mar	Sun>=14	0:00	1:00	D
    +Rule	Cuba	1990	1997	-	Apr	Sun>=1	0:00	1:00	D
    +Rule	Cuba	1991	1995	-	Oct	Sun>=8	0:00s	0	S
    +Rule	Cuba	1996	only	-	Oct	 6	0:00s	0	S
    +Rule	Cuba	1997	only	-	Oct	12	0:00s	0	S
    +Rule	Cuba	1998	1999	-	Mar	lastSun	0:00s	1:00	D
    +Rule	Cuba	1998	2003	-	Oct	lastSun	0:00s	0	S
    +Rule	Cuba	2000	2004	-	Apr	Sun>=1	0:00s	1:00	D
    +Rule	Cuba	2006	2010	-	Oct	lastSun	0:00s	0	S
    +Rule	Cuba	2007	only	-	Mar	Sun>=8	0:00s	1:00	D
    +Rule	Cuba	2008	only	-	Mar	Sun>=15	0:00s	1:00	D
    +Rule	Cuba	2009	2010	-	Mar	Sun>=8	0:00s	1:00	D
    +Rule	Cuba	2011	only	-	Mar	Sun>=15	0:00s	1:00	D
    +Rule	Cuba	2011	only	-	Nov	13	0:00s	0	S
    +Rule	Cuba	2012	only	-	Apr	1	0:00s	1:00	D
    +Rule	Cuba	2012	max	-	Nov	Sun>=1	0:00s	0	S
    +Rule	Cuba	2013	max	-	Mar	Sun>=8	0:00s	1:00	D
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	America/Havana	-5:29:28 -	LMT	1890
    +			-5:29:36 -	HMT	1925 Jul 19 12:00 # Havana MT
    +			-5:00	Cuba	C%sT
    +
    +# Dominica
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Dominica	-4:05:36 -	LMT	1911 Jul 1 0:01		# Roseau
    +			-4:00	-	AST
    +
    +# Dominican Republic
    +
    +# From Steffen Thorsen (2000-10-30):
    +# Enrique Morales reported to me that the Dominican Republic has changed the
    +# time zone to Eastern Standard Time as of Sunday 29 at 2 am....
    +# http://www.listin.com.do/antes/261000/republica/princi.html
    +
    +# From Paul Eggert (2000-12-04):
    +# That URL (2000-10-26, in Spanish) says they planned to use US-style DST.
    +
    +# From Rives McDow (2000-12-01):
    +# Dominican Republic changed its mind and presidential decree on Tuesday,
    +# November 28, 2000, with a new decree.  On Sunday, December 3 at 1:00 AM the
    +# Dominican Republic will be reverting to 8 hours from the International Date
    +# Line, and will not be using DST in the foreseeable future.  The reason they
    +# decided to use DST was to be in synch with Puerto Rico, who was also going
    +# to implement DST.  When Puerto Rico didn't implement DST, the president
    +# decided to revert.
    +
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	DR	1966	only	-	Oct	30	0:00	1:00	D
    +Rule	DR	1967	only	-	Feb	28	0:00	0	S
    +Rule	DR	1969	1973	-	Oct	lastSun	0:00	0:30	HD
    +Rule	DR	1970	only	-	Feb	21	0:00	0	S
    +Rule	DR	1971	only	-	Jan	20	0:00	0	S
    +Rule	DR	1972	1974	-	Jan	21	0:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Santo_Domingo -4:39:36 -	LMT	1890
    +			-4:40	-	SDMT	1933 Apr  1 12:00 # S. Dom. MT
    +			-5:00	DR	E%sT	1974 Oct 27
    +			-4:00	-	AST	2000 Oct 29 02:00
    +			-5:00	US	E%sT	2000 Dec  3 01:00
    +			-4:00	-	AST
    +
    +# El Salvador
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Salv	1987	1988	-	May	Sun>=1	0:00	1:00	D
    +Rule	Salv	1987	1988	-	Sep	lastSun	0:00	0	S
    +# There are too many San Salvadors elsewhere, so use America/El_Salvador
    +# instead of America/San_Salvador.
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/El_Salvador -5:56:48 -	LMT	1921		# San Salvador
    +			-6:00	Salv	C%sT
    +
    +# Grenada
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	America/Grenada	-4:07:00 -	LMT	1911 Jul	# St George's
    +			-4:00	-	AST
    +
    +# Guadeloupe
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Guadeloupe	-4:06:08 -	LMT	1911 Jun 8	# Pointe a Pitre
    +			-4:00	-	AST
    +# St Barthelemy
    +Link America/Guadeloupe	America/St_Barthelemy
    +# St Martin (French part)
    +Link America/Guadeloupe	America/Marigot
    +
    +# Guatemala
    +#
    +# From Gwillim Law (2006-04-22), after a heads-up from Oscar van Vlijmen:
    +# Diario Co Latino, at
    +# http://www.diariocolatino.com/internacionales/detalles.asp?NewsID=8079,
    +# says in an article dated 2006-04-19 that the Guatemalan government had
    +# decided on that date to advance official time by 60 minutes, to lessen the
    +# impact of the elevated cost of oil....  Daylight saving time will last from
    +# 2006-04-29 24:00 (Guatemalan standard time) to 2006-09-30 (time unspecified).
    +# From Paul Eggert (2006-06-22):
    +# The Ministry of Energy and Mines, press release CP-15/2006
    +# (2006-04-19), says DST ends at 24:00.  See
    +# .
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Guat	1973	only	-	Nov	25	0:00	1:00	D
    +Rule	Guat	1974	only	-	Feb	24	0:00	0	S
    +Rule	Guat	1983	only	-	May	21	0:00	1:00	D
    +Rule	Guat	1983	only	-	Sep	22	0:00	0	S
    +Rule	Guat	1991	only	-	Mar	23	0:00	1:00	D
    +Rule	Guat	1991	only	-	Sep	 7	0:00	0	S
    +Rule	Guat	2006	only	-	Apr	30	0:00	1:00	D
    +Rule	Guat	2006	only	-	Oct	 1	0:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Guatemala	-6:02:04 -	LMT	1918 Oct 5
    +			-6:00	Guat	C%sT
    +
    +# Haiti
    +# From Gwillim Law (2005-04-15):
    +# Risto O. Nykanen wrote me that Haiti is now on DST.
    +# I searched for confirmation, and I found a
    +#  press release
    +# on the Web page of the Haitian Consulate in Chicago (2005-03-31),
    +# .  Translated from French, it says:
    +#
    +#  "The Prime Minister's Communication Office notifies the public in general
    +#   and the press in particular that, following a decision of the Interior
    +#   Ministry and the Territorial Collectivities [I suppose that means the
    +#   provinces], Haiti will move to Eastern Daylight Time in the night from next
    +#   Saturday the 2nd to Sunday the 3rd.
    +#
    +#  "Consequently, the Prime Minister's Communication Office wishes to inform
    +#   the population that the country's clocks will be set forward one hour
    +#   starting at midnight.  This provision will hold until the last Saturday in
    +#   October 2005.
    +#
    +#  "Port-au-Prince, March 31, 2005"
    +#
    +# From Steffen Thorsen (2006-04-04):
    +# I have been informed by users that Haiti observes DST this year like
    +# last year, so the current "only" rule for 2005 might be changed to a
    +# "max" rule or to last until 2006. (Who knows if they will observe DST
    +# next year or if they will extend their DST like US/Canada next year).
    +#
    +# I have found this article about it (in French):
    +# http://www.haitipressnetwork.com/news.cfm?articleID=7612
    +#
    +# The reason seems to be an energy crisis.
    +
    +# From Stephen Colebourne (2007-02-22):
    +# Some IATA info: Haiti won't be having DST in 2007.
    +
    +# From Steffen Thorsen (2012-03-11):
    +# According to several news sources, Haiti will observe DST this year,
    +# apparently using the same start and end date as USA/Canada.
    +# So this means they have already changed their time.
    +#
    +# (Sources in French):
    +# 
    +# http://www.alterpresse.org/spip.php?article12510
    +# 
    +# 
    +# http://radiovision2000haiti.net/home/?p=13253
    +# 
    +#
    +# Our coverage:
    +# 
    +# http://www.timeanddate.com/news/time/haiti-dst-2012.html
    +# 
    +
    +# From Arthur David Olson (2012-03-11):
    +# The alterpresse.org source seems to show a US-style leap from 2:00 a.m. to
    +# 3:00 a.m. rather than the traditional Haitian jump at midnight.
    +# Assume a US-style fall back as well XXX.
    +# Do not yet assume that the change carries forward past 2012 XXX.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Haiti	1983	only	-	May	8	0:00	1:00	D
    +Rule	Haiti	1984	1987	-	Apr	lastSun	0:00	1:00	D
    +Rule	Haiti	1983	1987	-	Oct	lastSun	0:00	0	S
    +# Shanks & Pottenger say AT is 2:00, but IATA SSIM (1991/1997) says 1:00s.
    +# Go with IATA.
    +Rule	Haiti	1988	1997	-	Apr	Sun>=1	1:00s	1:00	D
    +Rule	Haiti	1988	1997	-	Oct	lastSun	1:00s	0	S
    +Rule	Haiti	2005	2006	-	Apr	Sun>=1	0:00	1:00	D
    +Rule	Haiti	2005	2006	-	Oct	lastSun	0:00	0	S
    +Rule	Haiti	2012	only	-	Mar	Sun>=8	2:00	1:00	D
    +Rule	Haiti	2012	only	-	Nov	Sun>=1	2:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Port-au-Prince -4:49:20 -	LMT	1890
    +			-4:49	-	PPMT	1917 Jan 24 12:00 # P-a-P MT
    +			-5:00	Haiti	E%sT
    +
    +# Honduras
    +# Shanks & Pottenger say 1921 Jan 1; go with Whitman's more precise Apr 1.
    +
    +# From Paul Eggert (2006-05-05):
    +# worldtimezone.com reports a 2006-05-02 Spanish-language AP article
    +# saying Honduras will start using DST midnight Saturday, effective 4
    +# months until September.  La Tribuna reported today
    +#  that Manuel Zelaya, the president
    +# of Honduras, refused to back down on this.
    +
    +# From Jesper Norgaard Welen (2006-08-08):
    +# It seems that Honduras has returned from DST to standard time this Monday at
    +# 00:00 hours (prolonging Sunday to 25 hours duration).
    +# http://www.worldtimezone.com/dst_news/dst_news_honduras04.html
    +
    +# From Paul Eggert (2006-08-08):
    +# Also see Diario El Heraldo, The country returns to standard time (2006-08-08)
    +# .
    +# It mentions executive decree 18-2006.
    +
    +# From Steffen Thorsen (2006-08-17):
    +# Honduras will observe DST from 2007 to 2009, exact dates are not
    +# published, I have located this authoritative source:
    +# http://www.presidencia.gob.hn/noticia.aspx?nId=47
    +
    +# From Steffen Thorsen (2007-03-30):
    +# http://www.laprensahn.com/pais_nota.php?id04962=7386
    +# So it seems that Honduras will not enter DST this year....
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Hond	1987	1988	-	May	Sun>=1	0:00	1:00	D
    +Rule	Hond	1987	1988	-	Sep	lastSun	0:00	0	S
    +Rule	Hond	2006	only	-	May	Sun>=1	0:00	1:00	D
    +Rule	Hond	2006	only	-	Aug	Mon>=1	0:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Tegucigalpa -5:48:52 -	LMT	1921 Apr
    +			-6:00	Hond	C%sT
    +#
    +# Great Swan I ceded by US to Honduras in 1972
    +
    +# Jamaica
    +
    +# From Bob Devine (1988-01-28):
    +# Follows US rules.
    +
    +# From U. S. Naval Observatory (1989-01-19):
    +# JAMAICA             5 H  BEHIND UTC
    +
    +# From Shanks & Pottenger:
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	America/Jamaica	-5:07:12 -	LMT	1890		# Kingston
    +			-5:07:12 -	KMT	1912 Feb    # Kingston Mean Time
    +			-5:00	-	EST	1974 Apr 28 2:00
    +			-5:00	US	E%sT	1984
    +			-5:00	-	EST
    +
    +# Martinique
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Martinique	-4:04:20 -      LMT	1890		# Fort-de-France
    +			-4:04:20 -	FFMT	1911 May     # Fort-de-France MT
    +			-4:00	-	AST	1980 Apr  6
    +			-4:00	1:00	ADT	1980 Sep 28
    +			-4:00	-	AST
    +
    +# Montserrat
    +# From Paul Eggert (2006-03-22):
    +# In 1995 volcanic eruptions forced evacuation of Plymouth, the capital.
    +# world.gazetteer.com says Cork Hill is the most populous location now.
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Montserrat	-4:08:52 -	LMT	1911 Jul 1 0:01   # Cork Hill
    +			-4:00	-	AST
    +
    +# Nicaragua
    +#
    +# This uses Shanks & Pottenger for times before 2005.
    +#
    +# From Steffen Thorsen (2005-04-12):
    +# I've got reports from 8 different people that Nicaragua just started
    +# DST on Sunday 2005-04-10, in order to save energy because of
    +# expensive petroleum.  The exact end date for DST is not yet
    +# announced, only "September" but some sites also say "mid-September".
    +# Some background information is available on the President's official site:
    +# http://www.presidencia.gob.ni/Presidencia/Files_index/Secretaria/Notas%20de%20Prensa/Presidente/2005/ABRIL/Gobierno-de-nicaragua-adelanta-hora-oficial-06abril.htm
    +# The Decree, no 23-2005 is available here:
    +# http://www.presidencia.gob.ni/buscador_gaceta/BD/DECRETOS/2005/Decreto%2023-2005%20Se%20adelanta%20en%20una%20hora%20en%20todo%20el%20territorio%20nacional%20apartir%20de%20las%2024horas%20del%2009%20de%20Abril.pdf
    +#
    +# From Paul Eggert (2005-05-01):
    +# The decree doesn't say anything about daylight saving, but for now let's
    +# assume that it is daylight saving....
    +#
    +# From Gwillim Law (2005-04-21):
    +# The Associated Press story on the time change, which can be found at
    +# http://www.lapalmainteractivo.com/guias/content/gen/ap/America_Latina/AMC_GEN_NICARAGUA_HORA.html
    +# and elsewhere, says (fifth paragraph, translated from Spanish):  "The last
    +# time that a change of clocks was applied to save energy was in the year 2000
    +# during the Arnoldo Aleman administration."...
    +# The northamerica file says that Nicaragua has been on UTC-6 continuously
    +# since December 1998.  I wasn't able to find any details of Nicaraguan time
    +# changes in 2000.  Perhaps a note could be added to the northamerica file, to
    +# the effect that we have indirect evidence that DST was observed in 2000.
    +#
    +# From Jesper Norgaard Welen (2005-11-02):
    +# Nicaragua left DST the 2005-10-02 at 00:00 (local time).
    +# http://www.presidencia.gob.ni/presidencia/files_index/secretaria/comunicados/2005/septiembre/26septiembre-cambio-hora.htm
    +# (2005-09-26)
    +#
    +# From Jesper Norgaard Welen (2006-05-05):
    +# http://www.elnuevodiario.com.ni/2006/05/01/nacionales/18410
    +# (my informal translation)
    +# By order of the president of the republic, Enrique Bolanos, Nicaragua
    +# advanced by sixty minutes their official time, yesterday at 2 in the
    +# morning, and will stay that way until 30.th. of september.
    +#
    +# From Jesper Norgaard Welen (2006-09-30):
    +# http://www.presidencia.gob.ni/buscador_gaceta/BD/DECRETOS/2006/D-063-2006P-PRN-Cambio-Hora.pdf
    +# My informal translation runs:
    +# The natural sun time is restored in all the national territory, in that the
    +# time is returned one hour at 01:00 am of October 1 of 2006.
    +#
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Nic	1979	1980	-	Mar	Sun>=16	0:00	1:00	D
    +Rule	Nic	1979	1980	-	Jun	Mon>=23	0:00	0	S
    +Rule	Nic	2005	only	-	Apr	10	0:00	1:00	D
    +Rule	Nic	2005	only	-	Oct	Sun>=1	0:00	0	S
    +Rule	Nic	2006	only	-	Apr	30	2:00	1:00	D
    +Rule	Nic	2006	only	-	Oct	Sun>=1	1:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	America/Managua	-5:45:08 -	LMT	1890
    +			-5:45:12 -	MMT	1934 Jun 23 # Managua Mean Time?
    +			-6:00	-	CST	1973 May
    +			-5:00	-	EST	1975 Feb 16
    +			-6:00	Nic	C%sT	1992 Jan  1 4:00
    +			-5:00	-	EST	1992 Sep 24
    +			-6:00	-	CST	1993
    +			-5:00	-	EST	1997
    +			-6:00	Nic	C%sT
    +
    +# Panama
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	America/Panama	-5:18:08 -	LMT	1890
    +			-5:19:36 -	CMT	1908 Apr 22   # Colon Mean Time
    +			-5:00	-	EST
    +
    +# Puerto Rico
    +# There are too many San Juans elsewhere, so we'll use `Puerto_Rico'.
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Puerto_Rico -4:24:25 -	LMT	1899 Mar 28 12:00    # San Juan
    +			-4:00	-	AST	1942 May  3
    +			-4:00	US	A%sT	1946
    +			-4:00	-	AST
    +
    +# St Kitts-Nevis
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/St_Kitts	-4:10:52 -	LMT	1912 Mar 2	# Basseterre
    +			-4:00	-	AST
    +
    +# St Lucia
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/St_Lucia	-4:04:00 -	LMT	1890		# Castries
    +			-4:04:00 -	CMT	1912	    # Castries Mean Time
    +			-4:00	-	AST
    +
    +# St Pierre and Miquelon
    +# There are too many St Pierres elsewhere, so we'll use `Miquelon'.
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Miquelon	-3:44:40 -	LMT	1911 May 15	# St Pierre
    +			-4:00	-	AST	1980 May
    +			-3:00	-	PMST	1987 # Pierre & Miquelon Time
    +			-3:00	Canada	PM%sT
    +
    +# St Vincent and the Grenadines
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/St_Vincent	-4:04:56 -	LMT	1890		# Kingstown
    +			-4:04:56 -	KMT	1912	   # Kingstown Mean Time
    +			-4:00	-	AST
    +
    +# Turks and Caicos
    +#
    +# From Chris Dunn in
    +# 
    +# (2007-03-15): In the Turks & Caicos Islands (America/Grand_Turk) the
    +# daylight saving dates for time changes have been adjusted to match
    +# the recent U.S. change of dates.
    +#
    +# From Brian Inglis (2007-04-28):
    +# http://www.turksandcaicos.tc/calendar/index.htm [2007-04-26]
    +# there is an entry for Nov 4 "Daylight Savings Time Ends 2007" and three
    +# rows before that there is an out of date entry for Oct:
    +# "Eastern Standard Times Begins 2007
    +# Clocks are set back one hour at 2:00 a.m. local Daylight Saving Time"
    +# indicating that the normal ET rules are followed.
    +#
    +# From Paul Eggert (2006-05-01):
    +# Shanks & Pottenger say they use US DST rules, but IATA SSIM (1991/1998)
    +# says they switch at midnight.  Go with Shanks & Pottenger.
    +#
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	TC	1979	1986	-	Apr	lastSun	2:00	1:00	D
    +Rule	TC	1979	2006	-	Oct	lastSun	2:00	0	S
    +Rule	TC	1987	2006	-	Apr	Sun>=1	2:00	1:00	D
    +Rule	TC	2007	max	-	Mar	Sun>=8	2:00	1:00	D
    +Rule	TC	2007	max	-	Nov	Sun>=1	2:00	0	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Grand_Turk	-4:44:32 -	LMT	1890
    +			-5:07:12 -	KMT	1912 Feb    # Kingston Mean Time
    +			-5:00	TC	E%sT
    +
    +# British Virgin Is
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Tortola	-4:18:28 -	LMT	1911 Jul    # Road Town
    +			-4:00	-	AST
    +
    +# Virgin Is
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/St_Thomas	-4:19:44 -	LMT	1911 Jul    # Charlotte Amalie
    +			-4:00	-	AST
    diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/pacificnew b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/pacificnew
    new file mode 100644
    index 0000000..69c88f3
    --- /dev/null
    +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/pacificnew
    @@ -0,0 +1,28 @@
    +# 
    +# This file is in the public domain, so clarified as of
    +# 2009-05-17 by Arthur David Olson.
    +
    +# From Arthur David Olson (1989-04-05):
    +# On 1989-04-05, the U. S. House of Representatives passed (238-154) a bill
    +# establishing "Pacific Presidential Election Time"; it was not acted on
    +# by the Senate or signed into law by the President.
    +# You might want to change the "PE" (Presidential Election) below to
    +# "Q" (Quadrennial) to maintain three-character zone abbreviations.
    +# If you're really conservative, you might want to change it to "D".
    +# Avoid "L" (Leap Year), which won't be true in 2100.
    +
    +# If Presidential Election Time is ever established, replace "XXXX" below
    +# with the year the law takes effect and uncomment the "##" lines.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +## Rule	Twilite	XXXX	max	-	Apr	Sun>=1	2:00	1:00	D
    +## Rule	Twilite	XXXX	max	uspres	Oct	lastSun	2:00	1:00	PE
    +## Rule	Twilite	XXXX	max	uspres	Nov	Sun>=7	2:00	0	S
    +## Rule	Twilite	XXXX	max	nonpres	Oct	lastSun	2:00	0	S
    +
    +# Zone	NAME			GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
    +## Zone	America/Los_Angeles-PET	-8:00	US		P%sT	XXXX
    +##				-8:00	Twilite		P%sT
    +
    +# For now...
    +Link	America/Los_Angeles	US/Pacific-New	##
    diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/solar87 b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/solar87
    new file mode 100644
    index 0000000..b4efdbb
    --- /dev/null
    +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/solar87
    @@ -0,0 +1,390 @@
    +# 
    +# This file is in the public domain, so clarified as of
    +# 2009-05-17 by Arthur David Olson.
    +
    +# So much for footnotes about Saudi Arabia.
    +# Apparent noon times below are for Riyadh; your mileage will vary.
    +# Times were computed using formulas in the U.S. Naval Observatory's
    +# Almanac for Computers 1987; the formulas "will give EqT to an accuracy of
    +# [plus or minus two] seconds during the current year."
    +#
    +# Rounding to the nearest five seconds results in fewer than
    +# 256 different "time types"--a limit that's faced because time types are
    +# stored on disk as unsigned chars.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	sol87	1987	only	-	Jan	1	12:03:20s -0:03:20 -
    +Rule	sol87	1987	only	-	Jan	2	12:03:50s -0:03:50 -
    +Rule	sol87	1987	only	-	Jan	3	12:04:15s -0:04:15 -
    +Rule	sol87	1987	only	-	Jan	4	12:04:45s -0:04:45 -
    +Rule	sol87	1987	only	-	Jan	5	12:05:10s -0:05:10 -
    +Rule	sol87	1987	only	-	Jan	6	12:05:40s -0:05:40 -
    +Rule	sol87	1987	only	-	Jan	7	12:06:05s -0:06:05 -
    +Rule	sol87	1987	only	-	Jan	8	12:06:30s -0:06:30 -
    +Rule	sol87	1987	only	-	Jan	9	12:06:55s -0:06:55 -
    +Rule	sol87	1987	only	-	Jan	10	12:07:20s -0:07:20 -
    +Rule	sol87	1987	only	-	Jan	11	12:07:45s -0:07:45 -
    +Rule	sol87	1987	only	-	Jan	12	12:08:10s -0:08:10 -
    +Rule	sol87	1987	only	-	Jan	13	12:08:30s -0:08:30 -
    +Rule	sol87	1987	only	-	Jan	14	12:08:55s -0:08:55 -
    +Rule	sol87	1987	only	-	Jan	15	12:09:15s -0:09:15 -
    +Rule	sol87	1987	only	-	Jan	16	12:09:35s -0:09:35 -
    +Rule	sol87	1987	only	-	Jan	17	12:09:55s -0:09:55 -
    +Rule	sol87	1987	only	-	Jan	18	12:10:15s -0:10:15 -
    +Rule	sol87	1987	only	-	Jan	19	12:10:35s -0:10:35 -
    +Rule	sol87	1987	only	-	Jan	20	12:10:55s -0:10:55 -
    +Rule	sol87	1987	only	-	Jan	21	12:11:10s -0:11:10 -
    +Rule	sol87	1987	only	-	Jan	22	12:11:30s -0:11:30 -
    +Rule	sol87	1987	only	-	Jan	23	12:11:45s -0:11:45 -
    +Rule	sol87	1987	only	-	Jan	24	12:12:00s -0:12:00 -
    +Rule	sol87	1987	only	-	Jan	25	12:12:15s -0:12:15 -
    +Rule	sol87	1987	only	-	Jan	26	12:12:30s -0:12:30 -
    +Rule	sol87	1987	only	-	Jan	27	12:12:40s -0:12:40 -
    +Rule	sol87	1987	only	-	Jan	28	12:12:55s -0:12:55 -
    +Rule	sol87	1987	only	-	Jan	29	12:13:05s -0:13:05 -
    +Rule	sol87	1987	only	-	Jan	30	12:13:15s -0:13:15 -
    +Rule	sol87	1987	only	-	Jan	31	12:13:25s -0:13:25 -
    +Rule	sol87	1987	only	-	Feb	1	12:13:35s -0:13:35 -
    +Rule	sol87	1987	only	-	Feb	2	12:13:40s -0:13:40 -
    +Rule	sol87	1987	only	-	Feb	3	12:13:50s -0:13:50 -
    +Rule	sol87	1987	only	-	Feb	4	12:13:55s -0:13:55 -
    +Rule	sol87	1987	only	-	Feb	5	12:14:00s -0:14:00 -
    +Rule	sol87	1987	only	-	Feb	6	12:14:05s -0:14:05 -
    +Rule	sol87	1987	only	-	Feb	7	12:14:10s -0:14:10 -
    +Rule	sol87	1987	only	-	Feb	8	12:14:10s -0:14:10 -
    +Rule	sol87	1987	only	-	Feb	9	12:14:15s -0:14:15 -
    +Rule	sol87	1987	only	-	Feb	10	12:14:15s -0:14:15 -
    +Rule	sol87	1987	only	-	Feb	11	12:14:15s -0:14:15 -
    +Rule	sol87	1987	only	-	Feb	12	12:14:15s -0:14:15 -
    +Rule	sol87	1987	only	-	Feb	13	12:14:15s -0:14:15 -
    +Rule	sol87	1987	only	-	Feb	14	12:14:15s -0:14:15 -
    +Rule	sol87	1987	only	-	Feb	15	12:14:10s -0:14:10 -
    +Rule	sol87	1987	only	-	Feb	16	12:14:10s -0:14:10 -
    +Rule	sol87	1987	only	-	Feb	17	12:14:05s -0:14:05 -
    +Rule	sol87	1987	only	-	Feb	18	12:14:00s -0:14:00 -
    +Rule	sol87	1987	only	-	Feb	19	12:13:55s -0:13:55 -
    +Rule	sol87	1987	only	-	Feb	20	12:13:50s -0:13:50 -
    +Rule	sol87	1987	only	-	Feb	21	12:13:45s -0:13:45 -
    +Rule	sol87	1987	only	-	Feb	22	12:13:35s -0:13:35 -
    +Rule	sol87	1987	only	-	Feb	23	12:13:30s -0:13:30 -
    +Rule	sol87	1987	only	-	Feb	24	12:13:20s -0:13:20 -
    +Rule	sol87	1987	only	-	Feb	25	12:13:10s -0:13:10 -
    +Rule	sol87	1987	only	-	Feb	26	12:13:00s -0:13:00 -
    +Rule	sol87	1987	only	-	Feb	27	12:12:50s -0:12:50 -
    +Rule	sol87	1987	only	-	Feb	28	12:12:40s -0:12:40 -
    +Rule	sol87	1987	only	-	Mar	1	12:12:30s -0:12:30 -
    +Rule	sol87	1987	only	-	Mar	2	12:12:20s -0:12:20 -
    +Rule	sol87	1987	only	-	Mar	3	12:12:05s -0:12:05 -
    +Rule	sol87	1987	only	-	Mar	4	12:11:55s -0:11:55 -
    +Rule	sol87	1987	only	-	Mar	5	12:11:40s -0:11:40 -
    +Rule	sol87	1987	only	-	Mar	6	12:11:25s -0:11:25 -
    +Rule	sol87	1987	only	-	Mar	7	12:11:15s -0:11:15 -
    +Rule	sol87	1987	only	-	Mar	8	12:11:00s -0:11:00 -
    +Rule	sol87	1987	only	-	Mar	9	12:10:45s -0:10:45 -
    +Rule	sol87	1987	only	-	Mar	10	12:10:30s -0:10:30 -
    +Rule	sol87	1987	only	-	Mar	11	12:10:15s -0:10:15 -
    +Rule	sol87	1987	only	-	Mar	12	12:09:55s -0:09:55 -
    +Rule	sol87	1987	only	-	Mar	13	12:09:40s -0:09:40 -
    +Rule	sol87	1987	only	-	Mar	14	12:09:25s -0:09:25 -
    +Rule	sol87	1987	only	-	Mar	15	12:09:10s -0:09:10 -
    +Rule	sol87	1987	only	-	Mar	16	12:08:50s -0:08:50 -
    +Rule	sol87	1987	only	-	Mar	17	12:08:35s -0:08:35 -
    +Rule	sol87	1987	only	-	Mar	18	12:08:15s -0:08:15 -
    +Rule	sol87	1987	only	-	Mar	19	12:08:00s -0:08:00 -
    +Rule	sol87	1987	only	-	Mar	20	12:07:40s -0:07:40 -
    +Rule	sol87	1987	only	-	Mar	21	12:07:25s -0:07:25 -
    +Rule	sol87	1987	only	-	Mar	22	12:07:05s -0:07:05 -
    +Rule	sol87	1987	only	-	Mar	23	12:06:50s -0:06:50 -
    +Rule	sol87	1987	only	-	Mar	24	12:06:30s -0:06:30 -
    +Rule	sol87	1987	only	-	Mar	25	12:06:10s -0:06:10 -
    +Rule	sol87	1987	only	-	Mar	26	12:05:55s -0:05:55 -
    +Rule	sol87	1987	only	-	Mar	27	12:05:35s -0:05:35 -
    +Rule	sol87	1987	only	-	Mar	28	12:05:15s -0:05:15 -
    +Rule	sol87	1987	only	-	Mar	29	12:05:00s -0:05:00 -
    +Rule	sol87	1987	only	-	Mar	30	12:04:40s -0:04:40 -
    +Rule	sol87	1987	only	-	Mar	31	12:04:25s -0:04:25 -
    +Rule	sol87	1987	only	-	Apr	1	12:04:05s -0:04:05 -
    +Rule	sol87	1987	only	-	Apr	2	12:03:45s -0:03:45 -
    +Rule	sol87	1987	only	-	Apr	3	12:03:30s -0:03:30 -
    +Rule	sol87	1987	only	-	Apr	4	12:03:10s -0:03:10 -
    +Rule	sol87	1987	only	-	Apr	5	12:02:55s -0:02:55 -
    +Rule	sol87	1987	only	-	Apr	6	12:02:35s -0:02:35 -
    +Rule	sol87	1987	only	-	Apr	7	12:02:20s -0:02:20 -
    +Rule	sol87	1987	only	-	Apr	8	12:02:05s -0:02:05 -
    +Rule	sol87	1987	only	-	Apr	9	12:01:45s -0:01:45 -
    +Rule	sol87	1987	only	-	Apr	10	12:01:30s -0:01:30 -
    +Rule	sol87	1987	only	-	Apr	11	12:01:15s -0:01:15 -
    +Rule	sol87	1987	only	-	Apr	12	12:00:55s -0:00:55 -
    +Rule	sol87	1987	only	-	Apr	13	12:00:40s -0:00:40 -
    +Rule	sol87	1987	only	-	Apr	14	12:00:25s -0:00:25 -
    +Rule	sol87	1987	only	-	Apr	15	12:00:10s -0:00:10 -
    +Rule	sol87	1987	only	-	Apr	16	11:59:55s 0:00:05 -
    +Rule	sol87	1987	only	-	Apr	17	11:59:45s 0:00:15 -
    +Rule	sol87	1987	only	-	Apr	18	11:59:30s 0:00:30 -
    +Rule	sol87	1987	only	-	Apr	19	11:59:15s 0:00:45 -
    +Rule	sol87	1987	only	-	Apr	20	11:59:05s 0:00:55 -
    +Rule	sol87	1987	only	-	Apr	21	11:58:50s 0:01:10 -
    +Rule	sol87	1987	only	-	Apr	22	11:58:40s 0:01:20 -
    +Rule	sol87	1987	only	-	Apr	23	11:58:25s 0:01:35 -
    +Rule	sol87	1987	only	-	Apr	24	11:58:15s 0:01:45 -
    +Rule	sol87	1987	only	-	Apr	25	11:58:05s 0:01:55 -
    +Rule	sol87	1987	only	-	Apr	26	11:57:55s 0:02:05 -
    +Rule	sol87	1987	only	-	Apr	27	11:57:45s 0:02:15 -
    +Rule	sol87	1987	only	-	Apr	28	11:57:35s 0:02:25 -
    +Rule	sol87	1987	only	-	Apr	29	11:57:25s 0:02:35 -
    +Rule	sol87	1987	only	-	Apr	30	11:57:15s 0:02:45 -
    +Rule	sol87	1987	only	-	May	1	11:57:10s 0:02:50 -
    +Rule	sol87	1987	only	-	May	2	11:57:00s 0:03:00 -
    +Rule	sol87	1987	only	-	May	3	11:56:55s 0:03:05 -
    +Rule	sol87	1987	only	-	May	4	11:56:50s 0:03:10 -
    +Rule	sol87	1987	only	-	May	5	11:56:45s 0:03:15 -
    +Rule	sol87	1987	only	-	May	6	11:56:40s 0:03:20 -
    +Rule	sol87	1987	only	-	May	7	11:56:35s 0:03:25 -
    +Rule	sol87	1987	only	-	May	8	11:56:30s 0:03:30 -
    +Rule	sol87	1987	only	-	May	9	11:56:25s 0:03:35 -
    +Rule	sol87	1987	only	-	May	10	11:56:25s 0:03:35 -
    +Rule	sol87	1987	only	-	May	11	11:56:20s 0:03:40 -
    +Rule	sol87	1987	only	-	May	12	11:56:20s 0:03:40 -
    +Rule	sol87	1987	only	-	May	13	11:56:20s 0:03:40 -
    +Rule	sol87	1987	only	-	May	14	11:56:20s 0:03:40 -
    +Rule	sol87	1987	only	-	May	15	11:56:20s 0:03:40 -
    +Rule	sol87	1987	only	-	May	16	11:56:20s 0:03:40 -
    +Rule	sol87	1987	only	-	May	17	11:56:20s 0:03:40 -
    +Rule	sol87	1987	only	-	May	18	11:56:20s 0:03:40 -
    +Rule	sol87	1987	only	-	May	19	11:56:25s 0:03:35 -
    +Rule	sol87	1987	only	-	May	20	11:56:25s 0:03:35 -
    +Rule	sol87	1987	only	-	May	21	11:56:30s 0:03:30 -
    +Rule	sol87	1987	only	-	May	22	11:56:35s 0:03:25 -
    +Rule	sol87	1987	only	-	May	23	11:56:40s 0:03:20 -
    +Rule	sol87	1987	only	-	May	24	11:56:45s 0:03:15 -
    +Rule	sol87	1987	only	-	May	25	11:56:50s 0:03:10 -
    +Rule	sol87	1987	only	-	May	26	11:56:55s 0:03:05 -
    +Rule	sol87	1987	only	-	May	27	11:57:00s 0:03:00 -
    +Rule	sol87	1987	only	-	May	28	11:57:10s 0:02:50 -
    +Rule	sol87	1987	only	-	May	29	11:57:15s 0:02:45 -
    +Rule	sol87	1987	only	-	May	30	11:57:25s 0:02:35 -
    +Rule	sol87	1987	only	-	May	31	11:57:30s 0:02:30 -
    +Rule	sol87	1987	only	-	Jun	1	11:57:40s 0:02:20 -
    +Rule	sol87	1987	only	-	Jun	2	11:57:50s 0:02:10 -
    +Rule	sol87	1987	only	-	Jun	3	11:58:00s 0:02:00 -
    +Rule	sol87	1987	only	-	Jun	4	11:58:10s 0:01:50 -
    +Rule	sol87	1987	only	-	Jun	5	11:58:20s 0:01:40 -
    +Rule	sol87	1987	only	-	Jun	6	11:58:30s 0:01:30 -
    +Rule	sol87	1987	only	-	Jun	7	11:58:40s 0:01:20 -
    +Rule	sol87	1987	only	-	Jun	8	11:58:50s 0:01:10 -
    +Rule	sol87	1987	only	-	Jun	9	11:59:05s 0:00:55 -
    +Rule	sol87	1987	only	-	Jun	10	11:59:15s 0:00:45 -
    +Rule	sol87	1987	only	-	Jun	11	11:59:30s 0:00:30 -
    +Rule	sol87	1987	only	-	Jun	12	11:59:40s 0:00:20 -
    +Rule	sol87	1987	only	-	Jun	13	11:59:50s 0:00:10 -
    +Rule	sol87	1987	only	-	Jun	14	12:00:05s -0:00:05 -
    +Rule	sol87	1987	only	-	Jun	15	12:00:15s -0:00:15 -
    +Rule	sol87	1987	only	-	Jun	16	12:00:30s -0:00:30 -
    +Rule	sol87	1987	only	-	Jun	17	12:00:45s -0:00:45 -
    +Rule	sol87	1987	only	-	Jun	18	12:00:55s -0:00:55 -
    +Rule	sol87	1987	only	-	Jun	19	12:01:10s -0:01:10 -
    +Rule	sol87	1987	only	-	Jun	20	12:01:20s -0:01:20 -
    +Rule	sol87	1987	only	-	Jun	21	12:01:35s -0:01:35 -
    +Rule	sol87	1987	only	-	Jun	22	12:01:50s -0:01:50 -
    +Rule	sol87	1987	only	-	Jun	23	12:02:00s -0:02:00 -
    +Rule	sol87	1987	only	-	Jun	24	12:02:15s -0:02:15 -
    +Rule	sol87	1987	only	-	Jun	25	12:02:25s -0:02:25 -
    +Rule	sol87	1987	only	-	Jun	26	12:02:40s -0:02:40 -
    +Rule	sol87	1987	only	-	Jun	27	12:02:50s -0:02:50 -
    +Rule	sol87	1987	only	-	Jun	28	12:03:05s -0:03:05 -
    +Rule	sol87	1987	only	-	Jun	29	12:03:15s -0:03:15 -
    +Rule	sol87	1987	only	-	Jun	30	12:03:30s -0:03:30 -
    +Rule	sol87	1987	only	-	Jul	1	12:03:40s -0:03:40 -
    +Rule	sol87	1987	only	-	Jul	2	12:03:50s -0:03:50 -
    +Rule	sol87	1987	only	-	Jul	3	12:04:05s -0:04:05 -
    +Rule	sol87	1987	only	-	Jul	4	12:04:15s -0:04:15 -
    +Rule	sol87	1987	only	-	Jul	5	12:04:25s -0:04:25 -
    +Rule	sol87	1987	only	-	Jul	6	12:04:35s -0:04:35 -
    +Rule	sol87	1987	only	-	Jul	7	12:04:45s -0:04:45 -
    +Rule	sol87	1987	only	-	Jul	8	12:04:55s -0:04:55 -
    +Rule	sol87	1987	only	-	Jul	9	12:05:05s -0:05:05 -
    +Rule	sol87	1987	only	-	Jul	10	12:05:15s -0:05:15 -
    +Rule	sol87	1987	only	-	Jul	11	12:05:20s -0:05:20 -
    +Rule	sol87	1987	only	-	Jul	12	12:05:30s -0:05:30 -
    +Rule	sol87	1987	only	-	Jul	13	12:05:40s -0:05:40 -
    +Rule	sol87	1987	only	-	Jul	14	12:05:45s -0:05:45 -
    +Rule	sol87	1987	only	-	Jul	15	12:05:50s -0:05:50 -
    +Rule	sol87	1987	only	-	Jul	16	12:06:00s -0:06:00 -
    +Rule	sol87	1987	only	-	Jul	17	12:06:05s -0:06:05 -
    +Rule	sol87	1987	only	-	Jul	18	12:06:10s -0:06:10 -
    +Rule	sol87	1987	only	-	Jul	19	12:06:15s -0:06:15 -
    +Rule	sol87	1987	only	-	Jul	20	12:06:15s -0:06:15 -
    +Rule	sol87	1987	only	-	Jul	21	12:06:20s -0:06:20 -
    +Rule	sol87	1987	only	-	Jul	22	12:06:25s -0:06:25 -
    +Rule	sol87	1987	only	-	Jul	23	12:06:25s -0:06:25 -
    +Rule	sol87	1987	only	-	Jul	24	12:06:25s -0:06:25 -
    +Rule	sol87	1987	only	-	Jul	25	12:06:30s -0:06:30 -
    +Rule	sol87	1987	only	-	Jul	26	12:06:30s -0:06:30 -
    +Rule	sol87	1987	only	-	Jul	27	12:06:30s -0:06:30 -
    +Rule	sol87	1987	only	-	Jul	28	12:06:30s -0:06:30 -
    +Rule	sol87	1987	only	-	Jul	29	12:06:25s -0:06:25 -
    +Rule	sol87	1987	only	-	Jul	30	12:06:25s -0:06:25 -
    +Rule	sol87	1987	only	-	Jul	31	12:06:25s -0:06:25 -
    +Rule	sol87	1987	only	-	Aug	1	12:06:20s -0:06:20 -
    +Rule	sol87	1987	only	-	Aug	2	12:06:15s -0:06:15 -
    +Rule	sol87	1987	only	-	Aug	3	12:06:10s -0:06:10 -
    +Rule	sol87	1987	only	-	Aug	4	12:06:05s -0:06:05 -
    +Rule	sol87	1987	only	-	Aug	5	12:06:00s -0:06:00 -
    +Rule	sol87	1987	only	-	Aug	6	12:05:55s -0:05:55 -
    +Rule	sol87	1987	only	-	Aug	7	12:05:50s -0:05:50 -
    +Rule	sol87	1987	only	-	Aug	8	12:05:40s -0:05:40 -
    +Rule	sol87	1987	only	-	Aug	9	12:05:35s -0:05:35 -
    +Rule	sol87	1987	only	-	Aug	10	12:05:25s -0:05:25 -
    +Rule	sol87	1987	only	-	Aug	11	12:05:15s -0:05:15 -
    +Rule	sol87	1987	only	-	Aug	12	12:05:05s -0:05:05 -
    +Rule	sol87	1987	only	-	Aug	13	12:04:55s -0:04:55 -
    +Rule	sol87	1987	only	-	Aug	14	12:04:45s -0:04:45 -
    +Rule	sol87	1987	only	-	Aug	15	12:04:35s -0:04:35 -
    +Rule	sol87	1987	only	-	Aug	16	12:04:25s -0:04:25 -
    +Rule	sol87	1987	only	-	Aug	17	12:04:10s -0:04:10 -
    +Rule	sol87	1987	only	-	Aug	18	12:04:00s -0:04:00 -
    +Rule	sol87	1987	only	-	Aug	19	12:03:45s -0:03:45 -
    +Rule	sol87	1987	only	-	Aug	20	12:03:30s -0:03:30 -
    +Rule	sol87	1987	only	-	Aug	21	12:03:15s -0:03:15 -
    +Rule	sol87	1987	only	-	Aug	22	12:03:00s -0:03:00 -
    +Rule	sol87	1987	only	-	Aug	23	12:02:45s -0:02:45 -
    +Rule	sol87	1987	only	-	Aug	24	12:02:30s -0:02:30 -
    +Rule	sol87	1987	only	-	Aug	25	12:02:15s -0:02:15 -
    +Rule	sol87	1987	only	-	Aug	26	12:02:00s -0:02:00 -
    +Rule	sol87	1987	only	-	Aug	27	12:01:40s -0:01:40 -
    +Rule	sol87	1987	only	-	Aug	28	12:01:25s -0:01:25 -
    +Rule	sol87	1987	only	-	Aug	29	12:01:05s -0:01:05 -
    +Rule	sol87	1987	only	-	Aug	30	12:00:50s -0:00:50 -
    +Rule	sol87	1987	only	-	Aug	31	12:00:30s -0:00:30 -
    +Rule	sol87	1987	only	-	Sep	1	12:00:10s -0:00:10 -
    +Rule	sol87	1987	only	-	Sep	2	11:59:50s 0:00:10 -
    +Rule	sol87	1987	only	-	Sep	3	11:59:35s 0:00:25 -
    +Rule	sol87	1987	only	-	Sep	4	11:59:15s 0:00:45 -
    +Rule	sol87	1987	only	-	Sep	5	11:58:55s 0:01:05 -
    +Rule	sol87	1987	only	-	Sep	6	11:58:35s 0:01:25 -
    +Rule	sol87	1987	only	-	Sep	7	11:58:15s 0:01:45 -
    +Rule	sol87	1987	only	-	Sep	8	11:57:55s 0:02:05 -
    +Rule	sol87	1987	only	-	Sep	9	11:57:30s 0:02:30 -
    +Rule	sol87	1987	only	-	Sep	10	11:57:10s 0:02:50 -
    +Rule	sol87	1987	only	-	Sep	11	11:56:50s 0:03:10 -
    +Rule	sol87	1987	only	-	Sep	12	11:56:30s 0:03:30 -
    +Rule	sol87	1987	only	-	Sep	13	11:56:10s 0:03:50 -
    +Rule	sol87	1987	only	-	Sep	14	11:55:45s 0:04:15 -
    +Rule	sol87	1987	only	-	Sep	15	11:55:25s 0:04:35 -
    +Rule	sol87	1987	only	-	Sep	16	11:55:05s 0:04:55 -
    +Rule	sol87	1987	only	-	Sep	17	11:54:45s 0:05:15 -
    +Rule	sol87	1987	only	-	Sep	18	11:54:20s 0:05:40 -
    +Rule	sol87	1987	only	-	Sep	19	11:54:00s 0:06:00 -
    +Rule	sol87	1987	only	-	Sep	20	11:53:40s 0:06:20 -
    +Rule	sol87	1987	only	-	Sep	21	11:53:15s 0:06:45 -
    +Rule	sol87	1987	only	-	Sep	22	11:52:55s 0:07:05 -
    +Rule	sol87	1987	only	-	Sep	23	11:52:35s 0:07:25 -
    +Rule	sol87	1987	only	-	Sep	24	11:52:15s 0:07:45 -
    +Rule	sol87	1987	only	-	Sep	25	11:51:55s 0:08:05 -
    +Rule	sol87	1987	only	-	Sep	26	11:51:35s 0:08:25 -
    +Rule	sol87	1987	only	-	Sep	27	11:51:10s 0:08:50 -
    +Rule	sol87	1987	only	-	Sep	28	11:50:50s 0:09:10 -
    +Rule	sol87	1987	only	-	Sep	29	11:50:30s 0:09:30 -
    +Rule	sol87	1987	only	-	Sep	30	11:50:10s 0:09:50 -
    +Rule	sol87	1987	only	-	Oct	1	11:49:50s 0:10:10 -
    +Rule	sol87	1987	only	-	Oct	2	11:49:35s 0:10:25 -
    +Rule	sol87	1987	only	-	Oct	3	11:49:15s 0:10:45 -
    +Rule	sol87	1987	only	-	Oct	4	11:48:55s 0:11:05 -
    +Rule	sol87	1987	only	-	Oct	5	11:48:35s 0:11:25 -
    +Rule	sol87	1987	only	-	Oct	6	11:48:20s 0:11:40 -
    +Rule	sol87	1987	only	-	Oct	7	11:48:00s 0:12:00 -
    +Rule	sol87	1987	only	-	Oct	8	11:47:45s 0:12:15 -
    +Rule	sol87	1987	only	-	Oct	9	11:47:25s 0:12:35 -
    +Rule	sol87	1987	only	-	Oct	10	11:47:10s 0:12:50 -
    +Rule	sol87	1987	only	-	Oct	11	11:46:55s 0:13:05 -
    +Rule	sol87	1987	only	-	Oct	12	11:46:40s 0:13:20 -
    +Rule	sol87	1987	only	-	Oct	13	11:46:25s 0:13:35 -
    +Rule	sol87	1987	only	-	Oct	14	11:46:10s 0:13:50 -
    +Rule	sol87	1987	only	-	Oct	15	11:45:55s 0:14:05 -
    +Rule	sol87	1987	only	-	Oct	16	11:45:45s 0:14:15 -
    +Rule	sol87	1987	only	-	Oct	17	11:45:30s 0:14:30 -
    +Rule	sol87	1987	only	-	Oct	18	11:45:20s 0:14:40 -
    +Rule	sol87	1987	only	-	Oct	19	11:45:05s 0:14:55 -
    +Rule	sol87	1987	only	-	Oct	20	11:44:55s 0:15:05 -
    +Rule	sol87	1987	only	-	Oct	21	11:44:45s 0:15:15 -
    +Rule	sol87	1987	only	-	Oct	22	11:44:35s 0:15:25 -
    +Rule	sol87	1987	only	-	Oct	23	11:44:25s 0:15:35 -
    +Rule	sol87	1987	only	-	Oct	24	11:44:20s 0:15:40 -
    +Rule	sol87	1987	only	-	Oct	25	11:44:10s 0:15:50 -
    +Rule	sol87	1987	only	-	Oct	26	11:44:05s 0:15:55 -
    +Rule	sol87	1987	only	-	Oct	27	11:43:55s 0:16:05 -
    +Rule	sol87	1987	only	-	Oct	28	11:43:50s 0:16:10 -
    +Rule	sol87	1987	only	-	Oct	29	11:43:45s 0:16:15 -
    +Rule	sol87	1987	only	-	Oct	30	11:43:45s 0:16:15 -
    +Rule	sol87	1987	only	-	Oct	31	11:43:40s 0:16:20 -
    +Rule	sol87	1987	only	-	Nov	1	11:43:40s 0:16:20 -
    +Rule	sol87	1987	only	-	Nov	2	11:43:35s 0:16:25 -
    +Rule	sol87	1987	only	-	Nov	3	11:43:35s 0:16:25 -
    +Rule	sol87	1987	only	-	Nov	4	11:43:35s 0:16:25 -
    +Rule	sol87	1987	only	-	Nov	5	11:43:35s 0:16:25 -
    +Rule	sol87	1987	only	-	Nov	6	11:43:40s 0:16:20 -
    +Rule	sol87	1987	only	-	Nov	7	11:43:40s 0:16:20 -
    +Rule	sol87	1987	only	-	Nov	8	11:43:45s 0:16:15 -
    +Rule	sol87	1987	only	-	Nov	9	11:43:50s 0:16:10 -
    +Rule	sol87	1987	only	-	Nov	10	11:43:55s 0:16:05 -
    +Rule	sol87	1987	only	-	Nov	11	11:44:00s 0:16:00 -
    +Rule	sol87	1987	only	-	Nov	12	11:44:05s 0:15:55 -
    +Rule	sol87	1987	only	-	Nov	13	11:44:15s 0:15:45 -
    +Rule	sol87	1987	only	-	Nov	14	11:44:20s 0:15:40 -
    +Rule	sol87	1987	only	-	Nov	15	11:44:30s 0:15:30 -
    +Rule	sol87	1987	only	-	Nov	16	11:44:40s 0:15:20 -
    +Rule	sol87	1987	only	-	Nov	17	11:44:50s 0:15:10 -
    +Rule	sol87	1987	only	-	Nov	18	11:45:05s 0:14:55 -
    +Rule	sol87	1987	only	-	Nov	19	11:45:15s 0:14:45 -
    +Rule	sol87	1987	only	-	Nov	20	11:45:30s 0:14:30 -
    +Rule	sol87	1987	only	-	Nov	21	11:45:45s 0:14:15 -
    +Rule	sol87	1987	only	-	Nov	22	11:46:00s 0:14:00 -
    +Rule	sol87	1987	only	-	Nov	23	11:46:15s 0:13:45 -
    +Rule	sol87	1987	only	-	Nov	24	11:46:30s 0:13:30 -
    +Rule	sol87	1987	only	-	Nov	25	11:46:50s 0:13:10 -
    +Rule	sol87	1987	only	-	Nov	26	11:47:10s 0:12:50 -
    +Rule	sol87	1987	only	-	Nov	27	11:47:25s 0:12:35 -
    +Rule	sol87	1987	only	-	Nov	28	11:47:45s 0:12:15 -
    +Rule	sol87	1987	only	-	Nov	29	11:48:05s 0:11:55 -
    +Rule	sol87	1987	only	-	Nov	30	11:48:30s 0:11:30 -
    +Rule	sol87	1987	only	-	Dec	1	11:48:50s 0:11:10 -
    +Rule	sol87	1987	only	-	Dec	2	11:49:10s 0:10:50 -
    +Rule	sol87	1987	only	-	Dec	3	11:49:35s 0:10:25 -
    +Rule	sol87	1987	only	-	Dec	4	11:50:00s 0:10:00 -
    +Rule	sol87	1987	only	-	Dec	5	11:50:25s 0:09:35 -
    +Rule	sol87	1987	only	-	Dec	6	11:50:50s 0:09:10 -
    +Rule	sol87	1987	only	-	Dec	7	11:51:15s 0:08:45 -
    +Rule	sol87	1987	only	-	Dec	8	11:51:40s 0:08:20 -
    +Rule	sol87	1987	only	-	Dec	9	11:52:05s 0:07:55 -
    +Rule	sol87	1987	only	-	Dec	10	11:52:30s 0:07:30 -
    +Rule	sol87	1987	only	-	Dec	11	11:53:00s 0:07:00 -
    +Rule	sol87	1987	only	-	Dec	12	11:53:25s 0:06:35 -
    +Rule	sol87	1987	only	-	Dec	13	11:53:55s 0:06:05 -
    +Rule	sol87	1987	only	-	Dec	14	11:54:25s 0:05:35 -
    +Rule	sol87	1987	only	-	Dec	15	11:54:50s 0:05:10 -
    +Rule	sol87	1987	only	-	Dec	16	11:55:20s 0:04:40 -
    +Rule	sol87	1987	only	-	Dec	17	11:55:50s 0:04:10 -
    +Rule	sol87	1987	only	-	Dec	18	11:56:20s 0:03:40 -
    +Rule	sol87	1987	only	-	Dec	19	11:56:50s 0:03:10 -
    +Rule	sol87	1987	only	-	Dec	20	11:57:20s 0:02:40 -
    +Rule	sol87	1987	only	-	Dec	21	11:57:50s 0:02:10 -
    +Rule	sol87	1987	only	-	Dec	22	11:58:20s 0:01:40 -
    +Rule	sol87	1987	only	-	Dec	23	11:58:50s 0:01:10 -
    +Rule	sol87	1987	only	-	Dec	24	11:59:20s 0:00:40 -
    +Rule	sol87	1987	only	-	Dec	25	11:59:50s 0:00:10 -
    +Rule	sol87	1987	only	-	Dec	26	12:00:20s -0:00:20 -
    +Rule	sol87	1987	only	-	Dec	27	12:00:45s -0:00:45 -
    +Rule	sol87	1987	only	-	Dec	28	12:01:15s -0:01:15 -
    +Rule	sol87	1987	only	-	Dec	29	12:01:45s -0:01:45 -
    +Rule	sol87	1987	only	-	Dec	30	12:02:15s -0:02:15 -
    +Rule	sol87	1987	only	-	Dec	31	12:02:45s -0:02:45 -
    +
    +# Riyadh is at about 46 degrees 46 minutes East:  3 hrs, 7 mins, 4 secs
    +# Before and after 1987, we'll operate on local mean solar time.
    +
    +# Zone	NAME		GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
    +Zone	Asia/Riyadh87	3:07:04	-		zzz	1987
    +			3:07:04	sol87		zzz	1988
    +			3:07:04	-		zzz
    +# For backward compatibility...
    +Link	Asia/Riyadh87	Mideast/Riyadh87
    diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/solar88 b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/solar88
    new file mode 100644
    index 0000000..005b3b8
    --- /dev/null
    +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/solar88
    @@ -0,0 +1,390 @@
    +# 
    +# This file is in the public domain, so clarified as of
    +# 2009-05-17 by Arthur David Olson.
    +
    +# Apparent noon times below are for Riyadh; they're a bit off for other places.
    +# Times were computed using formulas in the U.S. Naval Observatory's
    +# Almanac for Computers 1988; the formulas "will give EqT to an accuracy of
    +# [plus or minus two] seconds during the current year."
    +#
    +# Rounding to the nearest five seconds results in fewer than
    +# 256 different "time types"--a limit that's faced because time types are
    +# stored on disk as unsigned chars.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	sol88	1988	only	-	Jan	1	12:03:15s -0:03:15 -
    +Rule	sol88	1988	only	-	Jan	2	12:03:40s -0:03:40 -
    +Rule	sol88	1988	only	-	Jan	3	12:04:10s -0:04:10 -
    +Rule	sol88	1988	only	-	Jan	4	12:04:40s -0:04:40 -
    +Rule	sol88	1988	only	-	Jan	5	12:05:05s -0:05:05 -
    +Rule	sol88	1988	only	-	Jan	6	12:05:30s -0:05:30 -
    +Rule	sol88	1988	only	-	Jan	7	12:06:00s -0:06:00 -
    +Rule	sol88	1988	only	-	Jan	8	12:06:25s -0:06:25 -
    +Rule	sol88	1988	only	-	Jan	9	12:06:50s -0:06:50 -
    +Rule	sol88	1988	only	-	Jan	10	12:07:15s -0:07:15 -
    +Rule	sol88	1988	only	-	Jan	11	12:07:40s -0:07:40 -
    +Rule	sol88	1988	only	-	Jan	12	12:08:05s -0:08:05 -
    +Rule	sol88	1988	only	-	Jan	13	12:08:25s -0:08:25 -
    +Rule	sol88	1988	only	-	Jan	14	12:08:50s -0:08:50 -
    +Rule	sol88	1988	only	-	Jan	15	12:09:10s -0:09:10 -
    +Rule	sol88	1988	only	-	Jan	16	12:09:30s -0:09:30 -
    +Rule	sol88	1988	only	-	Jan	17	12:09:50s -0:09:50 -
    +Rule	sol88	1988	only	-	Jan	18	12:10:10s -0:10:10 -
    +Rule	sol88	1988	only	-	Jan	19	12:10:30s -0:10:30 -
    +Rule	sol88	1988	only	-	Jan	20	12:10:50s -0:10:50 -
    +Rule	sol88	1988	only	-	Jan	21	12:11:05s -0:11:05 -
    +Rule	sol88	1988	only	-	Jan	22	12:11:25s -0:11:25 -
    +Rule	sol88	1988	only	-	Jan	23	12:11:40s -0:11:40 -
    +Rule	sol88	1988	only	-	Jan	24	12:11:55s -0:11:55 -
    +Rule	sol88	1988	only	-	Jan	25	12:12:10s -0:12:10 -
    +Rule	sol88	1988	only	-	Jan	26	12:12:25s -0:12:25 -
    +Rule	sol88	1988	only	-	Jan	27	12:12:40s -0:12:40 -
    +Rule	sol88	1988	only	-	Jan	28	12:12:50s -0:12:50 -
    +Rule	sol88	1988	only	-	Jan	29	12:13:00s -0:13:00 -
    +Rule	sol88	1988	only	-	Jan	30	12:13:10s -0:13:10 -
    +Rule	sol88	1988	only	-	Jan	31	12:13:20s -0:13:20 -
    +Rule	sol88	1988	only	-	Feb	1	12:13:30s -0:13:30 -
    +Rule	sol88	1988	only	-	Feb	2	12:13:40s -0:13:40 -
    +Rule	sol88	1988	only	-	Feb	3	12:13:45s -0:13:45 -
    +Rule	sol88	1988	only	-	Feb	4	12:13:55s -0:13:55 -
    +Rule	sol88	1988	only	-	Feb	5	12:14:00s -0:14:00 -
    +Rule	sol88	1988	only	-	Feb	6	12:14:05s -0:14:05 -
    +Rule	sol88	1988	only	-	Feb	7	12:14:10s -0:14:10 -
    +Rule	sol88	1988	only	-	Feb	8	12:14:10s -0:14:10 -
    +Rule	sol88	1988	only	-	Feb	9	12:14:15s -0:14:15 -
    +Rule	sol88	1988	only	-	Feb	10	12:14:15s -0:14:15 -
    +Rule	sol88	1988	only	-	Feb	11	12:14:15s -0:14:15 -
    +Rule	sol88	1988	only	-	Feb	12	12:14:15s -0:14:15 -
    +Rule	sol88	1988	only	-	Feb	13	12:14:15s -0:14:15 -
    +Rule	sol88	1988	only	-	Feb	14	12:14:15s -0:14:15 -
    +Rule	sol88	1988	only	-	Feb	15	12:14:10s -0:14:10 -
    +Rule	sol88	1988	only	-	Feb	16	12:14:10s -0:14:10 -
    +Rule	sol88	1988	only	-	Feb	17	12:14:05s -0:14:05 -
    +Rule	sol88	1988	only	-	Feb	18	12:14:00s -0:14:00 -
    +Rule	sol88	1988	only	-	Feb	19	12:13:55s -0:13:55 -
    +Rule	sol88	1988	only	-	Feb	20	12:13:50s -0:13:50 -
    +Rule	sol88	1988	only	-	Feb	21	12:13:45s -0:13:45 -
    +Rule	sol88	1988	only	-	Feb	22	12:13:40s -0:13:40 -
    +Rule	sol88	1988	only	-	Feb	23	12:13:30s -0:13:30 -
    +Rule	sol88	1988	only	-	Feb	24	12:13:20s -0:13:20 -
    +Rule	sol88	1988	only	-	Feb	25	12:13:15s -0:13:15 -
    +Rule	sol88	1988	only	-	Feb	26	12:13:05s -0:13:05 -
    +Rule	sol88	1988	only	-	Feb	27	12:12:55s -0:12:55 -
    +Rule	sol88	1988	only	-	Feb	28	12:12:45s -0:12:45 -
    +Rule	sol88	1988	only	-	Feb	29	12:12:30s -0:12:30 -
    +Rule	sol88	1988	only	-	Mar	1	12:12:20s -0:12:20 -
    +Rule	sol88	1988	only	-	Mar	2	12:12:10s -0:12:10 -
    +Rule	sol88	1988	only	-	Mar	3	12:11:55s -0:11:55 -
    +Rule	sol88	1988	only	-	Mar	4	12:11:45s -0:11:45 -
    +Rule	sol88	1988	only	-	Mar	5	12:11:30s -0:11:30 -
    +Rule	sol88	1988	only	-	Mar	6	12:11:15s -0:11:15 -
    +Rule	sol88	1988	only	-	Mar	7	12:11:00s -0:11:00 -
    +Rule	sol88	1988	only	-	Mar	8	12:10:45s -0:10:45 -
    +Rule	sol88	1988	only	-	Mar	9	12:10:30s -0:10:30 -
    +Rule	sol88	1988	only	-	Mar	10	12:10:15s -0:10:15 -
    +Rule	sol88	1988	only	-	Mar	11	12:10:00s -0:10:00 -
    +Rule	sol88	1988	only	-	Mar	12	12:09:45s -0:09:45 -
    +Rule	sol88	1988	only	-	Mar	13	12:09:30s -0:09:30 -
    +Rule	sol88	1988	only	-	Mar	14	12:09:10s -0:09:10 -
    +Rule	sol88	1988	only	-	Mar	15	12:08:55s -0:08:55 -
    +Rule	sol88	1988	only	-	Mar	16	12:08:40s -0:08:40 -
    +Rule	sol88	1988	only	-	Mar	17	12:08:20s -0:08:20 -
    +Rule	sol88	1988	only	-	Mar	18	12:08:05s -0:08:05 -
    +Rule	sol88	1988	only	-	Mar	19	12:07:45s -0:07:45 -
    +Rule	sol88	1988	only	-	Mar	20	12:07:30s -0:07:30 -
    +Rule	sol88	1988	only	-	Mar	21	12:07:10s -0:07:10 -
    +Rule	sol88	1988	only	-	Mar	22	12:06:50s -0:06:50 -
    +Rule	sol88	1988	only	-	Mar	23	12:06:35s -0:06:35 -
    +Rule	sol88	1988	only	-	Mar	24	12:06:15s -0:06:15 -
    +Rule	sol88	1988	only	-	Mar	25	12:06:00s -0:06:00 -
    +Rule	sol88	1988	only	-	Mar	26	12:05:40s -0:05:40 -
    +Rule	sol88	1988	only	-	Mar	27	12:05:20s -0:05:20 -
    +Rule	sol88	1988	only	-	Mar	28	12:05:05s -0:05:05 -
    +Rule	sol88	1988	only	-	Mar	29	12:04:45s -0:04:45 -
    +Rule	sol88	1988	only	-	Mar	30	12:04:25s -0:04:25 -
    +Rule	sol88	1988	only	-	Mar	31	12:04:10s -0:04:10 -
    +Rule	sol88	1988	only	-	Apr	1	12:03:50s -0:03:50 -
    +Rule	sol88	1988	only	-	Apr	2	12:03:35s -0:03:35 -
    +Rule	sol88	1988	only	-	Apr	3	12:03:15s -0:03:15 -
    +Rule	sol88	1988	only	-	Apr	4	12:03:00s -0:03:00 -
    +Rule	sol88	1988	only	-	Apr	5	12:02:40s -0:02:40 -
    +Rule	sol88	1988	only	-	Apr	6	12:02:25s -0:02:25 -
    +Rule	sol88	1988	only	-	Apr	7	12:02:05s -0:02:05 -
    +Rule	sol88	1988	only	-	Apr	8	12:01:50s -0:01:50 -
    +Rule	sol88	1988	only	-	Apr	9	12:01:35s -0:01:35 -
    +Rule	sol88	1988	only	-	Apr	10	12:01:15s -0:01:15 -
    +Rule	sol88	1988	only	-	Apr	11	12:01:00s -0:01:00 -
    +Rule	sol88	1988	only	-	Apr	12	12:00:45s -0:00:45 -
    +Rule	sol88	1988	only	-	Apr	13	12:00:30s -0:00:30 -
    +Rule	sol88	1988	only	-	Apr	14	12:00:15s -0:00:15 -
    +Rule	sol88	1988	only	-	Apr	15	12:00:00s 0:00:00 -
    +Rule	sol88	1988	only	-	Apr	16	11:59:45s 0:00:15 -
    +Rule	sol88	1988	only	-	Apr	17	11:59:30s 0:00:30 -
    +Rule	sol88	1988	only	-	Apr	18	11:59:20s 0:00:40 -
    +Rule	sol88	1988	only	-	Apr	19	11:59:05s 0:00:55 -
    +Rule	sol88	1988	only	-	Apr	20	11:58:55s 0:01:05 -
    +Rule	sol88	1988	only	-	Apr	21	11:58:40s 0:01:20 -
    +Rule	sol88	1988	only	-	Apr	22	11:58:30s 0:01:30 -
    +Rule	sol88	1988	only	-	Apr	23	11:58:15s 0:01:45 -
    +Rule	sol88	1988	only	-	Apr	24	11:58:05s 0:01:55 -
    +Rule	sol88	1988	only	-	Apr	25	11:57:55s 0:02:05 -
    +Rule	sol88	1988	only	-	Apr	26	11:57:45s 0:02:15 -
    +Rule	sol88	1988	only	-	Apr	27	11:57:35s 0:02:25 -
    +Rule	sol88	1988	only	-	Apr	28	11:57:30s 0:02:30 -
    +Rule	sol88	1988	only	-	Apr	29	11:57:20s 0:02:40 -
    +Rule	sol88	1988	only	-	Apr	30	11:57:10s 0:02:50 -
    +Rule	sol88	1988	only	-	May	1	11:57:05s 0:02:55 -
    +Rule	sol88	1988	only	-	May	2	11:56:55s 0:03:05 -
    +Rule	sol88	1988	only	-	May	3	11:56:50s 0:03:10 -
    +Rule	sol88	1988	only	-	May	4	11:56:45s 0:03:15 -
    +Rule	sol88	1988	only	-	May	5	11:56:40s 0:03:20 -
    +Rule	sol88	1988	only	-	May	6	11:56:35s 0:03:25 -
    +Rule	sol88	1988	only	-	May	7	11:56:30s 0:03:30 -
    +Rule	sol88	1988	only	-	May	8	11:56:25s 0:03:35 -
    +Rule	sol88	1988	only	-	May	9	11:56:25s 0:03:35 -
    +Rule	sol88	1988	only	-	May	10	11:56:20s 0:03:40 -
    +Rule	sol88	1988	only	-	May	11	11:56:20s 0:03:40 -
    +Rule	sol88	1988	only	-	May	12	11:56:20s 0:03:40 -
    +Rule	sol88	1988	only	-	May	13	11:56:20s 0:03:40 -
    +Rule	sol88	1988	only	-	May	14	11:56:20s 0:03:40 -
    +Rule	sol88	1988	only	-	May	15	11:56:20s 0:03:40 -
    +Rule	sol88	1988	only	-	May	16	11:56:20s 0:03:40 -
    +Rule	sol88	1988	only	-	May	17	11:56:20s 0:03:40 -
    +Rule	sol88	1988	only	-	May	18	11:56:25s 0:03:35 -
    +Rule	sol88	1988	only	-	May	19	11:56:25s 0:03:35 -
    +Rule	sol88	1988	only	-	May	20	11:56:30s 0:03:30 -
    +Rule	sol88	1988	only	-	May	21	11:56:35s 0:03:25 -
    +Rule	sol88	1988	only	-	May	22	11:56:40s 0:03:20 -
    +Rule	sol88	1988	only	-	May	23	11:56:45s 0:03:15 -
    +Rule	sol88	1988	only	-	May	24	11:56:50s 0:03:10 -
    +Rule	sol88	1988	only	-	May	25	11:56:55s 0:03:05 -
    +Rule	sol88	1988	only	-	May	26	11:57:00s 0:03:00 -
    +Rule	sol88	1988	only	-	May	27	11:57:05s 0:02:55 -
    +Rule	sol88	1988	only	-	May	28	11:57:15s 0:02:45 -
    +Rule	sol88	1988	only	-	May	29	11:57:20s 0:02:40 -
    +Rule	sol88	1988	only	-	May	30	11:57:30s 0:02:30 -
    +Rule	sol88	1988	only	-	May	31	11:57:40s 0:02:20 -
    +Rule	sol88	1988	only	-	Jun	1	11:57:50s 0:02:10 -
    +Rule	sol88	1988	only	-	Jun	2	11:57:55s 0:02:05 -
    +Rule	sol88	1988	only	-	Jun	3	11:58:05s 0:01:55 -
    +Rule	sol88	1988	only	-	Jun	4	11:58:15s 0:01:45 -
    +Rule	sol88	1988	only	-	Jun	5	11:58:30s 0:01:30 -
    +Rule	sol88	1988	only	-	Jun	6	11:58:40s 0:01:20 -
    +Rule	sol88	1988	only	-	Jun	7	11:58:50s 0:01:10 -
    +Rule	sol88	1988	only	-	Jun	8	11:59:00s 0:01:00 -
    +Rule	sol88	1988	only	-	Jun	9	11:59:15s 0:00:45 -
    +Rule	sol88	1988	only	-	Jun	10	11:59:25s 0:00:35 -
    +Rule	sol88	1988	only	-	Jun	11	11:59:35s 0:00:25 -
    +Rule	sol88	1988	only	-	Jun	12	11:59:50s 0:00:10 -
    +Rule	sol88	1988	only	-	Jun	13	12:00:00s 0:00:00 -
    +Rule	sol88	1988	only	-	Jun	14	12:00:15s -0:00:15 -
    +Rule	sol88	1988	only	-	Jun	15	12:00:25s -0:00:25 -
    +Rule	sol88	1988	only	-	Jun	16	12:00:40s -0:00:40 -
    +Rule	sol88	1988	only	-	Jun	17	12:00:55s -0:00:55 -
    +Rule	sol88	1988	only	-	Jun	18	12:01:05s -0:01:05 -
    +Rule	sol88	1988	only	-	Jun	19	12:01:20s -0:01:20 -
    +Rule	sol88	1988	only	-	Jun	20	12:01:30s -0:01:30 -
    +Rule	sol88	1988	only	-	Jun	21	12:01:45s -0:01:45 -
    +Rule	sol88	1988	only	-	Jun	22	12:02:00s -0:02:00 -
    +Rule	sol88	1988	only	-	Jun	23	12:02:10s -0:02:10 -
    +Rule	sol88	1988	only	-	Jun	24	12:02:25s -0:02:25 -
    +Rule	sol88	1988	only	-	Jun	25	12:02:35s -0:02:35 -
    +Rule	sol88	1988	only	-	Jun	26	12:02:50s -0:02:50 -
    +Rule	sol88	1988	only	-	Jun	27	12:03:00s -0:03:00 -
    +Rule	sol88	1988	only	-	Jun	28	12:03:15s -0:03:15 -
    +Rule	sol88	1988	only	-	Jun	29	12:03:25s -0:03:25 -
    +Rule	sol88	1988	only	-	Jun	30	12:03:40s -0:03:40 -
    +Rule	sol88	1988	only	-	Jul	1	12:03:50s -0:03:50 -
    +Rule	sol88	1988	only	-	Jul	2	12:04:00s -0:04:00 -
    +Rule	sol88	1988	only	-	Jul	3	12:04:10s -0:04:10 -
    +Rule	sol88	1988	only	-	Jul	4	12:04:25s -0:04:25 -
    +Rule	sol88	1988	only	-	Jul	5	12:04:35s -0:04:35 -
    +Rule	sol88	1988	only	-	Jul	6	12:04:45s -0:04:45 -
    +Rule	sol88	1988	only	-	Jul	7	12:04:55s -0:04:55 -
    +Rule	sol88	1988	only	-	Jul	8	12:05:05s -0:05:05 -
    +Rule	sol88	1988	only	-	Jul	9	12:05:10s -0:05:10 -
    +Rule	sol88	1988	only	-	Jul	10	12:05:20s -0:05:20 -
    +Rule	sol88	1988	only	-	Jul	11	12:05:30s -0:05:30 -
    +Rule	sol88	1988	only	-	Jul	12	12:05:35s -0:05:35 -
    +Rule	sol88	1988	only	-	Jul	13	12:05:45s -0:05:45 -
    +Rule	sol88	1988	only	-	Jul	14	12:05:50s -0:05:50 -
    +Rule	sol88	1988	only	-	Jul	15	12:05:55s -0:05:55 -
    +Rule	sol88	1988	only	-	Jul	16	12:06:00s -0:06:00 -
    +Rule	sol88	1988	only	-	Jul	17	12:06:05s -0:06:05 -
    +Rule	sol88	1988	only	-	Jul	18	12:06:10s -0:06:10 -
    +Rule	sol88	1988	only	-	Jul	19	12:06:15s -0:06:15 -
    +Rule	sol88	1988	only	-	Jul	20	12:06:20s -0:06:20 -
    +Rule	sol88	1988	only	-	Jul	21	12:06:25s -0:06:25 -
    +Rule	sol88	1988	only	-	Jul	22	12:06:25s -0:06:25 -
    +Rule	sol88	1988	only	-	Jul	23	12:06:25s -0:06:25 -
    +Rule	sol88	1988	only	-	Jul	24	12:06:30s -0:06:30 -
    +Rule	sol88	1988	only	-	Jul	25	12:06:30s -0:06:30 -
    +Rule	sol88	1988	only	-	Jul	26	12:06:30s -0:06:30 -
    +Rule	sol88	1988	only	-	Jul	27	12:06:30s -0:06:30 -
    +Rule	sol88	1988	only	-	Jul	28	12:06:30s -0:06:30 -
    +Rule	sol88	1988	only	-	Jul	29	12:06:25s -0:06:25 -
    +Rule	sol88	1988	only	-	Jul	30	12:06:25s -0:06:25 -
    +Rule	sol88	1988	only	-	Jul	31	12:06:20s -0:06:20 -
    +Rule	sol88	1988	only	-	Aug	1	12:06:15s -0:06:15 -
    +Rule	sol88	1988	only	-	Aug	2	12:06:15s -0:06:15 -
    +Rule	sol88	1988	only	-	Aug	3	12:06:10s -0:06:10 -
    +Rule	sol88	1988	only	-	Aug	4	12:06:05s -0:06:05 -
    +Rule	sol88	1988	only	-	Aug	5	12:05:55s -0:05:55 -
    +Rule	sol88	1988	only	-	Aug	6	12:05:50s -0:05:50 -
    +Rule	sol88	1988	only	-	Aug	7	12:05:45s -0:05:45 -
    +Rule	sol88	1988	only	-	Aug	8	12:05:35s -0:05:35 -
    +Rule	sol88	1988	only	-	Aug	9	12:05:25s -0:05:25 -
    +Rule	sol88	1988	only	-	Aug	10	12:05:20s -0:05:20 -
    +Rule	sol88	1988	only	-	Aug	11	12:05:10s -0:05:10 -
    +Rule	sol88	1988	only	-	Aug	12	12:05:00s -0:05:00 -
    +Rule	sol88	1988	only	-	Aug	13	12:04:50s -0:04:50 -
    +Rule	sol88	1988	only	-	Aug	14	12:04:35s -0:04:35 -
    +Rule	sol88	1988	only	-	Aug	15	12:04:25s -0:04:25 -
    +Rule	sol88	1988	only	-	Aug	16	12:04:15s -0:04:15 -
    +Rule	sol88	1988	only	-	Aug	17	12:04:00s -0:04:00 -
    +Rule	sol88	1988	only	-	Aug	18	12:03:50s -0:03:50 -
    +Rule	sol88	1988	only	-	Aug	19	12:03:35s -0:03:35 -
    +Rule	sol88	1988	only	-	Aug	20	12:03:20s -0:03:20 -
    +Rule	sol88	1988	only	-	Aug	21	12:03:05s -0:03:05 -
    +Rule	sol88	1988	only	-	Aug	22	12:02:50s -0:02:50 -
    +Rule	sol88	1988	only	-	Aug	23	12:02:35s -0:02:35 -
    +Rule	sol88	1988	only	-	Aug	24	12:02:20s -0:02:20 -
    +Rule	sol88	1988	only	-	Aug	25	12:02:00s -0:02:00 -
    +Rule	sol88	1988	only	-	Aug	26	12:01:45s -0:01:45 -
    +Rule	sol88	1988	only	-	Aug	27	12:01:30s -0:01:30 -
    +Rule	sol88	1988	only	-	Aug	28	12:01:10s -0:01:10 -
    +Rule	sol88	1988	only	-	Aug	29	12:00:50s -0:00:50 -
    +Rule	sol88	1988	only	-	Aug	30	12:00:35s -0:00:35 -
    +Rule	sol88	1988	only	-	Aug	31	12:00:15s -0:00:15 -
    +Rule	sol88	1988	only	-	Sep	1	11:59:55s 0:00:05 -
    +Rule	sol88	1988	only	-	Sep	2	11:59:35s 0:00:25 -
    +Rule	sol88	1988	only	-	Sep	3	11:59:20s 0:00:40 -
    +Rule	sol88	1988	only	-	Sep	4	11:59:00s 0:01:00 -
    +Rule	sol88	1988	only	-	Sep	5	11:58:40s 0:01:20 -
    +Rule	sol88	1988	only	-	Sep	6	11:58:20s 0:01:40 -
    +Rule	sol88	1988	only	-	Sep	7	11:58:00s 0:02:00 -
    +Rule	sol88	1988	only	-	Sep	8	11:57:35s 0:02:25 -
    +Rule	sol88	1988	only	-	Sep	9	11:57:15s 0:02:45 -
    +Rule	sol88	1988	only	-	Sep	10	11:56:55s 0:03:05 -
    +Rule	sol88	1988	only	-	Sep	11	11:56:35s 0:03:25 -
    +Rule	sol88	1988	only	-	Sep	12	11:56:15s 0:03:45 -
    +Rule	sol88	1988	only	-	Sep	13	11:55:50s 0:04:10 -
    +Rule	sol88	1988	only	-	Sep	14	11:55:30s 0:04:30 -
    +Rule	sol88	1988	only	-	Sep	15	11:55:10s 0:04:50 -
    +Rule	sol88	1988	only	-	Sep	16	11:54:50s 0:05:10 -
    +Rule	sol88	1988	only	-	Sep	17	11:54:25s 0:05:35 -
    +Rule	sol88	1988	only	-	Sep	18	11:54:05s 0:05:55 -
    +Rule	sol88	1988	only	-	Sep	19	11:53:45s 0:06:15 -
    +Rule	sol88	1988	only	-	Sep	20	11:53:25s 0:06:35 -
    +Rule	sol88	1988	only	-	Sep	21	11:53:00s 0:07:00 -
    +Rule	sol88	1988	only	-	Sep	22	11:52:40s 0:07:20 -
    +Rule	sol88	1988	only	-	Sep	23	11:52:20s 0:07:40 -
    +Rule	sol88	1988	only	-	Sep	24	11:52:00s 0:08:00 -
    +Rule	sol88	1988	only	-	Sep	25	11:51:40s 0:08:20 -
    +Rule	sol88	1988	only	-	Sep	26	11:51:15s 0:08:45 -
    +Rule	sol88	1988	only	-	Sep	27	11:50:55s 0:09:05 -
    +Rule	sol88	1988	only	-	Sep	28	11:50:35s 0:09:25 -
    +Rule	sol88	1988	only	-	Sep	29	11:50:15s 0:09:45 -
    +Rule	sol88	1988	only	-	Sep	30	11:49:55s 0:10:05 -
    +Rule	sol88	1988	only	-	Oct	1	11:49:35s 0:10:25 -
    +Rule	sol88	1988	only	-	Oct	2	11:49:20s 0:10:40 -
    +Rule	sol88	1988	only	-	Oct	3	11:49:00s 0:11:00 -
    +Rule	sol88	1988	only	-	Oct	4	11:48:40s 0:11:20 -
    +Rule	sol88	1988	only	-	Oct	5	11:48:25s 0:11:35 -
    +Rule	sol88	1988	only	-	Oct	6	11:48:05s 0:11:55 -
    +Rule	sol88	1988	only	-	Oct	7	11:47:50s 0:12:10 -
    +Rule	sol88	1988	only	-	Oct	8	11:47:30s 0:12:30 -
    +Rule	sol88	1988	only	-	Oct	9	11:47:15s 0:12:45 -
    +Rule	sol88	1988	only	-	Oct	10	11:47:00s 0:13:00 -
    +Rule	sol88	1988	only	-	Oct	11	11:46:45s 0:13:15 -
    +Rule	sol88	1988	only	-	Oct	12	11:46:30s 0:13:30 -
    +Rule	sol88	1988	only	-	Oct	13	11:46:15s 0:13:45 -
    +Rule	sol88	1988	only	-	Oct	14	11:46:00s 0:14:00 -
    +Rule	sol88	1988	only	-	Oct	15	11:45:45s 0:14:15 -
    +Rule	sol88	1988	only	-	Oct	16	11:45:35s 0:14:25 -
    +Rule	sol88	1988	only	-	Oct	17	11:45:20s 0:14:40 -
    +Rule	sol88	1988	only	-	Oct	18	11:45:10s 0:14:50 -
    +Rule	sol88	1988	only	-	Oct	19	11:45:00s 0:15:00 -
    +Rule	sol88	1988	only	-	Oct	20	11:44:45s 0:15:15 -
    +Rule	sol88	1988	only	-	Oct	21	11:44:40s 0:15:20 -
    +Rule	sol88	1988	only	-	Oct	22	11:44:30s 0:15:30 -
    +Rule	sol88	1988	only	-	Oct	23	11:44:20s 0:15:40 -
    +Rule	sol88	1988	only	-	Oct	24	11:44:10s 0:15:50 -
    +Rule	sol88	1988	only	-	Oct	25	11:44:05s 0:15:55 -
    +Rule	sol88	1988	only	-	Oct	26	11:44:00s 0:16:00 -
    +Rule	sol88	1988	only	-	Oct	27	11:43:55s 0:16:05 -
    +Rule	sol88	1988	only	-	Oct	28	11:43:50s 0:16:10 -
    +Rule	sol88	1988	only	-	Oct	29	11:43:45s 0:16:15 -
    +Rule	sol88	1988	only	-	Oct	30	11:43:40s 0:16:20 -
    +Rule	sol88	1988	only	-	Oct	31	11:43:40s 0:16:20 -
    +Rule	sol88	1988	only	-	Nov	1	11:43:35s 0:16:25 -
    +Rule	sol88	1988	only	-	Nov	2	11:43:35s 0:16:25 -
    +Rule	sol88	1988	only	-	Nov	3	11:43:35s 0:16:25 -
    +Rule	sol88	1988	only	-	Nov	4	11:43:35s 0:16:25 -
    +Rule	sol88	1988	only	-	Nov	5	11:43:40s 0:16:20 -
    +Rule	sol88	1988	only	-	Nov	6	11:43:40s 0:16:20 -
    +Rule	sol88	1988	only	-	Nov	7	11:43:45s 0:16:15 -
    +Rule	sol88	1988	only	-	Nov	8	11:43:45s 0:16:15 -
    +Rule	sol88	1988	only	-	Nov	9	11:43:50s 0:16:10 -
    +Rule	sol88	1988	only	-	Nov	10	11:44:00s 0:16:00 -
    +Rule	sol88	1988	only	-	Nov	11	11:44:05s 0:15:55 -
    +Rule	sol88	1988	only	-	Nov	12	11:44:10s 0:15:50 -
    +Rule	sol88	1988	only	-	Nov	13	11:44:20s 0:15:40 -
    +Rule	sol88	1988	only	-	Nov	14	11:44:30s 0:15:30 -
    +Rule	sol88	1988	only	-	Nov	15	11:44:40s 0:15:20 -
    +Rule	sol88	1988	only	-	Nov	16	11:44:50s 0:15:10 -
    +Rule	sol88	1988	only	-	Nov	17	11:45:00s 0:15:00 -
    +Rule	sol88	1988	only	-	Nov	18	11:45:15s 0:14:45 -
    +Rule	sol88	1988	only	-	Nov	19	11:45:25s 0:14:35 -
    +Rule	sol88	1988	only	-	Nov	20	11:45:40s 0:14:20 -
    +Rule	sol88	1988	only	-	Nov	21	11:45:55s 0:14:05 -
    +Rule	sol88	1988	only	-	Nov	22	11:46:10s 0:13:50 -
    +Rule	sol88	1988	only	-	Nov	23	11:46:30s 0:13:30 -
    +Rule	sol88	1988	only	-	Nov	24	11:46:45s 0:13:15 -
    +Rule	sol88	1988	only	-	Nov	25	11:47:05s 0:12:55 -
    +Rule	sol88	1988	only	-	Nov	26	11:47:20s 0:12:40 -
    +Rule	sol88	1988	only	-	Nov	27	11:47:40s 0:12:20 -
    +Rule	sol88	1988	only	-	Nov	28	11:48:00s 0:12:00 -
    +Rule	sol88	1988	only	-	Nov	29	11:48:25s 0:11:35 -
    +Rule	sol88	1988	only	-	Nov	30	11:48:45s 0:11:15 -
    +Rule	sol88	1988	only	-	Dec	1	11:49:05s 0:10:55 -
    +Rule	sol88	1988	only	-	Dec	2	11:49:30s 0:10:30 -
    +Rule	sol88	1988	only	-	Dec	3	11:49:55s 0:10:05 -
    +Rule	sol88	1988	only	-	Dec	4	11:50:15s 0:09:45 -
    +Rule	sol88	1988	only	-	Dec	5	11:50:40s 0:09:20 -
    +Rule	sol88	1988	only	-	Dec	6	11:51:05s 0:08:55 -
    +Rule	sol88	1988	only	-	Dec	7	11:51:35s 0:08:25 -
    +Rule	sol88	1988	only	-	Dec	8	11:52:00s 0:08:00 -
    +Rule	sol88	1988	only	-	Dec	9	11:52:25s 0:07:35 -
    +Rule	sol88	1988	only	-	Dec	10	11:52:55s 0:07:05 -
    +Rule	sol88	1988	only	-	Dec	11	11:53:20s 0:06:40 -
    +Rule	sol88	1988	only	-	Dec	12	11:53:50s 0:06:10 -
    +Rule	sol88	1988	only	-	Dec	13	11:54:15s 0:05:45 -
    +Rule	sol88	1988	only	-	Dec	14	11:54:45s 0:05:15 -
    +Rule	sol88	1988	only	-	Dec	15	11:55:15s 0:04:45 -
    +Rule	sol88	1988	only	-	Dec	16	11:55:45s 0:04:15 -
    +Rule	sol88	1988	only	-	Dec	17	11:56:15s 0:03:45 -
    +Rule	sol88	1988	only	-	Dec	18	11:56:40s 0:03:20 -
    +Rule	sol88	1988	only	-	Dec	19	11:57:10s 0:02:50 -
    +Rule	sol88	1988	only	-	Dec	20	11:57:40s 0:02:20 -
    +Rule	sol88	1988	only	-	Dec	21	11:58:10s 0:01:50 -
    +Rule	sol88	1988	only	-	Dec	22	11:58:40s 0:01:20 -
    +Rule	sol88	1988	only	-	Dec	23	11:59:10s 0:00:50 -
    +Rule	sol88	1988	only	-	Dec	24	11:59:40s 0:00:20 -
    +Rule	sol88	1988	only	-	Dec	25	12:00:10s -0:00:10 -
    +Rule	sol88	1988	only	-	Dec	26	12:00:40s -0:00:40 -
    +Rule	sol88	1988	only	-	Dec	27	12:01:10s -0:01:10 -
    +Rule	sol88	1988	only	-	Dec	28	12:01:40s -0:01:40 -
    +Rule	sol88	1988	only	-	Dec	29	12:02:10s -0:02:10 -
    +Rule	sol88	1988	only	-	Dec	30	12:02:35s -0:02:35 -
    +Rule	sol88	1988	only	-	Dec	31	12:03:05s -0:03:05 -
    +
    +# Riyadh is at about 46 degrees 46 minutes East:  3 hrs, 7 mins, 4 secs
    +# Before and after 1988, we'll operate on local mean solar time.
    +
    +# Zone	NAME		GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
    +Zone	Asia/Riyadh88	3:07:04	-		zzz	1988
    +			3:07:04	sol88		zzz	1989
    +			3:07:04	-		zzz
    +# For backward compatibility...
    +Link	Asia/Riyadh88	Mideast/Riyadh88
    diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/solar89 b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/solar89
    new file mode 100644
    index 0000000..f56e1ad
    --- /dev/null
    +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/solar89
    @@ -0,0 +1,395 @@
    +# 
    +# This file is in the public domain, so clarified as of
    +# 2009-05-17 by Arthur David Olson.
    +
    +# Apparent noon times below are for Riyadh; they're a bit off for other places.
    +# Times were computed using a formula provided by the U. S. Naval Observatory:
    +#	eqt = -105.8 * sin(l) + 596.2 * sin(2 * l) + 4.4 * sin(3 * l)
    +#		-12.7 * sin(4 * l) - 429.0 * cos(l) - 2.1 * cos (2 * l)
    +#		+ 19.3 * cos(3 * l);
    +# where l is the "mean longitude of the Sun" given by
    +#	l = 279.642 degrees + 0.985647 * d
    +# and d is the interval in days from January 0, 0 hours Universal Time
    +# (equaling the day of the year plus the fraction of a day from zero hours).
    +# The accuracy of the formula is plus or minus three seconds.
    +#
    +# Rounding to the nearest five seconds results in fewer than
    +# 256 different "time types"--a limit that's faced because time types are
    +# stored on disk as unsigned chars.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	sol89	1989	only	-	Jan	1	12:03:35s -0:03:35 -
    +Rule	sol89	1989	only	-	Jan	2	12:04:05s -0:04:05 -
    +Rule	sol89	1989	only	-	Jan	3	12:04:30s -0:04:30 -
    +Rule	sol89	1989	only	-	Jan	4	12:05:00s -0:05:00 -
    +Rule	sol89	1989	only	-	Jan	5	12:05:25s -0:05:25 -
    +Rule	sol89	1989	only	-	Jan	6	12:05:50s -0:05:50 -
    +Rule	sol89	1989	only	-	Jan	7	12:06:15s -0:06:15 -
    +Rule	sol89	1989	only	-	Jan	8	12:06:45s -0:06:45 -
    +Rule	sol89	1989	only	-	Jan	9	12:07:10s -0:07:10 -
    +Rule	sol89	1989	only	-	Jan	10	12:07:35s -0:07:35 -
    +Rule	sol89	1989	only	-	Jan	11	12:07:55s -0:07:55 -
    +Rule	sol89	1989	only	-	Jan	12	12:08:20s -0:08:20 -
    +Rule	sol89	1989	only	-	Jan	13	12:08:45s -0:08:45 -
    +Rule	sol89	1989	only	-	Jan	14	12:09:05s -0:09:05 -
    +Rule	sol89	1989	only	-	Jan	15	12:09:25s -0:09:25 -
    +Rule	sol89	1989	only	-	Jan	16	12:09:45s -0:09:45 -
    +Rule	sol89	1989	only	-	Jan	17	12:10:05s -0:10:05 -
    +Rule	sol89	1989	only	-	Jan	18	12:10:25s -0:10:25 -
    +Rule	sol89	1989	only	-	Jan	19	12:10:45s -0:10:45 -
    +Rule	sol89	1989	only	-	Jan	20	12:11:05s -0:11:05 -
    +Rule	sol89	1989	only	-	Jan	21	12:11:20s -0:11:20 -
    +Rule	sol89	1989	only	-	Jan	22	12:11:35s -0:11:35 -
    +Rule	sol89	1989	only	-	Jan	23	12:11:55s -0:11:55 -
    +Rule	sol89	1989	only	-	Jan	24	12:12:10s -0:12:10 -
    +Rule	sol89	1989	only	-	Jan	25	12:12:20s -0:12:20 -
    +Rule	sol89	1989	only	-	Jan	26	12:12:35s -0:12:35 -
    +Rule	sol89	1989	only	-	Jan	27	12:12:50s -0:12:50 -
    +Rule	sol89	1989	only	-	Jan	28	12:13:00s -0:13:00 -
    +Rule	sol89	1989	only	-	Jan	29	12:13:10s -0:13:10 -
    +Rule	sol89	1989	only	-	Jan	30	12:13:20s -0:13:20 -
    +Rule	sol89	1989	only	-	Jan	31	12:13:30s -0:13:30 -
    +Rule	sol89	1989	only	-	Feb	1	12:13:40s -0:13:40 -
    +Rule	sol89	1989	only	-	Feb	2	12:13:45s -0:13:45 -
    +Rule	sol89	1989	only	-	Feb	3	12:13:55s -0:13:55 -
    +Rule	sol89	1989	only	-	Feb	4	12:14:00s -0:14:00 -
    +Rule	sol89	1989	only	-	Feb	5	12:14:05s -0:14:05 -
    +Rule	sol89	1989	only	-	Feb	6	12:14:10s -0:14:10 -
    +Rule	sol89	1989	only	-	Feb	7	12:14:10s -0:14:10 -
    +Rule	sol89	1989	only	-	Feb	8	12:14:15s -0:14:15 -
    +Rule	sol89	1989	only	-	Feb	9	12:14:15s -0:14:15 -
    +Rule	sol89	1989	only	-	Feb	10	12:14:20s -0:14:20 -
    +Rule	sol89	1989	only	-	Feb	11	12:14:20s -0:14:20 -
    +Rule	sol89	1989	only	-	Feb	12	12:14:20s -0:14:20 -
    +Rule	sol89	1989	only	-	Feb	13	12:14:15s -0:14:15 -
    +Rule	sol89	1989	only	-	Feb	14	12:14:15s -0:14:15 -
    +Rule	sol89	1989	only	-	Feb	15	12:14:10s -0:14:10 -
    +Rule	sol89	1989	only	-	Feb	16	12:14:10s -0:14:10 -
    +Rule	sol89	1989	only	-	Feb	17	12:14:05s -0:14:05 -
    +Rule	sol89	1989	only	-	Feb	18	12:14:00s -0:14:00 -
    +Rule	sol89	1989	only	-	Feb	19	12:13:55s -0:13:55 -
    +Rule	sol89	1989	only	-	Feb	20	12:13:50s -0:13:50 -
    +Rule	sol89	1989	only	-	Feb	21	12:13:40s -0:13:40 -
    +Rule	sol89	1989	only	-	Feb	22	12:13:35s -0:13:35 -
    +Rule	sol89	1989	only	-	Feb	23	12:13:25s -0:13:25 -
    +Rule	sol89	1989	only	-	Feb	24	12:13:15s -0:13:15 -
    +Rule	sol89	1989	only	-	Feb	25	12:13:05s -0:13:05 -
    +Rule	sol89	1989	only	-	Feb	26	12:12:55s -0:12:55 -
    +Rule	sol89	1989	only	-	Feb	27	12:12:45s -0:12:45 -
    +Rule	sol89	1989	only	-	Feb	28	12:12:35s -0:12:35 -
    +Rule	sol89	1989	only	-	Mar	1	12:12:25s -0:12:25 -
    +Rule	sol89	1989	only	-	Mar	2	12:12:10s -0:12:10 -
    +Rule	sol89	1989	only	-	Mar	3	12:12:00s -0:12:00 -
    +Rule	sol89	1989	only	-	Mar	4	12:11:45s -0:11:45 -
    +Rule	sol89	1989	only	-	Mar	5	12:11:35s -0:11:35 -
    +Rule	sol89	1989	only	-	Mar	6	12:11:20s -0:11:20 -
    +Rule	sol89	1989	only	-	Mar	7	12:11:05s -0:11:05 -
    +Rule	sol89	1989	only	-	Mar	8	12:10:50s -0:10:50 -
    +Rule	sol89	1989	only	-	Mar	9	12:10:35s -0:10:35 -
    +Rule	sol89	1989	only	-	Mar	10	12:10:20s -0:10:20 -
    +Rule	sol89	1989	only	-	Mar	11	12:10:05s -0:10:05 -
    +Rule	sol89	1989	only	-	Mar	12	12:09:50s -0:09:50 -
    +Rule	sol89	1989	only	-	Mar	13	12:09:30s -0:09:30 -
    +Rule	sol89	1989	only	-	Mar	14	12:09:15s -0:09:15 -
    +Rule	sol89	1989	only	-	Mar	15	12:09:00s -0:09:00 -
    +Rule	sol89	1989	only	-	Mar	16	12:08:40s -0:08:40 -
    +Rule	sol89	1989	only	-	Mar	17	12:08:25s -0:08:25 -
    +Rule	sol89	1989	only	-	Mar	18	12:08:05s -0:08:05 -
    +Rule	sol89	1989	only	-	Mar	19	12:07:50s -0:07:50 -
    +Rule	sol89	1989	only	-	Mar	20	12:07:30s -0:07:30 -
    +Rule	sol89	1989	only	-	Mar	21	12:07:15s -0:07:15 -
    +Rule	sol89	1989	only	-	Mar	22	12:06:55s -0:06:55 -
    +Rule	sol89	1989	only	-	Mar	23	12:06:35s -0:06:35 -
    +Rule	sol89	1989	only	-	Mar	24	12:06:20s -0:06:20 -
    +Rule	sol89	1989	only	-	Mar	25	12:06:00s -0:06:00 -
    +Rule	sol89	1989	only	-	Mar	26	12:05:40s -0:05:40 -
    +Rule	sol89	1989	only	-	Mar	27	12:05:25s -0:05:25 -
    +Rule	sol89	1989	only	-	Mar	28	12:05:05s -0:05:05 -
    +Rule	sol89	1989	only	-	Mar	29	12:04:50s -0:04:50 -
    +Rule	sol89	1989	only	-	Mar	30	12:04:30s -0:04:30 -
    +Rule	sol89	1989	only	-	Mar	31	12:04:10s -0:04:10 -
    +Rule	sol89	1989	only	-	Apr	1	12:03:55s -0:03:55 -
    +Rule	sol89	1989	only	-	Apr	2	12:03:35s -0:03:35 -
    +Rule	sol89	1989	only	-	Apr	3	12:03:20s -0:03:20 -
    +Rule	sol89	1989	only	-	Apr	4	12:03:00s -0:03:00 -
    +Rule	sol89	1989	only	-	Apr	5	12:02:45s -0:02:45 -
    +Rule	sol89	1989	only	-	Apr	6	12:02:25s -0:02:25 -
    +Rule	sol89	1989	only	-	Apr	7	12:02:10s -0:02:10 -
    +Rule	sol89	1989	only	-	Apr	8	12:01:50s -0:01:50 -
    +Rule	sol89	1989	only	-	Apr	9	12:01:35s -0:01:35 -
    +Rule	sol89	1989	only	-	Apr	10	12:01:20s -0:01:20 -
    +Rule	sol89	1989	only	-	Apr	11	12:01:05s -0:01:05 -
    +Rule	sol89	1989	only	-	Apr	12	12:00:50s -0:00:50 -
    +Rule	sol89	1989	only	-	Apr	13	12:00:35s -0:00:35 -
    +Rule	sol89	1989	only	-	Apr	14	12:00:20s -0:00:20 -
    +Rule	sol89	1989	only	-	Apr	15	12:00:05s -0:00:05 -
    +Rule	sol89	1989	only	-	Apr	16	11:59:50s 0:00:10 -
    +Rule	sol89	1989	only	-	Apr	17	11:59:35s 0:00:25 -
    +Rule	sol89	1989	only	-	Apr	18	11:59:20s 0:00:40 -
    +Rule	sol89	1989	only	-	Apr	19	11:59:10s 0:00:50 -
    +Rule	sol89	1989	only	-	Apr	20	11:58:55s 0:01:05 -
    +Rule	sol89	1989	only	-	Apr	21	11:58:45s 0:01:15 -
    +Rule	sol89	1989	only	-	Apr	22	11:58:30s 0:01:30 -
    +Rule	sol89	1989	only	-	Apr	23	11:58:20s 0:01:40 -
    +Rule	sol89	1989	only	-	Apr	24	11:58:10s 0:01:50 -
    +Rule	sol89	1989	only	-	Apr	25	11:58:00s 0:02:00 -
    +Rule	sol89	1989	only	-	Apr	26	11:57:50s 0:02:10 -
    +Rule	sol89	1989	only	-	Apr	27	11:57:40s 0:02:20 -
    +Rule	sol89	1989	only	-	Apr	28	11:57:30s 0:02:30 -
    +Rule	sol89	1989	only	-	Apr	29	11:57:20s 0:02:40 -
    +Rule	sol89	1989	only	-	Apr	30	11:57:15s 0:02:45 -
    +Rule	sol89	1989	only	-	May	1	11:57:05s 0:02:55 -
    +Rule	sol89	1989	only	-	May	2	11:57:00s 0:03:00 -
    +Rule	sol89	1989	only	-	May	3	11:56:50s 0:03:10 -
    +Rule	sol89	1989	only	-	May	4	11:56:45s 0:03:15 -
    +Rule	sol89	1989	only	-	May	5	11:56:40s 0:03:20 -
    +Rule	sol89	1989	only	-	May	6	11:56:35s 0:03:25 -
    +Rule	sol89	1989	only	-	May	7	11:56:30s 0:03:30 -
    +Rule	sol89	1989	only	-	May	8	11:56:30s 0:03:30 -
    +Rule	sol89	1989	only	-	May	9	11:56:25s 0:03:35 -
    +Rule	sol89	1989	only	-	May	10	11:56:25s 0:03:35 -
    +Rule	sol89	1989	only	-	May	11	11:56:20s 0:03:40 -
    +Rule	sol89	1989	only	-	May	12	11:56:20s 0:03:40 -
    +Rule	sol89	1989	only	-	May	13	11:56:20s 0:03:40 -
    +Rule	sol89	1989	only	-	May	14	11:56:20s 0:03:40 -
    +Rule	sol89	1989	only	-	May	15	11:56:20s 0:03:40 -
    +Rule	sol89	1989	only	-	May	16	11:56:20s 0:03:40 -
    +Rule	sol89	1989	only	-	May	17	11:56:20s 0:03:40 -
    +Rule	sol89	1989	only	-	May	18	11:56:25s 0:03:35 -
    +Rule	sol89	1989	only	-	May	19	11:56:25s 0:03:35 -
    +Rule	sol89	1989	only	-	May	20	11:56:30s 0:03:30 -
    +Rule	sol89	1989	only	-	May	21	11:56:35s 0:03:25 -
    +Rule	sol89	1989	only	-	May	22	11:56:35s 0:03:25 -
    +Rule	sol89	1989	only	-	May	23	11:56:40s 0:03:20 -
    +Rule	sol89	1989	only	-	May	24	11:56:45s 0:03:15 -
    +Rule	sol89	1989	only	-	May	25	11:56:55s 0:03:05 -
    +Rule	sol89	1989	only	-	May	26	11:57:00s 0:03:00 -
    +Rule	sol89	1989	only	-	May	27	11:57:05s 0:02:55 -
    +Rule	sol89	1989	only	-	May	28	11:57:15s 0:02:45 -
    +Rule	sol89	1989	only	-	May	29	11:57:20s 0:02:40 -
    +Rule	sol89	1989	only	-	May	30	11:57:30s 0:02:30 -
    +Rule	sol89	1989	only	-	May	31	11:57:35s 0:02:25 -
    +Rule	sol89	1989	only	-	Jun	1	11:57:45s 0:02:15 -
    +Rule	sol89	1989	only	-	Jun	2	11:57:55s 0:02:05 -
    +Rule	sol89	1989	only	-	Jun	3	11:58:05s 0:01:55 -
    +Rule	sol89	1989	only	-	Jun	4	11:58:15s 0:01:45 -
    +Rule	sol89	1989	only	-	Jun	5	11:58:25s 0:01:35 -
    +Rule	sol89	1989	only	-	Jun	6	11:58:35s 0:01:25 -
    +Rule	sol89	1989	only	-	Jun	7	11:58:45s 0:01:15 -
    +Rule	sol89	1989	only	-	Jun	8	11:59:00s 0:01:00 -
    +Rule	sol89	1989	only	-	Jun	9	11:59:10s 0:00:50 -
    +Rule	sol89	1989	only	-	Jun	10	11:59:20s 0:00:40 -
    +Rule	sol89	1989	only	-	Jun	11	11:59:35s 0:00:25 -
    +Rule	sol89	1989	only	-	Jun	12	11:59:45s 0:00:15 -
    +Rule	sol89	1989	only	-	Jun	13	12:00:00s 0:00:00 -
    +Rule	sol89	1989	only	-	Jun	14	12:00:10s -0:00:10 -
    +Rule	sol89	1989	only	-	Jun	15	12:00:25s -0:00:25 -
    +Rule	sol89	1989	only	-	Jun	16	12:00:35s -0:00:35 -
    +Rule	sol89	1989	only	-	Jun	17	12:00:50s -0:00:50 -
    +Rule	sol89	1989	only	-	Jun	18	12:01:05s -0:01:05 -
    +Rule	sol89	1989	only	-	Jun	19	12:01:15s -0:01:15 -
    +Rule	sol89	1989	only	-	Jun	20	12:01:30s -0:01:30 -
    +Rule	sol89	1989	only	-	Jun	21	12:01:40s -0:01:40 -
    +Rule	sol89	1989	only	-	Jun	22	12:01:55s -0:01:55 -
    +Rule	sol89	1989	only	-	Jun	23	12:02:10s -0:02:10 -
    +Rule	sol89	1989	only	-	Jun	24	12:02:20s -0:02:20 -
    +Rule	sol89	1989	only	-	Jun	25	12:02:35s -0:02:35 -
    +Rule	sol89	1989	only	-	Jun	26	12:02:45s -0:02:45 -
    +Rule	sol89	1989	only	-	Jun	27	12:03:00s -0:03:00 -
    +Rule	sol89	1989	only	-	Jun	28	12:03:10s -0:03:10 -
    +Rule	sol89	1989	only	-	Jun	29	12:03:25s -0:03:25 -
    +Rule	sol89	1989	only	-	Jun	30	12:03:35s -0:03:35 -
    +Rule	sol89	1989	only	-	Jul	1	12:03:45s -0:03:45 -
    +Rule	sol89	1989	only	-	Jul	2	12:04:00s -0:04:00 -
    +Rule	sol89	1989	only	-	Jul	3	12:04:10s -0:04:10 -
    +Rule	sol89	1989	only	-	Jul	4	12:04:20s -0:04:20 -
    +Rule	sol89	1989	only	-	Jul	5	12:04:30s -0:04:30 -
    +Rule	sol89	1989	only	-	Jul	6	12:04:40s -0:04:40 -
    +Rule	sol89	1989	only	-	Jul	7	12:04:50s -0:04:50 -
    +Rule	sol89	1989	only	-	Jul	8	12:05:00s -0:05:00 -
    +Rule	sol89	1989	only	-	Jul	9	12:05:10s -0:05:10 -
    +Rule	sol89	1989	only	-	Jul	10	12:05:20s -0:05:20 -
    +Rule	sol89	1989	only	-	Jul	11	12:05:25s -0:05:25 -
    +Rule	sol89	1989	only	-	Jul	12	12:05:35s -0:05:35 -
    +Rule	sol89	1989	only	-	Jul	13	12:05:40s -0:05:40 -
    +Rule	sol89	1989	only	-	Jul	14	12:05:50s -0:05:50 -
    +Rule	sol89	1989	only	-	Jul	15	12:05:55s -0:05:55 -
    +Rule	sol89	1989	only	-	Jul	16	12:06:00s -0:06:00 -
    +Rule	sol89	1989	only	-	Jul	17	12:06:05s -0:06:05 -
    +Rule	sol89	1989	only	-	Jul	18	12:06:10s -0:06:10 -
    +Rule	sol89	1989	only	-	Jul	19	12:06:15s -0:06:15 -
    +Rule	sol89	1989	only	-	Jul	20	12:06:20s -0:06:20 -
    +Rule	sol89	1989	only	-	Jul	21	12:06:20s -0:06:20 -
    +Rule	sol89	1989	only	-	Jul	22	12:06:25s -0:06:25 -
    +Rule	sol89	1989	only	-	Jul	23	12:06:25s -0:06:25 -
    +Rule	sol89	1989	only	-	Jul	24	12:06:30s -0:06:30 -
    +Rule	sol89	1989	only	-	Jul	25	12:06:30s -0:06:30 -
    +Rule	sol89	1989	only	-	Jul	26	12:06:30s -0:06:30 -
    +Rule	sol89	1989	only	-	Jul	27	12:06:30s -0:06:30 -
    +Rule	sol89	1989	only	-	Jul	28	12:06:30s -0:06:30 -
    +Rule	sol89	1989	only	-	Jul	29	12:06:25s -0:06:25 -
    +Rule	sol89	1989	only	-	Jul	30	12:06:25s -0:06:25 -
    +Rule	sol89	1989	only	-	Jul	31	12:06:20s -0:06:20 -
    +Rule	sol89	1989	only	-	Aug	1	12:06:20s -0:06:20 -
    +Rule	sol89	1989	only	-	Aug	2	12:06:15s -0:06:15 -
    +Rule	sol89	1989	only	-	Aug	3	12:06:10s -0:06:10 -
    +Rule	sol89	1989	only	-	Aug	4	12:06:05s -0:06:05 -
    +Rule	sol89	1989	only	-	Aug	5	12:06:00s -0:06:00 -
    +Rule	sol89	1989	only	-	Aug	6	12:05:50s -0:05:50 -
    +Rule	sol89	1989	only	-	Aug	7	12:05:45s -0:05:45 -
    +Rule	sol89	1989	only	-	Aug	8	12:05:35s -0:05:35 -
    +Rule	sol89	1989	only	-	Aug	9	12:05:30s -0:05:30 -
    +Rule	sol89	1989	only	-	Aug	10	12:05:20s -0:05:20 -
    +Rule	sol89	1989	only	-	Aug	11	12:05:10s -0:05:10 -
    +Rule	sol89	1989	only	-	Aug	12	12:05:00s -0:05:00 -
    +Rule	sol89	1989	only	-	Aug	13	12:04:50s -0:04:50 -
    +Rule	sol89	1989	only	-	Aug	14	12:04:40s -0:04:40 -
    +Rule	sol89	1989	only	-	Aug	15	12:04:30s -0:04:30 -
    +Rule	sol89	1989	only	-	Aug	16	12:04:15s -0:04:15 -
    +Rule	sol89	1989	only	-	Aug	17	12:04:05s -0:04:05 -
    +Rule	sol89	1989	only	-	Aug	18	12:03:50s -0:03:50 -
    +Rule	sol89	1989	only	-	Aug	19	12:03:35s -0:03:35 -
    +Rule	sol89	1989	only	-	Aug	20	12:03:25s -0:03:25 -
    +Rule	sol89	1989	only	-	Aug	21	12:03:10s -0:03:10 -
    +Rule	sol89	1989	only	-	Aug	22	12:02:55s -0:02:55 -
    +Rule	sol89	1989	only	-	Aug	23	12:02:40s -0:02:40 -
    +Rule	sol89	1989	only	-	Aug	24	12:02:20s -0:02:20 -
    +Rule	sol89	1989	only	-	Aug	25	12:02:05s -0:02:05 -
    +Rule	sol89	1989	only	-	Aug	26	12:01:50s -0:01:50 -
    +Rule	sol89	1989	only	-	Aug	27	12:01:30s -0:01:30 -
    +Rule	sol89	1989	only	-	Aug	28	12:01:15s -0:01:15 -
    +Rule	sol89	1989	only	-	Aug	29	12:00:55s -0:00:55 -
    +Rule	sol89	1989	only	-	Aug	30	12:00:40s -0:00:40 -
    +Rule	sol89	1989	only	-	Aug	31	12:00:20s -0:00:20 -
    +Rule	sol89	1989	only	-	Sep	1	12:00:00s 0:00:00 -
    +Rule	sol89	1989	only	-	Sep	2	11:59:45s 0:00:15 -
    +Rule	sol89	1989	only	-	Sep	3	11:59:25s 0:00:35 -
    +Rule	sol89	1989	only	-	Sep	4	11:59:05s 0:00:55 -
    +Rule	sol89	1989	only	-	Sep	5	11:58:45s 0:01:15 -
    +Rule	sol89	1989	only	-	Sep	6	11:58:25s 0:01:35 -
    +Rule	sol89	1989	only	-	Sep	7	11:58:05s 0:01:55 -
    +Rule	sol89	1989	only	-	Sep	8	11:57:45s 0:02:15 -
    +Rule	sol89	1989	only	-	Sep	9	11:57:20s 0:02:40 -
    +Rule	sol89	1989	only	-	Sep	10	11:57:00s 0:03:00 -
    +Rule	sol89	1989	only	-	Sep	11	11:56:40s 0:03:20 -
    +Rule	sol89	1989	only	-	Sep	12	11:56:20s 0:03:40 -
    +Rule	sol89	1989	only	-	Sep	13	11:56:00s 0:04:00 -
    +Rule	sol89	1989	only	-	Sep	14	11:55:35s 0:04:25 -
    +Rule	sol89	1989	only	-	Sep	15	11:55:15s 0:04:45 -
    +Rule	sol89	1989	only	-	Sep	16	11:54:55s 0:05:05 -
    +Rule	sol89	1989	only	-	Sep	17	11:54:35s 0:05:25 -
    +Rule	sol89	1989	only	-	Sep	18	11:54:10s 0:05:50 -
    +Rule	sol89	1989	only	-	Sep	19	11:53:50s 0:06:10 -
    +Rule	sol89	1989	only	-	Sep	20	11:53:30s 0:06:30 -
    +Rule	sol89	1989	only	-	Sep	21	11:53:10s 0:06:50 -
    +Rule	sol89	1989	only	-	Sep	22	11:52:45s 0:07:15 -
    +Rule	sol89	1989	only	-	Sep	23	11:52:25s 0:07:35 -
    +Rule	sol89	1989	only	-	Sep	24	11:52:05s 0:07:55 -
    +Rule	sol89	1989	only	-	Sep	25	11:51:45s 0:08:15 -
    +Rule	sol89	1989	only	-	Sep	26	11:51:25s 0:08:35 -
    +Rule	sol89	1989	only	-	Sep	27	11:51:05s 0:08:55 -
    +Rule	sol89	1989	only	-	Sep	28	11:50:40s 0:09:20 -
    +Rule	sol89	1989	only	-	Sep	29	11:50:20s 0:09:40 -
    +Rule	sol89	1989	only	-	Sep	30	11:50:00s 0:10:00 -
    +Rule	sol89	1989	only	-	Oct	1	11:49:45s 0:10:15 -
    +Rule	sol89	1989	only	-	Oct	2	11:49:25s 0:10:35 -
    +Rule	sol89	1989	only	-	Oct	3	11:49:05s 0:10:55 -
    +Rule	sol89	1989	only	-	Oct	4	11:48:45s 0:11:15 -
    +Rule	sol89	1989	only	-	Oct	5	11:48:30s 0:11:30 -
    +Rule	sol89	1989	only	-	Oct	6	11:48:10s 0:11:50 -
    +Rule	sol89	1989	only	-	Oct	7	11:47:50s 0:12:10 -
    +Rule	sol89	1989	only	-	Oct	8	11:47:35s 0:12:25 -
    +Rule	sol89	1989	only	-	Oct	9	11:47:20s 0:12:40 -
    +Rule	sol89	1989	only	-	Oct	10	11:47:00s 0:13:00 -
    +Rule	sol89	1989	only	-	Oct	11	11:46:45s 0:13:15 -
    +Rule	sol89	1989	only	-	Oct	12	11:46:30s 0:13:30 -
    +Rule	sol89	1989	only	-	Oct	13	11:46:15s 0:13:45 -
    +Rule	sol89	1989	only	-	Oct	14	11:46:00s 0:14:00 -
    +Rule	sol89	1989	only	-	Oct	15	11:45:50s 0:14:10 -
    +Rule	sol89	1989	only	-	Oct	16	11:45:35s 0:14:25 -
    +Rule	sol89	1989	only	-	Oct	17	11:45:20s 0:14:40 -
    +Rule	sol89	1989	only	-	Oct	18	11:45:10s 0:14:50 -
    +Rule	sol89	1989	only	-	Oct	19	11:45:00s 0:15:00 -
    +Rule	sol89	1989	only	-	Oct	20	11:44:50s 0:15:10 -
    +Rule	sol89	1989	only	-	Oct	21	11:44:40s 0:15:20 -
    +Rule	sol89	1989	only	-	Oct	22	11:44:30s 0:15:30 -
    +Rule	sol89	1989	only	-	Oct	23	11:44:20s 0:15:40 -
    +Rule	sol89	1989	only	-	Oct	24	11:44:10s 0:15:50 -
    +Rule	sol89	1989	only	-	Oct	25	11:44:05s 0:15:55 -
    +Rule	sol89	1989	only	-	Oct	26	11:44:00s 0:16:00 -
    +Rule	sol89	1989	only	-	Oct	27	11:43:50s 0:16:10 -
    +Rule	sol89	1989	only	-	Oct	28	11:43:45s 0:16:15 -
    +Rule	sol89	1989	only	-	Oct	29	11:43:40s 0:16:20 -
    +Rule	sol89	1989	only	-	Oct	30	11:43:40s 0:16:20 -
    +Rule	sol89	1989	only	-	Oct	31	11:43:35s 0:16:25 -
    +Rule	sol89	1989	only	-	Nov	1	11:43:35s 0:16:25 -
    +Rule	sol89	1989	only	-	Nov	2	11:43:35s 0:16:25 -
    +Rule	sol89	1989	only	-	Nov	3	11:43:30s 0:16:30 -
    +Rule	sol89	1989	only	-	Nov	4	11:43:35s 0:16:25 -
    +Rule	sol89	1989	only	-	Nov	5	11:43:35s 0:16:25 -
    +Rule	sol89	1989	only	-	Nov	6	11:43:35s 0:16:25 -
    +Rule	sol89	1989	only	-	Nov	7	11:43:40s 0:16:20 -
    +Rule	sol89	1989	only	-	Nov	8	11:43:45s 0:16:15 -
    +Rule	sol89	1989	only	-	Nov	9	11:43:50s 0:16:10 -
    +Rule	sol89	1989	only	-	Nov	10	11:43:55s 0:16:05 -
    +Rule	sol89	1989	only	-	Nov	11	11:44:00s 0:16:00 -
    +Rule	sol89	1989	only	-	Nov	12	11:44:05s 0:15:55 -
    +Rule	sol89	1989	only	-	Nov	13	11:44:15s 0:15:45 -
    +Rule	sol89	1989	only	-	Nov	14	11:44:25s 0:15:35 -
    +Rule	sol89	1989	only	-	Nov	15	11:44:35s 0:15:25 -
    +Rule	sol89	1989	only	-	Nov	16	11:44:45s 0:15:15 -
    +Rule	sol89	1989	only	-	Nov	17	11:44:55s 0:15:05 -
    +Rule	sol89	1989	only	-	Nov	18	11:45:10s 0:14:50 -
    +Rule	sol89	1989	only	-	Nov	19	11:45:20s 0:14:40 -
    +Rule	sol89	1989	only	-	Nov	20	11:45:35s 0:14:25 -
    +Rule	sol89	1989	only	-	Nov	21	11:45:50s 0:14:10 -
    +Rule	sol89	1989	only	-	Nov	22	11:46:05s 0:13:55 -
    +Rule	sol89	1989	only	-	Nov	23	11:46:25s 0:13:35 -
    +Rule	sol89	1989	only	-	Nov	24	11:46:40s 0:13:20 -
    +Rule	sol89	1989	only	-	Nov	25	11:47:00s 0:13:00 -
    +Rule	sol89	1989	only	-	Nov	26	11:47:20s 0:12:40 -
    +Rule	sol89	1989	only	-	Nov	27	11:47:35s 0:12:25 -
    +Rule	sol89	1989	only	-	Nov	28	11:47:55s 0:12:05 -
    +Rule	sol89	1989	only	-	Nov	29	11:48:20s 0:11:40 -
    +Rule	sol89	1989	only	-	Nov	30	11:48:40s 0:11:20 -
    +Rule	sol89	1989	only	-	Dec	1	11:49:00s 0:11:00 -
    +Rule	sol89	1989	only	-	Dec	2	11:49:25s 0:10:35 -
    +Rule	sol89	1989	only	-	Dec	3	11:49:50s 0:10:10 -
    +Rule	sol89	1989	only	-	Dec	4	11:50:15s 0:09:45 -
    +Rule	sol89	1989	only	-	Dec	5	11:50:35s 0:09:25 -
    +Rule	sol89	1989	only	-	Dec	6	11:51:00s 0:09:00 -
    +Rule	sol89	1989	only	-	Dec	7	11:51:30s 0:08:30 -
    +Rule	sol89	1989	only	-	Dec	8	11:51:55s 0:08:05 -
    +Rule	sol89	1989	only	-	Dec	9	11:52:20s 0:07:40 -
    +Rule	sol89	1989	only	-	Dec	10	11:52:50s 0:07:10 -
    +Rule	sol89	1989	only	-	Dec	11	11:53:15s 0:06:45 -
    +Rule	sol89	1989	only	-	Dec	12	11:53:45s 0:06:15 -
    +Rule	sol89	1989	only	-	Dec	13	11:54:10s 0:05:50 -
    +Rule	sol89	1989	only	-	Dec	14	11:54:40s 0:05:20 -
    +Rule	sol89	1989	only	-	Dec	15	11:55:10s 0:04:50 -
    +Rule	sol89	1989	only	-	Dec	16	11:55:40s 0:04:20 -
    +Rule	sol89	1989	only	-	Dec	17	11:56:05s 0:03:55 -
    +Rule	sol89	1989	only	-	Dec	18	11:56:35s 0:03:25 -
    +Rule	sol89	1989	only	-	Dec	19	11:57:05s 0:02:55 -
    +Rule	sol89	1989	only	-	Dec	20	11:57:35s 0:02:25 -
    +Rule	sol89	1989	only	-	Dec	21	11:58:05s 0:01:55 -
    +Rule	sol89	1989	only	-	Dec	22	11:58:35s 0:01:25 -
    +Rule	sol89	1989	only	-	Dec	23	11:59:05s 0:00:55 -
    +Rule	sol89	1989	only	-	Dec	24	11:59:35s 0:00:25 -
    +Rule	sol89	1989	only	-	Dec	25	12:00:05s -0:00:05 -
    +Rule	sol89	1989	only	-	Dec	26	12:00:35s -0:00:35 -
    +Rule	sol89	1989	only	-	Dec	27	12:01:05s -0:01:05 -
    +Rule	sol89	1989	only	-	Dec	28	12:01:35s -0:01:35 -
    +Rule	sol89	1989	only	-	Dec	29	12:02:00s -0:02:00 -
    +Rule	sol89	1989	only	-	Dec	30	12:02:30s -0:02:30 -
    +Rule	sol89	1989	only	-	Dec	31	12:03:00s -0:03:00 -
    +
    +# Riyadh is at about 46 degrees 46 minutes East:  3 hrs, 7 mins, 4 secs
    +# Before and after 1989, we'll operate on local mean solar time.
    +
    +# Zone	NAME		GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
    +Zone	Asia/Riyadh89	3:07:04	-		zzz	1989
    +			3:07:04	sol89		zzz	1990
    +			3:07:04	-		zzz
    +# For backward compatibility...
    +Link	Asia/Riyadh89	Mideast/Riyadh89
    diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/southamerica b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/southamerica
    new file mode 100644
    index 0000000..9b9bf6b
    --- /dev/null
    +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/southamerica
    @@ -0,0 +1,1711 @@
    +# 
    +# This file is in the public domain, so clarified as of
    +# 2009-05-17 by Arthur David Olson.
    +
    +# This data is by no means authoritative; if you think you know better,
    +# go ahead and edit the file (and please send any changes to
    +# tz@iana.org for general use in the future).
    +
    +# From Paul Eggert (2006-03-22):
    +# A good source for time zone historical data outside the U.S. is
    +# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
    +# San Diego: ACS Publications, Inc. (2003).
    +#
    +# Gwillim Law writes that a good source
    +# for recent time zone data is the International Air Transport
    +# Association's Standard Schedules Information Manual (IATA SSIM),
    +# published semiannually.  Law sent in several helpful summaries
    +# of the IATA's data after 1990.
    +#
    +# Except where otherwise noted, Shanks & Pottenger is the source for
    +# entries through 1990, and IATA SSIM is the source for entries afterwards.
    +#
    +# Earlier editions of these tables used the North American style (e.g. ARST and
    +# ARDT for Argentine Standard and Daylight Time), but the following quote
    +# suggests that it's better to use European style (e.g. ART and ARST).
    +#	I suggest the use of _Summer time_ instead of the more cumbersome
    +#	_daylight-saving time_.  _Summer time_ seems to be in general use
    +#	in Europe and South America.
    +#	-- E O Cutler, _New York Times_ (1937-02-14), quoted in
    +#	H L Mencken, _The American Language: Supplement I_ (1960), p 466
    +#
    +# Earlier editions of these tables also used the North American style
    +# for time zones in Brazil, but this was incorrect, as Brazilians say
    +# "summer time".  Reinaldo Goulart, a Sao Paulo businessman active in
    +# the railroad sector, writes (1999-07-06):
    +#	The subject of time zones is currently a matter of discussion/debate in
    +#	Brazil.  Let's say that "the Brasilia time" is considered the
    +#	"official time" because Brasilia is the capital city.
    +#	The other three time zones are called "Brasilia time "minus one" or
    +#	"plus one" or "plus two".  As far as I know there is no such
    +#	name/designation as "Eastern Time" or "Central Time".
    +# So I invented the following (English-language) abbreviations for now.
    +# Corrections are welcome!
    +#		std	dst
    +#	-2:00	FNT	FNST	Fernando de Noronha
    +#	-3:00	BRT	BRST	Brasilia
    +#	-4:00	AMT	AMST	Amazon
    +#	-5:00	ACT	ACST	Acre
    +
    +###############################################################################
    +
    +###############################################################################
    +
    +# Argentina
    +
    +# From Bob Devine (1988-01-28):
    +# Argentina: first Sunday in October to first Sunday in April since 1976.
    +# Double Summer time from 1969 to 1974.  Switches at midnight.
    +
    +# From U. S. Naval Observatory (1988-01-199):
    +# ARGENTINA           3 H BEHIND   UTC
    +
    +# From Hernan G. Otero (1995-06-26):
    +# I am sending modifications to the Argentine time zone table...
    +# AR was chosen because they are the ISO letters that represent Argentina.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Arg	1930	only	-	Dec	 1	0:00	1:00	S
    +Rule	Arg	1931	only	-	Apr	 1	0:00	0	-
    +Rule	Arg	1931	only	-	Oct	15	0:00	1:00	S
    +Rule	Arg	1932	1940	-	Mar	 1	0:00	0	-
    +Rule	Arg	1932	1939	-	Nov	 1	0:00	1:00	S
    +Rule	Arg	1940	only	-	Jul	 1	0:00	1:00	S
    +Rule	Arg	1941	only	-	Jun	15	0:00	0	-
    +Rule	Arg	1941	only	-	Oct	15	0:00	1:00	S
    +Rule	Arg	1943	only	-	Aug	 1	0:00	0	-
    +Rule	Arg	1943	only	-	Oct	15	0:00	1:00	S
    +Rule	Arg	1946	only	-	Mar	 1	0:00	0	-
    +Rule	Arg	1946	only	-	Oct	 1	0:00	1:00	S
    +Rule	Arg	1963	only	-	Oct	 1	0:00	0	-
    +Rule	Arg	1963	only	-	Dec	15	0:00	1:00	S
    +Rule	Arg	1964	1966	-	Mar	 1	0:00	0	-
    +Rule	Arg	1964	1966	-	Oct	15	0:00	1:00	S
    +Rule	Arg	1967	only	-	Apr	 2	0:00	0	-
    +Rule	Arg	1967	1968	-	Oct	Sun>=1	0:00	1:00	S
    +Rule	Arg	1968	1969	-	Apr	Sun>=1	0:00	0	-
    +Rule	Arg	1974	only	-	Jan	23	0:00	1:00	S
    +Rule	Arg	1974	only	-	May	 1	0:00	0	-
    +Rule	Arg	1988	only	-	Dec	 1	0:00	1:00	S
    +#
    +# From Hernan G. Otero (1995-06-26):
    +# These corrections were contributed by InterSoft Argentina S.A.,
    +# obtaining the data from the:
    +# Talleres de Hidrografia Naval Argentina
    +# (Argentine Naval Hydrography Institute)
    +Rule	Arg	1989	1993	-	Mar	Sun>=1	0:00	0	-
    +Rule	Arg	1989	1992	-	Oct	Sun>=15	0:00	1:00	S
    +#
    +# From Hernan G. Otero (1995-06-26):
    +# From this moment on, the law that mandated the daylight saving
    +# time corrections was derogated and no more modifications
    +# to the time zones (for daylight saving) are now made.
    +#
    +# From Rives McDow (2000-01-10):
    +# On October 3, 1999, 0:00 local, Argentina implemented daylight savings time,
    +# which did not result in the switch of a time zone, as they stayed 9 hours
    +# from the International Date Line.
    +Rule	Arg	1999	only	-	Oct	Sun>=1	0:00	1:00	S
    +# From Paul Eggert (2007-12-28):
    +# DST was set to expire on March 5, not March 3, but since it was converted
    +# to standard time on March 3 it's more convenient for us to pretend that
    +# it ended on March 3.
    +Rule	Arg	2000	only	-	Mar	3	0:00	0	-
    +#
    +# From Peter Gradelski via Steffen Thorsen (2000-03-01):
    +# We just checked with our Sao Paulo office and they say the government of
    +# Argentina decided not to become one of the countries that go on or off DST.
    +# So Buenos Aires should be -3 hours from GMT at all times.
    +#
    +# From Fabian L. Arce Jofre (2000-04-04):
    +# The law that claimed DST for Argentina was derogated by President Fernando
    +# de la Rua on March 2, 2000, because it would make people spend more energy
    +# in the winter time, rather than less.  The change took effect on March 3.
    +#
    +# From Mariano Absatz (2001-06-06):
    +# one of the major newspapers here in Argentina said that the 1999
    +# Timezone Law (which never was effectively applied) will (would?) be
    +# in effect.... The article is at
    +# http://ar.clarin.com/diario/2001-06-06/e-01701.htm
    +# ... The Law itself is "Ley No 25155", sanctioned on 1999-08-25, enacted
    +# 1999-09-17, and published 1999-09-21.  The official publication is at:
    +# http://www.boletin.jus.gov.ar/BON/Primera/1999/09-Septiembre/21/PDF/BO21-09-99LEG.PDF
    +# Regretfully, you have to subscribe (and pay) for the on-line version....
    +#
    +# (2001-06-12):
    +# the timezone for Argentina will not change next Sunday.
    +# Apparently it will do so on Sunday 24th....
    +# http://ar.clarin.com/diario/2001-06-12/s-03501.htm
    +#
    +# (2001-06-25):
    +# Last Friday (yes, the last working day before the date of the change), the
    +# Senate annulled the 1999 law that introduced the changes later postponed.
    +# http://www.clarin.com.ar/diario/2001-06-22/s-03601.htm
    +# It remains the vote of the Deputies..., but it will be the same....
    +# This kind of things had always been done this way in Argentina.
    +# We are still -03:00 all year round in all of the country.
    +#
    +# From Steffen Thorsen (2007-12-21):
    +# A user (Leonardo Chaim) reported that Argentina will adopt DST....
    +# all of the country (all Zone-entries) are affected.  News reports like
    +# http://www.lanacion.com.ar/opinion/nota.asp?nota_id=973037 indicate
    +# that Argentina will use DST next year as well, from October to
    +# March, although exact rules are not given.
    +#
    +# From Jesper Norgaard Welen (2007-12-26)
    +# The last hurdle of Argentina DST is over, the proposal was approved in
    +# the lower chamber too (Deputados) with a vote 192 for and 2 against.
    +# By the way thanks to Mariano Absatz and Daniel Mario Vega for the link to
    +# the original scanned proposal, where the dates and the zero hours are
    +# clear and unambiguous...This is the article about final approval:
    +# 
    +# http://www.lanacion.com.ar/politica/nota.asp?nota_id=973996
    +# 
    +#
    +# From Paul Eggert (2007-12-22):
    +# For dates after mid-2008, the following rules are my guesses and
    +# are quite possibly wrong, but are more likely than no DST at all.
    +
    +# From Alexander Krivenyshev (2008-09-05):
    +# As per message from Carlos Alberto Fonseca Arauz (Nicaragua),
    +# Argentina will start DST on Sunday October 19, 2008.
    +#
    +# 
    +# http://www.worldtimezone.com/dst_news/dst_news_argentina03.html
    +# 
    +# OR
    +# 
    +# http://www.impulsobaires.com.ar/nota.php?id=57832 (in spanish)
    +# 
    +
    +# From Rodrigo Severo (2008-10-06):
    +# Here is some info available at a Gentoo bug related to TZ on Argentina's DST:
    +# ...
    +# ------- Comment #1 from [jmdocile]  2008-10-06 16:28 0000 -------
    +# Hi, there is a problem with timezone-data-2008e and maybe with
    +# timezone-data-2008f
    +# Argentinian law [Number] 25.155 is no longer valid.
    +# 
    +# http://www.infoleg.gov.ar/infolegInternet/anexos/60000-64999/60036/norma.htm
    +# 
    +# The new one is law [Number] 26.350
    +# 
    +# http://www.infoleg.gov.ar/infolegInternet/anexos/135000-139999/136191/norma.htm
    +# 
    +# So there is no summer time in Argentina for now.
    +
    +# From Mariano Absatz (2008-10-20):
    +# Decree 1693/2008 applies Law 26.350 for the summer 2008/2009 establishing DST in Argentina
    +# From 2008-10-19 until 2009-03-15
    +# 
    +# http://www.boletinoficial.gov.ar/Bora.Portal/CustomControls/PdfContent.aspx?fp=16102008&pi=3&pf=4&s=0&sec=01
    +# 
    +#
    +# Decree 1705/2008 excepting 12 Provinces from applying DST in the summer 2008/2009:
    +# Catamarca, La Rioja, Mendoza, Salta, San Juan, San Luis, La Pampa, Neuquen, Rio Negro, Chubut, Santa Cruz
    +# and Tierra del Fuego
    +# 
    +# http://www.boletinoficial.gov.ar/Bora.Portal/CustomControls/PdfContent.aspx?fp=17102008&pi=1&pf=1&s=0&sec=01
    +# 
    +#
    +# Press release 235 dated Saturday October 18th, from the Government of the Province of Jujuy saying
    +# it will not apply DST either (even when it was not included in Decree 1705/2008)
    +# 
    +# http://www.jujuy.gov.ar/index2/partes_prensa/18_10_08/235-181008.doc
    +# 
    +
    +# From fullinet (2009-10-18):
    +# As announced in
    +# 
    +# http://www.argentina.gob.ar/argentina/portal/paginas.dhtml?pagina=356
    +# 
    +# (an official .gob.ar) under title: "Sin Cambio de Hora" (english: "No hour change")
    +#
    +# "Por el momento, el Gobierno Nacional resolvio no modificar la hora
    +# oficial, decision que estaba en estudio para su implementacion el
    +# domingo 18 de octubre. Desde el Ministerio de Planificacion se anuncio
    +# que la Argentina hoy, en estas condiciones meteorologicas, no necesita
    +# la modificacion del huso horario, ya que 2009 nos encuentra con
    +# crecimiento en la produccion y distribucion energetica."
    +
    +Rule	Arg	2007	only	-	Dec	30	0:00	1:00	S
    +Rule	Arg	2008	2009	-	Mar	Sun>=15	0:00	0	-
    +Rule	Arg	2008	only	-	Oct	Sun>=15	0:00	1:00	S
    +
    +# From Mariano Absatz (2004-05-21):
    +# Today it was officially published that the Province of Mendoza is changing
    +# its timezone this winter... starting tomorrow night....
    +# http://www.gobernac.mendoza.gov.ar/boletin/pdf/20040521-27158-normas.pdf
    +# From Paul Eggert (2004-05-24):
    +# It's Law No. 7,210.  This change is due to a public power emergency, so for
    +# now we'll assume it's for this year only.
    +#
    +# From Paul Eggert (2006-03-22):
    +# 
    +# Hora de verano para la Republica Argentina (2003-06-08)
    +#  says that standard time in Argentina from 1894-10-31
    +# to 1920-05-01 was -4:16:48.25.  Go with this more-precise value
    +# over Shanks & Pottenger.
    +#
    +# From Mariano Absatz (2004-06-05):
    +# These media articles from a major newspaper mostly cover the current state:
    +# http://www.lanacion.com.ar/04/05/27/de_604825.asp
    +# http://www.lanacion.com.ar/04/05/28/de_605203.asp
    +#
    +# The following eight (8) provinces pulled clocks back to UTC-04:00 at
    +# midnight Monday May 31st. (that is, the night between 05/31 and 06/01).
    +# Apparently, all nine provinces would go back to UTC-03:00 at the same
    +# time in October 17th.
    +#
    +# Catamarca, Chubut, La Rioja, San Juan, San Luis, Santa Cruz,
    +# Tierra del Fuego, Tucuman.
    +#
    +# From Mariano Absatz (2004-06-14):
    +# ... this weekend, the Province of Tucuman decided it'd go back to UTC-03:00
    +# yesterday midnight (that is, at 24:00 Saturday 12th), since the people's
    +# annoyance with the change is much higher than the power savings obtained....
    +#
    +# From Gwillim Law (2004-06-14):
    +# http://www.lanacion.com.ar/04/06/10/de_609078.asp ...
    +#     "The time change in Tierra del Fuego was a conflicted decision from
    +#   the start.  The government had decreed that the measure would take
    +#   effect on June 1, but a normative error forced the new time to begin
    +#   three days earlier, from a Saturday to a Sunday....
    +# Our understanding was that the change was originally scheduled to take place
    +# on June 1 at 00:00 in Chubut, Santa Cruz, Tierra del Fuego (and some other
    +# provinces).  Sunday was May 30, only two days earlier.  So the article
    +# contains a contradiction.  I would give more credence to the Saturday/Sunday
    +# date than the "three days earlier" phrase, and conclude that Tierra del
    +# Fuego set its clocks back at 2004-05-30 00:00.
    +#
    +# From Steffen Thorsen (2004-10-05):
    +# The previous law 7210 which changed the province of Mendoza's time zone
    +# back in May have been modified slightly in a new law 7277, which set the
    +# new end date to 2004-09-26 (original date was 2004-10-17).
    +# http://www.gobernac.mendoza.gov.ar/boletin/pdf/20040924-27244-normas.pdf
    +#
    +# From Mariano Absatz (2004-10-05):
    +# San Juan changed from UTC-03:00 to UTC-04:00 at midnight between
    +# Sunday, May 30th and Monday, May 31st.  It changed back to UTC-03:00
    +# at midnight between Saturday, July 24th and Sunday, July 25th....
    +# http://www.sanjuan.gov.ar/prensa/archivo/000329.html
    +# http://www.sanjuan.gov.ar/prensa/archivo/000426.html
    +# http://www.sanjuan.gov.ar/prensa/archivo/000441.html
    +
    +# From Alex Krivenyshev (2008-01-17):
    +# Here are articles that Argentina Province San Luis is planning to end DST
    +# as earlier as upcoming Monday January 21, 2008 or February 2008:
    +#
    +# Provincia argentina retrasa reloj y marca diferencia con resto del pais
    +# (Argentine Province delayed clock and mark difference with the rest of the
    +# country)
    +# 
    +# http://cl.invertia.com/noticias/noticia.aspx?idNoticia=200801171849_EFE_ET4373&idtel
    +# 
    +#
    +# Es inminente que en San Luis atrasen una hora los relojes
    +# (It is imminent in San Luis clocks one hour delay)
    +# 
    +# http://www.lagaceta.com.ar/vernotae.asp?id_nota=253414
    +# 
    +#
    +# 
    +# http://www.worldtimezone.net/dst_news/dst_news_argentina02.html
    +# 
    +
    +# From Jesper Norgaard Welen (2008-01-18):
    +# The page of the San Luis provincial government
    +# 
    +# http://www.sanluis.gov.ar/notas.asp?idCanal=0&id=22812
    +# 
    +# confirms what Alex Krivenyshev has earlier sent to the tz
    +# emailing list about that San Luis plans to return to standard
    +# time much earlier than the rest of the country. It also
    +# confirms that upon request the provinces San Juan and Mendoza
    +# refused to follow San Luis in this change.
    +#
    +# The change is supposed to take place Monday the 21.st at 0:00
    +# hours. As far as I understand it if this goes ahead, we need
    +# a new timezone for San Luis (although there are also documented
    +# independent changes in the southamerica file of San Luis in
    +# 1990 and 1991 which has not been confirmed).
    +
    +# From Jesper Norgaard Welen (2008-01-25):
    +# Unfortunately the below page has become defunct, about the San Luis
    +# time change. Perhaps because it now is part of a group of pages "Most
    +# important pages of 2008."
    +#
    +# You can use
    +# 
    +# http://www.sanluis.gov.ar/notas.asp?idCanal=8141&id=22834
    +# 
    +# instead it seems. Or use "Buscador" from the main page of the San Luis
    +# government, and fill in "huso" and click OK, and you will get 3 pages
    +# from which the first one is identical to the above.
    +
    +# From Mariano Absatz (2008-01-28):
    +# I can confirm that the Province of San Luis (and so far only that
    +# province) decided to go back to UTC-3 effective midnight Jan 20th 2008
    +# (that is, Monday 21st at 0:00 is the time the clocks were delayed back
    +# 1 hour), and they intend to keep UTC-3 as their timezone all year round
    +# (that is, unless they change their mind any minute now).
    +#
    +# So we'll have to add yet another city to 'southamerica' (I think San
    +# Luis city is the mos populated city in the Province, so it'd be
    +# America/Argentina/San_Luis... of course I can't remember if San Luis's
    +# history of particular changes goes along with Mendoza or San Juan :-(
    +# (I only remember not being able to collect hard facts about San Luis
    +# back in 2004, when these provinces changed to UTC-4 for a few days, I
    +# mailed them personally and never got an answer).
    +
    +# From Paul Eggert (2008-06-30):
    +# Unless otherwise specified, data are from Shanks & Pottenger through 1992,
    +# from the IATA otherwise.  As noted below, Shanks & Pottenger say that
    +# America/Cordoba split into 6 subregions during 1991/1992, one of which
    +# was America/San_Luis, but we haven't verified this yet so for now we'll
    +# keep America/Cordoba a single region rather than splitting it into the
    +# other 5 subregions.
    +
    +# From Mariano Absatz (2009-03-13):
    +# Yesterday (with our usual 2-day notice) the Province of San Luis
    +# decided that next Sunday instead of "staying" @utc-03:00 they will go
    +# to utc-04:00 until the second Saturday in October...
    +#
    +# The press release is at
    +# 
    +# http://www.sanluis.gov.ar/SL/Paginas/NoticiaDetalle.asp?TemaId=1&InfoPrensaId=3102
    +# 
    +# (I couldn't find the decree, but
    +# 
    +# www.sanluis.gov.ar
    +# 
    +# is the official page for the Province Government).
    +#
    +# There's also a note in only one of the major national papers (La Nacin) at
    +# 
    +# http://www.lanacion.com.ar/nota.asp?nota_id=1107912
    +# 
    +#
    +# The press release says:
    +#  (...) anunci que el prximo domingo a las 00:00 los puntanos debern
    +# atrasar una hora sus relojes.
    +#
    +# A partir de entonces, San Luis establecer el huso horario propio de
    +# la Provincia. De esta manera, durante el periodo del calendario anual
    +# 2009, el cambio horario quedar comprendido entre las 00:00 del tercer
    +# domingo de marzo y las 24:00 del segundo sbado de octubre.
    +# Quick&dirty translation
    +# (...) announced that next Sunday, at 00:00, Puntanos (the San Luis
    +# inhabitants) will have to turn back one hour their clocks
    +#
    +# Since then, San Luis will establish its own Province timezone. Thus,
    +# during 2009, this timezone change will run from 00:00 the third Sunday
    +# in March until 24:00 of the second Saturday in October.
    +
    +# From Mariano Absatz (2009-10-16):
    +# ...the Province of San Luis is a case in itself.
    +#
    +# The Law at
    +# 
    +# is ambiguous because establishes a calendar from the 2nd Sunday in
    +# October at 0:00 thru the 2nd Saturday in March at 24:00 and the
    +# complement of that starting on the 2nd Sunday of March at 0:00 and
    +# ending on the 2nd Saturday of March at 24:00.
    +#
    +# This clearly breaks every time the 1st of March or October is a Sunday.
    +#
    +# IMHO, the "spirit of the Law" is to make the changes at 0:00 on the 2nd
    +# Sunday of October and March.
    +#
    +# The problem is that the changes in the rest of the Provinces that did
    +# change in 2007/2008, were made according to the Federal Law and Decrees
    +# that did so on the 3rd Sunday of October and March.
    +#
    +# In fact, San Luis actually switched from UTC-4 to UTC-3 last Sunday
    +# (October 11th) at 0:00.
    +#
    +# So I guess a new set of rules, besides "Arg", must be made and the last
    +# America/Argentina/San_Luis entries should change to use these...
    +#
    +# I'm enclosing a patch that does what I say... regretfully, the San Luis
    +# timezone must be called "WART/WARST" even when most of the time (like,
    +# right now) WARST == ART... that is, since last Sunday, all the country
    +# is using UTC-3, but in my patch, San Luis calls it "WARST" and the rest
    +# of the country calls it "ART".
    +# ...
    +
    +# From Alexander Krivenyshev (2010-04-09):
    +# According to news reports from El Diario de la Republica Province San
    +# Luis, Argentina (standard time UTC-04) will keep Daylight Saving Time
    +# after April 11, 2010--will continue to have same time as rest of
    +# Argentina (UTC-3) (no DST).
    +#
    +# Confirmaron la prórroga del huso horario de verano (Spanish)
    +# 
    +# http://www.eldiariodelarepublica.com/index.php?option=com_content&task=view&id=29383&Itemid=9
    +# 
    +# or (some English translation):
    +# 
    +# http://www.worldtimezone.com/dst_news/dst_news_argentina08.html
    +# 
    +
    +# From Mariano Absatz (2010-04-12):
    +# yes...I can confirm this...and given that San Luis keeps calling
    +# UTC-03:00 "summer time", we should't just let San Luis go back to "Arg"
    +# rules...San Luis is still using "Western ARgentina Time" and it got
    +# stuck on Summer daylight savings time even though the summer is over.
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +#
    +# Buenos Aires (BA), Capital Federal (CF),
    +Zone America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 Oct 31
    +			-4:16:48 -	CMT	1920 May # Cordoba Mean Time
    +			-4:00	-	ART	1930 Dec
    +			-4:00	Arg	AR%sT	1969 Oct  5
    +			-3:00	Arg	AR%sT	1999 Oct  3
    +			-4:00	Arg	AR%sT	2000 Mar  3
    +			-3:00	Arg	AR%sT
    +#
    +# Cordoba (CB), Santa Fe (SF), Entre Rios (ER), Corrientes (CN), Misiones (MN),
    +# Chaco (CC), Formosa (FM), Santiago del Estero (SE)
    +#
    +# Shanks & Pottenger also make the following claims, which we haven't verified:
    +# - Formosa switched to -3:00 on 1991-01-07.
    +# - Misiones switched to -3:00 on 1990-12-29.
    +# - Chaco switched to -3:00 on 1991-01-04.
    +# - Santiago del Estero switched to -4:00 on 1991-04-01,
    +#   then to -3:00 on 1991-04-26.
    +#
    +Zone America/Argentina/Cordoba -4:16:48 - LMT	1894 Oct 31
    +			-4:16:48 -	CMT	1920 May
    +			-4:00	-	ART	1930 Dec
    +			-4:00	Arg	AR%sT	1969 Oct  5
    +			-3:00	Arg	AR%sT	1991 Mar  3
    +			-4:00	-	WART	1991 Oct 20
    +			-3:00	Arg	AR%sT	1999 Oct  3
    +			-4:00	Arg	AR%sT	2000 Mar  3
    +			-3:00	Arg	AR%sT
    +#
    +# Salta (SA), La Pampa (LP), Neuquen (NQ), Rio Negro (RN)
    +Zone America/Argentina/Salta -4:21:40 - LMT	1894 Oct 31
    +			-4:16:48 -	CMT	1920 May
    +			-4:00	-	ART	1930 Dec
    +			-4:00	Arg	AR%sT	1969 Oct  5
    +			-3:00	Arg	AR%sT	1991 Mar  3
    +			-4:00	-	WART	1991 Oct 20
    +			-3:00	Arg	AR%sT	1999 Oct  3
    +			-4:00	Arg	AR%sT	2000 Mar  3
    +			-3:00	Arg	AR%sT	2008 Oct 18
    +			-3:00	-	ART
    +#
    +# Tucuman (TM)
    +Zone America/Argentina/Tucuman -4:20:52 - LMT	1894 Oct 31
    +			-4:16:48 -	CMT	1920 May
    +			-4:00	-	ART	1930 Dec
    +			-4:00	Arg	AR%sT	1969 Oct  5
    +			-3:00	Arg	AR%sT	1991 Mar  3
    +			-4:00	-	WART	1991 Oct 20
    +			-3:00	Arg	AR%sT	1999 Oct  3
    +			-4:00	Arg	AR%sT	2000 Mar  3
    +			-3:00	-	ART	2004 Jun  1
    +			-4:00	-	WART	2004 Jun 13
    +			-3:00	Arg	AR%sT
    +#
    +# La Rioja (LR)
    +Zone America/Argentina/La_Rioja -4:27:24 - LMT	1894 Oct 31
    +			-4:16:48 -	CMT	1920 May
    +			-4:00	-	ART	1930 Dec
    +			-4:00	Arg	AR%sT	1969 Oct  5
    +			-3:00	Arg	AR%sT	1991 Mar  1
    +			-4:00	-	WART	1991 May  7
    +			-3:00	Arg	AR%sT	1999 Oct  3
    +			-4:00	Arg	AR%sT	2000 Mar  3
    +			-3:00	-	ART	2004 Jun  1
    +			-4:00	-	WART	2004 Jun 20
    +			-3:00	Arg	AR%sT	2008 Oct 18
    +			-3:00	-	ART
    +#
    +# San Juan (SJ)
    +Zone America/Argentina/San_Juan -4:34:04 - LMT	1894 Oct 31
    +			-4:16:48 -	CMT	1920 May
    +			-4:00	-	ART	1930 Dec
    +			-4:00	Arg	AR%sT	1969 Oct  5
    +			-3:00	Arg	AR%sT	1991 Mar  1
    +			-4:00	-	WART	1991 May  7
    +			-3:00	Arg	AR%sT	1999 Oct  3
    +			-4:00	Arg	AR%sT	2000 Mar  3
    +			-3:00	-	ART	2004 May 31
    +			-4:00	-	WART	2004 Jul 25
    +			-3:00	Arg	AR%sT	2008 Oct 18
    +			-3:00	-	ART
    +#
    +# Jujuy (JY)
    +Zone America/Argentina/Jujuy -4:21:12 -	LMT	1894 Oct 31
    +			-4:16:48 -	CMT	1920 May
    +			-4:00	-	ART	1930 Dec
    +			-4:00	Arg	AR%sT	1969 Oct  5
    +			-3:00	Arg	AR%sT	1990 Mar  4
    +			-4:00	-	WART	1990 Oct 28
    +			-4:00	1:00	WARST	1991 Mar 17
    +			-4:00	-	WART	1991 Oct  6
    +			-3:00	1:00	ARST	1992
    +			-3:00	Arg	AR%sT	1999 Oct  3
    +			-4:00	Arg	AR%sT	2000 Mar  3
    +			-3:00	Arg	AR%sT	2008 Oct 18
    +			-3:00	-	ART
    +#
    +# Catamarca (CT), Chubut (CH)
    +Zone America/Argentina/Catamarca -4:23:08 - LMT	1894 Oct 31
    +			-4:16:48 -	CMT	1920 May
    +			-4:00	-	ART	1930 Dec
    +			-4:00	Arg	AR%sT	1969 Oct  5
    +			-3:00	Arg	AR%sT	1991 Mar  3
    +			-4:00	-	WART	1991 Oct 20
    +			-3:00	Arg	AR%sT	1999 Oct  3
    +			-4:00	Arg	AR%sT	2000 Mar  3
    +			-3:00	-	ART	2004 Jun  1
    +			-4:00	-	WART	2004 Jun 20
    +			-3:00	Arg	AR%sT	2008 Oct 18
    +			-3:00	-	ART
    +#
    +# Mendoza (MZ)
    +Zone America/Argentina/Mendoza -4:35:16 - LMT	1894 Oct 31
    +			-4:16:48 -	CMT	1920 May
    +			-4:00	-	ART	1930 Dec
    +			-4:00	Arg	AR%sT	1969 Oct  5
    +			-3:00	Arg	AR%sT	1990 Mar  4
    +			-4:00	-	WART	1990 Oct 15
    +			-4:00	1:00	WARST	1991 Mar  1
    +			-4:00	-	WART	1991 Oct 15
    +			-4:00	1:00	WARST	1992 Mar  1
    +			-4:00	-	WART	1992 Oct 18
    +			-3:00	Arg	AR%sT	1999 Oct  3
    +			-4:00	Arg	AR%sT	2000 Mar  3
    +			-3:00	-	ART	2004 May 23
    +			-4:00	-	WART	2004 Sep 26
    +			-3:00	Arg	AR%sT	2008 Oct 18
    +			-3:00	-	ART
    +#
    +# San Luis (SL)
    +
    +Rule	SanLuis	2008	2009	-	Mar	Sun>=8	0:00	0	-
    +Rule	SanLuis	2007	2009	-	Oct	Sun>=8	0:00	1:00	S
    +
    +Zone America/Argentina/San_Luis -4:25:24 - LMT	1894 Oct 31
    +			-4:16:48 -	CMT	1920 May
    +			-4:00	-	ART	1930 Dec
    +			-4:00	Arg	AR%sT	1969 Oct  5
    +			-3:00	Arg	AR%sT	1990
    +			-3:00	1:00	ARST	1990 Mar 14
    +			-4:00	-	WART	1990 Oct 15
    +			-4:00	1:00	WARST	1991 Mar  1
    +			-4:00	-	WART	1991 Jun  1
    +			-3:00	-	ART	1999 Oct  3
    +			-4:00	1:00	WARST	2000 Mar  3
    +			-3:00	-	ART	2004 May 31
    +			-4:00	-	WART	2004 Jul 25
    +			-3:00	Arg	AR%sT	2008 Jan 21
    +			-4:00	SanLuis	WAR%sT
    +#
    +# Santa Cruz (SC)
    +Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31
    +			-4:16:48 -	CMT	1920 May # Cordoba Mean Time
    +			-4:00	-	ART	1930 Dec
    +			-4:00	Arg	AR%sT	1969 Oct  5
    +			-3:00	Arg	AR%sT	1999 Oct  3
    +			-4:00	Arg	AR%sT	2000 Mar  3
    +			-3:00	-	ART	2004 Jun  1
    +			-4:00	-	WART	2004 Jun 20
    +			-3:00	Arg	AR%sT	2008 Oct 18
    +			-3:00	-	ART
    +#
    +# Tierra del Fuego, Antartida e Islas del Atlantico Sur (TF)
    +Zone America/Argentina/Ushuaia -4:33:12 - LMT 1894 Oct 31
    +			-4:16:48 -	CMT	1920 May # Cordoba Mean Time
    +			-4:00	-	ART	1930 Dec
    +			-4:00	Arg	AR%sT	1969 Oct  5
    +			-3:00	Arg	AR%sT	1999 Oct  3
    +			-4:00	Arg	AR%sT	2000 Mar  3
    +			-3:00	-	ART	2004 May 30
    +			-4:00	-	WART	2004 Jun 20
    +			-3:00	Arg	AR%sT	2008 Oct 18
    +			-3:00	-	ART
    +
    +# Aruba
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	America/Aruba	-4:40:24 -	LMT	1912 Feb 12	# Oranjestad
    +			-4:30	-	ANT	1965 # Netherlands Antilles Time
    +			-4:00	-	AST
    +
    +# Bolivia
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	America/La_Paz	-4:32:36 -	LMT	1890
    +			-4:32:36 -	CMT	1931 Oct 15 # Calamarca MT
    +			-4:32:36 1:00	BOST	1932 Mar 21 # Bolivia ST
    +			-4:00	-	BOT	# Bolivia Time
    +
    +# Brazil
    +
    +# From Paul Eggert (1993-11-18):
    +# The mayor of Rio recently attempted to change the time zone rules
    +# just in his city, in order to leave more summer time for the tourist trade.
    +# The rule change lasted only part of the day;
    +# the federal government refused to follow the city's rules, and business
    +# was in a chaos, so the mayor backed down that afternoon.
    +
    +# From IATA SSIM (1996-02):
    +# _Only_ the following states in BR1 observe DST: Rio Grande do Sul (RS),
    +# Santa Catarina (SC), Parana (PR), Sao Paulo (SP), Rio de Janeiro (RJ),
    +# Espirito Santo (ES), Minas Gerais (MG), Bahia (BA), Goias (GO),
    +# Distrito Federal (DF), Tocantins (TO), Sergipe [SE] and Alagoas [AL].
    +# [The last three states are new to this issue of the IATA SSIM.]
    +
    +# From Gwillim Law (1996-10-07):
    +# Geography, history (Tocantins was part of Goias until 1989), and other
    +# sources of time zone information lead me to believe that AL, SE, and TO were
    +# always in BR1, and so the only change was whether or not they observed DST....
    +# The earliest issue of the SSIM I have is 2/91.  Each issue from then until
    +# 9/95 says that DST is observed only in the ten states I quoted from 9/95,
    +# along with Mato Grosso (MT) and Mato Grosso do Sul (MS), which are in BR2
    +# (UTC-4)....  The other two time zones given for Brazil are BR3, which is
    +# UTC-5, no DST, and applies only in the state of Acre (AC); and BR4, which is
    +# UTC-2, and applies to Fernando de Noronha (formerly FN, but I believe it's
    +# become part of the state of Pernambuco).  The boundary between BR1 and BR2
    +# has never been clearly stated.  They've simply been called East and West.
    +# However, some conclusions can be drawn from another IATA manual: the Airline
    +# Coding Directory, which lists close to 400 airports in Brazil.  For each
    +# airport it gives a time zone which is coded to the SSIM.  From that
    +# information, I'm led to conclude that the states of Amapa (AP), Ceara (CE),
    +# Maranhao (MA), Paraiba (PR), Pernambuco (PE), Piaui (PI), and Rio Grande do
    +# Norte (RN), and the eastern part of Para (PA) are all in BR1 without DST.
    +
    +# From Marcos Tadeu (1998-09-27):
    +# 
    +# Brazilian official page
    +# 
    +
    +# From Jesper Norgaard (2000-11-03):
    +# [For an official list of which regions in Brazil use which time zones, see:]
    +# http://pcdsh01.on.br/Fusbr.htm
    +# http://pcdsh01.on.br/Fusbrhv.htm
    +
    +# From Celso Doria via David Madeo (2002-10-09):
    +# The reason for the delay this year has to do with elections in Brazil.
    +#
    +# Unlike in the United States, elections in Brazil are 100% computerized and
    +# the results are known almost immediately.  Yesterday, it was the first
    +# round of the elections when 115 million Brazilians voted for President,
    +# Governor, Senators, Federal Deputies, and State Deputies.  Nobody is
    +# counting (or re-counting) votes anymore and we know there will be a second
    +# round for the Presidency and also for some Governors.  The 2nd round will
    +# take place on October 27th.
    +#
    +# The reason why the DST will only begin November 3rd is that the thousands
    +# of electoral machines used cannot have their time changed, and since the
    +# Constitution says the elections must begin at 8:00 AM and end at 5:00 PM,
    +# the Government decided to postpone DST, instead of changing the Constitution
    +# (maybe, for the next elections, it will be possible to change the clock)...
    +
    +# From Rodrigo Severo (2004-10-04):
    +# It's just the biannual change made necessary by the much hyped, supposedly
    +# modern Brazilian eletronic voting machines which, apparently, can't deal
    +# with a time change between the first and the second rounds of the elections.
    +
    +# From Steffen Thorsen (2007-09-20):
    +# Brazil will start DST on 2007-10-14 00:00 and end on 2008-02-17 00:00:
    +# http://www.mme.gov.br/site/news/detail.do;jsessionid=BBA06811AFCAAC28F0285210913513DA?newsId=13975
    +
    +# From Paul Schulze (2008-06-24):
    +# ...by law number 11.662 of April 24, 2008 (published in the "Diario
    +# Oficial da Uniao"...) in Brazil there are changes in the timezones,
    +# effective today (00:00am at June 24, 2008) as follows:
    +#
    +# a) The timezone UTC+5 is e[x]tinguished, with all the Acre state and the
    +# part of the Amazonas state that had this timezone now being put to the
    +# timezone UTC+4
    +# b) The whole Para state now is put at timezone UTC+3, instead of just
    +# part of it, as was before.
    +#
    +# This change follows a proposal of senator Tiao Viana of Acre state, that
    +# proposed it due to concerns about open television channels displaying
    +# programs inappropriate to youths in the states that had the timezone
    +# UTC+5 too early in the night. In the occasion, some more corrections
    +# were proposed, trying to unify the timezones of any given state. This
    +# change modifies timezone rules defined in decree 2.784 of 18 June,
    +# 1913.
    +
    +# From Rodrigo Severo (2008-06-24):
    +# Just correcting the URL:
    +# 
    +# https://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=do&secao=1&pagina=1&data=25/04/2008
    +# 
    +#
    +# As a result of the above Decree I believe the America/Rio_Branco
    +# timezone shall be modified from UTC-5 to UTC-4 and a new timezone shall
    +# be created to represent the...west side of the Para State. I
    +# suggest this new timezone be called Santarem as the most
    +# important/populated city in the affected area.
    +#
    +# This new timezone would be the same as the Rio_Branco timezone up to
    +# the 2008/06/24 change which would be to UTC-3 instead of UTC-4.
    +
    +# From Alex Krivenyshev (2008-06-24):
    +# This is a quick reference page for New and Old Brazil Time Zones map.
    +# 
    +# http://www.worldtimezone.com/brazil-time-new-old.php
    +# 
    +#
    +# - 4 time zones replaced by 3 time zones-eliminating time zone UTC- 05
    +# (state Acre and the part of the Amazonas will be UTC/GMT- 04) - western
    +# part of Par state is moving to one timezone UTC- 03 (from UTC -04).
    +
    +# From Paul Eggert (2002-10-10):
    +# The official decrees referenced below are mostly taken from
    +# 
    +# Decretos sobre o Horario de Verao no Brasil
    +# .
    +
    +# From Steffen Thorsen (2008-08-29):
    +# As announced by the government and many newspapers in Brazil late
    +# yesterday, Brazil will start DST on 2008-10-19 (need to change rule) and
    +# it will end on 2009-02-15 (current rule for Brazil is fine). Based on
    +# past years experience with the elections, there was a good chance that
    +# the start was postponed to November, but it did not happen this year.
    +#
    +# It has not yet been posted to http://pcdsh01.on.br/DecHV.html
    +#
    +# An official page about it:
    +# 
    +# http://www.mme.gov.br/site/news/detail.do?newsId=16722
    +# 
    +# Note that this link does not always work directly, but must be accessed
    +# by going to
    +# 
    +# http://www.mme.gov.br/first
    +# 
    +#
    +# One example link that works directly:
    +# 
    +# http://jornale.com.br/index.php?option=com_content&task=view&id=13530&Itemid=54
    +# (Portuguese)
    +# 
    +#
    +# We have a written a short article about it as well:
    +# 
    +# http://www.timeanddate.com/news/time/brazil-dst-2008-2009.html
    +# 
    +#
    +# From Alexander Krivenyshev (2011-10-04):
    +# State Bahia will return to Daylight savings time this year after 8 years off.
    +# The announcement was made by Governor Jaques Wagner in an interview to a
    +# television station in Salvador.
    +
    +# In Portuguese:
    +# 
    +# http://g1.globo.com/bahia/noticia/2011/10/governador-jaques-wagner-confirma-horario-de-verao-na-bahia.html
    +#  and
    +# 
    +# http://noticias.terra.com.br/brasil/noticias/0,,OI5390887-EI8139,00-Bahia+volta+a+ter+horario+de+verao+apos+oito+anos.html
    +# 
    +
    +# From Guilherme Bernardes Rodrigues (2011-10-07):
    +# There is news in the media, however there is still no decree about it.
    +# I just send a e-mail to Zulmira Brando at
    +# http://pcdsh01.on.br/ the
    +# oficial agency about time in Brazil, and she confirmed that the old rule is
    +# still in force.
    +
    +# From Guilherme Bernardes Rodrigues (2011-10-14)
    +# It's official, the President signed a decree that includes Bahia in summer
    +# time.
    +#	 [ and in a second message (same day): ]
    +# I found the decree.
    +#
    +# DECRETO No- 7.584, DE 13 DE OUTUBRO DE 2011
    +# Link :
    +# 
    +# http://www.in.gov.br/visualiza/index.jsp?data=13/10/2011&jornal=1000&pagina=6&totalArquivos=6
    +# 
    +
    +# From Kelley Cook (2012-10-16):
    +# The governor of state of Bahia in Brazil announced on Thursday that
    +# due to public pressure, he is reversing the DST policy they implemented
    +# last year and will not be going to Summer Time on October 21st....
    +# http://www.correio24horas.com.br/r/artigo/apos-pressoes-wagner-suspende-horario-de-verao-na-bahia
    +
    +# From Rodrigo Severo (2012-10-16):
    +# Tocantins state will have DST.
    +# http://noticias.terra.com.br/brasil/noticias/0,,OI6232536-EI306.html
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +# Decree 20,466 (1931-10-01)
    +# Decree 21,896 (1932-01-10)
    +Rule	Brazil	1931	only	-	Oct	 3	11:00	1:00	S
    +Rule	Brazil	1932	1933	-	Apr	 1	 0:00	0	-
    +Rule	Brazil	1932	only	-	Oct	 3	 0:00	1:00	S
    +# Decree 23,195 (1933-10-10)
    +# revoked DST.
    +# Decree 27,496 (1949-11-24)
    +# Decree 27,998 (1950-04-13)
    +Rule	Brazil	1949	1952	-	Dec	 1	 0:00	1:00	S
    +Rule	Brazil	1950	only	-	Apr	16	 1:00	0	-
    +Rule	Brazil	1951	1952	-	Apr	 1	 0:00	0	-
    +# Decree 32,308 (1953-02-24)
    +Rule	Brazil	1953	only	-	Mar	 1	 0:00	0	-
    +# Decree 34,724 (1953-11-30)
    +# revoked DST.
    +# Decree 52,700 (1963-10-18)
    +# established DST from 1963-10-23 00:00 to 1964-02-29 00:00
    +# in SP, RJ, GB, MG, ES, due to the prolongation of the drought.
    +# Decree 53,071 (1963-12-03)
    +# extended the above decree to all of the national territory on 12-09.
    +Rule	Brazil	1963	only	-	Dec	 9	 0:00	1:00	S
    +# Decree 53,604 (1964-02-25)
    +# extended summer time by one day to 1964-03-01 00:00 (start of school).
    +Rule	Brazil	1964	only	-	Mar	 1	 0:00	0	-
    +# Decree 55,639 (1965-01-27)
    +Rule	Brazil	1965	only	-	Jan	31	 0:00	1:00	S
    +Rule	Brazil	1965	only	-	Mar	31	 0:00	0	-
    +# Decree 57,303 (1965-11-22)
    +Rule	Brazil	1965	only	-	Dec	 1	 0:00	1:00	S
    +# Decree 57,843 (1966-02-18)
    +Rule	Brazil	1966	1968	-	Mar	 1	 0:00	0	-
    +Rule	Brazil	1966	1967	-	Nov	 1	 0:00	1:00	S
    +# Decree 63,429 (1968-10-15)
    +# revoked DST.
    +# Decree 91,698 (1985-09-27)
    +Rule	Brazil	1985	only	-	Nov	 2	 0:00	1:00	S
    +# Decree 92,310 (1986-01-21)
    +# Decree 92,463 (1986-03-13)
    +Rule	Brazil	1986	only	-	Mar	15	 0:00	0	-
    +# Decree 93,316 (1986-10-01)
    +Rule	Brazil	1986	only	-	Oct	25	 0:00	1:00	S
    +Rule	Brazil	1987	only	-	Feb	14	 0:00	0	-
    +# Decree 94,922 (1987-09-22)
    +Rule	Brazil	1987	only	-	Oct	25	 0:00	1:00	S
    +Rule	Brazil	1988	only	-	Feb	 7	 0:00	0	-
    +# Decree 96,676 (1988-09-12)
    +# except for the states of AC, AM, PA, RR, RO, and AP (then a territory)
    +Rule	Brazil	1988	only	-	Oct	16	 0:00	1:00	S
    +Rule	Brazil	1989	only	-	Jan	29	 0:00	0	-
    +# Decree 98,077 (1989-08-21)
    +# with the same exceptions
    +Rule	Brazil	1989	only	-	Oct	15	 0:00	1:00	S
    +Rule	Brazil	1990	only	-	Feb	11	 0:00	0	-
    +# Decree 99,530 (1990-09-17)
    +# adopted by RS, SC, PR, SP, RJ, ES, MG, GO, MS, DF.
    +# Decree 99,629 (1990-10-19) adds BA, MT.
    +Rule	Brazil	1990	only	-	Oct	21	 0:00	1:00	S
    +Rule	Brazil	1991	only	-	Feb	17	 0:00	0	-
    +# Unnumbered decree (1991-09-25)
    +# adopted by RS, SC, PR, SP, RJ, ES, MG, BA, GO, MT, MS, DF.
    +Rule	Brazil	1991	only	-	Oct	20	 0:00	1:00	S
    +Rule	Brazil	1992	only	-	Feb	 9	 0:00	0	-
    +# Unnumbered decree (1992-10-16)
    +# adopted by same states.
    +Rule	Brazil	1992	only	-	Oct	25	 0:00	1:00	S
    +Rule	Brazil	1993	only	-	Jan	31	 0:00	0	-
    +# Decree 942 (1993-09-28)
    +# adopted by same states, plus AM.
    +# Decree 1,252 (1994-09-22;
    +# web page corrected 2004-01-07) adopted by same states, minus AM.
    +# Decree 1,636 (1995-09-14)
    +# adopted by same states, plus MT and TO.
    +# Decree 1,674 (1995-10-13)
    +# adds AL, SE.
    +Rule	Brazil	1993	1995	-	Oct	Sun>=11	 0:00	1:00	S
    +Rule	Brazil	1994	1995	-	Feb	Sun>=15	 0:00	0	-
    +Rule	Brazil	1996	only	-	Feb	11	 0:00	0	-
    +# Decree 2,000 (1996-09-04)
    +# adopted by same states, minus AL, SE.
    +Rule	Brazil	1996	only	-	Oct	 6	 0:00	1:00	S
    +Rule	Brazil	1997	only	-	Feb	16	 0:00	0	-
    +# From Daniel C. Sobral (1998-02-12):
    +# In 1997, the DS began on October 6. The stated reason was that
    +# because international television networks ignored Brazil's policy on DS,
    +# they bought the wrong times on satellite for coverage of Pope's visit.
    +# This year, the ending date of DS was postponed to March 1
    +# to help dealing with the shortages of electric power.
    +#
    +# Decree 2,317 (1997-09-04), adopted by same states.
    +Rule	Brazil	1997	only	-	Oct	 6	 0:00	1:00	S
    +# Decree 2,495
    +# (1998-02-10)
    +Rule	Brazil	1998	only	-	Mar	 1	 0:00	0	-
    +# Decree 2,780 (1998-09-11)
    +# adopted by the same states as before.
    +Rule	Brazil	1998	only	-	Oct	11	 0:00	1:00	S
    +Rule	Brazil	1999	only	-	Feb	21	 0:00	0	-
    +# Decree 3,150
    +# (1999-08-23) adopted by same states.
    +# Decree 3,188 (1999-09-30)
    +# adds SE, AL, PB, PE, RN, CE, PI, MA and RR.
    +Rule	Brazil	1999	only	-	Oct	 3	 0:00	1:00	S
    +Rule	Brazil	2000	only	-	Feb	27	 0:00	0	-
    +# Decree 3,592 (2000-09-06)
    +# adopted by the same states as before.
    +# Decree 3,630 (2000-10-13)
    +# repeals DST in PE and RR, effective 2000-10-15 00:00.
    +# Decree 3,632 (2000-10-17)
    +# repeals DST in SE, AL, PB, RN, CE, PI and MA, effective 2000-10-22 00:00.
    +# Decree 3,916
    +# (2001-09-13) reestablishes DST in AL, CE, MA, PB, PE, PI, RN, SE.
    +Rule	Brazil	2000	2001	-	Oct	Sun>=8	 0:00	1:00	S
    +Rule	Brazil	2001	2006	-	Feb	Sun>=15	 0:00	0	-
    +# Decree 4,399 (2002-10-01) repeals DST in AL, CE, MA, PB, PE, PI, RN, SE.
    +# 4,399
    +Rule	Brazil	2002	only	-	Nov	 3	 0:00	1:00	S
    +# Decree 4,844 (2003-09-24; corrected 2003-09-26) repeals DST in BA, MT, TO.
    +# 4,844
    +Rule	Brazil	2003	only	-	Oct	19	 0:00	1:00	S
    +# Decree 5,223 (2004-10-01) reestablishes DST in MT.
    +# 5,223
    +Rule	Brazil	2004	only	-	Nov	 2	 0:00	1:00	S
    +# Decree 5,539 (2005-09-19),
    +# adopted by the same states as before.
    +Rule	Brazil	2005	only	-	Oct	16	 0:00	1:00	S
    +# Decree 5,920 (2006-10-03),
    +# adopted by the same states as before.
    +Rule	Brazil	2006	only	-	Nov	 5	 0:00	1:00	S
    +Rule	Brazil	2007	only	-	Feb	25	 0:00	0	-
    +# Decree 6,212 (2007-09-26),
    +# adopted by the same states as before.
    +Rule	Brazil	2007	only	-	Oct	Sun>=8	 0:00	1:00	S
    +# From Frederico A. C. Neves (2008-09-10):
    +# Acording to this decree
    +# 
    +# http://www.planalto.gov.br/ccivil_03/_Ato2007-2010/2008/Decreto/D6558.htm
    +# 
    +# [t]he DST period in Brazil now on will be from the 3rd Oct Sunday to the
    +# 3rd Feb Sunday. There is an exception on the return date when this is
    +# the Carnival Sunday then the return date will be the next Sunday...
    +Rule	Brazil	2008	max	-	Oct	Sun>=15	0:00	1:00	S
    +Rule	Brazil	2008	2011	-	Feb	Sun>=15	0:00	0	-
    +Rule	Brazil	2012	only	-	Feb	Sun>=22	0:00	0	-
    +Rule	Brazil	2013	2014	-	Feb	Sun>=15	0:00	0	-
    +Rule	Brazil	2015	only	-	Feb	Sun>=22	0:00	0	-
    +Rule	Brazil	2016	2022	-	Feb	Sun>=15	0:00	0	-
    +Rule	Brazil	2023	only	-	Feb	Sun>=22	0:00	0	-
    +Rule	Brazil	2024	2025	-	Feb	Sun>=15	0:00	0	-
    +Rule	Brazil	2026	only	-	Feb	Sun>=22	0:00	0	-
    +Rule	Brazil	2027	2033	-	Feb	Sun>=15	0:00	0	-
    +Rule	Brazil	2034	only	-	Feb	Sun>=22	0:00	0	-
    +Rule	Brazil	2035	2036	-	Feb	Sun>=15	0:00	0	-
    +Rule	Brazil	2037	only	-	Feb	Sun>=22	0:00	0	-
    +# From Arthur David Olson (2008-09-29):
    +# The next is wrong in some years but is better than nothing.
    +Rule	Brazil	2038	max	-	Feb	Sun>=15	0:00	0	-
    +
    +# The latest ruleset listed above says that the following states observe DST:
    +# DF, ES, GO, MG, MS, MT, PR, RJ, RS, SC, SP.
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +#
    +# Fernando de Noronha (administratively part of PE)
    +Zone America/Noronha	-2:09:40 -	LMT	1914
    +			-2:00	Brazil	FN%sT	1990 Sep 17
    +			-2:00	-	FNT	1999 Sep 30
    +			-2:00	Brazil	FN%sT	2000 Oct 15
    +			-2:00	-	FNT	2001 Sep 13
    +			-2:00	Brazil	FN%sT	2002 Oct  1
    +			-2:00	-	FNT
    +# Other Atlantic islands have no permanent settlement.
    +# These include Trindade and Martin Vaz (administratively part of ES),
    +# Atol das Rocas (RN), and Penedos de Sao Pedro e Sao Paulo (PE).
    +# Fernando de Noronha was a separate territory from 1942-09-02 to 1989-01-01;
    +# it also included the Penedos.
    +#
    +# Amapa (AP), east Para (PA)
    +# East Para includes Belem, Maraba, Serra Norte, and Sao Felix do Xingu.
    +# The division between east and west Para is the river Xingu.
    +# In the north a very small part from the river Javary (now Jari I guess,
    +# the border with Amapa) to the Amazon, then to the Xingu.
    +Zone America/Belem	-3:13:56 -	LMT	1914
    +			-3:00	Brazil	BR%sT	1988 Sep 12
    +			-3:00	-	BRT
    +#
    +# west Para (PA)
    +# West Para includes Altamira, Oribidos, Prainha, Oriximina, and Santarem.
    +Zone America/Santarem	-3:38:48 -	LMT	1914
    +			-4:00	Brazil	AM%sT	1988 Sep 12
    +			-4:00	-	AMT	2008 Jun 24 00:00
    +			-3:00	-	BRT
    +#
    +# Maranhao (MA), Piaui (PI), Ceara (CE), Rio Grande do Norte (RN),
    +# Paraiba (PB)
    +Zone America/Fortaleza	-2:34:00 -	LMT	1914
    +			-3:00	Brazil	BR%sT	1990 Sep 17
    +			-3:00	-	BRT	1999 Sep 30
    +			-3:00	Brazil	BR%sT	2000 Oct 22
    +			-3:00	-	BRT	2001 Sep 13
    +			-3:00	Brazil	BR%sT	2002 Oct  1
    +			-3:00	-	BRT
    +#
    +# Pernambuco (PE) (except Atlantic islands)
    +Zone America/Recife	-2:19:36 -	LMT	1914
    +			-3:00	Brazil	BR%sT	1990 Sep 17
    +			-3:00	-	BRT	1999 Sep 30
    +			-3:00	Brazil	BR%sT	2000 Oct 15
    +			-3:00	-	BRT	2001 Sep 13
    +			-3:00	Brazil	BR%sT	2002 Oct  1
    +			-3:00	-	BRT
    +#
    +# Tocantins (TO)
    +Zone America/Araguaina	-3:12:48 -	LMT	1914
    +			-3:00	Brazil	BR%sT	1990 Sep 17
    +			-3:00	-	BRT	1995 Sep 14
    +			-3:00	Brazil	BR%sT	2003 Sep 24
    +			-3:00	-	BRT	2012 Oct 21
    +			-3:00	Brazil	BR%sT
    +#
    +# Alagoas (AL), Sergipe (SE)
    +Zone America/Maceio	-2:22:52 -	LMT	1914
    +			-3:00	Brazil	BR%sT	1990 Sep 17
    +			-3:00	-	BRT	1995 Oct 13
    +			-3:00	Brazil	BR%sT	1996 Sep  4
    +			-3:00	-	BRT	1999 Sep 30
    +			-3:00	Brazil	BR%sT	2000 Oct 22
    +			-3:00	-	BRT	2001 Sep 13
    +			-3:00	Brazil	BR%sT	2002 Oct  1
    +			-3:00	-	BRT
    +#
    +# Bahia (BA)
    +# There are too many Salvadors elsewhere, so use America/Bahia instead
    +# of America/Salvador.
    +Zone America/Bahia	-2:34:04 -	LMT	1914
    +			-3:00	Brazil	BR%sT	2003 Sep 24
    +			-3:00	-	BRT	2011 Oct 16
    +			-3:00	Brazil	BR%sT	2012 Oct 21
    +			-3:00	-	BRT
    +#
    +# Goias (GO), Distrito Federal (DF), Minas Gerais (MG),
    +# Espirito Santo (ES), Rio de Janeiro (RJ), Sao Paulo (SP), Parana (PR),
    +# Santa Catarina (SC), Rio Grande do Sul (RS)
    +Zone America/Sao_Paulo	-3:06:28 -	LMT	1914
    +			-3:00	Brazil	BR%sT	1963 Oct 23 00:00
    +			-3:00	1:00	BRST	1964
    +			-3:00	Brazil	BR%sT
    +#
    +# Mato Grosso do Sul (MS)
    +Zone America/Campo_Grande -3:38:28 -	LMT	1914
    +			-4:00	Brazil	AM%sT
    +#
    +# Mato Grosso (MT)
    +Zone America/Cuiaba	-3:44:20 -	LMT	1914
    +			-4:00	Brazil	AM%sT	2003 Sep 24
    +			-4:00	-	AMT	2004 Oct  1
    +			-4:00	Brazil	AM%sT
    +#
    +# Rondonia (RO)
    +Zone America/Porto_Velho -4:15:36 -	LMT	1914
    +			-4:00	Brazil	AM%sT	1988 Sep 12
    +			-4:00	-	AMT
    +#
    +# Roraima (RR)
    +Zone America/Boa_Vista	-4:02:40 -	LMT	1914
    +			-4:00	Brazil	AM%sT	1988 Sep 12
    +			-4:00	-	AMT	1999 Sep 30
    +			-4:00	Brazil	AM%sT	2000 Oct 15
    +			-4:00	-	AMT
    +#
    +# east Amazonas (AM): Boca do Acre, Jutai, Manaus, Floriano Peixoto
    +# The great circle line from Tabatinga to Porto Acre divides
    +# east from west Amazonas.
    +Zone America/Manaus	-4:00:04 -	LMT	1914
    +			-4:00	Brazil	AM%sT	1988 Sep 12
    +			-4:00	-	AMT	1993 Sep 28
    +			-4:00	Brazil	AM%sT	1994 Sep 22
    +			-4:00	-	AMT
    +#
    +# west Amazonas (AM): Atalaia do Norte, Boca do Maoco, Benjamin Constant,
    +#	Eirunepe, Envira, Ipixuna
    +Zone America/Eirunepe	-4:39:28 -	LMT	1914
    +			-5:00	Brazil	AC%sT	1988 Sep 12
    +			-5:00	-	ACT	1993 Sep 28
    +			-5:00	Brazil	AC%sT	1994 Sep 22
    +			-5:00	-	ACT	2008 Jun 24 00:00
    +			-4:00	-	AMT
    +#
    +# Acre (AC)
    +Zone America/Rio_Branco	-4:31:12 -	LMT	1914
    +			-5:00	Brazil	AC%sT	1988 Sep 12
    +			-5:00	-	ACT	2008 Jun 24 00:00
    +			-4:00	-	AMT
    +
    +# Chile
    +
    +# From Eduardo Krell (1995-10-19):
    +# The law says to switch to DST at midnight [24:00] on the second SATURDAY
    +# of October....  The law is the same for March and October.
    +# (1998-09-29):
    +# Because of the drought this year, the government decided to go into
    +# DST earlier (saturday 9/26 at 24:00). This is a one-time change only ...
    +# (unless there's another dry season next year, I guess).
    +
    +# From Julio I. Pacheco Troncoso (1999-03-18):
    +# Because of the same drought, the government decided to end DST later,
    +# on April 3, (one-time change).
    +
    +# From Oscar van Vlijmen (2006-10-08):
    +# http://www.horaoficial.cl/cambio.htm
    +
    +# From Jesper Norgaard Welen (2006-10-08):
    +# I think that there are some obvious mistakes in the suggested link
    +# from Oscar van Vlijmen,... for instance entry 66 says that GMT-4
    +# ended 1990-09-12 while entry 67 only begins GMT-3 at 1990-09-15
    +# (they should have been 1990-09-15 and 1990-09-16 respectively), but
    +# anyhow it clears up some doubts too.
    +
    +# From Paul Eggert (2006-12-27):
    +# The following data for Chile and America/Santiago are from
    +#  (2006-09-20), transcribed by
    +# Jesper Norgaard Welen.  The data for Pacific/Easter are from Shanks
    +# & Pottenger, except with DST transitions after 1932 cloned from
    +# America/Santiago.  The pre-1980 Pacific/Easter data are dubious,
    +# but we have no other source.
    +
    +# From German Poo-Caaman~o (2008-03-03):
    +# Due to drought, Chile extends Daylight Time in three weeks.  This
    +# is one-time change (Saturday 3/29 at 24:00 for America/Santiago
    +# and Saturday 3/29 at 22:00 for Pacific/Easter)
    +# The Supreme Decree is located at
    +# 
    +# http://www.shoa.cl/servicios/supremo316.pdf
    +# 
    +# and the instructions for 2008 are located in:
    +# 
    +# http://www.horaoficial.cl/cambio.htm
    +# .
    +
    +# From Jose Miguel Garrido (2008-03-05):
    +# ...
    +# You could see the announces of the change on
    +# 
    +# http://www.shoa.cl/noticias/2008/04hora/hora.htm
    +# .
    +
    +# From Angel Chiang (2010-03-04):
    +# Subject: DST in Chile exceptionally extended to 3 April due to earthquake
    +# 
    +# http://www.gobiernodechile.cl/viewNoticia.aspx?idArticulo=30098
    +# 
    +# (in Spanish, last paragraph).
    +#
    +# This is breaking news. There should be more information available later.
    +
    +# From Arthur Daivd Olson (2010-03-06):
    +# Angel Chiang's message confirmed by Julio Pacheco; Julio provided a patch.
    +
    +# From Glenn Eychaner (2011-03-02): [geychaner@mac.com]
    +# It appears that the Chilean government has decided to postpone the
    +# change from summer time to winter time again, by three weeks to April
    +# 2nd:
    +# 
    +# http://www.emol.com/noticias/nacional/detalle/detallenoticias.asp?idnoticia=467651
    +# 
    +#
    +# This is not yet reflected in the offical "cambio de hora" site, but
    +# probably will be soon:
    +# 
    +# http://www.horaoficial.cl/cambio.htm
    +# 
    +
    +# From Arthur David Olson (2011-03-02):
    +# The emol.com article mentions a water shortage as the cause of the
    +# postponement, which may mean that it's not a permanent change.
    +
    +# From Glenn Eychaner (2011-03-28):
    +# The article:
    +# 
    +# http://diario.elmercurio.com/2011/03/28/_portada/_portada/noticias/7565897A-CA86-49E6-9E03-660B21A4883E.htm?id=3D{7565897A-CA86-49E6-9E03-660B21A4883E}
    +# 
    +#
    +# In English:
    +# Chile's clocks will go back an hour this year on the 7th of May instead
    +# of this Saturday. They will go forward again the 3rd Saturday in
    +# August, not in October as they have since 1968. This is a pilot plan
    +# which will be reevaluated in 2012.
    +
    +# From Mauricio Parada (2012-02-22), translated by Glenn Eychaner (2012-02-23):
    +# As stated in the website of the Chilean Energy Ministry
    +# http://www.minenergia.cl/ministerio/noticias/generales/gobierno-anuncia-fechas-de-cambio-de.html
    +# The Chilean Government has decided to postpone the entrance into winter time
    +# (to leave DST) from March 11 2012 to April 28th 2012. The decision has not
    +# been yet formalized but it will within the next days.
    +# Quote from the website communication:
    +#
    +# 6. For the year 2012, the dates of entry into winter time will be as follows:
    +# a. Saturday April 28, 2012, clocks should go back 60 minutes; that is, at
    +# 23:59:59, instead of passing to 0:00, the time should be adjusted to be 23:00
    +# of the same day.
    +# b. Saturday, September 1, 2012, clocks should go forward 60 minutes; that is,
    +# at 23:59:59, instead of passing to 0:00, the time should be adjusted to be
    +# 01:00 on September 2.
    +#
    +# Note that...this is yet another "temporary" change that will be reevaluated
    +# AGAIN in 2013.
    +
    +# NOTE: ChileAQ rules for Antarctic bases are stored separately in the
    +# 'antarctica' file.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Chile	1927	1932	-	Sep	 1	0:00	1:00	S
    +Rule	Chile	1928	1932	-	Apr	 1	0:00	0	-
    +Rule	Chile	1942	only	-	Jun	 1	4:00u	0	-
    +Rule	Chile	1942	only	-	Aug	 1	5:00u	1:00	S
    +Rule	Chile	1946	only	-	Jul	15	4:00u	1:00	S
    +Rule	Chile	1946	only	-	Sep	 1	3:00u	0:00	-
    +Rule	Chile	1947	only	-	Apr	 1	4:00u	0	-
    +Rule	Chile	1968	only	-	Nov	 3	4:00u	1:00	S
    +Rule	Chile	1969	only	-	Mar	30	3:00u	0	-
    +Rule	Chile	1969	only	-	Nov	23	4:00u	1:00	S
    +Rule	Chile	1970	only	-	Mar	29	3:00u	0	-
    +Rule	Chile	1971	only	-	Mar	14	3:00u	0	-
    +Rule	Chile	1970	1972	-	Oct	Sun>=9	4:00u	1:00	S
    +Rule	Chile	1972	1986	-	Mar	Sun>=9	3:00u	0	-
    +Rule	Chile	1973	only	-	Sep	30	4:00u	1:00	S
    +Rule	Chile	1974	1987	-	Oct	Sun>=9	4:00u	1:00	S
    +Rule	Chile	1987	only	-	Apr	12	3:00u	0	-
    +Rule	Chile	1988	1989	-	Mar	Sun>=9	3:00u	0	-
    +Rule	Chile	1988	only	-	Oct	Sun>=1	4:00u	1:00	S
    +Rule	Chile	1989	only	-	Oct	Sun>=9	4:00u	1:00	S
    +Rule	Chile	1990	only	-	Mar	18	3:00u	0	-
    +Rule	Chile	1990	only	-	Sep	16	4:00u	1:00	S
    +Rule	Chile	1991	1996	-	Mar	Sun>=9	3:00u	0	-
    +Rule	Chile	1991	1997	-	Oct	Sun>=9	4:00u	1:00	S
    +Rule	Chile	1997	only	-	Mar	30	3:00u	0	-
    +Rule	Chile	1998	only	-	Mar	Sun>=9	3:00u	0	-
    +Rule	Chile	1998	only	-	Sep	27	4:00u	1:00	S
    +Rule	Chile	1999	only	-	Apr	 4	3:00u	0	-
    +Rule	Chile	1999	2010	-	Oct	Sun>=9	4:00u	1:00	S
    +Rule	Chile	2000	2007	-	Mar	Sun>=9	3:00u	0	-
    +# N.B.: the end of March 29 in Chile is March 30 in Universal time,
    +# which is used below in specifying the transition.
    +Rule	Chile	2008	only	-	Mar	30	3:00u	0	-
    +Rule	Chile	2009	only	-	Mar	Sun>=9	3:00u	0	-
    +Rule	Chile	2010	only	-	Apr	Sun>=1	3:00u	0	-
    +Rule	Chile	2011	only	-	May	Sun>=2	3:00u	0	-
    +Rule	Chile	2011	only	-	Aug	Sun>=16	4:00u	1:00	S
    +Rule	Chile	2012	only	-	Apr	Sun>=23	3:00u	0	-
    +Rule	Chile	2012	only	-	Sep	Sun>=2	4:00u	1:00	S
    +Rule	Chile	2013	max	-	Mar	Sun>=9	3:00u	0	-
    +Rule	Chile	2013	max	-	Oct	Sun>=9	4:00u	1:00	S
    +# IATA SSIM anomalies: (1992-02) says 1992-03-14;
    +# (1996-09) says 1998-03-08.  Ignore these.
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Santiago	-4:42:46 -	LMT	1890
    +			-4:42:46 -	SMT	1910 	    # Santiago Mean Time
    +			-5:00	-	CLT	1916 Jul  1 # Chile Time
    +			-4:42:46 -	SMT	1918 Sep  1 # Santiago Mean Time
    +			-4:00	-	CLT	1919 Jul  1 # Chile Time
    +			-4:42:46 -	SMT	1927 Sep  1 # Santiago Mean Time
    +			-5:00	Chile	CL%sT	1947 May 22 # Chile Time
    +			-4:00	Chile	CL%sT
    +Zone Pacific/Easter	-7:17:44 -	LMT	1890
    +			-7:17:28 -	EMT	1932 Sep    # Easter Mean Time
    +			-7:00	Chile	EAS%sT	1982 Mar 13 21:00 # Easter I Time
    +			-6:00	Chile	EAS%sT
    +#
    +# Sala y Gomez Island is like Pacific/Easter.
    +# Other Chilean locations, including Juan Fernandez Is, San Ambrosio,
    +# San Felix, and Antarctic bases, are like America/Santiago.
    +
    +# Colombia
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	CO	1992	only	-	May	 3	0:00	1:00	S
    +Rule	CO	1993	only	-	Apr	 4	0:00	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	America/Bogota	-4:56:20 -	LMT	1884 Mar 13
    +			-4:56:20 -	BMT	1914 Nov 23 # Bogota Mean Time
    +			-5:00	CO	CO%sT	# Colombia Time
    +# Malpelo, Providencia, San Andres
    +# no information; probably like America/Bogota
    +
    +# Curacao
    +#
    +# From Paul Eggert (2006-03-22):
    +# Shanks & Pottenger say that The Bottom and Philipsburg have been at
    +# -4:00 since standard time was introduced on 1912-03-02; and that
    +# Kralendijk and Rincon used Kralendijk Mean Time (-4:33:08) from
    +# 1912-02-02 to 1965-01-01.  The former is dubious, since S&P also say
    +# Saba Island has been like Curacao.
    +# This all predates our 1970 cutoff, though.
    +#
    +# By July 2007 Curacao and St Maarten are planned to become
    +# associated states within the Netherlands, much like Aruba;
    +# Bonaire, Saba and St Eustatius would become directly part of the
    +# Netherlands as Kingdom Islands.  This won't affect their time zones
    +# though, as far as we know.
    +#
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	America/Curacao	-4:35:44 -	LMT	1912 Feb 12	# Willemstad
    +			-4:30	-	ANT	1965 # Netherlands Antilles Time
    +			-4:00	-	AST
    +
    +# From Arthur David Olson (2011-06-15):
    +# At least for now, use links for places with new iso3166 codes.
    +# The name "Lower Prince's Quarter" is both longer than fourteen charaters
    +# and contains an apostrophe; use "Lower_Princes" below.
    +
    +Link	America/Curacao	America/Lower_Princes # Sint Maarten
    +Link	America/Curacao	America/Kralendijk # Bonaire, Sint Estatius and Saba
    +
    +# Ecuador
    +#
    +# From Paul Eggert (2007-03-04):
    +# Apparently Ecuador had a failed experiment with DST in 1992.
    +#  (2007-02-27) and
    +#  (2006-11-06) both
    +# talk about "hora Sixto".  Leave this alone for now, as we have no data.
    +#
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Guayaquil	-5:19:20 -	LMT	1890
    +			-5:14:00 -	QMT	1931 # Quito Mean Time
    +			-5:00	-	ECT	     # Ecuador Time
    +Zone Pacific/Galapagos	-5:58:24 -	LMT	1931 # Puerto Baquerizo Moreno
    +			-5:00	-	ECT	1986
    +			-6:00	-	GALT	     # Galapagos Time
    +
    +# Falklands
    +
    +# From Paul Eggert (2006-03-22):
    +# Between 1990 and 2000 inclusive, Shanks & Pottenger and the IATA agree except
    +# the IATA gives 1996-09-08.  Go with Shanks & Pottenger.
    +
    +# From Falkland Islands Government Office, London (2001-01-22)
    +# via Jesper Norgaard:
    +# ... the clocks revert back to Local Mean Time at 2 am on Sunday 15
    +# April 2001 and advance one hour to summer time at 2 am on Sunday 2
    +# September.  It is anticipated that the clocks will revert back at 2
    +# am on Sunday 21 April 2002 and advance to summer time at 2 am on
    +# Sunday 1 September.
    +
    +# From Rives McDow (2001-02-13):
    +#
    +# I have communicated several times with people there, and the last
    +# time I had communications that was helpful was in 1998.  Here is
    +# what was said then:
    +#
    +# "The general rule was that Stanley used daylight saving and the Camp
    +# did not. However for various reasons many people in the Camp have
    +# started to use daylight saving (known locally as 'Stanley Time')
    +# There is no rule as to who uses daylight saving - it is a matter of
    +# personal choice and so it is impossible to draw a map showing who
    +# uses it and who does not. Any list would be out of date as soon as
    +# it was produced. This year daylight saving ended on April 18/19th
    +# and started again on September 12/13th.  I do not know what the rule
    +# is, but can find out if you like.  We do not change at the same time
    +# as UK or Chile."
    +#
    +# I did have in my notes that the rule was "Second Saturday in Sep at
    +# 0:00 until third Saturday in Apr at 0:00".  I think that this does
    +# not agree in some cases with Shanks; is this true?
    +#
    +# Also, there is no mention in the list that some areas in the
    +# Falklands do not use DST.  I have found in my communications there
    +# that these areas are on the western half of East Falkland and all of
    +# West Falkland.  Stanley is the only place that consistently observes
    +# DST.  Again, as in other places in the world, the farmers don't like
    +# it.  West Falkland is almost entirely sheep farmers.
    +#
    +# I know one lady there that keeps a list of which farm keeps DST and
    +# which doesn't each year.  She runs a shop in Stanley, and says that
    +# the list changes each year.  She uses it to communicate to her
    +# customers, catching them when they are home for lunch or dinner.
    +
    +# From Paul Eggert (2001-03-05):
    +# For now, we'll just record the time in Stanley, since we have no
    +# better info.
    +
    +# From Steffen Thorsen (2011-04-01):
    +# The Falkland Islands will not turn back clocks this winter, but stay on
    +# daylight saving time.
    +#
    +# One source:
    +# 
    +# http://www.falklandnews.com/public/story.cfm?get=5914&source=3
    +# 
    +#
    +# We have gotten this confirmed by a clerk of the legislative assembly:
    +# Normally the clocks revert to Local Mean Time (UTC/GMT -4 hours) on the
    +# third Sunday of April at 0200hrs and advance to Summer Time (UTC/GMT -3
    +# hours) on the first Sunday of September at 0200hrs.
    +#
    +# IMPORTANT NOTE: During 2011, on a trial basis, the Falkland Islands
    +# will not revert to local mean time, but clocks will remain on Summer
    +# time (UTC/GMT - 3 hours) throughout the whole of 2011.  Any long term
    +# change to local time following the trial period will be notified.
    +#
    +# From Andrew Newman (2012-02-24)
    +# A letter from Justin McPhee, Chief Executive,
    +# Cable & Wireless Falkland Islands (dated 2012-02-22)
    +# states...
    +#   The current Atlantic/Stanley entry under South America expects the
    +#   clocks to go back to standard Falklands Time (FKT) on the 15th April.
    +#   The database entry states that in 2011 Stanley was staying on fixed
    +#   summer time on a trial basis only.  FIG need to contact IANA and/or
    +#   the maintainers of the database to inform them we're adopting
    +#   the same policy this year and suggest recommendations for future years.
    +#
    +# For now we will assume permanent summer time for the Falklands
    +# until advised differently (to apply for 2012 and beyond, after the 2011
    +# experiment was apparently successful.)
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Falk	1937	1938	-	Sep	lastSun	0:00	1:00	S
    +Rule	Falk	1938	1942	-	Mar	Sun>=19	0:00	0	-
    +Rule	Falk	1939	only	-	Oct	1	0:00	1:00	S
    +Rule	Falk	1940	1942	-	Sep	lastSun	0:00	1:00	S
    +Rule	Falk	1943	only	-	Jan	1	0:00	0	-
    +Rule	Falk	1983	only	-	Sep	lastSun	0:00	1:00	S
    +Rule	Falk	1984	1985	-	Apr	lastSun	0:00	0	-
    +Rule	Falk	1984	only	-	Sep	16	0:00	1:00	S
    +Rule	Falk	1985	2000	-	Sep	Sun>=9	0:00	1:00	S
    +Rule	Falk	1986	2000	-	Apr	Sun>=16	0:00	0	-
    +Rule	Falk	2001	2010	-	Apr	Sun>=15	2:00	0	-
    +Rule	Falk	2001	2010	-	Sep	Sun>=1	2:00	1:00	S
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Atlantic/Stanley	-3:51:24 -	LMT	1890
    +			-3:51:24 -	SMT	1912 Mar 12  # Stanley Mean Time
    +			-4:00	Falk	FK%sT	1983 May     # Falkland Is Time
    +			-3:00	Falk	FK%sT	1985 Sep 15
    +			-4:00	Falk	FK%sT	2010 Sep 5 02:00
    +			-3:00	-	FKST
    +
    +# French Guiana
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Cayenne	-3:29:20 -	LMT	1911 Jul
    +			-4:00	-	GFT	1967 Oct # French Guiana Time
    +			-3:00	-	GFT
    +
    +# Guyana
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	America/Guyana	-3:52:40 -	LMT	1915 Mar	# Georgetown
    +			-3:45	-	GBGT	1966 May 26 # Br Guiana Time
    +			-3:45	-	GYT	1975 Jul 31 # Guyana Time
    +			-3:00	-	GYT	1991
    +# IATA SSIM (1996-06) says -4:00.  Assume a 1991 switch.
    +			-4:00	-	GYT
    +
    +# Paraguay
    +# From Paul Eggert (2006-03-22):
    +# Shanks & Pottenger say that spring transitions are from 01:00 -> 02:00,
    +# and autumn transitions are from 00:00 -> 23:00.  Go with pre-1999
    +# editions of Shanks, and with the IATA, who say transitions occur at 00:00.
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Para	1975	1988	-	Oct	 1	0:00	1:00	S
    +Rule	Para	1975	1978	-	Mar	 1	0:00	0	-
    +Rule	Para	1979	1991	-	Apr	 1	0:00	0	-
    +Rule	Para	1989	only	-	Oct	22	0:00	1:00	S
    +Rule	Para	1990	only	-	Oct	 1	0:00	1:00	S
    +Rule	Para	1991	only	-	Oct	 6	0:00	1:00	S
    +Rule	Para	1992	only	-	Mar	 1	0:00	0	-
    +Rule	Para	1992	only	-	Oct	 5	0:00	1:00	S
    +Rule	Para	1993	only	-	Mar	31	0:00	0	-
    +Rule	Para	1993	1995	-	Oct	 1	0:00	1:00	S
    +Rule	Para	1994	1995	-	Feb	lastSun	0:00	0	-
    +Rule	Para	1996	only	-	Mar	 1	0:00	0	-
    +# IATA SSIM (2000-02) says 1999-10-10; ignore this for now.
    +# From Steffen Thorsen (2000-10-02):
    +# I have three independent reports that Paraguay changed to DST this Sunday
    +# (10-01).
    +#
    +# Translated by Gwillim Law (2001-02-27) from
    +# 
    +# Noticias, a daily paper in Asuncion, Paraguay (2000-10-01)
    +# :
    +# Starting at 0:00 today, the clock will be set forward 60 minutes, in
    +# fulfillment of Decree No. 7,273 of the Executive Power....  The time change
    +# system has been operating for several years.  Formerly there was a separate
    +# decree each year; the new law has the same effect, but permanently.  Every
    +# year, the time will change on the first Sunday of October; likewise, the
    +# clock will be set back on the first Sunday of March.
    +#
    +Rule	Para	1996	2001	-	Oct	Sun>=1	0:00	1:00	S
    +# IATA SSIM (1997-09) says Mar 1; go with Shanks & Pottenger.
    +Rule	Para	1997	only	-	Feb	lastSun	0:00	0	-
    +# Shanks & Pottenger say 1999-02-28; IATA SSIM (1999-02) says 1999-02-27, but
    +# (1999-09) reports no date; go with above sources and Gerd Knops (2001-02-27).
    +Rule	Para	1998	2001	-	Mar	Sun>=1	0:00	0	-
    +# From Rives McDow (2002-02-28):
    +# A decree was issued in Paraguay (no. 16350) on 2002-02-26 that changed the
    +# dst method to be from the first Sunday in September to the first Sunday in
    +# April.
    +Rule	Para	2002	2004	-	Apr	Sun>=1	0:00	0	-
    +Rule	Para	2002	2003	-	Sep	Sun>=1	0:00	1:00	S
    +#
    +# From Jesper Norgaard Welen (2005-01-02):
    +# There are several sources that claim that Paraguay made
    +# a timezone rule change in autumn 2004.
    +# From Steffen Thorsen (2005-01-05):
    +# Decree 1,867 (2004-03-05)
    +# From Carlos Raul Perasso via Jesper Norgaard Welen (2006-10-13)
    +# 
    +Rule	Para	2004	2009	-	Oct	Sun>=15	0:00	1:00	S
    +Rule	Para	2005	2009	-	Mar	Sun>=8	0:00	0	-
    +# From Carlos Raul Perasso (2010-02-18):
    +# By decree number 3958 issued yesterday (
    +# 
    +# http://www.presidencia.gov.py/v1/wp-content/uploads/2010/02/decreto3958.pdf
    +# 
    +# )
    +# Paraguay changes its DST schedule, postponing the March rule to April and
    +# modifying the October date. The decree reads:
    +# ...
    +# Art. 1. It is hereby established that from the second Sunday of the month of
    +# April of this year (2010), the official time is to be set back 60 minutes,
    +# and that on the first Sunday of the month of October, it is to be set
    +# forward 60 minutes, in all the territory of the Paraguayan Republic.
    +# ...
    +Rule	Para	2010	max	-	Oct	Sun>=1	0:00	1:00	S
    +Rule	Para	2010	max	-	Apr	Sun>=8	0:00	0	-
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Asuncion	-3:50:40 -	LMT	1890
    +			-3:50:40 -	AMT	1931 Oct 10 # Asuncion Mean Time
    +			-4:00	-	PYT	1972 Oct # Paraguay Time
    +			-3:00	-	PYT	1974 Apr
    +			-4:00	Para	PY%sT
    +
    +# Peru
    +#
    +# 
    +# From Evelyn C. Leeper via Mark Brader (2003-10-26):
    +# When we were in Peru in 1985-1986, they apparently switched over
    +# sometime between December 29 and January 3 while we were on the Amazon.
    +#
    +# From Paul Eggert (2006-03-22):
    +# Shanks & Pottenger don't have this transition.  Assume 1986 was like 1987.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	Peru	1938	only	-	Jan	 1	0:00	1:00	S
    +Rule	Peru	1938	only	-	Apr	 1	0:00	0	-
    +Rule	Peru	1938	1939	-	Sep	lastSun	0:00	1:00	S
    +Rule	Peru	1939	1940	-	Mar	Sun>=24	0:00	0	-
    +Rule	Peru	1986	1987	-	Jan	 1	0:00	1:00	S
    +Rule	Peru	1986	1987	-	Apr	 1	0:00	0	-
    +Rule	Peru	1990	only	-	Jan	 1	0:00	1:00	S
    +Rule	Peru	1990	only	-	Apr	 1	0:00	0	-
    +# IATA is ambiguous for 1993/1995; go with Shanks & Pottenger.
    +Rule	Peru	1994	only	-	Jan	 1	0:00	1:00	S
    +Rule	Peru	1994	only	-	Apr	 1	0:00	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	America/Lima	-5:08:12 -	LMT	1890
    +			-5:08:36 -	LMT	1908 Jul 28 # Lima Mean Time?
    +			-5:00	Peru	PE%sT	# Peru Time
    +
    +# South Georgia
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone Atlantic/South_Georgia -2:26:08 -	LMT	1890		# Grytviken
    +			-2:00	-	GST	# South Georgia Time
    +
    +# South Sandwich Is
    +# uninhabited; scientific personnel have wintered
    +
    +# Suriname
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Paramaribo	-3:40:40 -	LMT	1911
    +			-3:40:52 -	PMT	1935     # Paramaribo Mean Time
    +			-3:40:36 -	PMT	1945 Oct # The capital moved?
    +			-3:30	-	NEGT	1975 Nov 20 # Dutch Guiana Time
    +			-3:30	-	SRT	1984 Oct # Suriname Time
    +			-3:00	-	SRT
    +
    +# Trinidad and Tobago
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Port_of_Spain -4:06:04 -	LMT	1912 Mar 2
    +			-4:00	-	AST
    +
    +# Uruguay
    +# From Paul Eggert (1993-11-18):
    +# Uruguay wins the prize for the strangest peacetime manipulation of the rules.
    +# From Shanks & Pottenger:
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +# Whitman gives 1923 Oct 1; go with Shanks & Pottenger.
    +Rule	Uruguay	1923	only	-	Oct	 2	 0:00	0:30	HS
    +Rule	Uruguay	1924	1926	-	Apr	 1	 0:00	0	-
    +Rule	Uruguay	1924	1925	-	Oct	 1	 0:00	0:30	HS
    +Rule	Uruguay	1933	1935	-	Oct	lastSun	 0:00	0:30	HS
    +# Shanks & Pottenger give 1935 Apr 1 0:00 & 1936 Mar 30 0:00; go with Whitman.
    +Rule	Uruguay	1934	1936	-	Mar	Sat>=25	23:30s	0	-
    +Rule	Uruguay	1936	only	-	Nov	 1	 0:00	0:30	HS
    +Rule	Uruguay	1937	1941	-	Mar	lastSun	 0:00	0	-
    +# Whitman gives 1937 Oct 3; go with Shanks & Pottenger.
    +Rule	Uruguay	1937	1940	-	Oct	lastSun	 0:00	0:30	HS
    +# Whitman gives 1941 Oct 24 - 1942 Mar 27, 1942 Dec 14 - 1943 Apr 13,
    +# and 1943 Apr 13 ``to present time''; go with Shanks & Pottenger.
    +Rule	Uruguay	1941	only	-	Aug	 1	 0:00	0:30	HS
    +Rule	Uruguay	1942	only	-	Jan	 1	 0:00	0	-
    +Rule	Uruguay	1942	only	-	Dec	14	 0:00	1:00	S
    +Rule	Uruguay	1943	only	-	Mar	14	 0:00	0	-
    +Rule	Uruguay	1959	only	-	May	24	 0:00	1:00	S
    +Rule	Uruguay	1959	only	-	Nov	15	 0:00	0	-
    +Rule	Uruguay	1960	only	-	Jan	17	 0:00	1:00	S
    +Rule	Uruguay	1960	only	-	Mar	 6	 0:00	0	-
    +Rule	Uruguay	1965	1967	-	Apr	Sun>=1	 0:00	1:00	S
    +Rule	Uruguay	1965	only	-	Sep	26	 0:00	0	-
    +Rule	Uruguay	1966	1967	-	Oct	31	 0:00	0	-
    +Rule	Uruguay	1968	1970	-	May	27	 0:00	0:30	HS
    +Rule	Uruguay	1968	1970	-	Dec	 2	 0:00	0	-
    +Rule	Uruguay	1972	only	-	Apr	24	 0:00	1:00	S
    +Rule	Uruguay	1972	only	-	Aug	15	 0:00	0	-
    +Rule	Uruguay	1974	only	-	Mar	10	 0:00	0:30	HS
    +Rule	Uruguay	1974	only	-	Dec	22	 0:00	1:00	S
    +Rule	Uruguay	1976	only	-	Oct	 1	 0:00	0	-
    +Rule	Uruguay	1977	only	-	Dec	 4	 0:00	1:00	S
    +Rule	Uruguay	1978	only	-	Apr	 1	 0:00	0	-
    +Rule	Uruguay	1979	only	-	Oct	 1	 0:00	1:00	S
    +Rule	Uruguay	1980	only	-	May	 1	 0:00	0	-
    +Rule	Uruguay	1987	only	-	Dec	14	 0:00	1:00	S
    +Rule	Uruguay	1988	only	-	Mar	14	 0:00	0	-
    +Rule	Uruguay	1988	only	-	Dec	11	 0:00	1:00	S
    +Rule	Uruguay	1989	only	-	Mar	12	 0:00	0	-
    +Rule	Uruguay	1989	only	-	Oct	29	 0:00	1:00	S
    +# Shanks & Pottenger say no DST was observed in 1990/1 and 1991/2,
    +# and that 1992/3's DST was from 10-25 to 03-01.  Go with IATA.
    +Rule	Uruguay	1990	1992	-	Mar	Sun>=1	 0:00	0	-
    +Rule	Uruguay	1990	1991	-	Oct	Sun>=21	 0:00	1:00	S
    +Rule	Uruguay	1992	only	-	Oct	18	 0:00	1:00	S
    +Rule	Uruguay	1993	only	-	Feb	28	 0:00	0	-
    +# From Eduardo Cota (2004-09-20):
    +# The uruguayan government has decreed a change in the local time....
    +# http://www.presidencia.gub.uy/decretos/2004091502.htm
    +Rule	Uruguay	2004	only	-	Sep	19	 0:00	1:00	S
    +# From Steffen Thorsen (2005-03-11):
    +# Uruguay's DST was scheduled to end on Sunday, 2005-03-13, but in order to
    +# save energy ... it was postponed two weeks....
    +# http://www.presidencia.gub.uy/_Web/noticias/2005/03/2005031005.htm
    +Rule	Uruguay	2005	only	-	Mar	27	 2:00	0	-
    +# From Eduardo Cota (2005-09-27):
    +# http://www.presidencia.gub.uy/_Web/decretos/2005/09/CM%20119_09%2009%202005_00001.PDF
    +# This means that from 2005-10-09 at 02:00 local time, until 2006-03-12 at
    +# 02:00 local time, official time in Uruguay will be at GMT -2.
    +Rule	Uruguay	2005	only	-	Oct	 9	 2:00	1:00	S
    +Rule	Uruguay	2006	only	-	Mar	12	 2:00	0	-
    +# From Jesper Norgaard Welen (2006-09-06):
    +# http://www.presidencia.gub.uy/_web/decretos/2006/09/CM%20210_08%2006%202006_00001.PDF
    +Rule	Uruguay	2006	max	-	Oct	Sun>=1	 2:00	1:00	S
    +Rule	Uruguay	2007	max	-	Mar	Sun>=8	 2:00	0	-
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone America/Montevideo	-3:44:44 -	LMT	1898 Jun 28
    +			-3:44:44 -	MMT	1920 May  1	# Montevideo MT
    +			-3:30	Uruguay	UY%sT	1942 Dec 14	# Uruguay Time
    +			-3:00	Uruguay	UY%sT
    +
    +# Venezuela
    +#
    +# From John Stainforth (2007-11-28):
    +# ... the change for Venezuela originally expected for 2007-12-31 has
    +# been brought forward to 2007-12-09.  The official announcement was
    +# published today in the "Gaceta Oficial de la Republica Bolivariana
    +# de Venezuela, numero 38.819" (official document for all laws or
    +# resolution publication)
    +# http://www.globovision.com/news.php?nid=72208
    +
    +# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
    +Zone	America/Caracas	-4:27:44 -	LMT	1890
    +			-4:27:40 -	CMT	1912 Feb 12 # Caracas Mean Time?
    +			-4:30	-	VET	1965	     # Venezuela Time
    +			-4:00	-	VET	2007 Dec  9 03:00
    +			-4:30	-	VET
    diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/systemv b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/systemv
    new file mode 100644
    index 0000000..8236a16
    --- /dev/null
    +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/systemv
    @@ -0,0 +1,38 @@
    +# 
    +# This file is in the public domain, so clarified as of
    +# 2009-05-17 by Arthur David Olson.
    +
    +# Old rules, should the need arise.
    +# No attempt is made to handle Newfoundland, since it cannot be expressed
    +# using the System V "TZ" scheme (half-hour offset), or anything outside
    +# North America (no support for non-standard DST start/end dates), nor
    +# the changes in the DST rules in the US after 1976 (which occurred after
    +# the old rules were written).
    +#
    +# If you need the old rules, uncomment ## lines.
    +# Compile this *without* leap second correction for true conformance.
    +
    +# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    +Rule	SystemV	min	1973	-	Apr	lastSun	2:00	1:00	D
    +Rule	SystemV	min	1973	-	Oct	lastSun	2:00	0	S
    +Rule	SystemV	1974	only	-	Jan	6	2:00	1:00	D
    +Rule	SystemV	1974	only	-	Nov	lastSun	2:00	0	S
    +Rule	SystemV	1975	only	-	Feb	23	2:00	1:00	D
    +Rule	SystemV	1975	only	-	Oct	lastSun	2:00	0	S
    +Rule	SystemV	1976	max	-	Apr	lastSun	2:00	1:00	D
    +Rule	SystemV	1976	max	-	Oct	lastSun	2:00	0	S
    +
    +# Zone	NAME		GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
    +## Zone	SystemV/AST4ADT	-4:00	SystemV		A%sT
    +## Zone	SystemV/EST5EDT	-5:00	SystemV		E%sT
    +## Zone	SystemV/CST6CDT	-6:00	SystemV		C%sT
    +## Zone	SystemV/MST7MDT	-7:00	SystemV		M%sT
    +## Zone	SystemV/PST8PDT	-8:00	SystemV		P%sT
    +## Zone	SystemV/YST9YDT	-9:00	SystemV		Y%sT
    +## Zone	SystemV/AST4	-4:00	-		AST
    +## Zone	SystemV/EST5	-5:00	-		EST
    +## Zone	SystemV/CST6	-6:00	-		CST
    +## Zone	SystemV/MST7	-7:00	-		MST
    +## Zone	SystemV/PST8	-8:00	-		PST
    +## Zone	SystemV/YST9	-9:00	-		YST
    +## Zone	SystemV/HST10	-10:00	-		HST
    diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/yearistype.sh b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/yearistype.sh
    new file mode 100644
    index 0000000..b6963f2
    --- /dev/null
    +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/yearistype.sh
    @@ -0,0 +1,38 @@
    +#! /bin/sh
    +
    +: 'This file is in the public domain, so clarified as of'
    +: '2006-07-17 by Arthur David Olson.'
    +
    +case $#-$1 in
    +	2-|2-0*|2-*[!0-9]*)
    +		echo "$0: wild year - $1" >&2
    +		exit 1 ;;
    +esac
    +
    +case $#-$2 in
    +	2-even)
    +		case $1 in
    +			*[24680])			exit 0 ;;
    +			*)				exit 1 ;;
    +		esac ;;
    +	2-nonpres|2-nonuspres)
    +		case $1 in
    +			*[02468][048]|*[13579][26])	exit 1 ;;
    +			*)				exit 0 ;;
    +		esac ;;
    +	2-odd)
    +		case $1 in
    +			*[13579])			exit 0 ;;
    +			*)				exit 1 ;;
    +		esac ;;
    +	2-uspres)
    +		case $1 in
    +			*[02468][048]|*[13579][26])	exit 0 ;;
    +			*)				exit 1 ;;
    +		esac ;;
    +	2-*)
    +		echo "$0: wild type - $2" >&2 ;;
    +esac
    +
    +echo "$0: usage is $0 year even|odd|uspres|nonpres|nonuspres" >&2
    +exit 1
    diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/zone.tab b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/zone.tab
    new file mode 100644
    index 0000000..0b2f870
    --- /dev/null
    +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time-zones/tz/zone.tab
    @@ -0,0 +1,441 @@
    +# 
    +# This file is in the public domain, so clarified as of
    +# 2009-05-17 by Arthur David Olson.
    +#
    +# TZ zone descriptions
    +#
    +# From Paul Eggert (1996-08-05):
    +#
    +# This file contains a table with the following columns:
    +# 1.  ISO 3166 2-character country code.  See the file `iso3166.tab'.
    +# 2.  Latitude and longitude of the zone's principal location
    +#     in ISO 6709 sign-degrees-minutes-seconds format,
    +#     either +-DDMM+-DDDMM or +-DDMMSS+-DDDMMSS,
    +#     first latitude (+ is north), then longitude (+ is east).
    +# 3.  Zone name used in value of TZ environment variable.
    +# 4.  Comments; present if and only if the country has multiple rows.
    +#
    +# Columns are separated by a single tab.
    +# The table is sorted first by country, then an order within the country that
    +# (1) makes some geographical sense, and
    +# (2) puts the most populous zones first, where that does not contradict (1).
    +#
    +# Lines beginning with `#' are comments.
    +#
    +#country-
    +#code	coordinates	TZ			comments
    +AD	+4230+00131	Europe/Andorra
    +AE	+2518+05518	Asia/Dubai
    +AF	+3431+06912	Asia/Kabul
    +AG	+1703-06148	America/Antigua
    +AI	+1812-06304	America/Anguilla
    +AL	+4120+01950	Europe/Tirane
    +AM	+4011+04430	Asia/Yerevan
    +AO	-0848+01314	Africa/Luanda
    +AQ	-7750+16636	Antarctica/McMurdo	McMurdo Station, Ross Island
    +AQ	-9000+00000	Antarctica/South_Pole	Amundsen-Scott Station, South Pole
    +AQ	-6734-06808	Antarctica/Rothera	Rothera Station, Adelaide Island
    +AQ	-6448-06406	Antarctica/Palmer	Palmer Station, Anvers Island
    +AQ	-6736+06253	Antarctica/Mawson	Mawson Station, Holme Bay
    +AQ	-6835+07758	Antarctica/Davis	Davis Station, Vestfold Hills
    +AQ	-6617+11031	Antarctica/Casey	Casey Station, Bailey Peninsula
    +AQ	-7824+10654	Antarctica/Vostok	Vostok Station, Lake Vostok
    +AQ	-6640+14001	Antarctica/DumontDUrville	Dumont-d'Urville Station, Terre Adelie
    +AQ	-690022+0393524	Antarctica/Syowa	Syowa Station, E Ongul I
    +AQ	-5430+15857	Antarctica/Macquarie	Macquarie Island Station, Macquarie Island
    +AR	-3436-05827	America/Argentina/Buenos_Aires	Buenos Aires (BA, CF)
    +AR	-3124-06411	America/Argentina/Cordoba	most locations (CB, CC, CN, ER, FM, MN, SE, SF)
    +AR	-2447-06525	America/Argentina/Salta	(SA, LP, NQ, RN)
    +AR	-2411-06518	America/Argentina/Jujuy	Jujuy (JY)
    +AR	-2649-06513	America/Argentina/Tucuman	Tucuman (TM)
    +AR	-2828-06547	America/Argentina/Catamarca	Catamarca (CT), Chubut (CH)
    +AR	-2926-06651	America/Argentina/La_Rioja	La Rioja (LR)
    +AR	-3132-06831	America/Argentina/San_Juan	San Juan (SJ)
    +AR	-3253-06849	America/Argentina/Mendoza	Mendoza (MZ)
    +AR	-3319-06621	America/Argentina/San_Luis	San Luis (SL)
    +AR	-5138-06913	America/Argentina/Rio_Gallegos	Santa Cruz (SC)
    +AR	-5448-06818	America/Argentina/Ushuaia	Tierra del Fuego (TF)
    +AS	-1416-17042	Pacific/Pago_Pago
    +AT	+4813+01620	Europe/Vienna
    +AU	-3133+15905	Australia/Lord_Howe	Lord Howe Island
    +AU	-4253+14719	Australia/Hobart	Tasmania - most locations
    +AU	-3956+14352	Australia/Currie	Tasmania - King Island
    +AU	-3749+14458	Australia/Melbourne	Victoria
    +AU	-3352+15113	Australia/Sydney	New South Wales - most locations
    +AU	-3157+14127	Australia/Broken_Hill	New South Wales - Yancowinna
    +AU	-2728+15302	Australia/Brisbane	Queensland - most locations
    +AU	-2016+14900	Australia/Lindeman	Queensland - Holiday Islands
    +AU	-3455+13835	Australia/Adelaide	South Australia
    +AU	-1228+13050	Australia/Darwin	Northern Territory
    +AU	-3157+11551	Australia/Perth	Western Australia - most locations
    +AU	-3143+12852	Australia/Eucla	Western Australia - Eucla area
    +AW	+1230-06958	America/Aruba
    +AX	+6006+01957	Europe/Mariehamn
    +AZ	+4023+04951	Asia/Baku
    +BA	+4352+01825	Europe/Sarajevo
    +BB	+1306-05937	America/Barbados
    +BD	+2343+09025	Asia/Dhaka
    +BE	+5050+00420	Europe/Brussels
    +BF	+1222-00131	Africa/Ouagadougou
    +BG	+4241+02319	Europe/Sofia
    +BH	+2623+05035	Asia/Bahrain
    +BI	-0323+02922	Africa/Bujumbura
    +BJ	+0629+00237	Africa/Porto-Novo
    +BL	+1753-06251	America/St_Barthelemy
    +BM	+3217-06446	Atlantic/Bermuda
    +BN	+0456+11455	Asia/Brunei
    +BO	-1630-06809	America/La_Paz
    +BQ	+120903-0681636	America/Kralendijk
    +BR	-0351-03225	America/Noronha	Atlantic islands
    +BR	-0127-04829	America/Belem	Amapa, E Para
    +BR	-0343-03830	America/Fortaleza	NE Brazil (MA, PI, CE, RN, PB)
    +BR	-0803-03454	America/Recife	Pernambuco
    +BR	-0712-04812	America/Araguaina	Tocantins
    +BR	-0940-03543	America/Maceio	Alagoas, Sergipe
    +BR	-1259-03831	America/Bahia	Bahia
    +BR	-2332-04637	America/Sao_Paulo	S & SE Brazil (GO, DF, MG, ES, RJ, SP, PR, SC, RS)
    +BR	-2027-05437	America/Campo_Grande	Mato Grosso do Sul
    +BR	-1535-05605	America/Cuiaba	Mato Grosso
    +BR	-0226-05452	America/Santarem	W Para
    +BR	-0846-06354	America/Porto_Velho	Rondonia
    +BR	+0249-06040	America/Boa_Vista	Roraima
    +BR	-0308-06001	America/Manaus	E Amazonas
    +BR	-0640-06952	America/Eirunepe	W Amazonas
    +BR	-0958-06748	America/Rio_Branco	Acre
    +BS	+2505-07721	America/Nassau
    +BT	+2728+08939	Asia/Thimphu
    +BW	-2439+02555	Africa/Gaborone
    +BY	+5354+02734	Europe/Minsk
    +BZ	+1730-08812	America/Belize
    +CA	+4734-05243	America/St_Johns	Newfoundland Time, including SE Labrador
    +CA	+4439-06336	America/Halifax	Atlantic Time - Nova Scotia (most places), PEI
    +CA	+4612-05957	America/Glace_Bay	Atlantic Time - Nova Scotia - places that did not observe DST 1966-1971
    +CA	+4606-06447	America/Moncton	Atlantic Time - New Brunswick
    +CA	+5320-06025	America/Goose_Bay	Atlantic Time - Labrador - most locations
    +CA	+5125-05707	America/Blanc-Sablon	Atlantic Standard Time - Quebec - Lower North Shore
    +CA	+4531-07334	America/Montreal	Eastern Time - Quebec - most locations
    +CA	+4339-07923	America/Toronto	Eastern Time - Ontario - most locations
    +CA	+4901-08816	America/Nipigon	Eastern Time - Ontario & Quebec - places that did not observe DST 1967-1973
    +CA	+4823-08915	America/Thunder_Bay	Eastern Time - Thunder Bay, Ontario
    +CA	+6344-06828	America/Iqaluit	Eastern Time - east Nunavut - most locations
    +CA	+6608-06544	America/Pangnirtung	Eastern Time - Pangnirtung, Nunavut
    +CA	+744144-0944945	America/Resolute	Central Standard Time - Resolute, Nunavut
    +CA	+484531-0913718	America/Atikokan	Eastern Standard Time - Atikokan, Ontario and Southampton I, Nunavut
    +CA	+624900-0920459	America/Rankin_Inlet	Central Time - central Nunavut
    +CA	+4953-09709	America/Winnipeg	Central Time - Manitoba & west Ontario
    +CA	+4843-09434	America/Rainy_River	Central Time - Rainy River & Fort Frances, Ontario
    +CA	+5024-10439	America/Regina	Central Standard Time - Saskatchewan - most locations
    +CA	+5017-10750	America/Swift_Current	Central Standard Time - Saskatchewan - midwest
    +CA	+5333-11328	America/Edmonton	Mountain Time - Alberta, east British Columbia & west Saskatchewan
    +CA	+690650-1050310	America/Cambridge_Bay	Mountain Time - west Nunavut
    +CA	+6227-11421	America/Yellowknife	Mountain Time - central Northwest Territories
    +CA	+682059-1334300	America/Inuvik	Mountain Time - west Northwest Territories
    +CA	+4906-11631	America/Creston	Mountain Standard Time - Creston, British Columbia
    +CA	+5946-12014	America/Dawson_Creek	Mountain Standard Time - Dawson Creek & Fort Saint John, British Columbia
    +CA	+4916-12307	America/Vancouver	Pacific Time - west British Columbia
    +CA	+6043-13503	America/Whitehorse	Pacific Time - south Yukon
    +CA	+6404-13925	America/Dawson	Pacific Time - north Yukon
    +CC	-1210+09655	Indian/Cocos
    +CD	-0418+01518	Africa/Kinshasa	west Dem. Rep. of Congo
    +CD	-1140+02728	Africa/Lubumbashi	east Dem. Rep. of Congo
    +CF	+0422+01835	Africa/Bangui
    +CG	-0416+01517	Africa/Brazzaville
    +CH	+4723+00832	Europe/Zurich
    +CI	+0519-00402	Africa/Abidjan
    +CK	-2114-15946	Pacific/Rarotonga
    +CL	-3327-07040	America/Santiago	most locations
    +CL	-2709-10926	Pacific/Easter	Easter Island & Sala y Gomez
    +CM	+0403+00942	Africa/Douala
    +CN	+3114+12128	Asia/Shanghai	east China - Beijing, Guangdong, Shanghai, etc.
    +CN	+4545+12641	Asia/Harbin	Heilongjiang (except Mohe), Jilin
    +CN	+2934+10635	Asia/Chongqing	central China - Sichuan, Yunnan, Guangxi, Shaanxi, Guizhou, etc.
    +CN	+4348+08735	Asia/Urumqi	most of Tibet & Xinjiang
    +CN	+3929+07559	Asia/Kashgar	west Tibet & Xinjiang
    +CO	+0436-07405	America/Bogota
    +CR	+0956-08405	America/Costa_Rica
    +CU	+2308-08222	America/Havana
    +CV	+1455-02331	Atlantic/Cape_Verde
    +CW	+1211-06900	America/Curacao
    +CX	-1025+10543	Indian/Christmas
    +CY	+3510+03322	Asia/Nicosia
    +CZ	+5005+01426	Europe/Prague
    +DE	+5230+01322	Europe/Berlin
    +DJ	+1136+04309	Africa/Djibouti
    +DK	+5540+01235	Europe/Copenhagen
    +DM	+1518-06124	America/Dominica
    +DO	+1828-06954	America/Santo_Domingo
    +DZ	+3647+00303	Africa/Algiers
    +EC	-0210-07950	America/Guayaquil	mainland
    +EC	-0054-08936	Pacific/Galapagos	Galapagos Islands
    +EE	+5925+02445	Europe/Tallinn
    +EG	+3003+03115	Africa/Cairo
    +EH	+2709-01312	Africa/El_Aaiun
    +ER	+1520+03853	Africa/Asmara
    +ES	+4024-00341	Europe/Madrid	mainland
    +ES	+3553-00519	Africa/Ceuta	Ceuta & Melilla
    +ES	+2806-01524	Atlantic/Canary	Canary Islands
    +ET	+0902+03842	Africa/Addis_Ababa
    +FI	+6010+02458	Europe/Helsinki
    +FJ	-1808+17825	Pacific/Fiji
    +FK	-5142-05751	Atlantic/Stanley
    +FM	+0725+15147	Pacific/Chuuk	Chuuk (Truk) and Yap
    +FM	+0658+15813	Pacific/Pohnpei	Pohnpei (Ponape)
    +FM	+0519+16259	Pacific/Kosrae	Kosrae
    +FO	+6201-00646	Atlantic/Faroe
    +FR	+4852+00220	Europe/Paris
    +GA	+0023+00927	Africa/Libreville
    +GB	+513030-0000731	Europe/London
    +GD	+1203-06145	America/Grenada
    +GE	+4143+04449	Asia/Tbilisi
    +GF	+0456-05220	America/Cayenne
    +GG	+4927-00232	Europe/Guernsey
    +GH	+0533-00013	Africa/Accra
    +GI	+3608-00521	Europe/Gibraltar
    +GL	+6411-05144	America/Godthab	most locations
    +GL	+7646-01840	America/Danmarkshavn	east coast, north of Scoresbysund
    +GL	+7029-02158	America/Scoresbysund	Scoresbysund / Ittoqqortoormiit
    +GL	+7634-06847	America/Thule	Thule / Pituffik
    +GM	+1328-01639	Africa/Banjul
    +GN	+0931-01343	Africa/Conakry
    +GP	+1614-06132	America/Guadeloupe
    +GQ	+0345+00847	Africa/Malabo
    +GR	+3758+02343	Europe/Athens
    +GS	-5416-03632	Atlantic/South_Georgia
    +GT	+1438-09031	America/Guatemala
    +GU	+1328+14445	Pacific/Guam
    +GW	+1151-01535	Africa/Bissau
    +GY	+0648-05810	America/Guyana
    +HK	+2217+11409	Asia/Hong_Kong
    +HN	+1406-08713	America/Tegucigalpa
    +HR	+4548+01558	Europe/Zagreb
    +HT	+1832-07220	America/Port-au-Prince
    +HU	+4730+01905	Europe/Budapest
    +ID	-0610+10648	Asia/Jakarta	Java & Sumatra
    +ID	-0002+10920	Asia/Pontianak	west & central Borneo
    +ID	-0507+11924	Asia/Makassar	east & south Borneo, Sulawesi (Celebes), Bali, Nusa Tengarra, west Timor
    +ID	-0232+14042	Asia/Jayapura	west New Guinea (Irian Jaya) & Malukus (Moluccas)
    +IE	+5320-00615	Europe/Dublin
    +IL	+3146+03514	Asia/Jerusalem
    +IM	+5409-00428	Europe/Isle_of_Man
    +IN	+2232+08822	Asia/Kolkata
    +IO	-0720+07225	Indian/Chagos
    +IQ	+3321+04425	Asia/Baghdad
    +IR	+3540+05126	Asia/Tehran
    +IS	+6409-02151	Atlantic/Reykjavik
    +IT	+4154+01229	Europe/Rome
    +JE	+4912-00207	Europe/Jersey
    +JM	+1800-07648	America/Jamaica
    +JO	+3157+03556	Asia/Amman
    +JP	+353916+1394441	Asia/Tokyo
    +KE	-0117+03649	Africa/Nairobi
    +KG	+4254+07436	Asia/Bishkek
    +KH	+1133+10455	Asia/Phnom_Penh
    +KI	+0125+17300	Pacific/Tarawa	Gilbert Islands
    +KI	-0308-17105	Pacific/Enderbury	Phoenix Islands
    +KI	+0152-15720	Pacific/Kiritimati	Line Islands
    +KM	-1141+04316	Indian/Comoro
    +KN	+1718-06243	America/St_Kitts
    +KP	+3901+12545	Asia/Pyongyang
    +KR	+3733+12658	Asia/Seoul
    +KW	+2920+04759	Asia/Kuwait
    +KY	+1918-08123	America/Cayman
    +KZ	+4315+07657	Asia/Almaty	most locations
    +KZ	+4448+06528	Asia/Qyzylorda	Qyzylorda (Kyzylorda, Kzyl-Orda)
    +KZ	+5017+05710	Asia/Aqtobe	Aqtobe (Aktobe)
    +KZ	+4431+05016	Asia/Aqtau	Atyrau (Atirau, Gur'yev), Mangghystau (Mankistau)
    +KZ	+5113+05121	Asia/Oral	West Kazakhstan
    +LA	+1758+10236	Asia/Vientiane
    +LB	+3353+03530	Asia/Beirut
    +LC	+1401-06100	America/St_Lucia
    +LI	+4709+00931	Europe/Vaduz
    +LK	+0656+07951	Asia/Colombo
    +LR	+0618-01047	Africa/Monrovia
    +LS	-2928+02730	Africa/Maseru
    +LT	+5441+02519	Europe/Vilnius
    +LU	+4936+00609	Europe/Luxembourg
    +LV	+5657+02406	Europe/Riga
    +LY	+3254+01311	Africa/Tripoli
    +MA	+3339-00735	Africa/Casablanca
    +MC	+4342+00723	Europe/Monaco
    +MD	+4700+02850	Europe/Chisinau
    +ME	+4226+01916	Europe/Podgorica
    +MF	+1804-06305	America/Marigot
    +MG	-1855+04731	Indian/Antananarivo
    +MH	+0709+17112	Pacific/Majuro	most locations
    +MH	+0905+16720	Pacific/Kwajalein	Kwajalein
    +MK	+4159+02126	Europe/Skopje
    +ML	+1239-00800	Africa/Bamako
    +MM	+1647+09610	Asia/Rangoon
    +MN	+4755+10653	Asia/Ulaanbaatar	most locations
    +MN	+4801+09139	Asia/Hovd	Bayan-Olgiy, Govi-Altai, Hovd, Uvs, Zavkhan
    +MN	+4804+11430	Asia/Choibalsan	Dornod, Sukhbaatar
    +MO	+2214+11335	Asia/Macau
    +MP	+1512+14545	Pacific/Saipan
    +MQ	+1436-06105	America/Martinique
    +MR	+1806-01557	Africa/Nouakchott
    +MS	+1643-06213	America/Montserrat
    +MT	+3554+01431	Europe/Malta
    +MU	-2010+05730	Indian/Mauritius
    +MV	+0410+07330	Indian/Maldives
    +MW	-1547+03500	Africa/Blantyre
    +MX	+1924-09909	America/Mexico_City	Central Time - most locations
    +MX	+2105-08646	America/Cancun	Central Time - Quintana Roo
    +MX	+2058-08937	America/Merida	Central Time - Campeche, Yucatan
    +MX	+2540-10019	America/Monterrey	Mexican Central Time - Coahuila, Durango, Nuevo Leon, Tamaulipas away from US border
    +MX	+2550-09730	America/Matamoros	US Central Time - Coahuila, Durango, Nuevo Leon, Tamaulipas near US border
    +MX	+2313-10625	America/Mazatlan	Mountain Time - S Baja, Nayarit, Sinaloa
    +MX	+2838-10605	America/Chihuahua	Mexican Mountain Time - Chihuahua away from US border
    +MX	+2934-10425	America/Ojinaga	US Mountain Time - Chihuahua near US border
    +MX	+2904-11058	America/Hermosillo	Mountain Standard Time - Sonora
    +MX	+3232-11701	America/Tijuana	US Pacific Time - Baja California near US border
    +MX	+3018-11452	America/Santa_Isabel	Mexican Pacific Time - Baja California away from US border
    +MX	+2048-10515	America/Bahia_Banderas	Mexican Central Time - Bahia de Banderas
    +MY	+0310+10142	Asia/Kuala_Lumpur	peninsular Malaysia
    +MY	+0133+11020	Asia/Kuching	Sabah & Sarawak
    +MZ	-2558+03235	Africa/Maputo
    +NA	-2234+01706	Africa/Windhoek
    +NC	-2216+16627	Pacific/Noumea
    +NE	+1331+00207	Africa/Niamey
    +NF	-2903+16758	Pacific/Norfolk
    +NG	+0627+00324	Africa/Lagos
    +NI	+1209-08617	America/Managua
    +NL	+5222+00454	Europe/Amsterdam
    +NO	+5955+01045	Europe/Oslo
    +NP	+2743+08519	Asia/Kathmandu
    +NR	-0031+16655	Pacific/Nauru
    +NU	-1901-16955	Pacific/Niue
    +NZ	-3652+17446	Pacific/Auckland	most locations
    +NZ	-4357-17633	Pacific/Chatham	Chatham Islands
    +OM	+2336+05835	Asia/Muscat
    +PA	+0858-07932	America/Panama
    +PE	-1203-07703	America/Lima
    +PF	-1732-14934	Pacific/Tahiti	Society Islands
    +PF	-0900-13930	Pacific/Marquesas	Marquesas Islands
    +PF	-2308-13457	Pacific/Gambier	Gambier Islands
    +PG	-0930+14710	Pacific/Port_Moresby
    +PH	+1435+12100	Asia/Manila
    +PK	+2452+06703	Asia/Karachi
    +PL	+5215+02100	Europe/Warsaw
    +PM	+4703-05620	America/Miquelon
    +PN	-2504-13005	Pacific/Pitcairn
    +PR	+182806-0660622	America/Puerto_Rico
    +PS	+3130+03428	Asia/Gaza	Gaza Strip
    +PS	+313200+0350542	Asia/Hebron	West Bank
    +PT	+3843-00908	Europe/Lisbon	mainland
    +PT	+3238-01654	Atlantic/Madeira	Madeira Islands
    +PT	+3744-02540	Atlantic/Azores	Azores
    +PW	+0720+13429	Pacific/Palau
    +PY	-2516-05740	America/Asuncion
    +QA	+2517+05132	Asia/Qatar
    +RE	-2052+05528	Indian/Reunion
    +RO	+4426+02606	Europe/Bucharest
    +RS	+4450+02030	Europe/Belgrade
    +RU	+5443+02030	Europe/Kaliningrad	Moscow-01 - Kaliningrad
    +RU	+5545+03735	Europe/Moscow	Moscow+00 - west Russia
    +RU	+4844+04425	Europe/Volgograd	Moscow+00 - Caspian Sea
    +RU	+5312+05009	Europe/Samara	Moscow+00 - Samara, Udmurtia
    +RU	+5651+06036	Asia/Yekaterinburg	Moscow+02 - Urals
    +RU	+5500+07324	Asia/Omsk	Moscow+03 - west Siberia
    +RU	+5502+08255	Asia/Novosibirsk	Moscow+03 - Novosibirsk
    +RU	+5345+08707	Asia/Novokuznetsk	Moscow+03 - Novokuznetsk
    +RU	+5601+09250	Asia/Krasnoyarsk	Moscow+04 - Yenisei River
    +RU	+5216+10420	Asia/Irkutsk	Moscow+05 - Lake Baikal
    +RU	+6200+12940	Asia/Yakutsk	Moscow+06 - Lena River
    +RU	+4310+13156	Asia/Vladivostok	Moscow+07 - Amur River
    +RU	+4658+14242	Asia/Sakhalin	Moscow+07 - Sakhalin Island
    +RU	+5934+15048	Asia/Magadan	Moscow+08 - Magadan
    +RU	+5301+15839	Asia/Kamchatka	Moscow+08 - Kamchatka
    +RU	+6445+17729	Asia/Anadyr	Moscow+08 - Bering Sea
    +RW	-0157+03004	Africa/Kigali
    +SA	+2438+04643	Asia/Riyadh
    +SB	-0932+16012	Pacific/Guadalcanal
    +SC	-0440+05528	Indian/Mahe
    +SD	+1536+03232	Africa/Khartoum
    +SE	+5920+01803	Europe/Stockholm
    +SG	+0117+10351	Asia/Singapore
    +SH	-1555-00542	Atlantic/St_Helena
    +SI	+4603+01431	Europe/Ljubljana
    +SJ	+7800+01600	Arctic/Longyearbyen
    +SK	+4809+01707	Europe/Bratislava
    +SL	+0830-01315	Africa/Freetown
    +SM	+4355+01228	Europe/San_Marino
    +SN	+1440-01726	Africa/Dakar
    +SO	+0204+04522	Africa/Mogadishu
    +SR	+0550-05510	America/Paramaribo
    +SS	+0451+03136	Africa/Juba
    +ST	+0020+00644	Africa/Sao_Tome
    +SV	+1342-08912	America/El_Salvador
    +SX	+180305-0630250	America/Lower_Princes
    +SY	+3330+03618	Asia/Damascus
    +SZ	-2618+03106	Africa/Mbabane
    +TC	+2128-07108	America/Grand_Turk
    +TD	+1207+01503	Africa/Ndjamena
    +TF	-492110+0701303	Indian/Kerguelen
    +TG	+0608+00113	Africa/Lome
    +TH	+1345+10031	Asia/Bangkok
    +TJ	+3835+06848	Asia/Dushanbe
    +TK	-0922-17114	Pacific/Fakaofo
    +TL	-0833+12535	Asia/Dili
    +TM	+3757+05823	Asia/Ashgabat
    +TN	+3648+01011	Africa/Tunis
    +TO	-2110-17510	Pacific/Tongatapu
    +TR	+4101+02858	Europe/Istanbul
    +TT	+1039-06131	America/Port_of_Spain
    +TV	-0831+17913	Pacific/Funafuti
    +TW	+2503+12130	Asia/Taipei
    +TZ	-0648+03917	Africa/Dar_es_Salaam
    +UA	+5026+03031	Europe/Kiev	most locations
    +UA	+4837+02218	Europe/Uzhgorod	Ruthenia
    +UA	+4750+03510	Europe/Zaporozhye	Zaporozh'ye, E Lugansk / Zaporizhia, E Luhansk
    +UA	+4457+03406	Europe/Simferopol	central Crimea
    +UG	+0019+03225	Africa/Kampala
    +UM	+1645-16931	Pacific/Johnston	Johnston Atoll
    +UM	+2813-17722	Pacific/Midway	Midway Islands
    +UM	+1917+16637	Pacific/Wake	Wake Island
    +US	+404251-0740023	America/New_York	Eastern Time
    +US	+421953-0830245	America/Detroit	Eastern Time - Michigan - most locations
    +US	+381515-0854534	America/Kentucky/Louisville	Eastern Time - Kentucky - Louisville area
    +US	+364947-0845057	America/Kentucky/Monticello	Eastern Time - Kentucky - Wayne County
    +US	+394606-0860929	America/Indiana/Indianapolis	Eastern Time - Indiana - most locations
    +US	+384038-0873143	America/Indiana/Vincennes	Eastern Time - Indiana - Daviess, Dubois, Knox & Martin Counties
    +US	+410305-0863611	America/Indiana/Winamac	Eastern Time - Indiana - Pulaski County
    +US	+382232-0862041	America/Indiana/Marengo	Eastern Time - Indiana - Crawford County
    +US	+382931-0871643	America/Indiana/Petersburg	Eastern Time - Indiana - Pike County
    +US	+384452-0850402	America/Indiana/Vevay	Eastern Time - Indiana - Switzerland County
    +US	+415100-0873900	America/Chicago	Central Time
    +US	+375711-0864541	America/Indiana/Tell_City	Central Time - Indiana - Perry County
    +US	+411745-0863730	America/Indiana/Knox	Central Time - Indiana - Starke County
    +US	+450628-0873651	America/Menominee	Central Time - Michigan - Dickinson, Gogebic, Iron & Menominee Counties
    +US	+470659-1011757	America/North_Dakota/Center	Central Time - North Dakota - Oliver County
    +US	+465042-1012439	America/North_Dakota/New_Salem	Central Time - North Dakota - Morton County (except Mandan area)
    +US	+471551-1014640	America/North_Dakota/Beulah	Central Time - North Dakota - Mercer County
    +US	+394421-1045903	America/Denver	Mountain Time
    +US	+433649-1161209	America/Boise	Mountain Time - south Idaho & east Oregon
    +US	+364708-1084111	America/Shiprock	Mountain Time - Navajo
    +US	+332654-1120424	America/Phoenix	Mountain Standard Time - Arizona
    +US	+340308-1181434	America/Los_Angeles	Pacific Time
    +US	+611305-1495401	America/Anchorage	Alaska Time
    +US	+581807-1342511	America/Juneau	Alaska Time - Alaska panhandle
    +US	+571035-1351807	America/Sitka	Alaska Time - southeast Alaska panhandle
    +US	+593249-1394338	America/Yakutat	Alaska Time - Alaska panhandle neck
    +US	+643004-1652423	America/Nome	Alaska Time - west Alaska
    +US	+515248-1763929	America/Adak	Aleutian Islands
    +US	+550737-1313435	America/Metlakatla	Metlakatla Time - Annette Island
    +US	+211825-1575130	Pacific/Honolulu	Hawaii
    +UY	-3453-05611	America/Montevideo
    +UZ	+3940+06648	Asia/Samarkand	west Uzbekistan
    +UZ	+4120+06918	Asia/Tashkent	east Uzbekistan
    +VA	+415408+0122711	Europe/Vatican
    +VC	+1309-06114	America/St_Vincent
    +VE	+1030-06656	America/Caracas
    +VG	+1827-06437	America/Tortola
    +VI	+1821-06456	America/St_Thomas
    +VN	+1045+10640	Asia/Ho_Chi_Minh
    +VU	-1740+16825	Pacific/Efate
    +WF	-1318-17610	Pacific/Wallis
    +WS	-1350-17144	Pacific/Apia
    +YE	+1245+04512	Asia/Aden
    +YT	-1247+04514	Indian/Mayotte
    +ZA	-2615+02800	Africa/Johannesburg
    +ZM	-1525+02817	Africa/Lusaka
    +ZW	-1750+03103	Africa/Harare
    diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time/index.html
    new file mode 100644
    index 0000000..3b3efa1
    --- /dev/null
    +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/axes-time/index.html
    @@ -0,0 +1,137 @@
    +
    +
    +
    +	
    +	Flot Examples: Time Axes
    +	
    +	
    +	
    +	
    +	
    +	
    +
    +
    +
    +	
    +
    +	
    + +
    +
    +
    + +

    Monthly mean atmospheric CO2 in PPM at Mauna Loa, Hawaii (source: NOAA/ESRL).

    + +

    If you tell Flot that an axis represents time, the data will be interpreted as timestamps and the ticks adjusted and formatted accordingly.

    + +

    Zoom to: + +

    + +

    Zoom to: + + +

    + +

    The timestamps must be specified as Javascript timestamps, as milliseconds since January 1, 1970 00:00. This is like Unix timestamps, but in milliseconds instead of seconds (remember to multiply with 1000!).

    + +

    As an extra caveat, the timestamps are interpreted according to UTC and, by default, displayed as such. You can set the axis "timezone" option to "browser" to display the timestamps in the user's timezone, or, if you use timezoneJS, you can specify a time zone.

    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/background.png b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/background.png new file mode 100644 index 0000000000000000000000000000000000000000..47a4a4c51463b82c4da5b54c2ad8acf0b78d2b59 GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^j6gh%g9%7Z5Ghp!QY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%ReHKOhE&{|5*W?bV8D@G{=fOx zbHP_}8XDfujyo-2-4)aq%<7O>tDAK!F8Qpf!N-Rwf973&C{_9T_>p)2js?$=uevMu zCZTxR!=hh}^2J}T%=oZr*4LDK3B~&}mp$&hczpZwlHVs+-2FZ2<^MZ*3xikNr*7X| e&HqmI0K@!DMXgQ~-?u + + + + Flot Examples: Basic Options + + + + + + + + + + +
    + +
    +
    +
    + +

    There are plenty of options you can set to control the precise looks of your plot. You can control the ticks on the axes, the legend, the graph type, etc.

    + +

    Flot goes to great lengths to provide sensible defaults so that you don't have to customize much for a good-looking result.

    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/basic-usage/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/basic-usage/index.html new file mode 100644 index 0000000..7a73663 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/basic-usage/index.html @@ -0,0 +1,57 @@ + + + + + Flot Examples: Basic Usage + + + + + + + + + + +
    + +
    +
    +
    + +

    You don't have to do much to get an attractive plot. Create a placeholder, make sure it has dimensions (so Flot knows at what size to draw the plot), then call the plot function with your data.

    + +

    The axes are automatically scaled.

    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/canvas/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/canvas/index.html new file mode 100644 index 0000000..fe48de5 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/canvas/index.html @@ -0,0 +1,75 @@ + + + + + Flot Examples: Canvas text + + + + + + + + + + + + +
    + +
    +
    +
    + +

    This example uses the same dataset (raw oil price in US $/barrel of crude oil vs. the exchange rate from US $ to €) as the multiple-axes example, but uses the canvas plugin to render axis tick labels using canvas text.

    + +

    Enable canvas text

    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/categories/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/categories/index.html new file mode 100644 index 0000000..2ca8bf2 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/categories/index.html @@ -0,0 +1,64 @@ + + + + + Flot Examples: Categories + + + + + + + + + + + +
    + +
    +
    +
    + +

    With the categories plugin you can plot categories/textual data easily.

    + +
    + + + + + + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/examples.css b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/examples.css new file mode 100644 index 0000000..514e2e1 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/examples.css @@ -0,0 +1,97 @@ +* { padding: 0; margin: 0; vertical-align: top; } + +body { + background: url(background.png) repeat-x; + font: 18px/1.5em "proxima-nova", Helvetica, Arial, sans-serif; +} + +a { color: #069; } +a:hover { color: #28b; } + +h2 { + margin-top: 15px; + font: normal 32px "omnes-pro", Helvetica, Arial, sans-serif; +} + +h3 { + margin-left: 30px; + font: normal 26px "omnes-pro", Helvetica, Arial, sans-serif; + color: #666; +} + +p { + margin-top: 10px; +} + +button { + font-size: 18px; + padding: 1px 7px; +} + +input { + font-size: 18px; +} + +input[type=checkbox] { + margin: 7px; +} + +#header { + position: relative; + width: 900px; + margin: auto; +} + +#header h2 { + margin-left: 10px; + vertical-align: middle; + font-size: 42px; + font-weight: bold; + text-decoration: none; + color: #000; +} + +#content { + width: 880px; + margin: 0 auto; + padding: 10px; +} + +#footer { + margin-top: 25px; + margin-bottom: 10px; + text-align: center; + font-size: 12px; + color: #999; +} + +.demo-container { + box-sizing: border-box; + width: 850px; + height: 450px; + padding: 20px 15px 15px 15px; + margin: 15px auto 30px auto; + border: 1px solid #ddd; + background: #fff; + background: linear-gradient(#f6f6f6 0, #fff 50px); + background: -o-linear-gradient(#f6f6f6 0, #fff 50px); + background: -ms-linear-gradient(#f6f6f6 0, #fff 50px); + background: -moz-linear-gradient(#f6f6f6 0, #fff 50px); + background: -webkit-linear-gradient(#f6f6f6 0, #fff 50px); + box-shadow: 0 3px 10px rgba(0,0,0,0.15); + -o-box-shadow: 0 3px 10px rgba(0,0,0,0.1); + -ms-box-shadow: 0 3px 10px rgba(0,0,0,0.1); + -moz-box-shadow: 0 3px 10px rgba(0,0,0,0.1); + -webkit-box-shadow: 0 3px 10px rgba(0,0,0,0.1); +} + +.demo-placeholder { + width: 100%; + height: 100%; + font-size: 14px; + line-height: 1.2em; +} + +.legend table { + border-spacing: 5px; +} \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/image/hs-2004-27-a-large-web.jpg b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/image/hs-2004-27-a-large-web.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a1d5c05837576a37a8a7631d8549472154a74807 GIT binary patch literal 34489 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 K0Y!iSAOG38#4Yy# literal 0 HcmV?d00001 diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/image/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/image/index.html new file mode 100644 index 0000000..c7a6fac --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/image/index.html @@ -0,0 +1,69 @@ + + + + + Flot Examples: Image Plots + + + + + + + + + + + +
    + +
    +
    +
    + +

    The Cat's Eye Nebula (picture from Hubble).

    + +

    With the image plugin, you can plot static images against a set of axes. This is for useful for adding ticks to complex prerendered visualizations. Instead of inputting data points, you specify the images and where their two opposite corners are supposed to be in plot space.

    + +

    Images represent a little further complication because you need to make sure they are loaded before you can use them (Flot skips incomplete images). The plugin comes with a couple of helpers for doing that.

    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/index.html new file mode 100644 index 0000000..db1ef32 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/index.html @@ -0,0 +1,80 @@ + + + + + Flot Examples + + + + + + + + + + +
    + +

    Here are some examples for Flot, the Javascript charting library for jQuery:

    + +

    Basic Usage

    + + + +

    Interactivity

    + + + +

    Additional Features

    + + + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/interacting/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/interacting/index.html new file mode 100644 index 0000000..2bc9d0f --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/interacting/index.html @@ -0,0 +1,118 @@ + + + + + Flot Examples: Interactivity + + + + + + + + + +
    + +
    +
    +
    + +

    One of the goals of Flot is to support user interactions. Try pointing and clicking on the points.

    + +

    + + + +

    + +

    A tooltip is easy to build with a bit of jQuery code and the data returned from the plot.

    + +

    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/navigate/arrow-down.gif b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/navigate/arrow-down.gif new file mode 100644 index 0000000000000000000000000000000000000000..e239d11aa65b7f9e65978ea1306ee0d8562ff66e GIT binary patch literal 916 zcmV;F18e+8Nk%w1VG{ro0Ouh9000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LW3IP8AEC2ui022Tc000Pa0RIUbNU)&6fAjPm6sT|B!A!#L6}%@b z(?VdGGWn8t&sRoZ3)f}LNNZ%KbqoKEGC6Wo%74sQW@PrVp3F@3UjA#vvX#z%*jQrw q$&V$!pZ{)+yoK~%xRK$S{@avklhl70K}r>g@~Y3P2*K(M2mm{w^}*Nx literal 0 HcmV?d00001 diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/navigate/arrow-left.gif b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/navigate/arrow-left.gif new file mode 100644 index 0000000000000000000000000000000000000000..93ffd5a9e0ddd08a790c3da95a228b2235aae7f7 GIT binary patch literal 891 zcmV->1BCoXNk%w1VG{ro0Ow}_000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LW3IP8AEC2ui022Tc000PB0RIUbNU)&6g9sBUT!?TU!-4C7Wzxs6 z96ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LW3IP8AEC2ui022Tc000PH0RIUbNU)&6g9sBU95`>`L4BEkt#e3F zSf)&)nAM|r@1n<6*!V5<<+0?ga0xq>EV)VIL0T(gwrV&~Wz0-1Cl(|b^CUu>7eR_l XXc41EhY(#-{6}-C)2C1s1_S^*=cTQ_ literal 0 HcmV?d00001 diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/navigate/arrow-up.gif b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/navigate/arrow-up.gif new file mode 100644 index 0000000000000000000000000000000000000000..7d196267ebff0e127db6ad9a4fc42a75ff7a348e GIT binary patch literal 916 zcmV;F18e+8Nk%w1VG{ro0Ox@K000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LW3IP8AEC2ui022Tc000Pa0RIUbNU)&6gYyn59N221!gZO}IW!0? z6R?Q|H)Yy{abUPiAj5V1cMD{uTOIkC1j!F0ww0N%VQdAnp~HGGLDqA~EN3QW4oCSM qwGg67S}P?UteDByy?^(7fxLJyldz`*?+MF + + + + Flot Examples: Navigation + + + + + + + + + + + + +
    + +
    +
    +
    + +

    + +

    With the navigate plugin it is easy to add panning and zooming. Drag to pan, double click to zoom (or use the mouse scrollwheel).

    + +

    The plugin fires events (useful for synchronizing several plots) and adds a couple of public methods so you can easily build a little user interface around it, like the little buttons at the top right in the plot.

    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/percentiles/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/percentiles/index.html new file mode 100644 index 0000000..480035b --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/percentiles/index.html @@ -0,0 +1,79 @@ + + + + + Flot Examples: Percentiles + + + + + + + + + + + +
    + +
    +
    +
    + +

    Height in centimeters of individuals from the US (2003-2006) as function of age in years (source: CDC). The 15%-85%, 25%-75% and 50% percentiles are indicated.

    + +

    For each point of a filled curve, you can specify an arbitrary bottom. As this example illustrates, this can be useful for plotting percentiles. If you have the data sets available without appropriate fill bottoms, you can use the fillbetween plugin to compute the data point bottoms automatically.

    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/realtime/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/realtime/index.html new file mode 100644 index 0000000..0a632dd --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/realtime/index.html @@ -0,0 +1,122 @@ + + + + + Flot Examples: Real-time updates + + + + + + + + + + +
    + +
    +
    +
    + +

    You can update a chart periodically to get a real-time effect by using a timer to insert the new data in the plot and redraw it.

    + +

    Time between updates: milliseconds

    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/resize/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/resize/index.html new file mode 100644 index 0000000..20b119c --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/resize/index.html @@ -0,0 +1,76 @@ + + + + + Flot Examples: Resizing + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    + +

    Sometimes it makes more sense to just let the plot take up the available space. In that case, we need to redraw the plot each time the placeholder changes its size. If you include the resize plugin, this is handled automatically.

    + +

    Drag the bottom and right sides of the plot to resize it.

    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/selection/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/selection/index.html new file mode 100644 index 0000000..14e9714 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/selection/index.html @@ -0,0 +1,152 @@ + + + + + Flot Examples: Selection + + + + + + + + + + + +
    + +
    +
    +
    + +

    1000 kg. CO2 emissions per year per capita for various countries (source: Wikipedia).

    + +

    Flot supports selections through the selection plugin. You can enable rectangular selection or one-dimensional selection if the user should only be able to select on one axis. Try left-click and drag on the plot above where selection on the x axis is enabled.

    + +

    You selected:

    + +

    The plot command returns a plot object you can use to control the selection. Click the buttons below.

    + +

    + + +

    + +

    Selections are really useful for zooming. Just replot the chart with min and max values for the axes set to the values in the "plotselected" event triggered. Enable the checkbox below and select a region again.

    + +

    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/series-errorbars/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/series-errorbars/index.html new file mode 100644 index 0000000..8e1f449 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/series-errorbars/index.html @@ -0,0 +1,150 @@ + + + + + Flot Examples: Error Bars + + + + + + + + + + + + +
    + +
    +
    +
    + +

    With the errorbars plugin you can plot error bars to show standard deviation and other useful statistical properties.

    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/series-pie/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/series-pie/index.html new file mode 100644 index 0000000..7b14271 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/series-pie/index.html @@ -0,0 +1,818 @@ + + + + + Flot Examples: Pie Charts + + + + + + + + + + + + +
    + +

    +
    +
    + +
    + +

    + +

    Source Code

    +
    + +
    + +

    Pie Options

    + +
      +
    • option: default value - Description of option
    • +
    • show: false - Enable the plugin and draw as a pie.
    • +
    • radius: 'auto' - Sets the radius of the pie. If value is between 0 and 1 (inclusive) then it will use that as a percentage of the available space (size of the container), otherwise it will use the value as a direct pixel length. If set to 'auto', it will be set to 1 if the legend is enabled and 3/4 if not.
    • +
    • innerRadius: 0 - Sets the radius of the donut hole. If value is between 0 and 1 (inclusive) then it will use that as a percentage of the radius, otherwise it will use the value as a direct pixel length.
    • +
    • startAngle: 3/2 - Factor of PI used for the starting angle (in radians) It can range between 0 and 2 (where 0 and 2 have the same result).
    • +
    • tilt: 1 - Percentage of tilt ranging from 0 and 1, where 1 has no change (fully vertical) and 0 is completely flat (fully horizontal -- in which case nothing actually gets drawn).
    • +
    • shadow:
        +
      • top: 5 - Vertical distance in pixel of the tilted pie shadow.
      • +
      • left: 15 - Horizontal distance in pixel of the tilted pie shadow.
      • +
      • alpha: 0.02 - Alpha value of the tilted pie shadow.
      • +
      +
    • offset:
        +
      • top: 0 - Pixel distance to move the pie up and down (relative to the center).
      • +
      • left: 'auto' - Pixel distance to move the pie left and right (relative to the center).
      • +
      +
    • stroke:
        +
      • color: '#FFF' - Color of the border of each slice. Hexadecimal color definitions are prefered (other formats may or may not work).
      • +
      • width: 1 - Pixel width of the border of each slice.
      • +
      +
    • label:
        +
      • show: 'auto' - Enable/Disable the labels. This can be set to true, false, or 'auto'. When set to 'auto', it will be set to false if the legend is enabled and true if not.
      • +
      • radius: 1 - Sets the radius at which to place the labels. If value is between 0 and 1 (inclusive) then it will use that as a percentage of the available space (size of the container), otherwise it will use the value as a direct pixel length.
      • +
      • threshold: 0 - Hides the labels of any pie slice that is smaller than the specified percentage (ranging from 0 to 1) i.e. a value of '0.03' will hide all slices 3% or less of the total.
      • +
      • formatter: [function] - This function specifies how the positioned labels should be formatted, and is applied after the legend's labelFormatter function. The labels can also still be styled using the class "pieLabel" (i.e. ".pieLabel" or "#graph1 .pieLabel").
      • +
      • radius: 1 - Sets the radius at which to place the labels. If value is between 0 and 1 (inclusive) then it will use that as a percentage of the available space (size of the container), otherwise it will use the value as a direct pixel length.
      • +
      • background:
          +
        • color: null - Backgound color of the positioned labels. If null, the plugin will automatically use the color of the slice.
        • +
        • opacity: 0 - Opacity of the background for the positioned labels. Acceptable values range from 0 to 1, where 0 is completely transparent and 1 is completely opaque.
        • +
        +
      +
    • combine:
        +
      • threshold: 0 - Combines all slices that are smaller than the specified percentage (ranging from 0 to 1) i.e. a value of '0.03' will combine all slices 3% or less into one slice).
      • +
      • color: null - Backgound color of the positioned labels. If null, the plugin will automatically use the color of the first slice to be combined.
      • +
      • label: 'Other' - Label text for the combined slice.
      • +
      +
    • highlight:
        +
      • opacity: 0.5 - Opacity of the highlight overlay on top of the current pie slice. Currently this just uses a white overlay, but support for changing the color of the overlay will also be added at a later date. +
      +
    + +

    Changes/Features

    +
      +
    • v1.0 - November 20th, 2009 - Brian Medendorp
    • +
    • The pie plug-in is now part of the Flot repository! This should make it a lot easier to deal with.
    • +
    • Added a new option (innerRadius) to add a "donut hole" to the center of the pie, based on comtributions from Anthony Aragues. I was a little reluctant to add this feature because it doesn't work very well with the shadow created for the tilted pie, but figured it was worthwhile for non-tilted pies. Also, excanvas apparently doesn't support compositing, so it will fall back to using the stroke color to fill in the center (but I recommend setting the stroke color to the background color anyway).
    • +
    • Changed the lineJoin for the border of the pie slices to use the 'round' option. This should make the center of the pie look better, particularly when there are numerous thin slices.
    • +
    • Included a bug fix submitted by btburnett3 to display a slightly smaller slice in the event that the slice is 100% and being rendered with Internet Explorer. I haven't experienced this bug myself, but it doesn't seem to hurt anything so I've included it.
    • +
    • The tilt value is now used when calculating the maximum radius of the pie in relation to the height of the container. This should prevent the pie from being smaller than it needed to in some cases, as well as reducing the amount of extra white space generated above and below the pie.
    • +
    • Hover and Click functionality are now availabe!
        +
      • Thanks to btburnett3 for the original hover functionality and Anthony Aragues for the modification that makes it compatable with excanvas, this was a huge help!
      • +
      • Added a new option (highlight opacity) to modify the highlight created when mousing over a slice. Currently this just uses a white overlay, but an option to change the hightlight color will be added when the appropriate functionality becomes available. +
      • I had a major setback that required me to practically rebuild the hover/click events from scratch one piece at a time (I discovered that it only worked with a single pie on a page at a time), but the end result ended up being virtually identical to the original, so I'm not quite sure what exactly made it work.
      • +
      • Warning: There are some minor issues with using this functionality in conjuction with some of the other more advanced features (tilt and donut). When using a donut hole, the inner portion still triggers the events even though that portion of the pie is no longer visible. When tilted, the interactive portions still use the original, untilted version of the pie when determining mouse position (this is because the isPointInPath function apparently doesn't work with transformations), however hover and click both work this way, so the appropriate slice is still highlighted when clicking, and it isn't as noticable of a problem.
      • +
    • +
    • Included a bug fix submitted by Xavi Ivars to fix array issues when other javascript libraries are included in addition to jQuery
    • +
      +
    • v0.4 - July 1st, 2009 - Brian Medendorp
    • +
    • Each series will now be shown in the legend, even if it's value is zero. The series will not get a positioned label because it will overlap with the other labels present and often makes them unreadable.
    • +
    • Data can now be passed in using the standard Flot method using an array of datapoints, the pie plugin will simply use the first y-value that it finds for each series in this case. The plugin uses this datastructure internally, but you can still use the old method of passing in a single numerical value for each series (the plugin will convert it as necessary). This should make it easier to transition from other types of graphs (such as a stacked bar graph) to a pie.
    • +
    • The pie can now be tilted at an angle with a new "tilt" option. Acceptable values range from 0-1, where 1 has no change (fully vertical) and 0 is completely flat (fully horizontal -- in which case nothing actually gets drawn). If the plugin determines that it will fit within the canvas, a drop shadow will be drawn under the tilted pie (this also requires a tilt value of 0.8 or less).
    • +
      +
    • v0.3.2 - June 25th, 2009 - Brian Medendorp
    • +
    • Fixed a bug that was causing the pie to be shifted too far left or right when the legend is showing in some cases.
    • +
      +
    • v0.3.1 - June 24th, 2009 - Brian Medendorp
    • +
    • Fixed a bug that was causing nothing to be drawn and generating a javascript error if any of the data values were set to zero.
    • +
      +
    • v0.3 - June 23rd, 2009 - Brian Medendorp
    • +
    • The legend now works without any modifications! Because of changes made to flot and the plugin system (thanks Ole Laursen!) I was able to simplify a number of things and am now able to use the legend without the direct access hack that was required in the previous version.
    • +
      +
    • v0.2 - June 22nd, 2009 - Brian Medendorp
    • +
    • The legend now works but only if you make the necessary changes to jquery.flot.js. Because of this, I changed the default values for pie.radius and pie.label.show to new 'auto' settings that change the default behavior of the size and labels depending on whether the legend functionality is available or not.
    • +
      +
    • v0.1 - June 18th, 2009 - Brian Medendorp
    • +
    • Rewrote the entire pie code into a flot plugin (since that is now an option), so it should be much easier to use and the code is cleaned up a bit. However, the (standard flot) legend is no longer available because the only way to prevent the grid lines from being displayed also prevents the legend from being displayed. Hopefully this can be fixed at a later date.
    • +
    • Restructured and combined some of the options. It should be much easier to deal with now.
    • +
    • Added the ability to change the starting point of the pie (still defaults to the top).
    • +
    • Modified the default options to show the labels to compensate for the lack of a legend.
    • +
    • Modified this page to use a random dataset. Note: you may need to refresh the page to see the effects of some of the examples.
    • +
      +
    • May 21st, 2009 - Brian Medendorp
    • +
    • Merged original pie modifications by Sergey Nosenko into the latest SVN version (as of May 15th, 2009) so that it will work with ie8.
    • +
    • Pie graph will now be centered in the canvas unless moved because of the legend or manually via the options. Additionally it prevents the pie from being moved beyond the edge of the canvas.
    • +
    • Modified the code related to the labelFormatter option to apply flot's legend labelFormatter first. This is so that the labels will be consistent, but still provide extra formatting for the positioned labels (such as adding the percentage value).
    • +
    • Positioned labels now have their backgrounds applied as a seperate element (much like the legend background) so that the opacity value can be set independently from the label itself (foreground). Additionally, the background color defaults to that of the matching slice.
    • +
    • As long as the labelOffset and radiusLimit are not set to hard values, the pie will be shrunk if the labels will extend outside the edge of the canvas
    • +
    • Added new options "radiusLimitFactor" and "radiusLimit" which limits how large the (visual) radius of the pie is in relation to the full radius (as calculated from the canvas dimensions) or a hard-pixel value (respectively). This allows for pushing the labels "outside" the pie.
    • +
    • Added a new option "labelHidePercent" that does not show the positioned labels of slices smaller than the specified percentage. This is to help prevent a bunch of overlapping labels from small slices.
    • +
    • Added a new option "sliceCombinePercent" that combines all slices smaller than the specified percentage into one larger slice. This is to help make the pie more attractive when there are a number of tiny slices. The options "sliceCombineColor" and "sliceCombineLabel" have also been added to change the color and name of the new slice if desired.
    • +
    • Tested in Firefox (3.0.10, 3.5b4), Internet Explorer (6.0.2900, 7.0.5730, 8.0.6001), Chrome (1.0.154), Opera (9.64), and Safari (3.1.1, 4 beta 5528.16). +
    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/series-toggle/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/series-toggle/index.html new file mode 100644 index 0000000..913a9d1 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/series-toggle/index.html @@ -0,0 +1,121 @@ + + + + + Flot Examples: Toggling Series + + + + + + + + + + +
    + +
    +
    +

    +
    + +

    This example shows military budgets for various countries in constant (2005) million US dollars (source: SIPRI).

    + +

    Since all data is available client-side, it's pretty easy to make the plot interactive. Try turning countries on and off with the checkboxes next to the plot.

    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/series-types/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/series-types/index.html new file mode 100644 index 0000000..44f9ab5 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/series-types/index.html @@ -0,0 +1,90 @@ + + + + + Flot Examples: Series Types + + + + + + + + + + +
    + +
    +
    +
    + +

    Flot supports lines, points, filled areas, bars and any combinations of these, in the same plot and even on the same data series.

    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/shared/jquery-ui/jquery-ui.min.css b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/shared/jquery-ui/jquery-ui.min.css new file mode 100644 index 0000000..52752d9 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/shared/jquery-ui/jquery-ui.min.css @@ -0,0 +1,6 @@ +/*! jQuery UI - v1.10.0 - 2013-01-26 +* http://jqueryui.com +* Includes: jquery.ui.core.css, jquery.ui.resizable.css +* Copyright (c) 2013 jQuery Foundation and other contributors Licensed MIT */ + +.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px} \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/stacking/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/stacking/index.html new file mode 100644 index 0000000..5475265 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/stacking/index.html @@ -0,0 +1,107 @@ + + + + + Flot Examples: Stacking + + + + + + + + + + + +
    + +
    +
    +
    + +

    With the stack plugin, you can have Flot stack the series. This is useful if you wish to display both a total and the constituents it is made of. The only requirement is that you provide the input sorted on x.

    + +

    + + +

    + +

    + + + +

    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/symbols/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/symbols/index.html new file mode 100644 index 0000000..58720c7 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/symbols/index.html @@ -0,0 +1,76 @@ + + + + + Flot Examples: Symbols + + + + + + + + + + + +
    + +
    +
    +
    + +

    Points can be marked in several ways, with circles being the built-in default. For other point types, you can define a callback function to draw the symbol. Some common symbols are available in the symbol plugin.

    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/threshold/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/threshold/index.html new file mode 100644 index 0000000..1e7f5a4 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/threshold/index.html @@ -0,0 +1,76 @@ + + + + + Flot Examples: Thresholds + + + + + + + + + + + +
    + +
    +
    +
    + +

    With the threshold plugin, you can apply a specific color to the part of a data series below a threshold. This is can be useful for highlighting negative values, e.g. when displaying net results or what's in stock.

    + +

    + + + +

    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/tracking/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/tracking/index.html new file mode 100644 index 0000000..59bc3c5 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/tracking/index.html @@ -0,0 +1,135 @@ + + + + + Flot Examples: Tracking + + + + + + + + + + + +
    + +
    +
    +
    + +

    You can add crosshairs that'll track the mouse position, either on both axes or as here on only one.

    + +

    If you combine it with listening on hover events, you can use it to track the intersection on the curves by interpolating the data points (look at the legend).

    + +

    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/visitors/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/visitors/index.html new file mode 100644 index 0000000..75e2ce0 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/visitors/index.html @@ -0,0 +1,147 @@ + + + + + Flot Examples: Visitors + + + + + + + + + + + + +
    + +
    +
    +
    + +
    +
    +
    + +

    This plot shows visitors per day to the Flot homepage, with weekends colored.

    + +

    The smaller plot is linked to the main plot, so it acts as an overview. Try dragging a selection on either plot, and watch the behavior of the other.

    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/zooming/index.html b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/zooming/index.html new file mode 100644 index 0000000..a822281 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/examples/zooming/index.html @@ -0,0 +1,144 @@ + + + + + Flot Examples: Selection and zooming + + + + + + + + + + + +
    + +
    +
    +
    +
    + +

    Selection support makes it easy to construct flexible zooming schemes. With a few lines of code, the small overview plot to the right has been connected to the large plot. Try selecting a rectangle on either of them.

    + +
    + + + + + diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/excanvas.js b/SpringBootHomework/target/classes/static/assets/plugins/flot/excanvas.js new file mode 100644 index 0000000..d423cbf --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/excanvas.js @@ -0,0 +1,1428 @@ +// Copyright 2006 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +// Known Issues: +// +// * Patterns only support repeat. +// * Radial gradient are not implemented. The VML version of these look very +// different from the canvas one. +// * Clipping paths are not implemented. +// * Coordsize. The width and height attribute have higher priority than the +// width and height style values which isn't correct. +// * Painting mode isn't implemented. +// * Canvas width/height should is using content-box by default. IE in +// Quirks mode will draw the canvas using border-box. Either change your +// doctype to HTML5 +// (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype) +// or use Box Sizing Behavior from WebFX +// (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html) +// * Non uniform scaling does not correctly scale strokes. +// * Filling very large shapes (above 5000 points) is buggy. +// * Optimize. There is always room for speed improvements. + +// Only add this code if we do not already have a canvas implementation +if (!document.createElement('canvas').getContext) { + +(function() { + + // alias some functions to make (compiled) code shorter + var m = Math; + var mr = m.round; + var ms = m.sin; + var mc = m.cos; + var abs = m.abs; + var sqrt = m.sqrt; + + // this is used for sub pixel precision + var Z = 10; + var Z2 = Z / 2; + + var IE_VERSION = +navigator.userAgent.match(/MSIE ([\d.]+)?/)[1]; + + /** + * This funtion is assigned to the elements as element.getContext(). + * @this {HTMLElement} + * @return {CanvasRenderingContext2D_} + */ + function getContext() { + return this.context_ || + (this.context_ = new CanvasRenderingContext2D_(this)); + } + + var slice = Array.prototype.slice; + + /** + * Binds a function to an object. The returned function will always use the + * passed in {@code obj} as {@code this}. + * + * Example: + * + * g = bind(f, obj, a, b) + * g(c, d) // will do f.call(obj, a, b, c, d) + * + * @param {Function} f The function to bind the object to + * @param {Object} obj The object that should act as this when the function + * is called + * @param {*} var_args Rest arguments that will be used as the initial + * arguments when the function is called + * @return {Function} A new function that has bound this + */ + function bind(f, obj, var_args) { + var a = slice.call(arguments, 2); + return function() { + return f.apply(obj, a.concat(slice.call(arguments))); + }; + } + + function encodeHtmlAttribute(s) { + return String(s).replace(/&/g, '&').replace(/"/g, '"'); + } + + function addNamespace(doc, prefix, urn) { + if (!doc.namespaces[prefix]) { + doc.namespaces.add(prefix, urn, '#default#VML'); + } + } + + function addNamespacesAndStylesheet(doc) { + addNamespace(doc, 'g_vml_', 'urn:schemas-microsoft-com:vml'); + addNamespace(doc, 'g_o_', 'urn:schemas-microsoft-com:office:office'); + + // Setup default CSS. Only add one style sheet per document + if (!doc.styleSheets['ex_canvas_']) { + var ss = doc.createStyleSheet(); + ss.owningElement.id = 'ex_canvas_'; + ss.cssText = 'canvas{display:inline-block;overflow:hidden;' + + // default size is 300x150 in Gecko and Opera + 'text-align:left;width:300px;height:150px}'; + } + } + + // Add namespaces and stylesheet at startup. + addNamespacesAndStylesheet(document); + + var G_vmlCanvasManager_ = { + init: function(opt_doc) { + var doc = opt_doc || document; + // Create a dummy element so that IE will allow canvas elements to be + // recognized. + doc.createElement('canvas'); + doc.attachEvent('onreadystatechange', bind(this.init_, this, doc)); + }, + + init_: function(doc) { + // find all canvas elements + var els = doc.getElementsByTagName('canvas'); + for (var i = 0; i < els.length; i++) { + this.initElement(els[i]); + } + }, + + /** + * Public initializes a canvas element so that it can be used as canvas + * element from now on. This is called automatically before the page is + * loaded but if you are creating elements using createElement you need to + * make sure this is called on the element. + * @param {HTMLElement} el The canvas element to initialize. + * @return {HTMLElement} the element that was created. + */ + initElement: function(el) { + if (!el.getContext) { + el.getContext = getContext; + + // Add namespaces and stylesheet to document of the element. + addNamespacesAndStylesheet(el.ownerDocument); + + // Remove fallback content. There is no way to hide text nodes so we + // just remove all childNodes. We could hide all elements and remove + // text nodes but who really cares about the fallback content. + el.innerHTML = ''; + + // do not use inline function because that will leak memory + el.attachEvent('onpropertychange', onPropertyChange); + el.attachEvent('onresize', onResize); + + var attrs = el.attributes; + if (attrs.width && attrs.width.specified) { + // TODO: use runtimeStyle and coordsize + // el.getContext().setWidth_(attrs.width.nodeValue); + el.style.width = attrs.width.nodeValue + 'px'; + } else { + el.width = el.clientWidth; + } + if (attrs.height && attrs.height.specified) { + // TODO: use runtimeStyle and coordsize + // el.getContext().setHeight_(attrs.height.nodeValue); + el.style.height = attrs.height.nodeValue + 'px'; + } else { + el.height = el.clientHeight; + } + //el.getContext().setCoordsize_() + } + return el; + } + }; + + function onPropertyChange(e) { + var el = e.srcElement; + + switch (e.propertyName) { + case 'width': + el.getContext().clearRect(); + el.style.width = el.attributes.width.nodeValue + 'px'; + // In IE8 this does not trigger onresize. + el.firstChild.style.width = el.clientWidth + 'px'; + break; + case 'height': + el.getContext().clearRect(); + el.style.height = el.attributes.height.nodeValue + 'px'; + el.firstChild.style.height = el.clientHeight + 'px'; + break; + } + } + + function onResize(e) { + var el = e.srcElement; + if (el.firstChild) { + el.firstChild.style.width = el.clientWidth + 'px'; + el.firstChild.style.height = el.clientHeight + 'px'; + } + } + + G_vmlCanvasManager_.init(); + + // precompute "00" to "FF" + var decToHex = []; + for (var i = 0; i < 16; i++) { + for (var j = 0; j < 16; j++) { + decToHex[i * 16 + j] = i.toString(16) + j.toString(16); + } + } + + function createMatrixIdentity() { + return [ + [1, 0, 0], + [0, 1, 0], + [0, 0, 1] + ]; + } + + function matrixMultiply(m1, m2) { + var result = createMatrixIdentity(); + + for (var x = 0; x < 3; x++) { + for (var y = 0; y < 3; y++) { + var sum = 0; + + for (var z = 0; z < 3; z++) { + sum += m1[x][z] * m2[z][y]; + } + + result[x][y] = sum; + } + } + return result; + } + + function copyState(o1, o2) { + o2.fillStyle = o1.fillStyle; + o2.lineCap = o1.lineCap; + o2.lineJoin = o1.lineJoin; + o2.lineWidth = o1.lineWidth; + o2.miterLimit = o1.miterLimit; + o2.shadowBlur = o1.shadowBlur; + o2.shadowColor = o1.shadowColor; + o2.shadowOffsetX = o1.shadowOffsetX; + o2.shadowOffsetY = o1.shadowOffsetY; + o2.strokeStyle = o1.strokeStyle; + o2.globalAlpha = o1.globalAlpha; + o2.font = o1.font; + o2.textAlign = o1.textAlign; + o2.textBaseline = o1.textBaseline; + o2.arcScaleX_ = o1.arcScaleX_; + o2.arcScaleY_ = o1.arcScaleY_; + o2.lineScale_ = o1.lineScale_; + } + + var colorData = { + aliceblue: '#F0F8FF', + antiquewhite: '#FAEBD7', + aquamarine: '#7FFFD4', + azure: '#F0FFFF', + beige: '#F5F5DC', + bisque: '#FFE4C4', + black: '#000000', + blanchedalmond: '#FFEBCD', + blueviolet: '#8A2BE2', + brown: '#A52A2A', + burlywood: '#DEB887', + cadetblue: '#5F9EA0', + chartreuse: '#7FFF00', + chocolate: '#D2691E', + coral: '#FF7F50', + cornflowerblue: '#6495ED', + cornsilk: '#FFF8DC', + crimson: '#DC143C', + cyan: '#00FFFF', + darkblue: '#00008B', + darkcyan: '#008B8B', + darkgoldenrod: '#B8860B', + darkgray: '#A9A9A9', + darkgreen: '#006400', + darkgrey: '#A9A9A9', + darkkhaki: '#BDB76B', + darkmagenta: '#8B008B', + darkolivegreen: '#556B2F', + darkorange: '#FF8C00', + darkorchid: '#9932CC', + darkred: '#8B0000', + darksalmon: '#E9967A', + darkseagreen: '#8FBC8F', + darkslateblue: '#483D8B', + darkslategray: '#2F4F4F', + darkslategrey: '#2F4F4F', + darkturquoise: '#00CED1', + darkviolet: '#9400D3', + deeppink: '#FF1493', + deepskyblue: '#00BFFF', + dimgray: '#696969', + dimgrey: '#696969', + dodgerblue: '#1E90FF', + firebrick: '#B22222', + floralwhite: '#FFFAF0', + forestgreen: '#228B22', + gainsboro: '#DCDCDC', + ghostwhite: '#F8F8FF', + gold: '#FFD700', + goldenrod: '#DAA520', + grey: '#808080', + greenyellow: '#ADFF2F', + honeydew: '#F0FFF0', + hotpink: '#FF69B4', + indianred: '#CD5C5C', + indigo: '#4B0082', + ivory: '#FFFFF0', + khaki: '#F0E68C', + lavender: '#E6E6FA', + lavenderblush: '#FFF0F5', + lawngreen: '#7CFC00', + lemonchiffon: '#FFFACD', + lightblue: '#ADD8E6', + lightcoral: '#F08080', + lightcyan: '#E0FFFF', + lightgoldenrodyellow: '#FAFAD2', + lightgreen: '#90EE90', + lightgrey: '#D3D3D3', + lightpink: '#FFB6C1', + lightsalmon: '#FFA07A', + lightseagreen: '#20B2AA', + lightskyblue: '#87CEFA', + lightslategray: '#778899', + lightslategrey: '#778899', + lightsteelblue: '#B0C4DE', + lightyellow: '#FFFFE0', + limegreen: '#32CD32', + linen: '#FAF0E6', + magenta: '#FF00FF', + mediumaquamarine: '#66CDAA', + mediumblue: '#0000CD', + mediumorchid: '#BA55D3', + mediumpurple: '#9370DB', + mediumseagreen: '#3CB371', + mediumslateblue: '#7B68EE', + mediumspringgreen: '#00FA9A', + mediumturquoise: '#48D1CC', + mediumvioletred: '#C71585', + midnightblue: '#191970', + mintcream: '#F5FFFA', + mistyrose: '#FFE4E1', + moccasin: '#FFE4B5', + navajowhite: '#FFDEAD', + oldlace: '#FDF5E6', + olivedrab: '#6B8E23', + orange: '#FFA500', + orangered: '#FF4500', + orchid: '#DA70D6', + palegoldenrod: '#EEE8AA', + palegreen: '#98FB98', + paleturquoise: '#AFEEEE', + palevioletred: '#DB7093', + papayawhip: '#FFEFD5', + peachpuff: '#FFDAB9', + peru: '#CD853F', + pink: '#FFC0CB', + plum: '#DDA0DD', + powderblue: '#B0E0E6', + rosybrown: '#BC8F8F', + royalblue: '#4169E1', + saddlebrown: '#8B4513', + salmon: '#FA8072', + sandybrown: '#F4A460', + seagreen: '#2E8B57', + seashell: '#FFF5EE', + sienna: '#A0522D', + skyblue: '#87CEEB', + slateblue: '#6A5ACD', + slategray: '#708090', + slategrey: '#708090', + snow: '#FFFAFA', + springgreen: '#00FF7F', + steelblue: '#4682B4', + tan: '#D2B48C', + thistle: '#D8BFD8', + tomato: '#FF6347', + turquoise: '#40E0D0', + violet: '#EE82EE', + wheat: '#F5DEB3', + whitesmoke: '#F5F5F5', + yellowgreen: '#9ACD32' + }; + + + function getRgbHslContent(styleString) { + var start = styleString.indexOf('(', 3); + var end = styleString.indexOf(')', start + 1); + var parts = styleString.substring(start + 1, end).split(','); + // add alpha if needed + if (parts.length != 4 || styleString.charAt(3) != 'a') { + parts[3] = 1; + } + return parts; + } + + function percent(s) { + return parseFloat(s) / 100; + } + + function clamp(v, min, max) { + return Math.min(max, Math.max(min, v)); + } + + function hslToRgb(parts){ + var r, g, b, h, s, l; + h = parseFloat(parts[0]) / 360 % 360; + if (h < 0) + h++; + s = clamp(percent(parts[1]), 0, 1); + l = clamp(percent(parts[2]), 0, 1); + if (s == 0) { + r = g = b = l; // achromatic + } else { + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = hueToRgb(p, q, h + 1 / 3); + g = hueToRgb(p, q, h); + b = hueToRgb(p, q, h - 1 / 3); + } + + return '#' + decToHex[Math.floor(r * 255)] + + decToHex[Math.floor(g * 255)] + + decToHex[Math.floor(b * 255)]; + } + + function hueToRgb(m1, m2, h) { + if (h < 0) + h++; + if (h > 1) + h--; + + if (6 * h < 1) + return m1 + (m2 - m1) * 6 * h; + else if (2 * h < 1) + return m2; + else if (3 * h < 2) + return m1 + (m2 - m1) * (2 / 3 - h) * 6; + else + return m1; + } + + var processStyleCache = {}; + + function processStyle(styleString) { + if (styleString in processStyleCache) { + return processStyleCache[styleString]; + } + + var str, alpha = 1; + + styleString = String(styleString); + if (styleString.charAt(0) == '#') { + str = styleString; + } else if (/^rgb/.test(styleString)) { + var parts = getRgbHslContent(styleString); + var str = '#', n; + for (var i = 0; i < 3; i++) { + if (parts[i].indexOf('%') != -1) { + n = Math.floor(percent(parts[i]) * 255); + } else { + n = +parts[i]; + } + str += decToHex[clamp(n, 0, 255)]; + } + alpha = +parts[3]; + } else if (/^hsl/.test(styleString)) { + var parts = getRgbHslContent(styleString); + str = hslToRgb(parts); + alpha = parts[3]; + } else { + str = colorData[styleString] || styleString; + } + return processStyleCache[styleString] = {color: str, alpha: alpha}; + } + + var DEFAULT_STYLE = { + style: 'normal', + variant: 'normal', + weight: 'normal', + size: 10, + family: 'sans-serif' + }; + + // Internal text style cache + var fontStyleCache = {}; + + function processFontStyle(styleString) { + if (fontStyleCache[styleString]) { + return fontStyleCache[styleString]; + } + + var el = document.createElement('div'); + var style = el.style; + try { + style.font = styleString; + } catch (ex) { + // Ignore failures to set to invalid font. + } + + return fontStyleCache[styleString] = { + style: style.fontStyle || DEFAULT_STYLE.style, + variant: style.fontVariant || DEFAULT_STYLE.variant, + weight: style.fontWeight || DEFAULT_STYLE.weight, + size: style.fontSize || DEFAULT_STYLE.size, + family: style.fontFamily || DEFAULT_STYLE.family + }; + } + + function getComputedStyle(style, element) { + var computedStyle = {}; + + for (var p in style) { + computedStyle[p] = style[p]; + } + + // Compute the size + var canvasFontSize = parseFloat(element.currentStyle.fontSize), + fontSize = parseFloat(style.size); + + if (typeof style.size == 'number') { + computedStyle.size = style.size; + } else if (style.size.indexOf('px') != -1) { + computedStyle.size = fontSize; + } else if (style.size.indexOf('em') != -1) { + computedStyle.size = canvasFontSize * fontSize; + } else if(style.size.indexOf('%') != -1) { + computedStyle.size = (canvasFontSize / 100) * fontSize; + } else if (style.size.indexOf('pt') != -1) { + computedStyle.size = fontSize / .75; + } else { + computedStyle.size = canvasFontSize; + } + + // Different scaling between normal text and VML text. This was found using + // trial and error to get the same size as non VML text. + computedStyle.size *= 0.981; + + return computedStyle; + } + + function buildStyle(style) { + return style.style + ' ' + style.variant + ' ' + style.weight + ' ' + + style.size + 'px ' + style.family; + } + + var lineCapMap = { + 'butt': 'flat', + 'round': 'round' + }; + + function processLineCap(lineCap) { + return lineCapMap[lineCap] || 'square'; + } + + /** + * This class implements CanvasRenderingContext2D interface as described by + * the WHATWG. + * @param {HTMLElement} canvasElement The element that the 2D context should + * be associated with + */ + function CanvasRenderingContext2D_(canvasElement) { + this.m_ = createMatrixIdentity(); + + this.mStack_ = []; + this.aStack_ = []; + this.currentPath_ = []; + + // Canvas context properties + this.strokeStyle = '#000'; + this.fillStyle = '#000'; + + this.lineWidth = 1; + this.lineJoin = 'miter'; + this.lineCap = 'butt'; + this.miterLimit = Z * 1; + this.globalAlpha = 1; + this.font = '10px sans-serif'; + this.textAlign = 'left'; + this.textBaseline = 'alphabetic'; + this.canvas = canvasElement; + + var cssText = 'width:' + canvasElement.clientWidth + 'px;height:' + + canvasElement.clientHeight + 'px;overflow:hidden;position:absolute'; + var el = canvasElement.ownerDocument.createElement('div'); + el.style.cssText = cssText; + canvasElement.appendChild(el); + + var overlayEl = el.cloneNode(false); + // Use a non transparent background. + overlayEl.style.backgroundColor = 'red'; + overlayEl.style.filter = 'alpha(opacity=0)'; + canvasElement.appendChild(overlayEl); + + this.element_ = el; + this.arcScaleX_ = 1; + this.arcScaleY_ = 1; + this.lineScale_ = 1; + } + + var contextPrototype = CanvasRenderingContext2D_.prototype; + contextPrototype.clearRect = function() { + if (this.textMeasureEl_) { + this.textMeasureEl_.removeNode(true); + this.textMeasureEl_ = null; + } + this.element_.innerHTML = ''; + }; + + contextPrototype.beginPath = function() { + // TODO: Branch current matrix so that save/restore has no effect + // as per safari docs. + this.currentPath_ = []; + }; + + contextPrototype.moveTo = function(aX, aY) { + var p = getCoords(this, aX, aY); + this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y}); + this.currentX_ = p.x; + this.currentY_ = p.y; + }; + + contextPrototype.lineTo = function(aX, aY) { + var p = getCoords(this, aX, aY); + this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y}); + + this.currentX_ = p.x; + this.currentY_ = p.y; + }; + + contextPrototype.bezierCurveTo = function(aCP1x, aCP1y, + aCP2x, aCP2y, + aX, aY) { + var p = getCoords(this, aX, aY); + var cp1 = getCoords(this, aCP1x, aCP1y); + var cp2 = getCoords(this, aCP2x, aCP2y); + bezierCurveTo(this, cp1, cp2, p); + }; + + // Helper function that takes the already fixed cordinates. + function bezierCurveTo(self, cp1, cp2, p) { + self.currentPath_.push({ + type: 'bezierCurveTo', + cp1x: cp1.x, + cp1y: cp1.y, + cp2x: cp2.x, + cp2y: cp2.y, + x: p.x, + y: p.y + }); + self.currentX_ = p.x; + self.currentY_ = p.y; + } + + contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) { + // the following is lifted almost directly from + // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes + + var cp = getCoords(this, aCPx, aCPy); + var p = getCoords(this, aX, aY); + + var cp1 = { + x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_), + y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_) + }; + var cp2 = { + x: cp1.x + (p.x - this.currentX_) / 3.0, + y: cp1.y + (p.y - this.currentY_) / 3.0 + }; + + bezierCurveTo(this, cp1, cp2, p); + }; + + contextPrototype.arc = function(aX, aY, aRadius, + aStartAngle, aEndAngle, aClockwise) { + aRadius *= Z; + var arcType = aClockwise ? 'at' : 'wa'; + + var xStart = aX + mc(aStartAngle) * aRadius - Z2; + var yStart = aY + ms(aStartAngle) * aRadius - Z2; + + var xEnd = aX + mc(aEndAngle) * aRadius - Z2; + var yEnd = aY + ms(aEndAngle) * aRadius - Z2; + + // IE won't render arches drawn counter clockwise if xStart == xEnd. + if (xStart == xEnd && !aClockwise) { + xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something + // that can be represented in binary + } + + var p = getCoords(this, aX, aY); + var pStart = getCoords(this, xStart, yStart); + var pEnd = getCoords(this, xEnd, yEnd); + + this.currentPath_.push({type: arcType, + x: p.x, + y: p.y, + radius: aRadius, + xStart: pStart.x, + yStart: pStart.y, + xEnd: pEnd.x, + yEnd: pEnd.y}); + + }; + + contextPrototype.rect = function(aX, aY, aWidth, aHeight) { + this.moveTo(aX, aY); + this.lineTo(aX + aWidth, aY); + this.lineTo(aX + aWidth, aY + aHeight); + this.lineTo(aX, aY + aHeight); + this.closePath(); + }; + + contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) { + var oldPath = this.currentPath_; + this.beginPath(); + + this.moveTo(aX, aY); + this.lineTo(aX + aWidth, aY); + this.lineTo(aX + aWidth, aY + aHeight); + this.lineTo(aX, aY + aHeight); + this.closePath(); + this.stroke(); + + this.currentPath_ = oldPath; + }; + + contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) { + var oldPath = this.currentPath_; + this.beginPath(); + + this.moveTo(aX, aY); + this.lineTo(aX + aWidth, aY); + this.lineTo(aX + aWidth, aY + aHeight); + this.lineTo(aX, aY + aHeight); + this.closePath(); + this.fill(); + + this.currentPath_ = oldPath; + }; + + contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) { + var gradient = new CanvasGradient_('gradient'); + gradient.x0_ = aX0; + gradient.y0_ = aY0; + gradient.x1_ = aX1; + gradient.y1_ = aY1; + return gradient; + }; + + contextPrototype.createRadialGradient = function(aX0, aY0, aR0, + aX1, aY1, aR1) { + var gradient = new CanvasGradient_('gradientradial'); + gradient.x0_ = aX0; + gradient.y0_ = aY0; + gradient.r0_ = aR0; + gradient.x1_ = aX1; + gradient.y1_ = aY1; + gradient.r1_ = aR1; + return gradient; + }; + + contextPrototype.drawImage = function(image, var_args) { + var dx, dy, dw, dh, sx, sy, sw, sh; + + // to find the original width we overide the width and height + var oldRuntimeWidth = image.runtimeStyle.width; + var oldRuntimeHeight = image.runtimeStyle.height; + image.runtimeStyle.width = 'auto'; + image.runtimeStyle.height = 'auto'; + + // get the original size + var w = image.width; + var h = image.height; + + // and remove overides + image.runtimeStyle.width = oldRuntimeWidth; + image.runtimeStyle.height = oldRuntimeHeight; + + if (arguments.length == 3) { + dx = arguments[1]; + dy = arguments[2]; + sx = sy = 0; + sw = dw = w; + sh = dh = h; + } else if (arguments.length == 5) { + dx = arguments[1]; + dy = arguments[2]; + dw = arguments[3]; + dh = arguments[4]; + sx = sy = 0; + sw = w; + sh = h; + } else if (arguments.length == 9) { + sx = arguments[1]; + sy = arguments[2]; + sw = arguments[3]; + sh = arguments[4]; + dx = arguments[5]; + dy = arguments[6]; + dw = arguments[7]; + dh = arguments[8]; + } else { + throw Error('Invalid number of arguments'); + } + + var d = getCoords(this, dx, dy); + + var w2 = sw / 2; + var h2 = sh / 2; + + var vmlStr = []; + + var W = 10; + var H = 10; + + // For some reason that I've now forgotten, using divs didn't work + vmlStr.push(' ' , + '', + ''); + + this.element_.insertAdjacentHTML('BeforeEnd', vmlStr.join('')); + }; + + contextPrototype.stroke = function(aFill) { + var W = 10; + var H = 10; + // Divide the shape into chunks if it's too long because IE has a limit + // somewhere for how long a VML shape can be. This simple division does + // not work with fills, only strokes, unfortunately. + var chunkSize = 5000; + + var min = {x: null, y: null}; + var max = {x: null, y: null}; + + for (var j = 0; j < this.currentPath_.length; j += chunkSize) { + var lineStr = []; + var lineOpen = false; + + lineStr.push(''); + + if (!aFill) { + appendStroke(this, lineStr); + } else { + appendFill(this, lineStr, min, max); + } + + lineStr.push(''); + + this.element_.insertAdjacentHTML('beforeEnd', lineStr.join('')); + } + }; + + function appendStroke(ctx, lineStr) { + var a = processStyle(ctx.strokeStyle); + var color = a.color; + var opacity = a.alpha * ctx.globalAlpha; + var lineWidth = ctx.lineScale_ * ctx.lineWidth; + + // VML cannot correctly render a line if the width is less than 1px. + // In that case, we dilute the color to make the line look thinner. + if (lineWidth < 1) { + opacity *= lineWidth; + } + + lineStr.push( + '' + ); + } + + function appendFill(ctx, lineStr, min, max) { + var fillStyle = ctx.fillStyle; + var arcScaleX = ctx.arcScaleX_; + var arcScaleY = ctx.arcScaleY_; + var width = max.x - min.x; + var height = max.y - min.y; + if (fillStyle instanceof CanvasGradient_) { + // TODO: Gradients transformed with the transformation matrix. + var angle = 0; + var focus = {x: 0, y: 0}; + + // additional offset + var shift = 0; + // scale factor for offset + var expansion = 1; + + if (fillStyle.type_ == 'gradient') { + var x0 = fillStyle.x0_ / arcScaleX; + var y0 = fillStyle.y0_ / arcScaleY; + var x1 = fillStyle.x1_ / arcScaleX; + var y1 = fillStyle.y1_ / arcScaleY; + var p0 = getCoords(ctx, x0, y0); + var p1 = getCoords(ctx, x1, y1); + var dx = p1.x - p0.x; + var dy = p1.y - p0.y; + angle = Math.atan2(dx, dy) * 180 / Math.PI; + + // The angle should be a non-negative number. + if (angle < 0) { + angle += 360; + } + + // Very small angles produce an unexpected result because they are + // converted to a scientific notation string. + if (angle < 1e-6) { + angle = 0; + } + } else { + var p0 = getCoords(ctx, fillStyle.x0_, fillStyle.y0_); + focus = { + x: (p0.x - min.x) / width, + y: (p0.y - min.y) / height + }; + + width /= arcScaleX * Z; + height /= arcScaleY * Z; + var dimension = m.max(width, height); + shift = 2 * fillStyle.r0_ / dimension; + expansion = 2 * fillStyle.r1_ / dimension - shift; + } + + // We need to sort the color stops in ascending order by offset, + // otherwise IE won't interpret it correctly. + var stops = fillStyle.colors_; + stops.sort(function(cs1, cs2) { + return cs1.offset - cs2.offset; + }); + + var length = stops.length; + var color1 = stops[0].color; + var color2 = stops[length - 1].color; + var opacity1 = stops[0].alpha * ctx.globalAlpha; + var opacity2 = stops[length - 1].alpha * ctx.globalAlpha; + + var colors = []; + for (var i = 0; i < length; i++) { + var stop = stops[i]; + colors.push(stop.offset * expansion + shift + ' ' + stop.color); + } + + // When colors attribute is used, the meanings of opacity and o:opacity2 + // are reversed. + lineStr.push(''); + } else if (fillStyle instanceof CanvasPattern_) { + if (width && height) { + var deltaLeft = -min.x; + var deltaTop = -min.y; + lineStr.push(''); + } + } else { + var a = processStyle(ctx.fillStyle); + var color = a.color; + var opacity = a.alpha * ctx.globalAlpha; + lineStr.push(''); + } + } + + contextPrototype.fill = function() { + this.stroke(true); + }; + + contextPrototype.closePath = function() { + this.currentPath_.push({type: 'close'}); + }; + + function getCoords(ctx, aX, aY) { + var m = ctx.m_; + return { + x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2, + y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2 + }; + }; + + contextPrototype.save = function() { + var o = {}; + copyState(this, o); + this.aStack_.push(o); + this.mStack_.push(this.m_); + this.m_ = matrixMultiply(createMatrixIdentity(), this.m_); + }; + + contextPrototype.restore = function() { + if (this.aStack_.length) { + copyState(this.aStack_.pop(), this); + this.m_ = this.mStack_.pop(); + } + }; + + function matrixIsFinite(m) { + return isFinite(m[0][0]) && isFinite(m[0][1]) && + isFinite(m[1][0]) && isFinite(m[1][1]) && + isFinite(m[2][0]) && isFinite(m[2][1]); + } + + function setM(ctx, m, updateLineScale) { + if (!matrixIsFinite(m)) { + return; + } + ctx.m_ = m; + + if (updateLineScale) { + // Get the line scale. + // Determinant of this.m_ means how much the area is enlarged by the + // transformation. So its square root can be used as a scale factor + // for width. + var det = m[0][0] * m[1][1] - m[0][1] * m[1][0]; + ctx.lineScale_ = sqrt(abs(det)); + } + } + + contextPrototype.translate = function(aX, aY) { + var m1 = [ + [1, 0, 0], + [0, 1, 0], + [aX, aY, 1] + ]; + + setM(this, matrixMultiply(m1, this.m_), false); + }; + + contextPrototype.rotate = function(aRot) { + var c = mc(aRot); + var s = ms(aRot); + + var m1 = [ + [c, s, 0], + [-s, c, 0], + [0, 0, 1] + ]; + + setM(this, matrixMultiply(m1, this.m_), false); + }; + + contextPrototype.scale = function(aX, aY) { + this.arcScaleX_ *= aX; + this.arcScaleY_ *= aY; + var m1 = [ + [aX, 0, 0], + [0, aY, 0], + [0, 0, 1] + ]; + + setM(this, matrixMultiply(m1, this.m_), true); + }; + + contextPrototype.transform = function(m11, m12, m21, m22, dx, dy) { + var m1 = [ + [m11, m12, 0], + [m21, m22, 0], + [dx, dy, 1] + ]; + + setM(this, matrixMultiply(m1, this.m_), true); + }; + + contextPrototype.setTransform = function(m11, m12, m21, m22, dx, dy) { + var m = [ + [m11, m12, 0], + [m21, m22, 0], + [dx, dy, 1] + ]; + + setM(this, m, true); + }; + + /** + * The text drawing function. + * The maxWidth argument isn't taken in account, since no browser supports + * it yet. + */ + contextPrototype.drawText_ = function(text, x, y, maxWidth, stroke) { + var m = this.m_, + delta = 1000, + left = 0, + right = delta, + offset = {x: 0, y: 0}, + lineStr = []; + + var fontStyle = getComputedStyle(processFontStyle(this.font), + this.element_); + + var fontStyleString = buildStyle(fontStyle); + + var elementStyle = this.element_.currentStyle; + var textAlign = this.textAlign.toLowerCase(); + switch (textAlign) { + case 'left': + case 'center': + case 'right': + break; + case 'end': + textAlign = elementStyle.direction == 'ltr' ? 'right' : 'left'; + break; + case 'start': + textAlign = elementStyle.direction == 'rtl' ? 'right' : 'left'; + break; + default: + textAlign = 'left'; + } + + // 1.75 is an arbitrary number, as there is no info about the text baseline + switch (this.textBaseline) { + case 'hanging': + case 'top': + offset.y = fontStyle.size / 1.75; + break; + case 'middle': + break; + default: + case null: + case 'alphabetic': + case 'ideographic': + case 'bottom': + offset.y = -fontStyle.size / 2.25; + break; + } + + switch(textAlign) { + case 'right': + left = delta; + right = 0.05; + break; + case 'center': + left = right = delta / 2; + break; + } + + var d = getCoords(this, x + offset.x, y + offset.y); + + lineStr.push(''); + + if (stroke) { + appendStroke(this, lineStr); + } else { + // TODO: Fix the min and max params. + appendFill(this, lineStr, {x: -left, y: 0}, + {x: right, y: fontStyle.size}); + } + + var skewM = m[0][0].toFixed(3) + ',' + m[1][0].toFixed(3) + ',' + + m[0][1].toFixed(3) + ',' + m[1][1].toFixed(3) + ',0,0'; + + var skewOffset = mr(d.x / Z) + ',' + mr(d.y / Z); + + lineStr.push('', + '', + ''); + + this.element_.insertAdjacentHTML('beforeEnd', lineStr.join('')); + }; + + contextPrototype.fillText = function(text, x, y, maxWidth) { + this.drawText_(text, x, y, maxWidth, false); + }; + + contextPrototype.strokeText = function(text, x, y, maxWidth) { + this.drawText_(text, x, y, maxWidth, true); + }; + + contextPrototype.measureText = function(text) { + if (!this.textMeasureEl_) { + var s = ''; + this.element_.insertAdjacentHTML('beforeEnd', s); + this.textMeasureEl_ = this.element_.lastChild; + } + var doc = this.element_.ownerDocument; + this.textMeasureEl_.innerHTML = ''; + this.textMeasureEl_.style.font = this.font; + // Don't use innerHTML or innerText because they allow markup/whitespace. + this.textMeasureEl_.appendChild(doc.createTextNode(text)); + return {width: this.textMeasureEl_.offsetWidth}; + }; + + /******** STUBS ********/ + contextPrototype.clip = function() { + // TODO: Implement + }; + + contextPrototype.arcTo = function() { + // TODO: Implement + }; + + contextPrototype.createPattern = function(image, repetition) { + return new CanvasPattern_(image, repetition); + }; + + // Gradient / Pattern Stubs + function CanvasGradient_(aType) { + this.type_ = aType; + this.x0_ = 0; + this.y0_ = 0; + this.r0_ = 0; + this.x1_ = 0; + this.y1_ = 0; + this.r1_ = 0; + this.colors_ = []; + } + + CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) { + aColor = processStyle(aColor); + this.colors_.push({offset: aOffset, + color: aColor.color, + alpha: aColor.alpha}); + }; + + function CanvasPattern_(image, repetition) { + assertImageIsValid(image); + switch (repetition) { + case 'repeat': + case null: + case '': + this.repetition_ = 'repeat'; + break + case 'repeat-x': + case 'repeat-y': + case 'no-repeat': + this.repetition_ = repetition; + break; + default: + throwException('SYNTAX_ERR'); + } + + this.src_ = image.src; + this.width_ = image.width; + this.height_ = image.height; + } + + function throwException(s) { + throw new DOMException_(s); + } + + function assertImageIsValid(img) { + if (!img || img.nodeType != 1 || img.tagName != 'IMG') { + throwException('TYPE_MISMATCH_ERR'); + } + if (img.readyState != 'complete') { + throwException('INVALID_STATE_ERR'); + } + } + + function DOMException_(s) { + this.code = this[s]; + this.message = s +': DOM Exception ' + this.code; + } + var p = DOMException_.prototype = new Error; + p.INDEX_SIZE_ERR = 1; + p.DOMSTRING_SIZE_ERR = 2; + p.HIERARCHY_REQUEST_ERR = 3; + p.WRONG_DOCUMENT_ERR = 4; + p.INVALID_CHARACTER_ERR = 5; + p.NO_DATA_ALLOWED_ERR = 6; + p.NO_MODIFICATION_ALLOWED_ERR = 7; + p.NOT_FOUND_ERR = 8; + p.NOT_SUPPORTED_ERR = 9; + p.INUSE_ATTRIBUTE_ERR = 10; + p.INVALID_STATE_ERR = 11; + p.SYNTAX_ERR = 12; + p.INVALID_MODIFICATION_ERR = 13; + p.NAMESPACE_ERR = 14; + p.INVALID_ACCESS_ERR = 15; + p.VALIDATION_ERR = 16; + p.TYPE_MISMATCH_ERR = 17; + + // set up externs + G_vmlCanvasManager = G_vmlCanvasManager_; + CanvasRenderingContext2D = CanvasRenderingContext2D_; + CanvasGradient = CanvasGradient_; + CanvasPattern = CanvasPattern_; + DOMException = DOMException_; +})(); + +} // if diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/excanvas.min.js b/SpringBootHomework/target/classes/static/assets/plugins/flot/excanvas.min.js new file mode 100644 index 0000000..fcf876c --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/excanvas.min.js @@ -0,0 +1 @@ +if(!document.createElement("canvas").getContext){(function(){var ab=Math;var n=ab.round;var l=ab.sin;var A=ab.cos;var H=ab.abs;var N=ab.sqrt;var d=10;var f=d/2;var z=+navigator.userAgent.match(/MSIE ([\d.]+)?/)[1];function y(){return this.context_||(this.context_=new D(this))}var t=Array.prototype.slice;function g(j,m,p){var i=t.call(arguments,2);return function(){return j.apply(m,i.concat(t.call(arguments)))}}function af(i){return String(i).replace(/&/g,"&").replace(/"/g,""")}function Y(m,j,i){if(!m.namespaces[j]){m.namespaces.add(j,i,"#default#VML")}}function R(j){Y(j,"g_vml_","urn:schemas-microsoft-com:vml");Y(j,"g_o_","urn:schemas-microsoft-com:office:office");if(!j.styleSheets.ex_canvas_){var i=j.createStyleSheet();i.owningElement.id="ex_canvas_";i.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}"}}R(document);var e={init:function(i){var j=i||document;j.createElement("canvas");j.attachEvent("onreadystatechange",g(this.init_,this,j))},init_:function(p){var m=p.getElementsByTagName("canvas");for(var j=0;j1){m--}if(6*m<1){return j+(i-j)*6*m}else{if(2*m<1){return i}else{if(3*m<2){return j+(i-j)*(2/3-m)*6}else{return j}}}}var C={};function F(j){if(j in C){return C[j]}var ag,Z=1;j=String(j);if(j.charAt(0)=="#"){ag=j}else{if(/^rgb/.test(j)){var p=M(j);var ag="#",ah;for(var m=0;m<3;m++){if(p[m].indexOf("%")!=-1){ah=Math.floor(c(p[m])*255)}else{ah=+p[m]}ag+=k[r(ah,0,255)]}Z=+p[3]}else{if(/^hsl/.test(j)){var p=M(j);ag=I(p);Z=p[3]}else{ag=b[j]||j}}}return C[j]={color:ag,alpha:Z}}var o={style:"normal",variant:"normal",weight:"normal",size:10,family:"sans-serif"};var L={};function E(i){if(L[i]){return L[i]}var p=document.createElement("div");var m=p.style;try{m.font=i}catch(j){}return L[i]={style:m.fontStyle||o.style,variant:m.fontVariant||o.variant,weight:m.fontWeight||o.weight,size:m.fontSize||o.size,family:m.fontFamily||o.family}}function u(m,j){var i={};for(var ah in m){i[ah]=m[ah]}var ag=parseFloat(j.currentStyle.fontSize),Z=parseFloat(m.size);if(typeof m.size=="number"){i.size=m.size}else{if(m.size.indexOf("px")!=-1){i.size=Z}else{if(m.size.indexOf("em")!=-1){i.size=ag*Z}else{if(m.size.indexOf("%")!=-1){i.size=(ag/100)*Z}else{if(m.size.indexOf("pt")!=-1){i.size=Z/0.75}else{i.size=ag}}}}}i.size*=0.981;return i}function ac(i){return i.style+" "+i.variant+" "+i.weight+" "+i.size+"px "+i.family}var s={butt:"flat",round:"round"};function S(i){return s[i]||"square"}function D(i){this.m_=B();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.strokeStyle="#000";this.fillStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=d*1;this.globalAlpha=1;this.font="10px sans-serif";this.textAlign="left";this.textBaseline="alphabetic";this.canvas=i;var m="width:"+i.clientWidth+"px;height:"+i.clientHeight+"px;overflow:hidden;position:absolute";var j=i.ownerDocument.createElement("div");j.style.cssText=m;i.appendChild(j);var p=j.cloneNode(false);p.style.backgroundColor="red";p.style.filter="alpha(opacity=0)";i.appendChild(p);this.element_=j;this.arcScaleX_=1;this.arcScaleY_=1;this.lineScale_=1}var q=D.prototype;q.clearRect=function(){if(this.textMeasureEl_){this.textMeasureEl_.removeNode(true);this.textMeasureEl_=null}this.element_.innerHTML=""};q.beginPath=function(){this.currentPath_=[]};q.moveTo=function(j,i){var m=V(this,j,i);this.currentPath_.push({type:"moveTo",x:m.x,y:m.y});this.currentX_=m.x;this.currentY_=m.y};q.lineTo=function(j,i){var m=V(this,j,i);this.currentPath_.push({type:"lineTo",x:m.x,y:m.y});this.currentX_=m.x;this.currentY_=m.y};q.bezierCurveTo=function(m,j,ak,aj,ai,ag){var i=V(this,ai,ag);var ah=V(this,m,j);var Z=V(this,ak,aj);K(this,ah,Z,i)};function K(i,Z,m,j){i.currentPath_.push({type:"bezierCurveTo",cp1x:Z.x,cp1y:Z.y,cp2x:m.x,cp2y:m.y,x:j.x,y:j.y});i.currentX_=j.x;i.currentY_=j.y}q.quadraticCurveTo=function(ai,m,j,i){var ah=V(this,ai,m);var ag=V(this,j,i);var aj={x:this.currentX_+2/3*(ah.x-this.currentX_),y:this.currentY_+2/3*(ah.y-this.currentY_)};var Z={x:aj.x+(ag.x-this.currentX_)/3,y:aj.y+(ag.y-this.currentY_)/3};K(this,aj,Z,ag)};q.arc=function(al,aj,ak,ag,j,m){ak*=d;var ap=m?"at":"wa";var am=al+A(ag)*ak-f;var ao=aj+l(ag)*ak-f;var i=al+A(j)*ak-f;var an=aj+l(j)*ak-f;if(am==i&&!m){am+=0.125}var Z=V(this,al,aj);var ai=V(this,am,ao);var ah=V(this,i,an);this.currentPath_.push({type:ap,x:Z.x,y:Z.y,radius:ak,xStart:ai.x,yStart:ai.y,xEnd:ah.x,yEnd:ah.y})};q.rect=function(m,j,i,p){this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath()};q.strokeRect=function(m,j,i,p){var Z=this.currentPath_;this.beginPath();this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath();this.stroke();this.currentPath_=Z};q.fillRect=function(m,j,i,p){var Z=this.currentPath_;this.beginPath();this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath();this.fill();this.currentPath_=Z};q.createLinearGradient=function(j,p,i,m){var Z=new U("gradient");Z.x0_=j;Z.y0_=p;Z.x1_=i;Z.y1_=m;return Z};q.createRadialGradient=function(p,ag,m,j,Z,i){var ah=new U("gradientradial");ah.x0_=p;ah.y0_=ag;ah.r0_=m;ah.x1_=j;ah.y1_=Z;ah.r1_=i;return ah};q.drawImage=function(aq,m){var aj,ah,al,ay,ao,am,at,aA;var ak=aq.runtimeStyle.width;var ap=aq.runtimeStyle.height;aq.runtimeStyle.width="auto";aq.runtimeStyle.height="auto";var ai=aq.width;var aw=aq.height;aq.runtimeStyle.width=ak;aq.runtimeStyle.height=ap;if(arguments.length==3){aj=arguments[1];ah=arguments[2];ao=am=0;at=al=ai;aA=ay=aw}else{if(arguments.length==5){aj=arguments[1];ah=arguments[2];al=arguments[3];ay=arguments[4];ao=am=0;at=ai;aA=aw}else{if(arguments.length==9){ao=arguments[1];am=arguments[2];at=arguments[3];aA=arguments[4];aj=arguments[5];ah=arguments[6];al=arguments[7];ay=arguments[8]}else{throw Error("Invalid number of arguments")}}}var az=V(this,aj,ah);var p=at/2;var j=aA/2;var ax=[];var i=10;var ag=10;ax.push(" ','","");this.element_.insertAdjacentHTML("BeforeEnd",ax.join(""))};q.stroke=function(ao){var Z=10;var ap=10;var ag=5000;var ai={x:null,y:null};var an={x:null,y:null};for(var aj=0;ajan.x){an.x=m.x}if(ai.y==null||m.yan.y){an.y=m.y}}}am.push(' ">');if(!ao){w(this,am)}else{G(this,am,ai,an)}am.push("");this.element_.insertAdjacentHTML("beforeEnd",am.join(""))}};function w(m,ag){var j=F(m.strokeStyle);var p=j.color;var Z=j.alpha*m.globalAlpha;var i=m.lineScale_*m.lineWidth;if(i<1){Z*=i}ag.push("')}function G(aq,ai,aK,ar){var aj=aq.fillStyle;var aB=aq.arcScaleX_;var aA=aq.arcScaleY_;var j=ar.x-aK.x;var p=ar.y-aK.y;if(aj instanceof U){var an=0;var aF={x:0,y:0};var ax=0;var am=1;if(aj.type_=="gradient"){var al=aj.x0_/aB;var m=aj.y0_/aA;var ak=aj.x1_/aB;var aM=aj.y1_/aA;var aJ=V(aq,al,m);var aI=V(aq,ak,aM);var ag=aI.x-aJ.x;var Z=aI.y-aJ.y;an=Math.atan2(ag,Z)*180/Math.PI;if(an<0){an+=360}if(an<0.000001){an=0}}else{var aJ=V(aq,aj.x0_,aj.y0_);aF={x:(aJ.x-aK.x)/j,y:(aJ.y-aK.y)/p};j/=aB*d;p/=aA*d;var aD=ab.max(j,p);ax=2*aj.r0_/aD;am=2*aj.r1_/aD-ax}var av=aj.colors_;av.sort(function(aN,i){return aN.offset-i.offset});var ap=av.length;var au=av[0].color;var at=av[ap-1].color;var az=av[0].alpha*aq.globalAlpha;var ay=av[ap-1].alpha*aq.globalAlpha;var aE=[];for(var aH=0;aH')}else{if(aj instanceof T){if(j&&p){var ah=-aK.x;var aC=-aK.y;ai.push("')}}else{var aL=F(aq.fillStyle);var aw=aL.color;var aG=aL.alpha*aq.globalAlpha;ai.push('')}}}q.fill=function(){this.stroke(true)};q.closePath=function(){this.currentPath_.push({type:"close"})};function V(j,Z,p){var i=j.m_;return{x:d*(Z*i[0][0]+p*i[1][0]+i[2][0])-f,y:d*(Z*i[0][1]+p*i[1][1]+i[2][1])-f}}q.save=function(){var i={};v(this,i);this.aStack_.push(i);this.mStack_.push(this.m_);this.m_=J(B(),this.m_)};q.restore=function(){if(this.aStack_.length){v(this.aStack_.pop(),this);this.m_=this.mStack_.pop()}};function h(i){return isFinite(i[0][0])&&isFinite(i[0][1])&&isFinite(i[1][0])&&isFinite(i[1][1])&&isFinite(i[2][0])&&isFinite(i[2][1])}function aa(j,i,p){if(!h(i)){return}j.m_=i;if(p){var Z=i[0][0]*i[1][1]-i[0][1]*i[1][0];j.lineScale_=N(H(Z))}}q.translate=function(m,j){var i=[[1,0,0],[0,1,0],[m,j,1]];aa(this,J(i,this.m_),false)};q.rotate=function(j){var p=A(j);var m=l(j);var i=[[p,m,0],[-m,p,0],[0,0,1]];aa(this,J(i,this.m_),false)};q.scale=function(m,j){this.arcScaleX_*=m;this.arcScaleY_*=j;var i=[[m,0,0],[0,j,0],[0,0,1]];aa(this,J(i,this.m_),true)};q.transform=function(Z,p,ah,ag,j,i){var m=[[Z,p,0],[ah,ag,0],[j,i,1]];aa(this,J(m,this.m_),true)};q.setTransform=function(ag,Z,ai,ah,p,j){var i=[[ag,Z,0],[ai,ah,0],[p,j,1]];aa(this,i,true)};q.drawText_=function(am,ak,aj,ap,ai){var ao=this.m_,at=1000,j=0,ar=at,ah={x:0,y:0},ag=[];var i=u(E(this.font),this.element_);var p=ac(i);var au=this.element_.currentStyle;var Z=this.textAlign.toLowerCase();switch(Z){case"left":case"center":case"right":break;case"end":Z=au.direction=="ltr"?"right":"left";break;case"start":Z=au.direction=="rtl"?"right":"left";break;default:Z="left"}switch(this.textBaseline){case"hanging":case"top":ah.y=i.size/1.75;break;case"middle":break;default:case null:case"alphabetic":case"ideographic":case"bottom":ah.y=-i.size/2.25;break}switch(Z){case"right":j=at;ar=0.05;break;case"center":j=ar=at/2;break}var aq=V(this,ak+ah.x,aj+ah.y);ag.push('');if(ai){w(this,ag)}else{G(this,ag,{x:-j,y:0},{x:ar,y:i.size})}var an=ao[0][0].toFixed(3)+","+ao[1][0].toFixed(3)+","+ao[0][1].toFixed(3)+","+ao[1][1].toFixed(3)+",0,0";var al=n(aq.x/d)+","+n(aq.y/d);ag.push('','','');this.element_.insertAdjacentHTML("beforeEnd",ag.join(""))};q.fillText=function(m,i,p,j){this.drawText_(m,i,p,j,false)};q.strokeText=function(m,i,p,j){this.drawText_(m,i,p,j,true)};q.measureText=function(m){if(!this.textMeasureEl_){var i='';this.element_.insertAdjacentHTML("beforeEnd",i);this.textMeasureEl_=this.element_.lastChild}var j=this.element_.ownerDocument;this.textMeasureEl_.innerHTML="";this.textMeasureEl_.style.font=this.font;this.textMeasureEl_.appendChild(j.createTextNode(m));return{width:this.textMeasureEl_.offsetWidth}};q.clip=function(){};q.arcTo=function(){};q.createPattern=function(j,i){return new T(j,i)};function U(i){this.type_=i;this.x0_=0;this.y0_=0;this.r0_=0;this.x1_=0;this.y1_=0;this.r1_=0;this.colors_=[]}U.prototype.addColorStop=function(j,i){i=F(i);this.colors_.push({offset:j,color:i.color,alpha:i.alpha})};function T(j,i){Q(j);switch(i){case"repeat":case null:case"":this.repetition_="repeat";break;case"repeat-x":case"repeat-y":case"no-repeat":this.repetition_=i;break;default:O("SYNTAX_ERR")}this.src_=j.src;this.width_=j.width;this.height_=j.height}function O(i){throw new P(i)}function Q(i){if(!i||i.nodeType!=1||i.tagName!="IMG"){O("TYPE_MISMATCH_ERR")}if(i.readyState!="complete"){O("INVALID_STATE_ERR")}}function P(i){this.code=this[i];this.message=i+": DOM Exception "+this.code}var X=P.prototype=new Error;X.INDEX_SIZE_ERR=1;X.DOMSTRING_SIZE_ERR=2;X.HIERARCHY_REQUEST_ERR=3;X.WRONG_DOCUMENT_ERR=4;X.INVALID_CHARACTER_ERR=5;X.NO_DATA_ALLOWED_ERR=6;X.NO_MODIFICATION_ALLOWED_ERR=7;X.NOT_FOUND_ERR=8;X.NOT_SUPPORTED_ERR=9;X.INUSE_ATTRIBUTE_ERR=10;X.INVALID_STATE_ERR=11;X.SYNTAX_ERR=12;X.INVALID_MODIFICATION_ERR=13;X.NAMESPACE_ERR=14;X.INVALID_ACCESS_ERR=15;X.VALIDATION_ERR=16;X.TYPE_MISMATCH_ERR=17;G_vmlCanvasManager=e;CanvasRenderingContext2D=D;CanvasGradient=U;CanvasPattern=T;DOMException=P})()}; \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/flot.jquery.json b/SpringBootHomework/target/classes/static/assets/plugins/flot/flot.jquery.json new file mode 100644 index 0000000..934e44f --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/flot.jquery.json @@ -0,0 +1,27 @@ +{ + "name": "flot", + "version": "0.8.3", + "title": "Flot", + "author": { + "name": "Ole Laursen", + "url": "https://github.com/OleLaursen" + }, + "licenses": [{ + "type": "MIT", + "url": "http://github.com/flot/flot/blob/master/LICENSE.txt" + }], + "dependencies": { + "jquery": ">=1.2.6" + }, + "description": "Flot is a pure JavaScript plotting library for jQuery, with a focus on simple usage, attractive looks and interactive features.", + "keywords": ["plot", "chart", "graph", "visualization", "canvas", "graphics"], + "homepage": "http://www.flotcharts.org", + "docs": "http://github.com/flot/flot/blob/master/API.md", + "demo": "http://www.flotcharts.org/flot/examples/", + "bugs": "http://github.com/flot/flot/issues", + "maintainers": [{ + "name": "David Schnur", + "email": "dnschnur@gmail.com", + "url": "http://github.com/dnschnur" + }] +} diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.colorhelpers.js b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.colorhelpers.js new file mode 100644 index 0000000..409d295 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.colorhelpers.js @@ -0,0 +1,180 @@ +/* Plugin for jQuery for working with colors. + * + * Version 1.1. + * + * Inspiration from jQuery color animation plugin by John Resig. + * + * Released under the MIT license by Ole Laursen, October 2009. + * + * Examples: + * + * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() + * var c = $.color.extract($("#mydiv"), 'background-color'); + * console.log(c.r, c.g, c.b, c.a); + * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" + * + * Note that .scale() and .add() return the same modified object + * instead of making a new one. + * + * V. 1.1: Fix error handling so e.g. parsing an empty string does + * produce a color rather than just crashing. + */ + +(function($) { + $.color = {}; + + // construct color object with some convenient chainable helpers + $.color.make = function (r, g, b, a) { + var o = {}; + o.r = r || 0; + o.g = g || 0; + o.b = b || 0; + o.a = a != null ? a : 1; + + o.add = function (c, d) { + for (var i = 0; i < c.length; ++i) + o[c.charAt(i)] += d; + return o.normalize(); + }; + + o.scale = function (c, f) { + for (var i = 0; i < c.length; ++i) + o[c.charAt(i)] *= f; + return o.normalize(); + }; + + o.toString = function () { + if (o.a >= 1.0) { + return "rgb("+[o.r, o.g, o.b].join(",")+")"; + } else { + return "rgba("+[o.r, o.g, o.b, o.a].join(",")+")"; + } + }; + + o.normalize = function () { + function clamp(min, value, max) { + return value < min ? min: (value > max ? max: value); + } + + o.r = clamp(0, parseInt(o.r), 255); + o.g = clamp(0, parseInt(o.g), 255); + o.b = clamp(0, parseInt(o.b), 255); + o.a = clamp(0, o.a, 1); + return o; + }; + + o.clone = function () { + return $.color.make(o.r, o.b, o.g, o.a); + }; + + return o.normalize(); + } + + // extract CSS color property from element, going up in the DOM + // if it's "transparent" + $.color.extract = function (elem, css) { + var c; + + do { + c = elem.css(css).toLowerCase(); + // keep going until we find an element that has color, or + // we hit the body or root (have no parent) + if (c != '' && c != 'transparent') + break; + elem = elem.parent(); + } while (elem.length && !$.nodeName(elem.get(0), "body")); + + // catch Safari's way of signalling transparent + if (c == "rgba(0, 0, 0, 0)") + c = "transparent"; + + return $.color.parse(c); + } + + // parse CSS color string (like "rgb(10, 32, 43)" or "#fff"), + // returns color object, if parsing failed, you get black (0, 0, + // 0) out + $.color.parse = function (str) { + var res, m = $.color.make; + + // Look for rgb(num,num,num) + if (res = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str)) + return m(parseInt(res[1], 10), parseInt(res[2], 10), parseInt(res[3], 10)); + + // Look for rgba(num,num,num,num) + if (res = /rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str)) + return m(parseInt(res[1], 10), parseInt(res[2], 10), parseInt(res[3], 10), parseFloat(res[4])); + + // Look for rgb(num%,num%,num%) + if (res = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str)) + return m(parseFloat(res[1])*2.55, parseFloat(res[2])*2.55, parseFloat(res[3])*2.55); + + // Look for rgba(num%,num%,num%,num) + if (res = /rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str)) + return m(parseFloat(res[1])*2.55, parseFloat(res[2])*2.55, parseFloat(res[3])*2.55, parseFloat(res[4])); + + // Look for #a0b1c2 + if (res = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str)) + return m(parseInt(res[1], 16), parseInt(res[2], 16), parseInt(res[3], 16)); + + // Look for #fff + if (res = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str)) + return m(parseInt(res[1]+res[1], 16), parseInt(res[2]+res[2], 16), parseInt(res[3]+res[3], 16)); + + // Otherwise, we're most likely dealing with a named color + var name = $.trim(str).toLowerCase(); + if (name == "transparent") + return m(255, 255, 255, 0); + else { + // default to black + res = lookupColors[name] || [0, 0, 0]; + return m(res[0], res[1], res[2]); + } + } + + var lookupColors = { + aqua:[0,255,255], + azure:[240,255,255], + beige:[245,245,220], + black:[0,0,0], + blue:[0,0,255], + brown:[165,42,42], + cyan:[0,255,255], + darkblue:[0,0,139], + darkcyan:[0,139,139], + darkgrey:[169,169,169], + darkgreen:[0,100,0], + darkkhaki:[189,183,107], + darkmagenta:[139,0,139], + darkolivegreen:[85,107,47], + darkorange:[255,140,0], + darkorchid:[153,50,204], + darkred:[139,0,0], + darksalmon:[233,150,122], + darkviolet:[148,0,211], + fuchsia:[255,0,255], + gold:[255,215,0], + green:[0,128,0], + indigo:[75,0,130], + khaki:[240,230,140], + lightblue:[173,216,230], + lightcyan:[224,255,255], + lightgreen:[144,238,144], + lightgrey:[211,211,211], + lightpink:[255,182,193], + lightyellow:[255,255,224], + lime:[0,255,0], + magenta:[255,0,255], + maroon:[128,0,0], + navy:[0,0,128], + olive:[128,128,0], + orange:[255,165,0], + pink:[255,192,203], + purple:[128,0,128], + violet:[128,0,128], + red:[255,0,0], + silver:[192,192,192], + white:[255,255,255], + yellow:[255,255,0] + }; +})(jQuery); diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.canvas.js b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.canvas.js new file mode 100644 index 0000000..bcbc00f --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.canvas.js @@ -0,0 +1,345 @@ +/* Flot plugin for drawing all elements of a plot on the canvas. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +Flot normally produces certain elements, like axis labels and the legend, using +HTML elements. This permits greater interactivity and customization, and often +looks better, due to cross-browser canvas text inconsistencies and limitations. + +It can also be desirable to render the plot entirely in canvas, particularly +if the goal is to save it as an image, or if Flot is being used in a context +where the HTML DOM does not exist, as is the case within Node.js. This plugin +switches out Flot's standard drawing operations for canvas-only replacements. + +Currently the plugin supports only axis labels, but it will eventually allow +every element of the plot to be rendered directly to canvas. + +The plugin supports these options: + +{ + canvas: boolean +} + +The "canvas" option controls whether full canvas drawing is enabled, making it +possible to toggle on and off. This is useful when a plot uses HTML text in the +browser, but needs to redraw with canvas text when exporting as an image. + +*/ + +(function($) { + + var options = { + canvas: true + }; + + var render, getTextInfo, addText; + + // Cache the prototype hasOwnProperty for faster access + + var hasOwnProperty = Object.prototype.hasOwnProperty; + + function init(plot, classes) { + + var Canvas = classes.Canvas; + + // We only want to replace the functions once; the second time around + // we would just get our new function back. This whole replacing of + // prototype functions is a disaster, and needs to be changed ASAP. + + if (render == null) { + getTextInfo = Canvas.prototype.getTextInfo, + addText = Canvas.prototype.addText, + render = Canvas.prototype.render; + } + + // Finishes rendering the canvas, including overlaid text + + Canvas.prototype.render = function() { + + if (!plot.getOptions().canvas) { + return render.call(this); + } + + var context = this.context, + cache = this._textCache; + + // For each text layer, render elements marked as active + + context.save(); + context.textBaseline = "middle"; + + for (var layerKey in cache) { + if (hasOwnProperty.call(cache, layerKey)) { + var layerCache = cache[layerKey]; + for (var styleKey in layerCache) { + if (hasOwnProperty.call(layerCache, styleKey)) { + var styleCache = layerCache[styleKey], + updateStyles = true; + for (var key in styleCache) { + if (hasOwnProperty.call(styleCache, key)) { + + var info = styleCache[key], + positions = info.positions, + lines = info.lines; + + // Since every element at this level of the cache have the + // same font and fill styles, we can just change them once + // using the values from the first element. + + if (updateStyles) { + context.fillStyle = info.font.color; + context.font = info.font.definition; + updateStyles = false; + } + + for (var i = 0, position; position = positions[i]; i++) { + if (position.active) { + for (var j = 0, line; line = position.lines[j]; j++) { + context.fillText(lines[j].text, line[0], line[1]); + } + } else { + positions.splice(i--, 1); + } + } + + if (positions.length == 0) { + delete styleCache[key]; + } + } + } + } + } + } + } + + context.restore(); + }; + + // Creates (if necessary) and returns a text info object. + // + // When the canvas option is set, the object looks like this: + // + // { + // width: Width of the text's bounding box. + // height: Height of the text's bounding box. + // positions: Array of positions at which this text is drawn. + // lines: [{ + // height: Height of this line. + // widths: Width of this line. + // text: Text on this line. + // }], + // font: { + // definition: Canvas font property string. + // color: Color of the text. + // }, + // } + // + // The positions array contains objects that look like this: + // + // { + // active: Flag indicating whether the text should be visible. + // lines: Array of [x, y] coordinates at which to draw the line. + // x: X coordinate at which to draw the text. + // y: Y coordinate at which to draw the text. + // } + + Canvas.prototype.getTextInfo = function(layer, text, font, angle, width) { + + if (!plot.getOptions().canvas) { + return getTextInfo.call(this, layer, text, font, angle, width); + } + + var textStyle, layerCache, styleCache, info; + + // Cast the value to a string, in case we were given a number + + text = "" + text; + + // If the font is a font-spec object, generate a CSS definition + + if (typeof font === "object") { + textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px " + font.family; + } else { + textStyle = font; + } + + // Retrieve (or create) the cache for the text's layer and styles + + layerCache = this._textCache[layer]; + + if (layerCache == null) { + layerCache = this._textCache[layer] = {}; + } + + styleCache = layerCache[textStyle]; + + if (styleCache == null) { + styleCache = layerCache[textStyle] = {}; + } + + info = styleCache[text]; + + if (info == null) { + + var context = this.context; + + // If the font was provided as CSS, create a div with those + // classes and examine it to generate a canvas font spec. + + if (typeof font !== "object") { + + var element = $("
     
    ") + .css("position", "absolute") + .addClass(typeof font === "string" ? font : null) + .appendTo(this.getTextLayer(layer)); + + font = { + lineHeight: element.height(), + style: element.css("font-style"), + variant: element.css("font-variant"), + weight: element.css("font-weight"), + family: element.css("font-family"), + color: element.css("color") + }; + + // Setting line-height to 1, without units, sets it equal + // to the font-size, even if the font-size is abstract, + // like 'smaller'. This enables us to read the real size + // via the element's height, working around browsers that + // return the literal 'smaller' value. + + font.size = element.css("line-height", 1).height(); + + element.remove(); + } + + textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px " + font.family; + + // Create a new info object, initializing the dimensions to + // zero so we can count them up line-by-line. + + info = styleCache[text] = { + width: 0, + height: 0, + positions: [], + lines: [], + font: { + definition: textStyle, + color: font.color + } + }; + + context.save(); + context.font = textStyle; + + // Canvas can't handle multi-line strings; break on various + // newlines, including HTML brs, to build a list of lines. + // Note that we could split directly on regexps, but IE < 9 is + // broken; revisit when we drop IE 7/8 support. + + var lines = (text + "").replace(/
    |\r\n|\r/g, "\n").split("\n"); + + for (var i = 0; i < lines.length; ++i) { + + var lineText = lines[i], + measured = context.measureText(lineText); + + info.width = Math.max(measured.width, info.width); + info.height += font.lineHeight; + + info.lines.push({ + text: lineText, + width: measured.width, + height: font.lineHeight + }); + } + + context.restore(); + } + + return info; + }; + + // Adds a text string to the canvas text overlay. + + Canvas.prototype.addText = function(layer, x, y, text, font, angle, width, halign, valign) { + + if (!plot.getOptions().canvas) { + return addText.call(this, layer, x, y, text, font, angle, width, halign, valign); + } + + var info = this.getTextInfo(layer, text, font, angle, width), + positions = info.positions, + lines = info.lines; + + // Text is drawn with baseline 'middle', which we need to account + // for by adding half a line's height to the y position. + + y += info.height / lines.length / 2; + + // Tweak the initial y-position to match vertical alignment + + if (valign == "middle") { + y = Math.round(y - info.height / 2); + } else if (valign == "bottom") { + y = Math.round(y - info.height); + } else { + y = Math.round(y); + } + + // FIXME: LEGACY BROWSER FIX + // AFFECTS: Opera < 12.00 + + // Offset the y coordinate, since Opera is off pretty + // consistently compared to the other browsers. + + if (!!(window.opera && window.opera.version().split(".")[0] < 12)) { + y -= 2; + } + + // Determine whether this text already exists at this position. + // If so, mark it for inclusion in the next render pass. + + for (var i = 0, position; position = positions[i]; i++) { + if (position.x == x && position.y == y) { + position.active = true; + return; + } + } + + // If the text doesn't exist at this position, create a new entry + + position = { + active: true, + lines: [], + x: x, + y: y + }; + + positions.push(position); + + // Fill in the x & y positions of each line, adjusting them + // individually for horizontal alignment. + + for (var i = 0, line; line = lines[i]; i++) { + if (halign == "center") { + position.lines.push([Math.round(x - line.width / 2), y]); + } else if (halign == "right") { + position.lines.push([Math.round(x - line.width), y]); + } else { + position.lines.push([Math.round(x), y]); + } + y += line.height; + } + }; + } + + $.plot.plugins.push({ + init: init, + options: options, + name: "canvas", + version: "1.0" + }); + +})(jQuery); diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.categories.js b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.categories.js new file mode 100644 index 0000000..11263cb --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.categories.js @@ -0,0 +1,190 @@ +/* Flot plugin for plotting textual data or categories. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +Consider a dataset like [["February", 34], ["March", 20], ...]. This plugin +allows you to plot such a dataset directly. + +To enable it, you must specify mode: "categories" on the axis with the textual +labels, e.g. + + $.plot("#placeholder", data, { xaxis: { mode: "categories" } }); + +By default, the labels are ordered as they are met in the data series. If you +need a different ordering, you can specify "categories" on the axis options +and list the categories there: + + xaxis: { + mode: "categories", + categories: ["February", "March", "April"] + } + +If you need to customize the distances between the categories, you can specify +"categories" as an object mapping labels to values + + xaxis: { + mode: "categories", + categories: { "February": 1, "March": 3, "April": 4 } + } + +If you don't specify all categories, the remaining categories will be numbered +from the max value plus 1 (with a spacing of 1 between each). + +Internally, the plugin works by transforming the input data through an auto- +generated mapping where the first category becomes 0, the second 1, etc. +Hence, a point like ["February", 34] becomes [0, 34] internally in Flot (this +is visible in hover and click events that return numbers rather than the +category labels). The plugin also overrides the tick generator to spit out the +categories as ticks instead of the values. + +If you need to map a value back to its label, the mapping is always accessible +as "categories" on the axis object, e.g. plot.getAxes().xaxis.categories. + +*/ + +(function ($) { + var options = { + xaxis: { + categories: null + }, + yaxis: { + categories: null + } + }; + + function processRawData(plot, series, data, datapoints) { + // if categories are enabled, we need to disable + // auto-transformation to numbers so the strings are intact + // for later processing + + var xCategories = series.xaxis.options.mode == "categories", + yCategories = series.yaxis.options.mode == "categories"; + + if (!(xCategories || yCategories)) + return; + + var format = datapoints.format; + + if (!format) { + // FIXME: auto-detection should really not be defined here + var s = series; + format = []; + format.push({ x: true, number: true, required: true }); + format.push({ y: true, number: true, required: true }); + + if (s.bars.show || (s.lines.show && s.lines.fill)) { + var autoscale = !!((s.bars.show && s.bars.zero) || (s.lines.show && s.lines.zero)); + format.push({ y: true, number: true, required: false, defaultValue: 0, autoscale: autoscale }); + if (s.bars.horizontal) { + delete format[format.length - 1].y; + format[format.length - 1].x = true; + } + } + + datapoints.format = format; + } + + for (var m = 0; m < format.length; ++m) { + if (format[m].x && xCategories) + format[m].number = false; + + if (format[m].y && yCategories) + format[m].number = false; + } + } + + function getNextIndex(categories) { + var index = -1; + + for (var v in categories) + if (categories[v] > index) + index = categories[v]; + + return index + 1; + } + + function categoriesTickGenerator(axis) { + var res = []; + for (var label in axis.categories) { + var v = axis.categories[label]; + if (v >= axis.min && v <= axis.max) + res.push([v, label]); + } + + res.sort(function (a, b) { return a[0] - b[0]; }); + + return res; + } + + function setupCategoriesForAxis(series, axis, datapoints) { + if (series[axis].options.mode != "categories") + return; + + if (!series[axis].categories) { + // parse options + var c = {}, o = series[axis].options.categories || {}; + if ($.isArray(o)) { + for (var i = 0; i < o.length; ++i) + c[o[i]] = i; + } + else { + for (var v in o) + c[v] = o[v]; + } + + series[axis].categories = c; + } + + // fix ticks + if (!series[axis].options.ticks) + series[axis].options.ticks = categoriesTickGenerator; + + transformPointsOnAxis(datapoints, axis, series[axis].categories); + } + + function transformPointsOnAxis(datapoints, axis, categories) { + // go through the points, transforming them + var points = datapoints.points, + ps = datapoints.pointsize, + format = datapoints.format, + formatColumn = axis.charAt(0), + index = getNextIndex(categories); + + for (var i = 0; i < points.length; i += ps) { + if (points[i] == null) + continue; + + for (var m = 0; m < ps; ++m) { + var val = points[i + m]; + + if (val == null || !format[m][formatColumn]) + continue; + + if (!(val in categories)) { + categories[val] = index; + ++index; + } + + points[i + m] = categories[val]; + } + } + } + + function processDatapoints(plot, series, datapoints) { + setupCategoriesForAxis(series, "xaxis", datapoints); + setupCategoriesForAxis(series, "yaxis", datapoints); + } + + function init(plot) { + plot.hooks.processRawData.push(processRawData); + plot.hooks.processDatapoints.push(processDatapoints); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'categories', + version: '1.0' + }); +})(jQuery); diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.crosshair.js b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.crosshair.js new file mode 100644 index 0000000..247210c --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.crosshair.js @@ -0,0 +1,176 @@ +/* Flot plugin for showing crosshairs when the mouse hovers over the plot. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +The plugin supports these options: + + crosshair: { + mode: null or "x" or "y" or "xy" + color: color + lineWidth: number + } + +Set the mode to one of "x", "y" or "xy". The "x" mode enables a vertical +crosshair that lets you trace the values on the x axis, "y" enables a +horizontal crosshair and "xy" enables them both. "color" is the color of the +crosshair (default is "rgba(170, 0, 0, 0.80)"), "lineWidth" is the width of +the drawn lines (default is 1). + +The plugin also adds four public methods: + + - setCrosshair( pos ) + + Set the position of the crosshair. Note that this is cleared if the user + moves the mouse. "pos" is in coordinates of the plot and should be on the + form { x: xpos, y: ypos } (you can use x2/x3/... if you're using multiple + axes), which is coincidentally the same format as what you get from a + "plothover" event. If "pos" is null, the crosshair is cleared. + + - clearCrosshair() + + Clear the crosshair. + + - lockCrosshair(pos) + + Cause the crosshair to lock to the current location, no longer updating if + the user moves the mouse. Optionally supply a position (passed on to + setCrosshair()) to move it to. + + Example usage: + + var myFlot = $.plot( $("#graph"), ..., { crosshair: { mode: "x" } } }; + $("#graph").bind( "plothover", function ( evt, position, item ) { + if ( item ) { + // Lock the crosshair to the data point being hovered + myFlot.lockCrosshair({ + x: item.datapoint[ 0 ], + y: item.datapoint[ 1 ] + }); + } else { + // Return normal crosshair operation + myFlot.unlockCrosshair(); + } + }); + + - unlockCrosshair() + + Free the crosshair to move again after locking it. +*/ + +(function ($) { + var options = { + crosshair: { + mode: null, // one of null, "x", "y" or "xy", + color: "rgba(170, 0, 0, 0.80)", + lineWidth: 1 + } + }; + + function init(plot) { + // position of crosshair in pixels + var crosshair = { x: -1, y: -1, locked: false }; + + plot.setCrosshair = function setCrosshair(pos) { + if (!pos) + crosshair.x = -1; + else { + var o = plot.p2c(pos); + crosshair.x = Math.max(0, Math.min(o.left, plot.width())); + crosshair.y = Math.max(0, Math.min(o.top, plot.height())); + } + + plot.triggerRedrawOverlay(); + }; + + plot.clearCrosshair = plot.setCrosshair; // passes null for pos + + plot.lockCrosshair = function lockCrosshair(pos) { + if (pos) + plot.setCrosshair(pos); + crosshair.locked = true; + }; + + plot.unlockCrosshair = function unlockCrosshair() { + crosshair.locked = false; + }; + + function onMouseOut(e) { + if (crosshair.locked) + return; + + if (crosshair.x != -1) { + crosshair.x = -1; + plot.triggerRedrawOverlay(); + } + } + + function onMouseMove(e) { + if (crosshair.locked) + return; + + if (plot.getSelection && plot.getSelection()) { + crosshair.x = -1; // hide the crosshair while selecting + return; + } + + var offset = plot.offset(); + crosshair.x = Math.max(0, Math.min(e.pageX - offset.left, plot.width())); + crosshair.y = Math.max(0, Math.min(e.pageY - offset.top, plot.height())); + plot.triggerRedrawOverlay(); + } + + plot.hooks.bindEvents.push(function (plot, eventHolder) { + if (!plot.getOptions().crosshair.mode) + return; + + eventHolder.mouseout(onMouseOut); + eventHolder.mousemove(onMouseMove); + }); + + plot.hooks.drawOverlay.push(function (plot, ctx) { + var c = plot.getOptions().crosshair; + if (!c.mode) + return; + + var plotOffset = plot.getPlotOffset(); + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + if (crosshair.x != -1) { + var adj = plot.getOptions().crosshair.lineWidth % 2 ? 0.5 : 0; + + ctx.strokeStyle = c.color; + ctx.lineWidth = c.lineWidth; + ctx.lineJoin = "round"; + + ctx.beginPath(); + if (c.mode.indexOf("x") != -1) { + var drawX = Math.floor(crosshair.x) + adj; + ctx.moveTo(drawX, 0); + ctx.lineTo(drawX, plot.height()); + } + if (c.mode.indexOf("y") != -1) { + var drawY = Math.floor(crosshair.y) + adj; + ctx.moveTo(0, drawY); + ctx.lineTo(plot.width(), drawY); + } + ctx.stroke(); + } + ctx.restore(); + }); + + plot.hooks.shutdown.push(function (plot, eventHolder) { + eventHolder.unbind("mouseout", onMouseOut); + eventHolder.unbind("mousemove", onMouseMove); + }); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'crosshair', + version: '1.0' + }); +})(jQuery); diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.errorbars.js b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.errorbars.js new file mode 100644 index 0000000..b0f7c9a --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.errorbars.js @@ -0,0 +1,353 @@ +/* Flot plugin for plotting error bars. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +Error bars are used to show standard deviation and other statistical +properties in a plot. + +* Created by Rui Pereira - rui (dot) pereira (at) gmail (dot) com + +This plugin allows you to plot error-bars over points. Set "errorbars" inside +the points series to the axis name over which there will be error values in +your data array (*even* if you do not intend to plot them later, by setting +"show: null" on xerr/yerr). + +The plugin supports these options: + + series: { + points: { + errorbars: "x" or "y" or "xy", + xerr: { + show: null/false or true, + asymmetric: null/false or true, + upperCap: null or "-" or function, + lowerCap: null or "-" or function, + color: null or color, + radius: null or number + }, + yerr: { same options as xerr } + } + } + +Each data point array is expected to be of the type: + + "x" [ x, y, xerr ] + "y" [ x, y, yerr ] + "xy" [ x, y, xerr, yerr ] + +Where xerr becomes xerr_lower,xerr_upper for the asymmetric error case, and +equivalently for yerr. Eg., a datapoint for the "xy" case with symmetric +error-bars on X and asymmetric on Y would be: + + [ x, y, xerr, yerr_lower, yerr_upper ] + +By default no end caps are drawn. Setting upperCap and/or lowerCap to "-" will +draw a small cap perpendicular to the error bar. They can also be set to a +user-defined drawing function, with (ctx, x, y, radius) as parameters, as eg. + + function drawSemiCircle( ctx, x, y, radius ) { + ctx.beginPath(); + ctx.arc( x, y, radius, 0, Math.PI, false ); + ctx.moveTo( x - radius, y ); + ctx.lineTo( x + radius, y ); + ctx.stroke(); + } + +Color and radius both default to the same ones of the points series if not +set. The independent radius parameter on xerr/yerr is useful for the case when +we may want to add error-bars to a line, without showing the interconnecting +points (with radius: 0), and still showing end caps on the error-bars. +shadowSize and lineWidth are derived as well from the points series. + +*/ + +(function ($) { + var options = { + series: { + points: { + errorbars: null, //should be 'x', 'y' or 'xy' + xerr: { err: 'x', show: null, asymmetric: null, upperCap: null, lowerCap: null, color: null, radius: null}, + yerr: { err: 'y', show: null, asymmetric: null, upperCap: null, lowerCap: null, color: null, radius: null} + } + } + }; + + function processRawData(plot, series, data, datapoints){ + if (!series.points.errorbars) + return; + + // x,y values + var format = [ + { x: true, number: true, required: true }, + { y: true, number: true, required: true } + ]; + + var errors = series.points.errorbars; + // error bars - first X then Y + if (errors == 'x' || errors == 'xy') { + // lower / upper error + if (series.points.xerr.asymmetric) { + format.push({ x: true, number: true, required: true }); + format.push({ x: true, number: true, required: true }); + } else + format.push({ x: true, number: true, required: true }); + } + if (errors == 'y' || errors == 'xy') { + // lower / upper error + if (series.points.yerr.asymmetric) { + format.push({ y: true, number: true, required: true }); + format.push({ y: true, number: true, required: true }); + } else + format.push({ y: true, number: true, required: true }); + } + datapoints.format = format; + } + + function parseErrors(series, i){ + + var points = series.datapoints.points; + + // read errors from points array + var exl = null, + exu = null, + eyl = null, + eyu = null; + var xerr = series.points.xerr, + yerr = series.points.yerr; + + var eb = series.points.errorbars; + // error bars - first X + if (eb == 'x' || eb == 'xy') { + if (xerr.asymmetric) { + exl = points[i + 2]; + exu = points[i + 3]; + if (eb == 'xy') + if (yerr.asymmetric){ + eyl = points[i + 4]; + eyu = points[i + 5]; + } else eyl = points[i + 4]; + } else { + exl = points[i + 2]; + if (eb == 'xy') + if (yerr.asymmetric) { + eyl = points[i + 3]; + eyu = points[i + 4]; + } else eyl = points[i + 3]; + } + // only Y + } else if (eb == 'y') + if (yerr.asymmetric) { + eyl = points[i + 2]; + eyu = points[i + 3]; + } else eyl = points[i + 2]; + + // symmetric errors? + if (exu == null) exu = exl; + if (eyu == null) eyu = eyl; + + var errRanges = [exl, exu, eyl, eyu]; + // nullify if not showing + if (!xerr.show){ + errRanges[0] = null; + errRanges[1] = null; + } + if (!yerr.show){ + errRanges[2] = null; + errRanges[3] = null; + } + return errRanges; + } + + function drawSeriesErrors(plot, ctx, s){ + + var points = s.datapoints.points, + ps = s.datapoints.pointsize, + ax = [s.xaxis, s.yaxis], + radius = s.points.radius, + err = [s.points.xerr, s.points.yerr]; + + //sanity check, in case some inverted axis hack is applied to flot + var invertX = false; + if (ax[0].p2c(ax[0].max) < ax[0].p2c(ax[0].min)) { + invertX = true; + var tmp = err[0].lowerCap; + err[0].lowerCap = err[0].upperCap; + err[0].upperCap = tmp; + } + + var invertY = false; + if (ax[1].p2c(ax[1].min) < ax[1].p2c(ax[1].max)) { + invertY = true; + var tmp = err[1].lowerCap; + err[1].lowerCap = err[1].upperCap; + err[1].upperCap = tmp; + } + + for (var i = 0; i < s.datapoints.points.length; i += ps) { + + //parse + var errRanges = parseErrors(s, i); + + //cycle xerr & yerr + for (var e = 0; e < err.length; e++){ + + var minmax = [ax[e].min, ax[e].max]; + + //draw this error? + if (errRanges[e * err.length]){ + + //data coordinates + var x = points[i], + y = points[i + 1]; + + //errorbar ranges + var upper = [x, y][e] + errRanges[e * err.length + 1], + lower = [x, y][e] - errRanges[e * err.length]; + + //points outside of the canvas + if (err[e].err == 'x') + if (y > ax[1].max || y < ax[1].min || upper < ax[0].min || lower > ax[0].max) + continue; + if (err[e].err == 'y') + if (x > ax[0].max || x < ax[0].min || upper < ax[1].min || lower > ax[1].max) + continue; + + // prevent errorbars getting out of the canvas + var drawUpper = true, + drawLower = true; + + if (upper > minmax[1]) { + drawUpper = false; + upper = minmax[1]; + } + if (lower < minmax[0]) { + drawLower = false; + lower = minmax[0]; + } + + //sanity check, in case some inverted axis hack is applied to flot + if ((err[e].err == 'x' && invertX) || (err[e].err == 'y' && invertY)) { + //swap coordinates + var tmp = lower; + lower = upper; + upper = tmp; + tmp = drawLower; + drawLower = drawUpper; + drawUpper = tmp; + tmp = minmax[0]; + minmax[0] = minmax[1]; + minmax[1] = tmp; + } + + // convert to pixels + x = ax[0].p2c(x), + y = ax[1].p2c(y), + upper = ax[e].p2c(upper); + lower = ax[e].p2c(lower); + minmax[0] = ax[e].p2c(minmax[0]); + minmax[1] = ax[e].p2c(minmax[1]); + + //same style as points by default + var lw = err[e].lineWidth ? err[e].lineWidth : s.points.lineWidth, + sw = s.points.shadowSize != null ? s.points.shadowSize : s.shadowSize; + + //shadow as for points + if (lw > 0 && sw > 0) { + var w = sw / 2; + ctx.lineWidth = w; + ctx.strokeStyle = "rgba(0,0,0,0.1)"; + drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, w + w/2, minmax); + + ctx.strokeStyle = "rgba(0,0,0,0.2)"; + drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, w/2, minmax); + } + + ctx.strokeStyle = err[e].color? err[e].color: s.color; + ctx.lineWidth = lw; + //draw it + drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, 0, minmax); + } + } + } + } + + function drawError(ctx,err,x,y,upper,lower,drawUpper,drawLower,radius,offset,minmax){ + + //shadow offset + y += offset; + upper += offset; + lower += offset; + + // error bar - avoid plotting over circles + if (err.err == 'x'){ + if (upper > x + radius) drawPath(ctx, [[upper,y],[Math.max(x + radius,minmax[0]),y]]); + else drawUpper = false; + if (lower < x - radius) drawPath(ctx, [[Math.min(x - radius,minmax[1]),y],[lower,y]] ); + else drawLower = false; + } + else { + if (upper < y - radius) drawPath(ctx, [[x,upper],[x,Math.min(y - radius,minmax[0])]] ); + else drawUpper = false; + if (lower > y + radius) drawPath(ctx, [[x,Math.max(y + radius,minmax[1])],[x,lower]] ); + else drawLower = false; + } + + //internal radius value in errorbar, allows to plot radius 0 points and still keep proper sized caps + //this is a way to get errorbars on lines without visible connecting dots + radius = err.radius != null? err.radius: radius; + + // upper cap + if (drawUpper) { + if (err.upperCap == '-'){ + if (err.err=='x') drawPath(ctx, [[upper,y - radius],[upper,y + radius]] ); + else drawPath(ctx, [[x - radius,upper],[x + radius,upper]] ); + } else if ($.isFunction(err.upperCap)){ + if (err.err=='x') err.upperCap(ctx, upper, y, radius); + else err.upperCap(ctx, x, upper, radius); + } + } + // lower cap + if (drawLower) { + if (err.lowerCap == '-'){ + if (err.err=='x') drawPath(ctx, [[lower,y - radius],[lower,y + radius]] ); + else drawPath(ctx, [[x - radius,lower],[x + radius,lower]] ); + } else if ($.isFunction(err.lowerCap)){ + if (err.err=='x') err.lowerCap(ctx, lower, y, radius); + else err.lowerCap(ctx, x, lower, radius); + } + } + } + + function drawPath(ctx, pts){ + ctx.beginPath(); + ctx.moveTo(pts[0][0], pts[0][1]); + for (var p=1; p < pts.length; p++) + ctx.lineTo(pts[p][0], pts[p][1]); + ctx.stroke(); + } + + function draw(plot, ctx){ + var plotOffset = plot.getPlotOffset(); + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + $.each(plot.getData(), function (i, s) { + if (s.points.errorbars && (s.points.xerr.show || s.points.yerr.show)) + drawSeriesErrors(plot, ctx, s); + }); + ctx.restore(); + } + + function init(plot) { + plot.hooks.processRawData.push(processRawData); + plot.hooks.draw.push(draw); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'errorbars', + version: '1.0' + }); +})(jQuery); diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.fillbetween.js b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.fillbetween.js new file mode 100644 index 0000000..c9b1fa8 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.fillbetween.js @@ -0,0 +1,226 @@ +/* Flot plugin for computing bottoms for filled line and bar charts. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +The case: you've got two series that you want to fill the area between. In Flot +terms, you need to use one as the fill bottom of the other. You can specify the +bottom of each data point as the third coordinate manually, or you can use this +plugin to compute it for you. + +In order to name the other series, you need to give it an id, like this: + + var dataset = [ + { data: [ ... ], id: "foo" } , // use default bottom + { data: [ ... ], fillBetween: "foo" }, // use first dataset as bottom + ]; + + $.plot($("#placeholder"), dataset, { lines: { show: true, fill: true }}); + +As a convenience, if the id given is a number that doesn't appear as an id in +the series, it is interpreted as the index in the array instead (so fillBetween: +0 can also mean the first series). + +Internally, the plugin modifies the datapoints in each series. For line series, +extra data points might be inserted through interpolation. Note that at points +where the bottom line is not defined (due to a null point or start/end of line), +the current line will show a gap too. The algorithm comes from the +jquery.flot.stack.js plugin, possibly some code could be shared. + +*/ + +(function ( $ ) { + + var options = { + series: { + fillBetween: null // or number + } + }; + + function init( plot ) { + + function findBottomSeries( s, allseries ) { + + var i; + + for ( i = 0; i < allseries.length; ++i ) { + if ( allseries[ i ].id === s.fillBetween ) { + return allseries[ i ]; + } + } + + if ( typeof s.fillBetween === "number" ) { + if ( s.fillBetween < 0 || s.fillBetween >= allseries.length ) { + return null; + } + return allseries[ s.fillBetween ]; + } + + return null; + } + + function computeFillBottoms( plot, s, datapoints ) { + + if ( s.fillBetween == null ) { + return; + } + + var other = findBottomSeries( s, plot.getData() ); + + if ( !other ) { + return; + } + + var ps = datapoints.pointsize, + points = datapoints.points, + otherps = other.datapoints.pointsize, + otherpoints = other.datapoints.points, + newpoints = [], + px, py, intery, qx, qy, bottom, + withlines = s.lines.show, + withbottom = ps > 2 && datapoints.format[2].y, + withsteps = withlines && s.lines.steps, + fromgap = true, + i = 0, + j = 0, + l, m; + + while ( true ) { + + if ( i >= points.length ) { + break; + } + + l = newpoints.length; + + if ( points[ i ] == null ) { + + // copy gaps + + for ( m = 0; m < ps; ++m ) { + newpoints.push( points[ i + m ] ); + } + + i += ps; + + } else if ( j >= otherpoints.length ) { + + // for lines, we can't use the rest of the points + + if ( !withlines ) { + for ( m = 0; m < ps; ++m ) { + newpoints.push( points[ i + m ] ); + } + } + + i += ps; + + } else if ( otherpoints[ j ] == null ) { + + // oops, got a gap + + for ( m = 0; m < ps; ++m ) { + newpoints.push( null ); + } + + fromgap = true; + j += otherps; + + } else { + + // cases where we actually got two points + + px = points[ i ]; + py = points[ i + 1 ]; + qx = otherpoints[ j ]; + qy = otherpoints[ j + 1 ]; + bottom = 0; + + if ( px === qx ) { + + for ( m = 0; m < ps; ++m ) { + newpoints.push( points[ i + m ] ); + } + + //newpoints[ l + 1 ] += qy; + bottom = qy; + + i += ps; + j += otherps; + + } else if ( px > qx ) { + + // we got past point below, might need to + // insert interpolated extra point + + if ( withlines && i > 0 && points[ i - ps ] != null ) { + intery = py + ( points[ i - ps + 1 ] - py ) * ( qx - px ) / ( points[ i - ps ] - px ); + newpoints.push( qx ); + newpoints.push( intery ); + for ( m = 2; m < ps; ++m ) { + newpoints.push( points[ i + m ] ); + } + bottom = qy; + } + + j += otherps; + + } else { // px < qx + + // if we come from a gap, we just skip this point + + if ( fromgap && withlines ) { + i += ps; + continue; + } + + for ( m = 0; m < ps; ++m ) { + newpoints.push( points[ i + m ] ); + } + + // we might be able to interpolate a point below, + // this can give us a better y + + if ( withlines && j > 0 && otherpoints[ j - otherps ] != null ) { + bottom = qy + ( otherpoints[ j - otherps + 1 ] - qy ) * ( px - qx ) / ( otherpoints[ j - otherps ] - qx ); + } + + //newpoints[l + 1] += bottom; + + i += ps; + } + + fromgap = false; + + if ( l !== newpoints.length && withbottom ) { + newpoints[ l + 2 ] = bottom; + } + } + + // maintain the line steps invariant + + if ( withsteps && l !== newpoints.length && l > 0 && + newpoints[ l ] !== null && + newpoints[ l ] !== newpoints[ l - ps ] && + newpoints[ l + 1 ] !== newpoints[ l - ps + 1 ] ) { + for (m = 0; m < ps; ++m) { + newpoints[ l + ps + m ] = newpoints[ l + m ]; + } + newpoints[ l + 1 ] = newpoints[ l - ps + 1 ]; + } + } + + datapoints.points = newpoints; + } + + plot.hooks.processDatapoints.push( computeFillBottoms ); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: "fillbetween", + version: "1.0" + }); + +})(jQuery); diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.image.js b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.image.js new file mode 100644 index 0000000..32099d4 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.image.js @@ -0,0 +1,241 @@ +/* Flot plugin for plotting images. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +The data syntax is [ [ image, x1, y1, x2, y2 ], ... ] where (x1, y1) and +(x2, y2) are where you intend the two opposite corners of the image to end up +in the plot. Image must be a fully loaded Javascript image (you can make one +with new Image()). If the image is not complete, it's skipped when plotting. + +There are two helpers included for retrieving images. The easiest work the way +that you put in URLs instead of images in the data, like this: + + [ "myimage.png", 0, 0, 10, 10 ] + +Then call $.plot.image.loadData( data, options, callback ) where data and +options are the same as you pass in to $.plot. This loads the images, replaces +the URLs in the data with the corresponding images and calls "callback" when +all images are loaded (or failed loading). In the callback, you can then call +$.plot with the data set. See the included example. + +A more low-level helper, $.plot.image.load(urls, callback) is also included. +Given a list of URLs, it calls callback with an object mapping from URL to +Image object when all images are loaded or have failed loading. + +The plugin supports these options: + + series: { + images: { + show: boolean + anchor: "corner" or "center" + alpha: [ 0, 1 ] + } + } + +They can be specified for a specific series: + + $.plot( $("#placeholder"), [{ + data: [ ... ], + images: { ... } + ]) + +Note that because the data format is different from usual data points, you +can't use images with anything else in a specific data series. + +Setting "anchor" to "center" causes the pixels in the image to be anchored at +the corner pixel centers inside of at the pixel corners, effectively letting +half a pixel stick out to each side in the plot. + +A possible future direction could be support for tiling for large images (like +Google Maps). + +*/ + +(function ($) { + var options = { + series: { + images: { + show: false, + alpha: 1, + anchor: "corner" // or "center" + } + } + }; + + $.plot.image = {}; + + $.plot.image.loadDataImages = function (series, options, callback) { + var urls = [], points = []; + + var defaultShow = options.series.images.show; + + $.each(series, function (i, s) { + if (!(defaultShow || s.images.show)) + return; + + if (s.data) + s = s.data; + + $.each(s, function (i, p) { + if (typeof p[0] == "string") { + urls.push(p[0]); + points.push(p); + } + }); + }); + + $.plot.image.load(urls, function (loadedImages) { + $.each(points, function (i, p) { + var url = p[0]; + if (loadedImages[url]) + p[0] = loadedImages[url]; + }); + + callback(); + }); + } + + $.plot.image.load = function (urls, callback) { + var missing = urls.length, loaded = {}; + if (missing == 0) + callback({}); + + $.each(urls, function (i, url) { + var handler = function () { + --missing; + + loaded[url] = this; + + if (missing == 0) + callback(loaded); + }; + + $('').load(handler).error(handler).attr('src', url); + }); + }; + + function drawSeries(plot, ctx, series) { + var plotOffset = plot.getPlotOffset(); + + if (!series.images || !series.images.show) + return; + + var points = series.datapoints.points, + ps = series.datapoints.pointsize; + + for (var i = 0; i < points.length; i += ps) { + var img = points[i], + x1 = points[i + 1], y1 = points[i + 2], + x2 = points[i + 3], y2 = points[i + 4], + xaxis = series.xaxis, yaxis = series.yaxis, + tmp; + + // actually we should check img.complete, but it + // appears to be a somewhat unreliable indicator in + // IE6 (false even after load event) + if (!img || img.width <= 0 || img.height <= 0) + continue; + + if (x1 > x2) { + tmp = x2; + x2 = x1; + x1 = tmp; + } + if (y1 > y2) { + tmp = y2; + y2 = y1; + y1 = tmp; + } + + // if the anchor is at the center of the pixel, expand the + // image by 1/2 pixel in each direction + if (series.images.anchor == "center") { + tmp = 0.5 * (x2-x1) / (img.width - 1); + x1 -= tmp; + x2 += tmp; + tmp = 0.5 * (y2-y1) / (img.height - 1); + y1 -= tmp; + y2 += tmp; + } + + // clip + if (x1 == x2 || y1 == y2 || + x1 >= xaxis.max || x2 <= xaxis.min || + y1 >= yaxis.max || y2 <= yaxis.min) + continue; + + var sx1 = 0, sy1 = 0, sx2 = img.width, sy2 = img.height; + if (x1 < xaxis.min) { + sx1 += (sx2 - sx1) * (xaxis.min - x1) / (x2 - x1); + x1 = xaxis.min; + } + + if (x2 > xaxis.max) { + sx2 += (sx2 - sx1) * (xaxis.max - x2) / (x2 - x1); + x2 = xaxis.max; + } + + if (y1 < yaxis.min) { + sy2 += (sy1 - sy2) * (yaxis.min - y1) / (y2 - y1); + y1 = yaxis.min; + } + + if (y2 > yaxis.max) { + sy1 += (sy1 - sy2) * (yaxis.max - y2) / (y2 - y1); + y2 = yaxis.max; + } + + x1 = xaxis.p2c(x1); + x2 = xaxis.p2c(x2); + y1 = yaxis.p2c(y1); + y2 = yaxis.p2c(y2); + + // the transformation may have swapped us + if (x1 > x2) { + tmp = x2; + x2 = x1; + x1 = tmp; + } + if (y1 > y2) { + tmp = y2; + y2 = y1; + y1 = tmp; + } + + tmp = ctx.globalAlpha; + ctx.globalAlpha *= series.images.alpha; + ctx.drawImage(img, + sx1, sy1, sx2 - sx1, sy2 - sy1, + x1 + plotOffset.left, y1 + plotOffset.top, + x2 - x1, y2 - y1); + ctx.globalAlpha = tmp; + } + } + + function processRawData(plot, series, data, datapoints) { + if (!series.images.show) + return; + + // format is Image, x1, y1, x2, y2 (opposite corners) + datapoints.format = [ + { required: true }, + { x: true, number: true, required: true }, + { y: true, number: true, required: true }, + { x: true, number: true, required: true }, + { y: true, number: true, required: true } + ]; + } + + function init(plot) { + plot.hooks.processRawData.push(processRawData); + plot.hooks.drawSeries.push(drawSeries); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'image', + version: '1.1' + }); +})(jQuery); diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.js b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.js new file mode 100644 index 0000000..dd20ad6 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.js @@ -0,0 +1,3168 @@ +/* Javascript plotting library for jQuery, version 0.8.3. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +*/ + +// first an inline dependency, jquery.colorhelpers.js, we inline it here +// for convenience + +/* Plugin for jQuery for working with colors. + * + * Version 1.1. + * + * Inspiration from jQuery color animation plugin by John Resig. + * + * Released under the MIT license by Ole Laursen, October 2009. + * + * Examples: + * + * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() + * var c = $.color.extract($("#mydiv"), 'background-color'); + * console.log(c.r, c.g, c.b, c.a); + * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" + * + * Note that .scale() and .add() return the same modified object + * instead of making a new one. + * + * V. 1.1: Fix error handling so e.g. parsing an empty string does + * produce a color rather than just crashing. + */ +(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return valuemax?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery); + +// the actual Flot code +(function($) { + + // Cache the prototype hasOwnProperty for faster access + + var hasOwnProperty = Object.prototype.hasOwnProperty; + + // A shim to provide 'detach' to jQuery versions prior to 1.4. Using a DOM + // operation produces the same effect as detach, i.e. removing the element + // without touching its jQuery data. + + // Do not merge this into Flot 0.9, since it requires jQuery 1.4.4+. + + if (!$.fn.detach) { + $.fn.detach = function() { + return this.each(function() { + if (this.parentNode) { + this.parentNode.removeChild( this ); + } + }); + }; + } + + /////////////////////////////////////////////////////////////////////////// + // The Canvas object is a wrapper around an HTML5 tag. + // + // @constructor + // @param {string} cls List of classes to apply to the canvas. + // @param {element} container Element onto which to append the canvas. + // + // Requiring a container is a little iffy, but unfortunately canvas + // operations don't work unless the canvas is attached to the DOM. + + function Canvas(cls, container) { + + var element = container.children("." + cls)[0]; + + if (element == null) { + + element = document.createElement("canvas"); + element.className = cls; + + $(element).css({ direction: "ltr", position: "absolute", left: 0, top: 0 }) + .appendTo(container); + + // If HTML5 Canvas isn't available, fall back to [Ex|Flash]canvas + + if (!element.getContext) { + if (window.G_vmlCanvasManager) { + element = window.G_vmlCanvasManager.initElement(element); + } else { + throw new Error("Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode."); + } + } + } + + this.element = element; + + var context = this.context = element.getContext("2d"); + + // Determine the screen's ratio of physical to device-independent + // pixels. This is the ratio between the canvas width that the browser + // advertises and the number of pixels actually present in that space. + + // The iPhone 4, for example, has a device-independent width of 320px, + // but its screen is actually 640px wide. It therefore has a pixel + // ratio of 2, while most normal devices have a ratio of 1. + + var devicePixelRatio = window.devicePixelRatio || 1, + backingStoreRatio = + context.webkitBackingStorePixelRatio || + context.mozBackingStorePixelRatio || + context.msBackingStorePixelRatio || + context.oBackingStorePixelRatio || + context.backingStorePixelRatio || 1; + + this.pixelRatio = devicePixelRatio / backingStoreRatio; + + // Size the canvas to match the internal dimensions of its container + + this.resize(container.width(), container.height()); + + // Collection of HTML div layers for text overlaid onto the canvas + + this.textContainer = null; + this.text = {}; + + // Cache of text fragments and metrics, so we can avoid expensively + // re-calculating them when the plot is re-rendered in a loop. + + this._textCache = {}; + } + + // Resizes the canvas to the given dimensions. + // + // @param {number} width New width of the canvas, in pixels. + // @param {number} width New height of the canvas, in pixels. + + Canvas.prototype.resize = function(width, height) { + + if (width <= 0 || height <= 0) { + throw new Error("Invalid dimensions for plot, width = " + width + ", height = " + height); + } + + var element = this.element, + context = this.context, + pixelRatio = this.pixelRatio; + + // Resize the canvas, increasing its density based on the display's + // pixel ratio; basically giving it more pixels without increasing the + // size of its element, to take advantage of the fact that retina + // displays have that many more pixels in the same advertised space. + + // Resizing should reset the state (excanvas seems to be buggy though) + + if (this.width != width) { + element.width = width * pixelRatio; + element.style.width = width + "px"; + this.width = width; + } + + if (this.height != height) { + element.height = height * pixelRatio; + element.style.height = height + "px"; + this.height = height; + } + + // Save the context, so we can reset in case we get replotted. The + // restore ensure that we're really back at the initial state, and + // should be safe even if we haven't saved the initial state yet. + + context.restore(); + context.save(); + + // Scale the coordinate space to match the display density; so even though we + // may have twice as many pixels, we still want lines and other drawing to + // appear at the same size; the extra pixels will just make them crisper. + + context.scale(pixelRatio, pixelRatio); + }; + + // Clears the entire canvas area, not including any overlaid HTML text + + Canvas.prototype.clear = function() { + this.context.clearRect(0, 0, this.width, this.height); + }; + + // Finishes rendering the canvas, including managing the text overlay. + + Canvas.prototype.render = function() { + + var cache = this._textCache; + + // For each text layer, add elements marked as active that haven't + // already been rendered, and remove those that are no longer active. + + for (var layerKey in cache) { + if (hasOwnProperty.call(cache, layerKey)) { + + var layer = this.getTextLayer(layerKey), + layerCache = cache[layerKey]; + + layer.hide(); + + for (var styleKey in layerCache) { + if (hasOwnProperty.call(layerCache, styleKey)) { + var styleCache = layerCache[styleKey]; + for (var key in styleCache) { + if (hasOwnProperty.call(styleCache, key)) { + + var positions = styleCache[key].positions; + + for (var i = 0, position; position = positions[i]; i++) { + if (position.active) { + if (!position.rendered) { + layer.append(position.element); + position.rendered = true; + } + } else { + positions.splice(i--, 1); + if (position.rendered) { + position.element.detach(); + } + } + } + + if (positions.length == 0) { + delete styleCache[key]; + } + } + } + } + } + + layer.show(); + } + } + }; + + // Creates (if necessary) and returns the text overlay container. + // + // @param {string} classes String of space-separated CSS classes used to + // uniquely identify the text layer. + // @return {object} The jQuery-wrapped text-layer div. + + Canvas.prototype.getTextLayer = function(classes) { + + var layer = this.text[classes]; + + // Create the text layer if it doesn't exist + + if (layer == null) { + + // Create the text layer container, if it doesn't exist + + if (this.textContainer == null) { + this.textContainer = $("
    ") + .css({ + position: "absolute", + top: 0, + left: 0, + bottom: 0, + right: 0, + 'font-size': "smaller", + color: "#545454" + }) + .insertAfter(this.element); + } + + layer = this.text[classes] = $("
    ") + .addClass(classes) + .css({ + position: "absolute", + top: 0, + left: 0, + bottom: 0, + right: 0 + }) + .appendTo(this.textContainer); + } + + return layer; + }; + + // Creates (if necessary) and returns a text info object. + // + // The object looks like this: + // + // { + // width: Width of the text's wrapper div. + // height: Height of the text's wrapper div. + // element: The jQuery-wrapped HTML div containing the text. + // positions: Array of positions at which this text is drawn. + // } + // + // The positions array contains objects that look like this: + // + // { + // active: Flag indicating whether the text should be visible. + // rendered: Flag indicating whether the text is currently visible. + // element: The jQuery-wrapped HTML div containing the text. + // x: X coordinate at which to draw the text. + // y: Y coordinate at which to draw the text. + // } + // + // Each position after the first receives a clone of the original element. + // + // The idea is that that the width, height, and general 'identity' of the + // text is constant no matter where it is placed; the placements are a + // secondary property. + // + // Canvas maintains a cache of recently-used text info objects; getTextInfo + // either returns the cached element or creates a new entry. + // + // @param {string} layer A string of space-separated CSS classes uniquely + // identifying the layer containing this text. + // @param {string} text Text string to retrieve info for. + // @param {(string|object)=} font Either a string of space-separated CSS + // classes or a font-spec object, defining the text's font and style. + // @param {number=} angle Angle at which to rotate the text, in degrees. + // Angle is currently unused, it will be implemented in the future. + // @param {number=} width Maximum width of the text before it wraps. + // @return {object} a text info object. + + Canvas.prototype.getTextInfo = function(layer, text, font, angle, width) { + + var textStyle, layerCache, styleCache, info; + + // Cast the value to a string, in case we were given a number or such + + text = "" + text; + + // If the font is a font-spec object, generate a CSS font definition + + if (typeof font === "object") { + textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px/" + font.lineHeight + "px " + font.family; + } else { + textStyle = font; + } + + // Retrieve (or create) the cache for the text's layer and styles + + layerCache = this._textCache[layer]; + + if (layerCache == null) { + layerCache = this._textCache[layer] = {}; + } + + styleCache = layerCache[textStyle]; + + if (styleCache == null) { + styleCache = layerCache[textStyle] = {}; + } + + info = styleCache[text]; + + // If we can't find a matching element in our cache, create a new one + + if (info == null) { + + var element = $("
    ").html(text) + .css({ + position: "absolute", + 'max-width': width, + top: -9999 + }) + .appendTo(this.getTextLayer(layer)); + + if (typeof font === "object") { + element.css({ + font: textStyle, + color: font.color + }); + } else if (typeof font === "string") { + element.addClass(font); + } + + info = styleCache[text] = { + width: element.outerWidth(true), + height: element.outerHeight(true), + element: element, + positions: [] + }; + + element.detach(); + } + + return info; + }; + + // Adds a text string to the canvas text overlay. + // + // The text isn't drawn immediately; it is marked as rendering, which will + // result in its addition to the canvas on the next render pass. + // + // @param {string} layer A string of space-separated CSS classes uniquely + // identifying the layer containing this text. + // @param {number} x X coordinate at which to draw the text. + // @param {number} y Y coordinate at which to draw the text. + // @param {string} text Text string to draw. + // @param {(string|object)=} font Either a string of space-separated CSS + // classes or a font-spec object, defining the text's font and style. + // @param {number=} angle Angle at which to rotate the text, in degrees. + // Angle is currently unused, it will be implemented in the future. + // @param {number=} width Maximum width of the text before it wraps. + // @param {string=} halign Horizontal alignment of the text; either "left", + // "center" or "right". + // @param {string=} valign Vertical alignment of the text; either "top", + // "middle" or "bottom". + + Canvas.prototype.addText = function(layer, x, y, text, font, angle, width, halign, valign) { + + var info = this.getTextInfo(layer, text, font, angle, width), + positions = info.positions; + + // Tweak the div's position to match the text's alignment + + if (halign == "center") { + x -= info.width / 2; + } else if (halign == "right") { + x -= info.width; + } + + if (valign == "middle") { + y -= info.height / 2; + } else if (valign == "bottom") { + y -= info.height; + } + + // Determine whether this text already exists at this position. + // If so, mark it for inclusion in the next render pass. + + for (var i = 0, position; position = positions[i]; i++) { + if (position.x == x && position.y == y) { + position.active = true; + return; + } + } + + // If the text doesn't exist at this position, create a new entry + + // For the very first position we'll re-use the original element, + // while for subsequent ones we'll clone it. + + position = { + active: true, + rendered: false, + element: positions.length ? info.element.clone() : info.element, + x: x, + y: y + }; + + positions.push(position); + + // Move the element to its final position within the container + + position.element.css({ + top: Math.round(y), + left: Math.round(x), + 'text-align': halign // In case the text wraps + }); + }; + + // Removes one or more text strings from the canvas text overlay. + // + // If no parameters are given, all text within the layer is removed. + // + // Note that the text is not immediately removed; it is simply marked as + // inactive, which will result in its removal on the next render pass. + // This avoids the performance penalty for 'clear and redraw' behavior, + // where we potentially get rid of all text on a layer, but will likely + // add back most or all of it later, as when redrawing axes, for example. + // + // @param {string} layer A string of space-separated CSS classes uniquely + // identifying the layer containing this text. + // @param {number=} x X coordinate of the text. + // @param {number=} y Y coordinate of the text. + // @param {string=} text Text string to remove. + // @param {(string|object)=} font Either a string of space-separated CSS + // classes or a font-spec object, defining the text's font and style. + // @param {number=} angle Angle at which the text is rotated, in degrees. + // Angle is currently unused, it will be implemented in the future. + + Canvas.prototype.removeText = function(layer, x, y, text, font, angle) { + if (text == null) { + var layerCache = this._textCache[layer]; + if (layerCache != null) { + for (var styleKey in layerCache) { + if (hasOwnProperty.call(layerCache, styleKey)) { + var styleCache = layerCache[styleKey]; + for (var key in styleCache) { + if (hasOwnProperty.call(styleCache, key)) { + var positions = styleCache[key].positions; + for (var i = 0, position; position = positions[i]; i++) { + position.active = false; + } + } + } + } + } + } + } else { + var positions = this.getTextInfo(layer, text, font, angle).positions; + for (var i = 0, position; position = positions[i]; i++) { + if (position.x == x && position.y == y) { + position.active = false; + } + } + } + }; + + /////////////////////////////////////////////////////////////////////////// + // The top-level container for the entire plot. + + function Plot(placeholder, data_, options_, plugins) { + // data is on the form: + // [ series1, series2 ... ] + // where series is either just the data as [ [x1, y1], [x2, y2], ... ] + // or { data: [ [x1, y1], [x2, y2], ... ], label: "some label", ... } + + var series = [], + options = { + // the color theme used for graphs + colors: ["#edc240", "#afd8f8", "#cb4b4b", "#4da74d", "#9440ed"], + legend: { + show: true, + noColumns: 1, // number of colums in legend table + labelFormatter: null, // fn: string -> string + labelBoxBorderColor: "#ccc", // border color for the little label boxes + container: null, // container (as jQuery object) to put legend in, null means default on top of graph + position: "ne", // position of default legend container within plot + margin: 5, // distance from grid edge to default legend container within plot + backgroundColor: null, // null means auto-detect + backgroundOpacity: 0.85, // set to 0 to avoid background + sorted: null // default to no legend sorting + }, + xaxis: { + show: null, // null = auto-detect, true = always, false = never + position: "bottom", // or "top" + mode: null, // null or "time" + font: null, // null (derived from CSS in placeholder) or object like { size: 11, lineHeight: 13, style: "italic", weight: "bold", family: "sans-serif", variant: "small-caps" } + color: null, // base color, labels, ticks + tickColor: null, // possibly different color of ticks, e.g. "rgba(0,0,0,0.15)" + transform: null, // null or f: number -> number to transform axis + inverseTransform: null, // if transform is set, this should be the inverse function + min: null, // min. value to show, null means set automatically + max: null, // max. value to show, null means set automatically + autoscaleMargin: null, // margin in % to add if auto-setting min/max + ticks: null, // either [1, 3] or [[1, "a"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks + tickFormatter: null, // fn: number -> string + labelWidth: null, // size of tick labels in pixels + labelHeight: null, + reserveSpace: null, // whether to reserve space even if axis isn't shown + tickLength: null, // size in pixels of ticks, or "full" for whole line + alignTicksWithAxis: null, // axis number or null for no sync + tickDecimals: null, // no. of decimals, null means auto + tickSize: null, // number or [number, "unit"] + minTickSize: null // number or [number, "unit"] + }, + yaxis: { + autoscaleMargin: 0.02, + position: "left" // or "right" + }, + xaxes: [], + yaxes: [], + series: { + points: { + show: false, + radius: 3, + lineWidth: 2, // in pixels + fill: true, + fillColor: "#ffffff", + symbol: "circle" // or callback + }, + lines: { + // we don't put in show: false so we can see + // whether lines were actively disabled + lineWidth: 2, // in pixels + fill: false, + fillColor: null, + steps: false + // Omit 'zero', so we can later default its value to + // match that of the 'fill' option. + }, + bars: { + show: false, + lineWidth: 2, // in pixels + barWidth: 1, // in units of the x axis + fill: true, + fillColor: null, + align: "left", // "left", "right", or "center" + horizontal: false, + zero: true + }, + shadowSize: 3, + highlightColor: null + }, + grid: { + show: true, + aboveData: false, + color: "#545454", // primary color used for outline and labels + backgroundColor: null, // null for transparent, else color + borderColor: null, // set if different from the grid color + tickColor: null, // color for the ticks, e.g. "rgba(0,0,0,0.15)" + margin: 0, // distance from the canvas edge to the grid + labelMargin: 5, // in pixels + axisMargin: 8, // in pixels + borderWidth: 2, // in pixels + minBorderMargin: null, // in pixels, null means taken from points radius + markings: null, // array of ranges or fn: axes -> array of ranges + markingsColor: "#f4f4f4", + markingsLineWidth: 2, + // interactive stuff + clickable: false, + hoverable: false, + autoHighlight: true, // highlight in case mouse is near + mouseActiveRadius: 10 // how far the mouse can be away to activate an item + }, + interaction: { + redrawOverlayInterval: 1000/60 // time between updates, -1 means in same flow + }, + hooks: {} + }, + surface = null, // the canvas for the plot itself + overlay = null, // canvas for interactive stuff on top of plot + eventHolder = null, // jQuery object that events should be bound to + ctx = null, octx = null, + xaxes = [], yaxes = [], + plotOffset = { left: 0, right: 0, top: 0, bottom: 0}, + plotWidth = 0, plotHeight = 0, + hooks = { + processOptions: [], + processRawData: [], + processDatapoints: [], + processOffset: [], + drawBackground: [], + drawSeries: [], + draw: [], + bindEvents: [], + drawOverlay: [], + shutdown: [] + }, + plot = this; + + // public functions + plot.setData = setData; + plot.setupGrid = setupGrid; + plot.draw = draw; + plot.getPlaceholder = function() { return placeholder; }; + plot.getCanvas = function() { return surface.element; }; + plot.getPlotOffset = function() { return plotOffset; }; + plot.width = function () { return plotWidth; }; + plot.height = function () { return plotHeight; }; + plot.offset = function () { + var o = eventHolder.offset(); + o.left += plotOffset.left; + o.top += plotOffset.top; + return o; + }; + plot.getData = function () { return series; }; + plot.getAxes = function () { + var res = {}, i; + $.each(xaxes.concat(yaxes), function (_, axis) { + if (axis) + res[axis.direction + (axis.n != 1 ? axis.n : "") + "axis"] = axis; + }); + return res; + }; + plot.getXAxes = function () { return xaxes; }; + plot.getYAxes = function () { return yaxes; }; + plot.c2p = canvasToAxisCoords; + plot.p2c = axisToCanvasCoords; + plot.getOptions = function () { return options; }; + plot.highlight = highlight; + plot.unhighlight = unhighlight; + plot.triggerRedrawOverlay = triggerRedrawOverlay; + plot.pointOffset = function(point) { + return { + left: parseInt(xaxes[axisNumber(point, "x") - 1].p2c(+point.x) + plotOffset.left, 10), + top: parseInt(yaxes[axisNumber(point, "y") - 1].p2c(+point.y) + plotOffset.top, 10) + }; + }; + plot.shutdown = shutdown; + plot.destroy = function () { + shutdown(); + placeholder.removeData("plot").empty(); + + series = []; + options = null; + surface = null; + overlay = null; + eventHolder = null; + ctx = null; + octx = null; + xaxes = []; + yaxes = []; + hooks = null; + highlights = []; + plot = null; + }; + plot.resize = function () { + var width = placeholder.width(), + height = placeholder.height(); + surface.resize(width, height); + overlay.resize(width, height); + }; + + // public attributes + plot.hooks = hooks; + + // initialize + initPlugins(plot); + parseOptions(options_); + setupCanvases(); + setData(data_); + setupGrid(); + draw(); + bindEvents(); + + + function executeHooks(hook, args) { + args = [plot].concat(args); + for (var i = 0; i < hook.length; ++i) + hook[i].apply(this, args); + } + + function initPlugins() { + + // References to key classes, allowing plugins to modify them + + var classes = { + Canvas: Canvas + }; + + for (var i = 0; i < plugins.length; ++i) { + var p = plugins[i]; + p.init(plot, classes); + if (p.options) + $.extend(true, options, p.options); + } + } + + function parseOptions(opts) { + + $.extend(true, options, opts); + + // $.extend merges arrays, rather than replacing them. When less + // colors are provided than the size of the default palette, we + // end up with those colors plus the remaining defaults, which is + // not expected behavior; avoid it by replacing them here. + + if (opts && opts.colors) { + options.colors = opts.colors; + } + + if (options.xaxis.color == null) + options.xaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString(); + if (options.yaxis.color == null) + options.yaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString(); + + if (options.xaxis.tickColor == null) // grid.tickColor for back-compatibility + options.xaxis.tickColor = options.grid.tickColor || options.xaxis.color; + if (options.yaxis.tickColor == null) // grid.tickColor for back-compatibility + options.yaxis.tickColor = options.grid.tickColor || options.yaxis.color; + + if (options.grid.borderColor == null) + options.grid.borderColor = options.grid.color; + if (options.grid.tickColor == null) + options.grid.tickColor = $.color.parse(options.grid.color).scale('a', 0.22).toString(); + + // Fill in defaults for axis options, including any unspecified + // font-spec fields, if a font-spec was provided. + + // If no x/y axis options were provided, create one of each anyway, + // since the rest of the code assumes that they exist. + + var i, axisOptions, axisCount, + fontSize = placeholder.css("font-size"), + fontSizeDefault = fontSize ? +fontSize.replace("px", "") : 13, + fontDefaults = { + style: placeholder.css("font-style"), + size: Math.round(0.8 * fontSizeDefault), + variant: placeholder.css("font-variant"), + weight: placeholder.css("font-weight"), + family: placeholder.css("font-family") + }; + + axisCount = options.xaxes.length || 1; + for (i = 0; i < axisCount; ++i) { + + axisOptions = options.xaxes[i]; + if (axisOptions && !axisOptions.tickColor) { + axisOptions.tickColor = axisOptions.color; + } + + axisOptions = $.extend(true, {}, options.xaxis, axisOptions); + options.xaxes[i] = axisOptions; + + if (axisOptions.font) { + axisOptions.font = $.extend({}, fontDefaults, axisOptions.font); + if (!axisOptions.font.color) { + axisOptions.font.color = axisOptions.color; + } + if (!axisOptions.font.lineHeight) { + axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15); + } + } + } + + axisCount = options.yaxes.length || 1; + for (i = 0; i < axisCount; ++i) { + + axisOptions = options.yaxes[i]; + if (axisOptions && !axisOptions.tickColor) { + axisOptions.tickColor = axisOptions.color; + } + + axisOptions = $.extend(true, {}, options.yaxis, axisOptions); + options.yaxes[i] = axisOptions; + + if (axisOptions.font) { + axisOptions.font = $.extend({}, fontDefaults, axisOptions.font); + if (!axisOptions.font.color) { + axisOptions.font.color = axisOptions.color; + } + if (!axisOptions.font.lineHeight) { + axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15); + } + } + } + + // backwards compatibility, to be removed in future + if (options.xaxis.noTicks && options.xaxis.ticks == null) + options.xaxis.ticks = options.xaxis.noTicks; + if (options.yaxis.noTicks && options.yaxis.ticks == null) + options.yaxis.ticks = options.yaxis.noTicks; + if (options.x2axis) { + options.xaxes[1] = $.extend(true, {}, options.xaxis, options.x2axis); + options.xaxes[1].position = "top"; + // Override the inherit to allow the axis to auto-scale + if (options.x2axis.min == null) { + options.xaxes[1].min = null; + } + if (options.x2axis.max == null) { + options.xaxes[1].max = null; + } + } + if (options.y2axis) { + options.yaxes[1] = $.extend(true, {}, options.yaxis, options.y2axis); + options.yaxes[1].position = "right"; + // Override the inherit to allow the axis to auto-scale + if (options.y2axis.min == null) { + options.yaxes[1].min = null; + } + if (options.y2axis.max == null) { + options.yaxes[1].max = null; + } + } + if (options.grid.coloredAreas) + options.grid.markings = options.grid.coloredAreas; + if (options.grid.coloredAreasColor) + options.grid.markingsColor = options.grid.coloredAreasColor; + if (options.lines) + $.extend(true, options.series.lines, options.lines); + if (options.points) + $.extend(true, options.series.points, options.points); + if (options.bars) + $.extend(true, options.series.bars, options.bars); + if (options.shadowSize != null) + options.series.shadowSize = options.shadowSize; + if (options.highlightColor != null) + options.series.highlightColor = options.highlightColor; + + // save options on axes for future reference + for (i = 0; i < options.xaxes.length; ++i) + getOrCreateAxis(xaxes, i + 1).options = options.xaxes[i]; + for (i = 0; i < options.yaxes.length; ++i) + getOrCreateAxis(yaxes, i + 1).options = options.yaxes[i]; + + // add hooks from options + for (var n in hooks) + if (options.hooks[n] && options.hooks[n].length) + hooks[n] = hooks[n].concat(options.hooks[n]); + + executeHooks(hooks.processOptions, [options]); + } + + function setData(d) { + series = parseData(d); + fillInSeriesOptions(); + processData(); + } + + function parseData(d) { + var res = []; + for (var i = 0; i < d.length; ++i) { + var s = $.extend(true, {}, options.series); + + if (d[i].data != null) { + s.data = d[i].data; // move the data instead of deep-copy + delete d[i].data; + + $.extend(true, s, d[i]); + + d[i].data = s.data; + } + else + s.data = d[i]; + res.push(s); + } + + return res; + } + + function axisNumber(obj, coord) { + var a = obj[coord + "axis"]; + if (typeof a == "object") // if we got a real axis, extract number + a = a.n; + if (typeof a != "number") + a = 1; // default to first axis + return a; + } + + function allAxes() { + // return flat array without annoying null entries + return $.grep(xaxes.concat(yaxes), function (a) { return a; }); + } + + function canvasToAxisCoords(pos) { + // return an object with x/y corresponding to all used axes + var res = {}, i, axis; + for (i = 0; i < xaxes.length; ++i) { + axis = xaxes[i]; + if (axis && axis.used) + res["x" + axis.n] = axis.c2p(pos.left); + } + + for (i = 0; i < yaxes.length; ++i) { + axis = yaxes[i]; + if (axis && axis.used) + res["y" + axis.n] = axis.c2p(pos.top); + } + + if (res.x1 !== undefined) + res.x = res.x1; + if (res.y1 !== undefined) + res.y = res.y1; + + return res; + } + + function axisToCanvasCoords(pos) { + // get canvas coords from the first pair of x/y found in pos + var res = {}, i, axis, key; + + for (i = 0; i < xaxes.length; ++i) { + axis = xaxes[i]; + if (axis && axis.used) { + key = "x" + axis.n; + if (pos[key] == null && axis.n == 1) + key = "x"; + + if (pos[key] != null) { + res.left = axis.p2c(pos[key]); + break; + } + } + } + + for (i = 0; i < yaxes.length; ++i) { + axis = yaxes[i]; + if (axis && axis.used) { + key = "y" + axis.n; + if (pos[key] == null && axis.n == 1) + key = "y"; + + if (pos[key] != null) { + res.top = axis.p2c(pos[key]); + break; + } + } + } + + return res; + } + + function getOrCreateAxis(axes, number) { + if (!axes[number - 1]) + axes[number - 1] = { + n: number, // save the number for future reference + direction: axes == xaxes ? "x" : "y", + options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis) + }; + + return axes[number - 1]; + } + + function fillInSeriesOptions() { + + var neededColors = series.length, maxIndex = -1, i; + + // Subtract the number of series that already have fixed colors or + // color indexes from the number that we still need to generate. + + for (i = 0; i < series.length; ++i) { + var sc = series[i].color; + if (sc != null) { + neededColors--; + if (typeof sc == "number" && sc > maxIndex) { + maxIndex = sc; + } + } + } + + // If any of the series have fixed color indexes, then we need to + // generate at least as many colors as the highest index. + + if (neededColors <= maxIndex) { + neededColors = maxIndex + 1; + } + + // Generate all the colors, using first the option colors and then + // variations on those colors once they're exhausted. + + var c, colors = [], colorPool = options.colors, + colorPoolSize = colorPool.length, variation = 0; + + for (i = 0; i < neededColors; i++) { + + c = $.color.parse(colorPool[i % colorPoolSize] || "#666"); + + // Each time we exhaust the colors in the pool we adjust + // a scaling factor used to produce more variations on + // those colors. The factor alternates negative/positive + // to produce lighter/darker colors. + + // Reset the variation after every few cycles, or else + // it will end up producing only white or black colors. + + if (i % colorPoolSize == 0 && i) { + if (variation >= 0) { + if (variation < 0.5) { + variation = -variation - 0.2; + } else variation = 0; + } else variation = -variation; + } + + colors[i] = c.scale('rgb', 1 + variation); + } + + // Finalize the series options, filling in their colors + + var colori = 0, s; + for (i = 0; i < series.length; ++i) { + s = series[i]; + + // assign colors + if (s.color == null) { + s.color = colors[colori].toString(); + ++colori; + } + else if (typeof s.color == "number") + s.color = colors[s.color].toString(); + + // turn on lines automatically in case nothing is set + if (s.lines.show == null) { + var v, show = true; + for (v in s) + if (s[v] && s[v].show) { + show = false; + break; + } + if (show) + s.lines.show = true; + } + + // If nothing was provided for lines.zero, default it to match + // lines.fill, since areas by default should extend to zero. + + if (s.lines.zero == null) { + s.lines.zero = !!s.lines.fill; + } + + // setup axes + s.xaxis = getOrCreateAxis(xaxes, axisNumber(s, "x")); + s.yaxis = getOrCreateAxis(yaxes, axisNumber(s, "y")); + } + } + + function processData() { + var topSentry = Number.POSITIVE_INFINITY, + bottomSentry = Number.NEGATIVE_INFINITY, + fakeInfinity = Number.MAX_VALUE, + i, j, k, m, length, + s, points, ps, x, y, axis, val, f, p, + data, format; + + function updateAxis(axis, min, max) { + if (min < axis.datamin && min != -fakeInfinity) + axis.datamin = min; + if (max > axis.datamax && max != fakeInfinity) + axis.datamax = max; + } + + $.each(allAxes(), function (_, axis) { + // init axis + axis.datamin = topSentry; + axis.datamax = bottomSentry; + axis.used = false; + }); + + for (i = 0; i < series.length; ++i) { + s = series[i]; + s.datapoints = { points: [] }; + + executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]); + } + + // first pass: clean and copy data + for (i = 0; i < series.length; ++i) { + s = series[i]; + + data = s.data; + format = s.datapoints.format; + + if (!format) { + format = []; + // find out how to copy + format.push({ x: true, number: true, required: true }); + format.push({ y: true, number: true, required: true }); + + if (s.bars.show || (s.lines.show && s.lines.fill)) { + var autoscale = !!((s.bars.show && s.bars.zero) || (s.lines.show && s.lines.zero)); + format.push({ y: true, number: true, required: false, defaultValue: 0, autoscale: autoscale }); + if (s.bars.horizontal) { + delete format[format.length - 1].y; + format[format.length - 1].x = true; + } + } + + s.datapoints.format = format; + } + + if (s.datapoints.pointsize != null) + continue; // already filled in + + s.datapoints.pointsize = format.length; + + ps = s.datapoints.pointsize; + points = s.datapoints.points; + + var insertSteps = s.lines.show && s.lines.steps; + s.xaxis.used = s.yaxis.used = true; + + for (j = k = 0; j < data.length; ++j, k += ps) { + p = data[j]; + + var nullify = p == null; + if (!nullify) { + for (m = 0; m < ps; ++m) { + val = p[m]; + f = format[m]; + + if (f) { + if (f.number && val != null) { + val = +val; // convert to number + if (isNaN(val)) + val = null; + else if (val == Infinity) + val = fakeInfinity; + else if (val == -Infinity) + val = -fakeInfinity; + } + + if (val == null) { + if (f.required) + nullify = true; + + if (f.defaultValue != null) + val = f.defaultValue; + } + } + + points[k + m] = val; + } + } + + if (nullify) { + for (m = 0; m < ps; ++m) { + val = points[k + m]; + if (val != null) { + f = format[m]; + // extract min/max info + if (f.autoscale !== false) { + if (f.x) { + updateAxis(s.xaxis, val, val); + } + if (f.y) { + updateAxis(s.yaxis, val, val); + } + } + } + points[k + m] = null; + } + } + else { + // a little bit of line specific stuff that + // perhaps shouldn't be here, but lacking + // better means... + if (insertSteps && k > 0 + && points[k - ps] != null + && points[k - ps] != points[k] + && points[k - ps + 1] != points[k + 1]) { + // copy the point to make room for a middle point + for (m = 0; m < ps; ++m) + points[k + ps + m] = points[k + m]; + + // middle point has same y + points[k + 1] = points[k - ps + 1]; + + // we've added a point, better reflect that + k += ps; + } + } + } + } + + // give the hooks a chance to run + for (i = 0; i < series.length; ++i) { + s = series[i]; + + executeHooks(hooks.processDatapoints, [ s, s.datapoints]); + } + + // second pass: find datamax/datamin for auto-scaling + for (i = 0; i < series.length; ++i) { + s = series[i]; + points = s.datapoints.points; + ps = s.datapoints.pointsize; + format = s.datapoints.format; + + var xmin = topSentry, ymin = topSentry, + xmax = bottomSentry, ymax = bottomSentry; + + for (j = 0; j < points.length; j += ps) { + if (points[j] == null) + continue; + + for (m = 0; m < ps; ++m) { + val = points[j + m]; + f = format[m]; + if (!f || f.autoscale === false || val == fakeInfinity || val == -fakeInfinity) + continue; + + if (f.x) { + if (val < xmin) + xmin = val; + if (val > xmax) + xmax = val; + } + if (f.y) { + if (val < ymin) + ymin = val; + if (val > ymax) + ymax = val; + } + } + } + + if (s.bars.show) { + // make sure we got room for the bar on the dancing floor + var delta; + + switch (s.bars.align) { + case "left": + delta = 0; + break; + case "right": + delta = -s.bars.barWidth; + break; + default: + delta = -s.bars.barWidth / 2; + } + + if (s.bars.horizontal) { + ymin += delta; + ymax += delta + s.bars.barWidth; + } + else { + xmin += delta; + xmax += delta + s.bars.barWidth; + } + } + + updateAxis(s.xaxis, xmin, xmax); + updateAxis(s.yaxis, ymin, ymax); + } + + $.each(allAxes(), function (_, axis) { + if (axis.datamin == topSentry) + axis.datamin = null; + if (axis.datamax == bottomSentry) + axis.datamax = null; + }); + } + + function setupCanvases() { + + // Make sure the placeholder is clear of everything except canvases + // from a previous plot in this container that we'll try to re-use. + + placeholder.css("padding", 0) // padding messes up the positioning + .children().filter(function(){ + return !$(this).hasClass("flot-overlay") && !$(this).hasClass('flot-base'); + }).remove(); + + if (placeholder.css("position") == 'static') + placeholder.css("position", "relative"); // for positioning labels and overlay + + surface = new Canvas("flot-base", placeholder); + overlay = new Canvas("flot-overlay", placeholder); // overlay canvas for interactive features + + ctx = surface.context; + octx = overlay.context; + + // define which element we're listening for events on + eventHolder = $(overlay.element).unbind(); + + // If we're re-using a plot object, shut down the old one + + var existing = placeholder.data("plot"); + + if (existing) { + existing.shutdown(); + overlay.clear(); + } + + // save in case we get replotted + placeholder.data("plot", plot); + } + + function bindEvents() { + // bind events + if (options.grid.hoverable) { + eventHolder.mousemove(onMouseMove); + + // Use bind, rather than .mouseleave, because we officially + // still support jQuery 1.2.6, which doesn't define a shortcut + // for mouseenter or mouseleave. This was a bug/oversight that + // was fixed somewhere around 1.3.x. We can return to using + // .mouseleave when we drop support for 1.2.6. + + eventHolder.bind("mouseleave", onMouseLeave); + } + + if (options.grid.clickable) + eventHolder.click(onClick); + + executeHooks(hooks.bindEvents, [eventHolder]); + } + + function shutdown() { + if (redrawTimeout) + clearTimeout(redrawTimeout); + + eventHolder.unbind("mousemove", onMouseMove); + eventHolder.unbind("mouseleave", onMouseLeave); + eventHolder.unbind("click", onClick); + + executeHooks(hooks.shutdown, [eventHolder]); + } + + function setTransformationHelpers(axis) { + // set helper functions on the axis, assumes plot area + // has been computed already + + function identity(x) { return x; } + + var s, m, t = axis.options.transform || identity, + it = axis.options.inverseTransform; + + // precompute how much the axis is scaling a point + // in canvas space + if (axis.direction == "x") { + s = axis.scale = plotWidth / Math.abs(t(axis.max) - t(axis.min)); + m = Math.min(t(axis.max), t(axis.min)); + } + else { + s = axis.scale = plotHeight / Math.abs(t(axis.max) - t(axis.min)); + s = -s; + m = Math.max(t(axis.max), t(axis.min)); + } + + // data point to canvas coordinate + if (t == identity) // slight optimization + axis.p2c = function (p) { return (p - m) * s; }; + else + axis.p2c = function (p) { return (t(p) - m) * s; }; + // canvas coordinate to data point + if (!it) + axis.c2p = function (c) { return m + c / s; }; + else + axis.c2p = function (c) { return it(m + c / s); }; + } + + function measureTickLabels(axis) { + + var opts = axis.options, + ticks = axis.ticks || [], + labelWidth = opts.labelWidth || 0, + labelHeight = opts.labelHeight || 0, + maxWidth = labelWidth || (axis.direction == "x" ? Math.floor(surface.width / (ticks.length || 1)) : null), + legacyStyles = axis.direction + "Axis " + axis.direction + axis.n + "Axis", + layer = "flot-" + axis.direction + "-axis flot-" + axis.direction + axis.n + "-axis " + legacyStyles, + font = opts.font || "flot-tick-label tickLabel"; + + for (var i = 0; i < ticks.length; ++i) { + + var t = ticks[i]; + + if (!t.label) + continue; + + var info = surface.getTextInfo(layer, t.label, font, null, maxWidth); + + labelWidth = Math.max(labelWidth, info.width); + labelHeight = Math.max(labelHeight, info.height); + } + + axis.labelWidth = opts.labelWidth || labelWidth; + axis.labelHeight = opts.labelHeight || labelHeight; + } + + function allocateAxisBoxFirstPhase(axis) { + // find the bounding box of the axis by looking at label + // widths/heights and ticks, make room by diminishing the + // plotOffset; this first phase only looks at one + // dimension per axis, the other dimension depends on the + // other axes so will have to wait + + var lw = axis.labelWidth, + lh = axis.labelHeight, + pos = axis.options.position, + isXAxis = axis.direction === "x", + tickLength = axis.options.tickLength, + axisMargin = options.grid.axisMargin, + padding = options.grid.labelMargin, + innermost = true, + outermost = true, + first = true, + found = false; + + // Determine the axis's position in its direction and on its side + + $.each(isXAxis ? xaxes : yaxes, function(i, a) { + if (a && (a.show || a.reserveSpace)) { + if (a === axis) { + found = true; + } else if (a.options.position === pos) { + if (found) { + outermost = false; + } else { + innermost = false; + } + } + if (!found) { + first = false; + } + } + }); + + // The outermost axis on each side has no margin + + if (outermost) { + axisMargin = 0; + } + + // The ticks for the first axis in each direction stretch across + + if (tickLength == null) { + tickLength = first ? "full" : 5; + } + + if (!isNaN(+tickLength)) + padding += +tickLength; + + if (isXAxis) { + lh += padding; + + if (pos == "bottom") { + plotOffset.bottom += lh + axisMargin; + axis.box = { top: surface.height - plotOffset.bottom, height: lh }; + } + else { + axis.box = { top: plotOffset.top + axisMargin, height: lh }; + plotOffset.top += lh + axisMargin; + } + } + else { + lw += padding; + + if (pos == "left") { + axis.box = { left: plotOffset.left + axisMargin, width: lw }; + plotOffset.left += lw + axisMargin; + } + else { + plotOffset.right += lw + axisMargin; + axis.box = { left: surface.width - plotOffset.right, width: lw }; + } + } + + // save for future reference + axis.position = pos; + axis.tickLength = tickLength; + axis.box.padding = padding; + axis.innermost = innermost; + } + + function allocateAxisBoxSecondPhase(axis) { + // now that all axis boxes have been placed in one + // dimension, we can set the remaining dimension coordinates + if (axis.direction == "x") { + axis.box.left = plotOffset.left - axis.labelWidth / 2; + axis.box.width = surface.width - plotOffset.left - plotOffset.right + axis.labelWidth; + } + else { + axis.box.top = plotOffset.top - axis.labelHeight / 2; + axis.box.height = surface.height - plotOffset.bottom - plotOffset.top + axis.labelHeight; + } + } + + function adjustLayoutForThingsStickingOut() { + // possibly adjust plot offset to ensure everything stays + // inside the canvas and isn't clipped off + + var minMargin = options.grid.minBorderMargin, + axis, i; + + // check stuff from the plot (FIXME: this should just read + // a value from the series, otherwise it's impossible to + // customize) + if (minMargin == null) { + minMargin = 0; + for (i = 0; i < series.length; ++i) + minMargin = Math.max(minMargin, 2 * (series[i].points.radius + series[i].points.lineWidth/2)); + } + + var margins = { + left: minMargin, + right: minMargin, + top: minMargin, + bottom: minMargin + }; + + // check axis labels, note we don't check the actual + // labels but instead use the overall width/height to not + // jump as much around with replots + $.each(allAxes(), function (_, axis) { + if (axis.reserveSpace && axis.ticks && axis.ticks.length) { + if (axis.direction === "x") { + margins.left = Math.max(margins.left, axis.labelWidth / 2); + margins.right = Math.max(margins.right, axis.labelWidth / 2); + } else { + margins.bottom = Math.max(margins.bottom, axis.labelHeight / 2); + margins.top = Math.max(margins.top, axis.labelHeight / 2); + } + } + }); + + plotOffset.left = Math.ceil(Math.max(margins.left, plotOffset.left)); + plotOffset.right = Math.ceil(Math.max(margins.right, plotOffset.right)); + plotOffset.top = Math.ceil(Math.max(margins.top, plotOffset.top)); + plotOffset.bottom = Math.ceil(Math.max(margins.bottom, plotOffset.bottom)); + } + + function setupGrid() { + var i, axes = allAxes(), showGrid = options.grid.show; + + // Initialize the plot's offset from the edge of the canvas + + for (var a in plotOffset) { + var margin = options.grid.margin || 0; + plotOffset[a] = typeof margin == "number" ? margin : margin[a] || 0; + } + + executeHooks(hooks.processOffset, [plotOffset]); + + // If the grid is visible, add its border width to the offset + + for (var a in plotOffset) { + if(typeof(options.grid.borderWidth) == "object") { + plotOffset[a] += showGrid ? options.grid.borderWidth[a] : 0; + } + else { + plotOffset[a] += showGrid ? options.grid.borderWidth : 0; + } + } + + $.each(axes, function (_, axis) { + var axisOpts = axis.options; + axis.show = axisOpts.show == null ? axis.used : axisOpts.show; + axis.reserveSpace = axisOpts.reserveSpace == null ? axis.show : axisOpts.reserveSpace; + setRange(axis); + }); + + if (showGrid) { + + var allocatedAxes = $.grep(axes, function (axis) { + return axis.show || axis.reserveSpace; + }); + + $.each(allocatedAxes, function (_, axis) { + // make the ticks + setupTickGeneration(axis); + setTicks(axis); + snapRangeToTicks(axis, axis.ticks); + // find labelWidth/Height for axis + measureTickLabels(axis); + }); + + // with all dimensions calculated, we can compute the + // axis bounding boxes, start from the outside + // (reverse order) + for (i = allocatedAxes.length - 1; i >= 0; --i) + allocateAxisBoxFirstPhase(allocatedAxes[i]); + + // make sure we've got enough space for things that + // might stick out + adjustLayoutForThingsStickingOut(); + + $.each(allocatedAxes, function (_, axis) { + allocateAxisBoxSecondPhase(axis); + }); + } + + plotWidth = surface.width - plotOffset.left - plotOffset.right; + plotHeight = surface.height - plotOffset.bottom - plotOffset.top; + + // now we got the proper plot dimensions, we can compute the scaling + $.each(axes, function (_, axis) { + setTransformationHelpers(axis); + }); + + if (showGrid) { + drawAxisLabels(); + } + + insertLegend(); + } + + function setRange(axis) { + var opts = axis.options, + min = +(opts.min != null ? opts.min : axis.datamin), + max = +(opts.max != null ? opts.max : axis.datamax), + delta = max - min; + + if (delta == 0.0) { + // degenerate case + var widen = max == 0 ? 1 : 0.01; + + if (opts.min == null) + min -= widen; + // always widen max if we couldn't widen min to ensure we + // don't fall into min == max which doesn't work + if (opts.max == null || opts.min != null) + max += widen; + } + else { + // consider autoscaling + var margin = opts.autoscaleMargin; + if (margin != null) { + if (opts.min == null) { + min -= delta * margin; + // make sure we don't go below zero if all values + // are positive + if (min < 0 && axis.datamin != null && axis.datamin >= 0) + min = 0; + } + if (opts.max == null) { + max += delta * margin; + if (max > 0 && axis.datamax != null && axis.datamax <= 0) + max = 0; + } + } + } + axis.min = min; + axis.max = max; + } + + function setupTickGeneration(axis) { + var opts = axis.options; + + // estimate number of ticks + var noTicks; + if (typeof opts.ticks == "number" && opts.ticks > 0) + noTicks = opts.ticks; + else + // heuristic based on the model a*sqrt(x) fitted to + // some data points that seemed reasonable + noTicks = 0.3 * Math.sqrt(axis.direction == "x" ? surface.width : surface.height); + + var delta = (axis.max - axis.min) / noTicks, + dec = -Math.floor(Math.log(delta) / Math.LN10), + maxDec = opts.tickDecimals; + + if (maxDec != null && dec > maxDec) { + dec = maxDec; + } + + var magn = Math.pow(10, -dec), + norm = delta / magn, // norm is between 1.0 and 10.0 + size; + + if (norm < 1.5) { + size = 1; + } else if (norm < 3) { + size = 2; + // special case for 2.5, requires an extra decimal + if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) { + size = 2.5; + ++dec; + } + } else if (norm < 7.5) { + size = 5; + } else { + size = 10; + } + + size *= magn; + + if (opts.minTickSize != null && size < opts.minTickSize) { + size = opts.minTickSize; + } + + axis.delta = delta; + axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec); + axis.tickSize = opts.tickSize || size; + + // Time mode was moved to a plug-in in 0.8, and since so many people use it + // we'll add an especially friendly reminder to make sure they included it. + + if (opts.mode == "time" && !axis.tickGenerator) { + throw new Error("Time mode requires the flot.time plugin."); + } + + // Flot supports base-10 axes; any other mode else is handled by a plug-in, + // like flot.time.js. + + if (!axis.tickGenerator) { + + axis.tickGenerator = function (axis) { + + var ticks = [], + start = floorInBase(axis.min, axis.tickSize), + i = 0, + v = Number.NaN, + prev; + + do { + prev = v; + v = start + i * axis.tickSize; + ticks.push(v); + ++i; + } while (v < axis.max && v != prev); + return ticks; + }; + + axis.tickFormatter = function (value, axis) { + + var factor = axis.tickDecimals ? Math.pow(10, axis.tickDecimals) : 1; + var formatted = "" + Math.round(value * factor) / factor; + + // If tickDecimals was specified, ensure that we have exactly that + // much precision; otherwise default to the value's own precision. + + if (axis.tickDecimals != null) { + var decimal = formatted.indexOf("."); + var precision = decimal == -1 ? 0 : formatted.length - decimal - 1; + if (precision < axis.tickDecimals) { + return (precision ? formatted : formatted + ".") + ("" + factor).substr(1, axis.tickDecimals - precision); + } + } + + return formatted; + }; + } + + if ($.isFunction(opts.tickFormatter)) + axis.tickFormatter = function (v, axis) { return "" + opts.tickFormatter(v, axis); }; + + if (opts.alignTicksWithAxis != null) { + var otherAxis = (axis.direction == "x" ? xaxes : yaxes)[opts.alignTicksWithAxis - 1]; + if (otherAxis && otherAxis.used && otherAxis != axis) { + // consider snapping min/max to outermost nice ticks + var niceTicks = axis.tickGenerator(axis); + if (niceTicks.length > 0) { + if (opts.min == null) + axis.min = Math.min(axis.min, niceTicks[0]); + if (opts.max == null && niceTicks.length > 1) + axis.max = Math.max(axis.max, niceTicks[niceTicks.length - 1]); + } + + axis.tickGenerator = function (axis) { + // copy ticks, scaled to this axis + var ticks = [], v, i; + for (i = 0; i < otherAxis.ticks.length; ++i) { + v = (otherAxis.ticks[i].v - otherAxis.min) / (otherAxis.max - otherAxis.min); + v = axis.min + v * (axis.max - axis.min); + ticks.push(v); + } + return ticks; + }; + + // we might need an extra decimal since forced + // ticks don't necessarily fit naturally + if (!axis.mode && opts.tickDecimals == null) { + var extraDec = Math.max(0, -Math.floor(Math.log(axis.delta) / Math.LN10) + 1), + ts = axis.tickGenerator(axis); + + // only proceed if the tick interval rounded + // with an extra decimal doesn't give us a + // zero at end + if (!(ts.length > 1 && /\..*0$/.test((ts[1] - ts[0]).toFixed(extraDec)))) + axis.tickDecimals = extraDec; + } + } + } + } + + function setTicks(axis) { + var oticks = axis.options.ticks, ticks = []; + if (oticks == null || (typeof oticks == "number" && oticks > 0)) + ticks = axis.tickGenerator(axis); + else if (oticks) { + if ($.isFunction(oticks)) + // generate the ticks + ticks = oticks(axis); + else + ticks = oticks; + } + + // clean up/labelify the supplied ticks, copy them over + var i, v; + axis.ticks = []; + for (i = 0; i < ticks.length; ++i) { + var label = null; + var t = ticks[i]; + if (typeof t == "object") { + v = +t[0]; + if (t.length > 1) + label = t[1]; + } + else + v = +t; + if (label == null) + label = axis.tickFormatter(v, axis); + if (!isNaN(v)) + axis.ticks.push({ v: v, label: label }); + } + } + + function snapRangeToTicks(axis, ticks) { + if (axis.options.autoscaleMargin && ticks.length > 0) { + // snap to ticks + if (axis.options.min == null) + axis.min = Math.min(axis.min, ticks[0].v); + if (axis.options.max == null && ticks.length > 1) + axis.max = Math.max(axis.max, ticks[ticks.length - 1].v); + } + } + + function draw() { + + surface.clear(); + + executeHooks(hooks.drawBackground, [ctx]); + + var grid = options.grid; + + // draw background, if any + if (grid.show && grid.backgroundColor) + drawBackground(); + + if (grid.show && !grid.aboveData) { + drawGrid(); + } + + for (var i = 0; i < series.length; ++i) { + executeHooks(hooks.drawSeries, [ctx, series[i]]); + drawSeries(series[i]); + } + + executeHooks(hooks.draw, [ctx]); + + if (grid.show && grid.aboveData) { + drawGrid(); + } + + surface.render(); + + // A draw implies that either the axes or data have changed, so we + // should probably update the overlay highlights as well. + + triggerRedrawOverlay(); + } + + function extractRange(ranges, coord) { + var axis, from, to, key, axes = allAxes(); + + for (var i = 0; i < axes.length; ++i) { + axis = axes[i]; + if (axis.direction == coord) { + key = coord + axis.n + "axis"; + if (!ranges[key] && axis.n == 1) + key = coord + "axis"; // support x1axis as xaxis + if (ranges[key]) { + from = ranges[key].from; + to = ranges[key].to; + break; + } + } + } + + // backwards-compat stuff - to be removed in future + if (!ranges[key]) { + axis = coord == "x" ? xaxes[0] : yaxes[0]; + from = ranges[coord + "1"]; + to = ranges[coord + "2"]; + } + + // auto-reverse as an added bonus + if (from != null && to != null && from > to) { + var tmp = from; + from = to; + to = tmp; + } + + return { from: from, to: to, axis: axis }; + } + + function drawBackground() { + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, "rgba(255, 255, 255, 0)"); + ctx.fillRect(0, 0, plotWidth, plotHeight); + ctx.restore(); + } + + function drawGrid() { + var i, axes, bw, bc; + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + // draw markings + var markings = options.grid.markings; + if (markings) { + if ($.isFunction(markings)) { + axes = plot.getAxes(); + // xmin etc. is backwards compatibility, to be + // removed in the future + axes.xmin = axes.xaxis.min; + axes.xmax = axes.xaxis.max; + axes.ymin = axes.yaxis.min; + axes.ymax = axes.yaxis.max; + + markings = markings(axes); + } + + for (i = 0; i < markings.length; ++i) { + var m = markings[i], + xrange = extractRange(m, "x"), + yrange = extractRange(m, "y"); + + // fill in missing + if (xrange.from == null) + xrange.from = xrange.axis.min; + if (xrange.to == null) + xrange.to = xrange.axis.max; + if (yrange.from == null) + yrange.from = yrange.axis.min; + if (yrange.to == null) + yrange.to = yrange.axis.max; + + // clip + if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max || + yrange.to < yrange.axis.min || yrange.from > yrange.axis.max) + continue; + + xrange.from = Math.max(xrange.from, xrange.axis.min); + xrange.to = Math.min(xrange.to, xrange.axis.max); + yrange.from = Math.max(yrange.from, yrange.axis.min); + yrange.to = Math.min(yrange.to, yrange.axis.max); + + var xequal = xrange.from === xrange.to, + yequal = yrange.from === yrange.to; + + if (xequal && yequal) { + continue; + } + + // then draw + xrange.from = Math.floor(xrange.axis.p2c(xrange.from)); + xrange.to = Math.floor(xrange.axis.p2c(xrange.to)); + yrange.from = Math.floor(yrange.axis.p2c(yrange.from)); + yrange.to = Math.floor(yrange.axis.p2c(yrange.to)); + + if (xequal || yequal) { + var lineWidth = m.lineWidth || options.grid.markingsLineWidth, + subPixel = lineWidth % 2 ? 0.5 : 0; + ctx.beginPath(); + ctx.strokeStyle = m.color || options.grid.markingsColor; + ctx.lineWidth = lineWidth; + if (xequal) { + ctx.moveTo(xrange.to + subPixel, yrange.from); + ctx.lineTo(xrange.to + subPixel, yrange.to); + } else { + ctx.moveTo(xrange.from, yrange.to + subPixel); + ctx.lineTo(xrange.to, yrange.to + subPixel); + } + ctx.stroke(); + } else { + ctx.fillStyle = m.color || options.grid.markingsColor; + ctx.fillRect(xrange.from, yrange.to, + xrange.to - xrange.from, + yrange.from - yrange.to); + } + } + } + + // draw the ticks + axes = allAxes(); + bw = options.grid.borderWidth; + + for (var j = 0; j < axes.length; ++j) { + var axis = axes[j], box = axis.box, + t = axis.tickLength, x, y, xoff, yoff; + if (!axis.show || axis.ticks.length == 0) + continue; + + ctx.lineWidth = 1; + + // find the edges + if (axis.direction == "x") { + x = 0; + if (t == "full") + y = (axis.position == "top" ? 0 : plotHeight); + else + y = box.top - plotOffset.top + (axis.position == "top" ? box.height : 0); + } + else { + y = 0; + if (t == "full") + x = (axis.position == "left" ? 0 : plotWidth); + else + x = box.left - plotOffset.left + (axis.position == "left" ? box.width : 0); + } + + // draw tick bar + if (!axis.innermost) { + ctx.strokeStyle = axis.options.color; + ctx.beginPath(); + xoff = yoff = 0; + if (axis.direction == "x") + xoff = plotWidth + 1; + else + yoff = plotHeight + 1; + + if (ctx.lineWidth == 1) { + if (axis.direction == "x") { + y = Math.floor(y) + 0.5; + } else { + x = Math.floor(x) + 0.5; + } + } + + ctx.moveTo(x, y); + ctx.lineTo(x + xoff, y + yoff); + ctx.stroke(); + } + + // draw ticks + + ctx.strokeStyle = axis.options.tickColor; + + ctx.beginPath(); + for (i = 0; i < axis.ticks.length; ++i) { + var v = axis.ticks[i].v; + + xoff = yoff = 0; + + if (isNaN(v) || v < axis.min || v > axis.max + // skip those lying on the axes if we got a border + || (t == "full" + && ((typeof bw == "object" && bw[axis.position] > 0) || bw > 0) + && (v == axis.min || v == axis.max))) + continue; + + if (axis.direction == "x") { + x = axis.p2c(v); + yoff = t == "full" ? -plotHeight : t; + + if (axis.position == "top") + yoff = -yoff; + } + else { + y = axis.p2c(v); + xoff = t == "full" ? -plotWidth : t; + + if (axis.position == "left") + xoff = -xoff; + } + + if (ctx.lineWidth == 1) { + if (axis.direction == "x") + x = Math.floor(x) + 0.5; + else + y = Math.floor(y) + 0.5; + } + + ctx.moveTo(x, y); + ctx.lineTo(x + xoff, y + yoff); + } + + ctx.stroke(); + } + + + // draw border + if (bw) { + // If either borderWidth or borderColor is an object, then draw the border + // line by line instead of as one rectangle + bc = options.grid.borderColor; + if(typeof bw == "object" || typeof bc == "object") { + if (typeof bw !== "object") { + bw = {top: bw, right: bw, bottom: bw, left: bw}; + } + if (typeof bc !== "object") { + bc = {top: bc, right: bc, bottom: bc, left: bc}; + } + + if (bw.top > 0) { + ctx.strokeStyle = bc.top; + ctx.lineWidth = bw.top; + ctx.beginPath(); + ctx.moveTo(0 - bw.left, 0 - bw.top/2); + ctx.lineTo(plotWidth, 0 - bw.top/2); + ctx.stroke(); + } + + if (bw.right > 0) { + ctx.strokeStyle = bc.right; + ctx.lineWidth = bw.right; + ctx.beginPath(); + ctx.moveTo(plotWidth + bw.right / 2, 0 - bw.top); + ctx.lineTo(plotWidth + bw.right / 2, plotHeight); + ctx.stroke(); + } + + if (bw.bottom > 0) { + ctx.strokeStyle = bc.bottom; + ctx.lineWidth = bw.bottom; + ctx.beginPath(); + ctx.moveTo(plotWidth + bw.right, plotHeight + bw.bottom / 2); + ctx.lineTo(0, plotHeight + bw.bottom / 2); + ctx.stroke(); + } + + if (bw.left > 0) { + ctx.strokeStyle = bc.left; + ctx.lineWidth = bw.left; + ctx.beginPath(); + ctx.moveTo(0 - bw.left/2, plotHeight + bw.bottom); + ctx.lineTo(0- bw.left/2, 0); + ctx.stroke(); + } + } + else { + ctx.lineWidth = bw; + ctx.strokeStyle = options.grid.borderColor; + ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw); + } + } + + ctx.restore(); + } + + function drawAxisLabels() { + + $.each(allAxes(), function (_, axis) { + var box = axis.box, + legacyStyles = axis.direction + "Axis " + axis.direction + axis.n + "Axis", + layer = "flot-" + axis.direction + "-axis flot-" + axis.direction + axis.n + "-axis " + legacyStyles, + font = axis.options.font || "flot-tick-label tickLabel", + tick, x, y, halign, valign; + + // Remove text before checking for axis.show and ticks.length; + // otherwise plugins, like flot-tickrotor, that draw their own + // tick labels will end up with both theirs and the defaults. + + surface.removeText(layer); + + if (!axis.show || axis.ticks.length == 0) + return; + + for (var i = 0; i < axis.ticks.length; ++i) { + + tick = axis.ticks[i]; + if (!tick.label || tick.v < axis.min || tick.v > axis.max) + continue; + + if (axis.direction == "x") { + halign = "center"; + x = plotOffset.left + axis.p2c(tick.v); + if (axis.position == "bottom") { + y = box.top + box.padding; + } else { + y = box.top + box.height - box.padding; + valign = "bottom"; + } + } else { + valign = "middle"; + y = plotOffset.top + axis.p2c(tick.v); + if (axis.position == "left") { + x = box.left + box.width - box.padding; + halign = "right"; + } else { + x = box.left + box.padding; + } + } + + surface.addText(layer, x, y, tick.label, font, null, null, halign, valign); + } + }); + } + + function drawSeries(series) { + if (series.lines.show) + drawSeriesLines(series); + if (series.bars.show) + drawSeriesBars(series); + if (series.points.show) + drawSeriesPoints(series); + } + + function drawSeriesLines(series) { + function plotLine(datapoints, xoffset, yoffset, axisx, axisy) { + var points = datapoints.points, + ps = datapoints.pointsize, + prevx = null, prevy = null; + + ctx.beginPath(); + for (var i = ps; i < points.length; i += ps) { + var x1 = points[i - ps], y1 = points[i - ps + 1], + x2 = points[i], y2 = points[i + 1]; + + if (x1 == null || x2 == null) + continue; + + // clip with ymin + if (y1 <= y2 && y1 < axisy.min) { + if (y2 < axisy.min) + continue; // line segment is outside + // compute new intersection point + x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.min; + } + else if (y2 <= y1 && y2 < axisy.min) { + if (y1 < axisy.min) + continue; + x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.min; + } + + // clip with ymax + if (y1 >= y2 && y1 > axisy.max) { + if (y2 > axisy.max) + continue; + x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.max; + } + else if (y2 >= y1 && y2 > axisy.max) { + if (y1 > axisy.max) + continue; + x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.max; + } + + // clip with xmin + if (x1 <= x2 && x1 < axisx.min) { + if (x2 < axisx.min) + continue; + y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.min; + } + else if (x2 <= x1 && x2 < axisx.min) { + if (x1 < axisx.min) + continue; + y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.min; + } + + // clip with xmax + if (x1 >= x2 && x1 > axisx.max) { + if (x2 > axisx.max) + continue; + y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.max; + } + else if (x2 >= x1 && x2 > axisx.max) { + if (x1 > axisx.max) + continue; + y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.max; + } + + if (x1 != prevx || y1 != prevy) + ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset); + + prevx = x2; + prevy = y2; + ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset); + } + ctx.stroke(); + } + + function plotLineArea(datapoints, axisx, axisy) { + var points = datapoints.points, + ps = datapoints.pointsize, + bottom = Math.min(Math.max(0, axisy.min), axisy.max), + i = 0, top, areaOpen = false, + ypos = 1, segmentStart = 0, segmentEnd = 0; + + // we process each segment in two turns, first forward + // direction to sketch out top, then once we hit the + // end we go backwards to sketch the bottom + while (true) { + if (ps > 0 && i > points.length + ps) + break; + + i += ps; // ps is negative if going backwards + + var x1 = points[i - ps], + y1 = points[i - ps + ypos], + x2 = points[i], y2 = points[i + ypos]; + + if (areaOpen) { + if (ps > 0 && x1 != null && x2 == null) { + // at turning point + segmentEnd = i; + ps = -ps; + ypos = 2; + continue; + } + + if (ps < 0 && i == segmentStart + ps) { + // done with the reverse sweep + ctx.fill(); + areaOpen = false; + ps = -ps; + ypos = 1; + i = segmentStart = segmentEnd + ps; + continue; + } + } + + if (x1 == null || x2 == null) + continue; + + // clip x values + + // clip with xmin + if (x1 <= x2 && x1 < axisx.min) { + if (x2 < axisx.min) + continue; + y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.min; + } + else if (x2 <= x1 && x2 < axisx.min) { + if (x1 < axisx.min) + continue; + y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.min; + } + + // clip with xmax + if (x1 >= x2 && x1 > axisx.max) { + if (x2 > axisx.max) + continue; + y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.max; + } + else if (x2 >= x1 && x2 > axisx.max) { + if (x1 > axisx.max) + continue; + y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.max; + } + + if (!areaOpen) { + // open area + ctx.beginPath(); + ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom)); + areaOpen = true; + } + + // now first check the case where both is outside + if (y1 >= axisy.max && y2 >= axisy.max) { + ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max)); + continue; + } + else if (y1 <= axisy.min && y2 <= axisy.min) { + ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min)); + continue; + } + + // else it's a bit more complicated, there might + // be a flat maxed out rectangle first, then a + // triangular cutout or reverse; to find these + // keep track of the current x values + var x1old = x1, x2old = x2; + + // clip the y values, without shortcutting, we + // go through all cases in turn + + // clip with ymin + if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) { + x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.min; + } + else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) { + x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.min; + } + + // clip with ymax + if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) { + x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.max; + } + else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) { + x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.max; + } + + // if the x value was changed we got a rectangle + // to fill + if (x1 != x1old) { + ctx.lineTo(axisx.p2c(x1old), axisy.p2c(y1)); + // it goes to (x1, y1), but we fill that below + } + + // fill triangular section, this sometimes result + // in redundant points if (x1, y1) hasn't changed + // from previous line to, but we just ignore that + ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); + + // fill the other rectangle if it's there + if (x2 != x2old) { + ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); + ctx.lineTo(axisx.p2c(x2old), axisy.p2c(y2)); + } + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + ctx.lineJoin = "round"; + + var lw = series.lines.lineWidth, + sw = series.shadowSize; + // FIXME: consider another form of shadow when filling is turned on + if (lw > 0 && sw > 0) { + // draw shadow as a thick and thin line with transparency + ctx.lineWidth = sw; + ctx.strokeStyle = "rgba(0,0,0,0.1)"; + // position shadow at angle from the mid of line + var angle = Math.PI/18; + plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis); + ctx.lineWidth = sw/2; + plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis); + } + + ctx.lineWidth = lw; + ctx.strokeStyle = series.color; + var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight); + if (fillStyle) { + ctx.fillStyle = fillStyle; + plotLineArea(series.datapoints, series.xaxis, series.yaxis); + } + + if (lw > 0) + plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis); + ctx.restore(); + } + + function drawSeriesPoints(series) { + function plotPoints(datapoints, radius, fillStyle, offset, shadow, axisx, axisy, symbol) { + var points = datapoints.points, ps = datapoints.pointsize; + + for (var i = 0; i < points.length; i += ps) { + var x = points[i], y = points[i + 1]; + if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) + continue; + + ctx.beginPath(); + x = axisx.p2c(x); + y = axisy.p2c(y) + offset; + if (symbol == "circle") + ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false); + else + symbol(ctx, x, y, radius, shadow); + ctx.closePath(); + + if (fillStyle) { + ctx.fillStyle = fillStyle; + ctx.fill(); + } + ctx.stroke(); + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + var lw = series.points.lineWidth, + sw = series.shadowSize, + radius = series.points.radius, + symbol = series.points.symbol; + + // If the user sets the line width to 0, we change it to a very + // small value. A line width of 0 seems to force the default of 1. + // Doing the conditional here allows the shadow setting to still be + // optional even with a lineWidth of 0. + + if( lw == 0 ) + lw = 0.0001; + + if (lw > 0 && sw > 0) { + // draw shadow in two steps + var w = sw / 2; + ctx.lineWidth = w; + ctx.strokeStyle = "rgba(0,0,0,0.1)"; + plotPoints(series.datapoints, radius, null, w + w/2, true, + series.xaxis, series.yaxis, symbol); + + ctx.strokeStyle = "rgba(0,0,0,0.2)"; + plotPoints(series.datapoints, radius, null, w/2, true, + series.xaxis, series.yaxis, symbol); + } + + ctx.lineWidth = lw; + ctx.strokeStyle = series.color; + plotPoints(series.datapoints, radius, + getFillStyle(series.points, series.color), 0, false, + series.xaxis, series.yaxis, symbol); + ctx.restore(); + } + + function drawBar(x, y, b, barLeft, barRight, fillStyleCallback, axisx, axisy, c, horizontal, lineWidth) { + var left, right, bottom, top, + drawLeft, drawRight, drawTop, drawBottom, + tmp; + + // in horizontal mode, we start the bar from the left + // instead of from the bottom so it appears to be + // horizontal rather than vertical + if (horizontal) { + drawBottom = drawRight = drawTop = true; + drawLeft = false; + left = b; + right = x; + top = y + barLeft; + bottom = y + barRight; + + // account for negative bars + if (right < left) { + tmp = right; + right = left; + left = tmp; + drawLeft = true; + drawRight = false; + } + } + else { + drawLeft = drawRight = drawTop = true; + drawBottom = false; + left = x + barLeft; + right = x + barRight; + bottom = b; + top = y; + + // account for negative bars + if (top < bottom) { + tmp = top; + top = bottom; + bottom = tmp; + drawBottom = true; + drawTop = false; + } + } + + // clip + if (right < axisx.min || left > axisx.max || + top < axisy.min || bottom > axisy.max) + return; + + if (left < axisx.min) { + left = axisx.min; + drawLeft = false; + } + + if (right > axisx.max) { + right = axisx.max; + drawRight = false; + } + + if (bottom < axisy.min) { + bottom = axisy.min; + drawBottom = false; + } + + if (top > axisy.max) { + top = axisy.max; + drawTop = false; + } + + left = axisx.p2c(left); + bottom = axisy.p2c(bottom); + right = axisx.p2c(right); + top = axisy.p2c(top); + + // fill the bar + if (fillStyleCallback) { + c.fillStyle = fillStyleCallback(bottom, top); + c.fillRect(left, top, right - left, bottom - top) + } + + // draw outline + if (lineWidth > 0 && (drawLeft || drawRight || drawTop || drawBottom)) { + c.beginPath(); + + // FIXME: inline moveTo is buggy with excanvas + c.moveTo(left, bottom); + if (drawLeft) + c.lineTo(left, top); + else + c.moveTo(left, top); + if (drawTop) + c.lineTo(right, top); + else + c.moveTo(right, top); + if (drawRight) + c.lineTo(right, bottom); + else + c.moveTo(right, bottom); + if (drawBottom) + c.lineTo(left, bottom); + else + c.moveTo(left, bottom); + c.stroke(); + } + } + + function drawSeriesBars(series) { + function plotBars(datapoints, barLeft, barRight, fillStyleCallback, axisx, axisy) { + var points = datapoints.points, ps = datapoints.pointsize; + + for (var i = 0; i < points.length; i += ps) { + if (points[i] == null) + continue; + drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal, series.bars.lineWidth); + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + // FIXME: figure out a way to add shadows (for instance along the right edge) + ctx.lineWidth = series.bars.lineWidth; + ctx.strokeStyle = series.color; + + var barLeft; + + switch (series.bars.align) { + case "left": + barLeft = 0; + break; + case "right": + barLeft = -series.bars.barWidth; + break; + default: + barLeft = -series.bars.barWidth / 2; + } + + var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null; + plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, fillStyleCallback, series.xaxis, series.yaxis); + ctx.restore(); + } + + function getFillStyle(filloptions, seriesColor, bottom, top) { + var fill = filloptions.fill; + if (!fill) + return null; + + if (filloptions.fillColor) + return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor); + + var c = $.color.parse(seriesColor); + c.a = typeof fill == "number" ? fill : 0.4; + c.normalize(); + return c.toString(); + } + + function insertLegend() { + + if (options.legend.container != null) { + $(options.legend.container).html(""); + } else { + placeholder.find(".legend").remove(); + } + + if (!options.legend.show) { + return; + } + + var fragments = [], entries = [], rowStarted = false, + lf = options.legend.labelFormatter, s, label; + + // Build a list of legend entries, with each having a label and a color + + for (var i = 0; i < series.length; ++i) { + s = series[i]; + if (s.label) { + label = lf ? lf(s.label, s) : s.label; + if (label) { + entries.push({ + label: label, + color: s.color + }); + } + } + } + + // Sort the legend using either the default or a custom comparator + + if (options.legend.sorted) { + if ($.isFunction(options.legend.sorted)) { + entries.sort(options.legend.sorted); + } else if (options.legend.sorted == "reverse") { + entries.reverse(); + } else { + var ascending = options.legend.sorted != "descending"; + entries.sort(function(a, b) { + return a.label == b.label ? 0 : ( + (a.label < b.label) != ascending ? 1 : -1 // Logical XOR + ); + }); + } + } + + // Generate markup for the list of entries, in their final order + + for (var i = 0; i < entries.length; ++i) { + + var entry = entries[i]; + + if (i % options.legend.noColumns == 0) { + if (rowStarted) + fragments.push(''); + fragments.push(''); + rowStarted = true; + } + + fragments.push( + '
    ' + + '' + entry.label + '' + ); + } + + if (rowStarted) + fragments.push(''); + + if (fragments.length == 0) + return; + + var table = '' + fragments.join("") + '
    '; + if (options.legend.container != null) + $(options.legend.container).html(table); + else { + var pos = "", + p = options.legend.position, + m = options.legend.margin; + if (m[0] == null) + m = [m, m]; + if (p.charAt(0) == "n") + pos += 'top:' + (m[1] + plotOffset.top) + 'px;'; + else if (p.charAt(0) == "s") + pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;'; + if (p.charAt(1) == "e") + pos += 'right:' + (m[0] + plotOffset.right) + 'px;'; + else if (p.charAt(1) == "w") + pos += 'left:' + (m[0] + plotOffset.left) + 'px;'; + var legend = $('
    ' + table.replace('style="', 'style="position:absolute;' + pos +';') + '
    ').appendTo(placeholder); + if (options.legend.backgroundOpacity != 0.0) { + // put in the transparent background + // separately to avoid blended labels and + // label boxes + var c = options.legend.backgroundColor; + if (c == null) { + c = options.grid.backgroundColor; + if (c && typeof c == "string") + c = $.color.parse(c); + else + c = $.color.extract(legend, 'background-color'); + c.a = 1; + c = c.toString(); + } + var div = legend.children(); + $('
    ').prependTo(legend).css('opacity', options.legend.backgroundOpacity); + } + } + } + + + // interactive features + + var highlights = [], + redrawTimeout = null; + + // returns the data item the mouse is over, or null if none is found + function findNearbyItem(mouseX, mouseY, seriesFilter) { + var maxDistance = options.grid.mouseActiveRadius, + smallestDistance = maxDistance * maxDistance + 1, + item = null, foundPoint = false, i, j, ps; + + for (i = series.length - 1; i >= 0; --i) { + if (!seriesFilter(series[i])) + continue; + + var s = series[i], + axisx = s.xaxis, + axisy = s.yaxis, + points = s.datapoints.points, + mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster + my = axisy.c2p(mouseY), + maxx = maxDistance / axisx.scale, + maxy = maxDistance / axisy.scale; + + ps = s.datapoints.pointsize; + // with inverse transforms, we can't use the maxx/maxy + // optimization, sadly + if (axisx.options.inverseTransform) + maxx = Number.MAX_VALUE; + if (axisy.options.inverseTransform) + maxy = Number.MAX_VALUE; + + if (s.lines.show || s.points.show) { + for (j = 0; j < points.length; j += ps) { + var x = points[j], y = points[j + 1]; + if (x == null) + continue; + + // For points and lines, the cursor must be within a + // certain distance to the data point + if (x - mx > maxx || x - mx < -maxx || + y - my > maxy || y - my < -maxy) + continue; + + // We have to calculate distances in pixels, not in + // data units, because the scales of the axes may be different + var dx = Math.abs(axisx.p2c(x) - mouseX), + dy = Math.abs(axisy.p2c(y) - mouseY), + dist = dx * dx + dy * dy; // we save the sqrt + + // use <= to ensure last point takes precedence + // (last generally means on top of) + if (dist < smallestDistance) { + smallestDistance = dist; + item = [i, j / ps]; + } + } + } + + if (s.bars.show && !item) { // no other point can be nearby + + var barLeft, barRight; + + switch (s.bars.align) { + case "left": + barLeft = 0; + break; + case "right": + barLeft = -s.bars.barWidth; + break; + default: + barLeft = -s.bars.barWidth / 2; + } + + barRight = barLeft + s.bars.barWidth; + + for (j = 0; j < points.length; j += ps) { + var x = points[j], y = points[j + 1], b = points[j + 2]; + if (x == null) + continue; + + // for a bar graph, the cursor must be inside the bar + if (series[i].bars.horizontal ? + (mx <= Math.max(b, x) && mx >= Math.min(b, x) && + my >= y + barLeft && my <= y + barRight) : + (mx >= x + barLeft && mx <= x + barRight && + my >= Math.min(b, y) && my <= Math.max(b, y))) + item = [i, j / ps]; + } + } + } + + if (item) { + i = item[0]; + j = item[1]; + ps = series[i].datapoints.pointsize; + + return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps), + dataIndex: j, + series: series[i], + seriesIndex: i }; + } + + return null; + } + + function onMouseMove(e) { + if (options.grid.hoverable) + triggerClickHoverEvent("plothover", e, + function (s) { return s["hoverable"] != false; }); + } + + function onMouseLeave(e) { + if (options.grid.hoverable) + triggerClickHoverEvent("plothover", e, + function (s) { return false; }); + } + + function onClick(e) { + triggerClickHoverEvent("plotclick", e, + function (s) { return s["clickable"] != false; }); + } + + // trigger click or hover event (they send the same parameters + // so we share their code) + function triggerClickHoverEvent(eventname, event, seriesFilter) { + var offset = eventHolder.offset(), + canvasX = event.pageX - offset.left - plotOffset.left, + canvasY = event.pageY - offset.top - plotOffset.top, + pos = canvasToAxisCoords({ left: canvasX, top: canvasY }); + + pos.pageX = event.pageX; + pos.pageY = event.pageY; + + var item = findNearbyItem(canvasX, canvasY, seriesFilter); + + if (item) { + // fill in mouse pos for any listeners out there + item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left, 10); + item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top, 10); + } + + if (options.grid.autoHighlight) { + // clear auto-highlights + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.auto == eventname && + !(item && h.series == item.series && + h.point[0] == item.datapoint[0] && + h.point[1] == item.datapoint[1])) + unhighlight(h.series, h.point); + } + + if (item) + highlight(item.series, item.datapoint, eventname); + } + + placeholder.trigger(eventname, [ pos, item ]); + } + + function triggerRedrawOverlay() { + var t = options.interaction.redrawOverlayInterval; + if (t == -1) { // skip event queue + drawOverlay(); + return; + } + + if (!redrawTimeout) + redrawTimeout = setTimeout(drawOverlay, t); + } + + function drawOverlay() { + redrawTimeout = null; + + // draw highlights + octx.save(); + overlay.clear(); + octx.translate(plotOffset.left, plotOffset.top); + + var i, hi; + for (i = 0; i < highlights.length; ++i) { + hi = highlights[i]; + + if (hi.series.bars.show) + drawBarHighlight(hi.series, hi.point); + else + drawPointHighlight(hi.series, hi.point); + } + octx.restore(); + + executeHooks(hooks.drawOverlay, [octx]); + } + + function highlight(s, point, auto) { + if (typeof s == "number") + s = series[s]; + + if (typeof point == "number") { + var ps = s.datapoints.pointsize; + point = s.datapoints.points.slice(ps * point, ps * (point + 1)); + } + + var i = indexOfHighlight(s, point); + if (i == -1) { + highlights.push({ series: s, point: point, auto: auto }); + + triggerRedrawOverlay(); + } + else if (!auto) + highlights[i].auto = false; + } + + function unhighlight(s, point) { + if (s == null && point == null) { + highlights = []; + triggerRedrawOverlay(); + return; + } + + if (typeof s == "number") + s = series[s]; + + if (typeof point == "number") { + var ps = s.datapoints.pointsize; + point = s.datapoints.points.slice(ps * point, ps * (point + 1)); + } + + var i = indexOfHighlight(s, point); + if (i != -1) { + highlights.splice(i, 1); + + triggerRedrawOverlay(); + } + } + + function indexOfHighlight(s, p) { + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.series == s && h.point[0] == p[0] + && h.point[1] == p[1]) + return i; + } + return -1; + } + + function drawPointHighlight(series, point) { + var x = point[0], y = point[1], + axisx = series.xaxis, axisy = series.yaxis, + highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(); + + if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) + return; + + var pointRadius = series.points.radius + series.points.lineWidth / 2; + octx.lineWidth = pointRadius; + octx.strokeStyle = highlightColor; + var radius = 1.5 * pointRadius; + x = axisx.p2c(x); + y = axisy.p2c(y); + + octx.beginPath(); + if (series.points.symbol == "circle") + octx.arc(x, y, radius, 0, 2 * Math.PI, false); + else + series.points.symbol(octx, x, y, radius, false); + octx.closePath(); + octx.stroke(); + } + + function drawBarHighlight(series, point) { + var highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(), + fillStyle = highlightColor, + barLeft; + + switch (series.bars.align) { + case "left": + barLeft = 0; + break; + case "right": + barLeft = -series.bars.barWidth; + break; + default: + barLeft = -series.bars.barWidth / 2; + } + + octx.lineWidth = series.bars.lineWidth; + octx.strokeStyle = highlightColor; + + drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth, + function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth); + } + + function getColorOrGradient(spec, bottom, top, defaultColor) { + if (typeof spec == "string") + return spec; + else { + // assume this is a gradient spec; IE currently only + // supports a simple vertical gradient properly, so that's + // what we support too + var gradient = ctx.createLinearGradient(0, top, 0, bottom); + + for (var i = 0, l = spec.colors.length; i < l; ++i) { + var c = spec.colors[i]; + if (typeof c != "string") { + var co = $.color.parse(defaultColor); + if (c.brightness != null) + co = co.scale('rgb', c.brightness); + if (c.opacity != null) + co.a *= c.opacity; + c = co.toString(); + } + gradient.addColorStop(i / (l - 1), c); + } + + return gradient; + } + } + } + + // Add the plot function to the top level of the jQuery object + + $.plot = function(placeholder, data, options) { + //var t0 = new Date(); + var plot = new Plot($(placeholder), data, options, $.plot.plugins); + //(window.console ? console.log : alert)("time used (msecs): " + ((new Date()).getTime() - t0.getTime())); + return plot; + }; + + $.plot.version = "0.8.3"; + + $.plot.plugins = []; + + // Also add the plot function as a chainable property + + $.fn.plot = function(data, options) { + return this.each(function() { + $.plot(this, data, options); + }); + }; + + // round to nearby lower multiple of base + function floorInBase(n, base) { + return base * Math.floor(n / base); + } + +})(jQuery); diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.navigate.js b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.navigate.js new file mode 100644 index 0000000..b8bfdd5 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.navigate.js @@ -0,0 +1,346 @@ +/* Flot plugin for adding the ability to pan and zoom the plot. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +The default behaviour is double click and scrollwheel up/down to zoom in, drag +to pan. The plugin defines plot.zoom({ center }), plot.zoomOut() and +plot.pan( offset ) so you easily can add custom controls. It also fires +"plotpan" and "plotzoom" events, useful for synchronizing plots. + +The plugin supports these options: + + zoom: { + interactive: false + trigger: "dblclick" // or "click" for single click + amount: 1.5 // 2 = 200% (zoom in), 0.5 = 50% (zoom out) + } + + pan: { + interactive: false + cursor: "move" // CSS mouse cursor value used when dragging, e.g. "pointer" + frameRate: 20 + } + + xaxis, yaxis, x2axis, y2axis: { + zoomRange: null // or [ number, number ] (min range, max range) or false + panRange: null // or [ number, number ] (min, max) or false + } + +"interactive" enables the built-in drag/click behaviour. If you enable +interactive for pan, then you'll have a basic plot that supports moving +around; the same for zoom. + +"amount" specifies the default amount to zoom in (so 1.5 = 150%) relative to +the current viewport. + +"cursor" is a standard CSS mouse cursor string used for visual feedback to the +user when dragging. + +"frameRate" specifies the maximum number of times per second the plot will +update itself while the user is panning around on it (set to null to disable +intermediate pans, the plot will then not update until the mouse button is +released). + +"zoomRange" is the interval in which zooming can happen, e.g. with zoomRange: +[1, 100] the zoom will never scale the axis so that the difference between min +and max is smaller than 1 or larger than 100. You can set either end to null +to ignore, e.g. [1, null]. If you set zoomRange to false, zooming on that axis +will be disabled. + +"panRange" confines the panning to stay within a range, e.g. with panRange: +[-10, 20] panning stops at -10 in one end and at 20 in the other. Either can +be null, e.g. [-10, null]. If you set panRange to false, panning on that axis +will be disabled. + +Example API usage: + + plot = $.plot(...); + + // zoom default amount in on the pixel ( 10, 20 ) + plot.zoom({ center: { left: 10, top: 20 } }); + + // zoom out again + plot.zoomOut({ center: { left: 10, top: 20 } }); + + // zoom 200% in on the pixel (10, 20) + plot.zoom({ amount: 2, center: { left: 10, top: 20 } }); + + // pan 100 pixels to the left and 20 down + plot.pan({ left: -100, top: 20 }) + +Here, "center" specifies where the center of the zooming should happen. Note +that this is defined in pixel space, not the space of the data points (you can +use the p2c helpers on the axes in Flot to help you convert between these). + +"amount" is the amount to zoom the viewport relative to the current range, so +1 is 100% (i.e. no change), 1.5 is 150% (zoom in), 0.7 is 70% (zoom out). You +can set the default in the options. + +*/ + +// First two dependencies, jquery.event.drag.js and +// jquery.mousewheel.js, we put them inline here to save people the +// effort of downloading them. + +/* +jquery.event.drag.js ~ v1.5 ~ Copyright (c) 2008, Three Dub Media (http://threedubmedia.com) +Licensed under the MIT License ~ http://threedubmedia.googlecode.com/files/MIT-LICENSE.txt +*/ +(function(a){function e(h){var k,j=this,l=h.data||{};if(l.elem)j=h.dragTarget=l.elem,h.dragProxy=d.proxy||j,h.cursorOffsetX=l.pageX-l.left,h.cursorOffsetY=l.pageY-l.top,h.offsetX=h.pageX-h.cursorOffsetX,h.offsetY=h.pageY-h.cursorOffsetY;else if(d.dragging||l.which>0&&h.which!=l.which||a(h.target).is(l.not))return;switch(h.type){case"mousedown":return a.extend(l,a(j).offset(),{elem:j,target:h.target,pageX:h.pageX,pageY:h.pageY}),b.add(document,"mousemove mouseup",e,l),i(j,!1),d.dragging=null,!1;case!d.dragging&&"mousemove":if(g(h.pageX-l.pageX)+g(h.pageY-l.pageY) max) { + // make sure min < max + var tmp = min; + min = max; + max = tmp; + } + + //Check that we are in panRange + if (pr) { + if (pr[0] != null && min < pr[0]) { + min = pr[0]; + } + if (pr[1] != null && max > pr[1]) { + max = pr[1]; + } + } + + var range = max - min; + if (zr && + ((zr[0] != null && range < zr[0] && amount >1) || + (zr[1] != null && range > zr[1] && amount <1))) + return; + + opts.min = min; + opts.max = max; + }); + + plot.setupGrid(); + plot.draw(); + + if (!args.preventEvent) + plot.getPlaceholder().trigger("plotzoom", [ plot, args ]); + }; + + plot.pan = function (args) { + var delta = { + x: +args.left, + y: +args.top + }; + + if (isNaN(delta.x)) + delta.x = 0; + if (isNaN(delta.y)) + delta.y = 0; + + $.each(plot.getAxes(), function (_, axis) { + var opts = axis.options, + min, max, d = delta[axis.direction]; + + min = axis.c2p(axis.p2c(axis.min) + d), + max = axis.c2p(axis.p2c(axis.max) + d); + + var pr = opts.panRange; + if (pr === false) // no panning on this axis + return; + + if (pr) { + // check whether we hit the wall + if (pr[0] != null && pr[0] > min) { + d = pr[0] - min; + min += d; + max += d; + } + + if (pr[1] != null && pr[1] < max) { + d = pr[1] - max; + min += d; + max += d; + } + } + + opts.min = min; + opts.max = max; + }); + + plot.setupGrid(); + plot.draw(); + + if (!args.preventEvent) + plot.getPlaceholder().trigger("plotpan", [ plot, args ]); + }; + + function shutdown(plot, eventHolder) { + eventHolder.unbind(plot.getOptions().zoom.trigger, onZoomClick); + eventHolder.unbind("mousewheel", onMouseWheel); + eventHolder.unbind("dragstart", onDragStart); + eventHolder.unbind("drag", onDrag); + eventHolder.unbind("dragend", onDragEnd); + if (panTimeout) + clearTimeout(panTimeout); + } + + plot.hooks.bindEvents.push(bindEvents); + plot.hooks.shutdown.push(shutdown); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'navigate', + version: '1.3' + }); +})(jQuery); diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.pie.js b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.pie.js new file mode 100644 index 0000000..524ee72 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.pie.js @@ -0,0 +1,820 @@ +/* Flot plugin for rendering pie charts. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +The plugin assumes that each series has a single data value, and that each +value is a positive integer or zero. Negative numbers don't make sense for a +pie chart, and have unpredictable results. The values do NOT need to be +passed in as percentages; the plugin will calculate the total and per-slice +percentages internally. + +* Created by Brian Medendorp + +* Updated with contributions from btburnett3, Anthony Aragues and Xavi Ivars + +The plugin supports these options: + + series: { + pie: { + show: true/false + radius: 0-1 for percentage of fullsize, or a specified pixel length, or 'auto' + innerRadius: 0-1 for percentage of fullsize or a specified pixel length, for creating a donut effect + startAngle: 0-2 factor of PI used for starting angle (in radians) i.e 3/2 starts at the top, 0 and 2 have the same result + tilt: 0-1 for percentage to tilt the pie, where 1 is no tilt, and 0 is completely flat (nothing will show) + offset: { + top: integer value to move the pie up or down + left: integer value to move the pie left or right, or 'auto' + }, + stroke: { + color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#FFF') + width: integer pixel width of the stroke + }, + label: { + show: true/false, or 'auto' + formatter: a user-defined function that modifies the text/style of the label text + radius: 0-1 for percentage of fullsize, or a specified pixel length + background: { + color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#000') + opacity: 0-1 + }, + threshold: 0-1 for the percentage value at which to hide labels (if they're too small) + }, + combine: { + threshold: 0-1 for the percentage value at which to combine slices (if they're too small) + color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#CCC'), if null, the plugin will automatically use the color of the first slice to be combined + label: any text value of what the combined slice should be labeled + } + highlight: { + opacity: 0-1 + } + } + } + +More detail and specific examples can be found in the included HTML file. + +*/ + +(function($) { + + // Maximum redraw attempts when fitting labels within the plot + + var REDRAW_ATTEMPTS = 10; + + // Factor by which to shrink the pie when fitting labels within the plot + + var REDRAW_SHRINK = 0.95; + + function init(plot) { + + var canvas = null, + target = null, + options = null, + maxRadius = null, + centerLeft = null, + centerTop = null, + processed = false, + ctx = null; + + // interactive variables + + var highlights = []; + + // add hook to determine if pie plugin in enabled, and then perform necessary operations + + plot.hooks.processOptions.push(function(plot, options) { + if (options.series.pie.show) { + + options.grid.show = false; + + // set labels.show + + if (options.series.pie.label.show == "auto") { + if (options.legend.show) { + options.series.pie.label.show = false; + } else { + options.series.pie.label.show = true; + } + } + + // set radius + + if (options.series.pie.radius == "auto") { + if (options.series.pie.label.show) { + options.series.pie.radius = 3/4; + } else { + options.series.pie.radius = 1; + } + } + + // ensure sane tilt + + if (options.series.pie.tilt > 1) { + options.series.pie.tilt = 1; + } else if (options.series.pie.tilt < 0) { + options.series.pie.tilt = 0; + } + } + }); + + plot.hooks.bindEvents.push(function(plot, eventHolder) { + var options = plot.getOptions(); + if (options.series.pie.show) { + if (options.grid.hoverable) { + eventHolder.unbind("mousemove").mousemove(onMouseMove); + } + if (options.grid.clickable) { + eventHolder.unbind("click").click(onClick); + } + } + }); + + plot.hooks.processDatapoints.push(function(plot, series, data, datapoints) { + var options = plot.getOptions(); + if (options.series.pie.show) { + processDatapoints(plot, series, data, datapoints); + } + }); + + plot.hooks.drawOverlay.push(function(plot, octx) { + var options = plot.getOptions(); + if (options.series.pie.show) { + drawOverlay(plot, octx); + } + }); + + plot.hooks.draw.push(function(plot, newCtx) { + var options = plot.getOptions(); + if (options.series.pie.show) { + draw(plot, newCtx); + } + }); + + function processDatapoints(plot, series, datapoints) { + if (!processed) { + processed = true; + canvas = plot.getCanvas(); + target = $(canvas).parent(); + options = plot.getOptions(); + plot.setData(combine(plot.getData())); + } + } + + function combine(data) { + + var total = 0, + combined = 0, + numCombined = 0, + color = options.series.pie.combine.color, + newdata = []; + + // Fix up the raw data from Flot, ensuring the data is numeric + + for (var i = 0; i < data.length; ++i) { + + var value = data[i].data; + + // If the data is an array, we'll assume that it's a standard + // Flot x-y pair, and are concerned only with the second value. + + // Note how we use the original array, rather than creating a + // new one; this is more efficient and preserves any extra data + // that the user may have stored in higher indexes. + + if ($.isArray(value) && value.length == 1) { + value = value[0]; + } + + if ($.isArray(value)) { + // Equivalent to $.isNumeric() but compatible with jQuery < 1.7 + if (!isNaN(parseFloat(value[1])) && isFinite(value[1])) { + value[1] = +value[1]; + } else { + value[1] = 0; + } + } else if (!isNaN(parseFloat(value)) && isFinite(value)) { + value = [1, +value]; + } else { + value = [1, 0]; + } + + data[i].data = [value]; + } + + // Sum up all the slices, so we can calculate percentages for each + + for (var i = 0; i < data.length; ++i) { + total += data[i].data[0][1]; + } + + // Count the number of slices with percentages below the combine + // threshold; if it turns out to be just one, we won't combine. + + for (var i = 0; i < data.length; ++i) { + var value = data[i].data[0][1]; + if (value / total <= options.series.pie.combine.threshold) { + combined += value; + numCombined++; + if (!color) { + color = data[i].color; + } + } + } + + for (var i = 0; i < data.length; ++i) { + var value = data[i].data[0][1]; + if (numCombined < 2 || value / total > options.series.pie.combine.threshold) { + newdata.push( + $.extend(data[i], { /* extend to allow keeping all other original data values + and using them e.g. in labelFormatter. */ + data: [[1, value]], + color: data[i].color, + label: data[i].label, + angle: value * Math.PI * 2 / total, + percent: value / (total / 100) + }) + ); + } + } + + if (numCombined > 1) { + newdata.push({ + data: [[1, combined]], + color: color, + label: options.series.pie.combine.label, + angle: combined * Math.PI * 2 / total, + percent: combined / (total / 100) + }); + } + + return newdata; + } + + function draw(plot, newCtx) { + + if (!target) { + return; // if no series were passed + } + + var canvasWidth = plot.getPlaceholder().width(), + canvasHeight = plot.getPlaceholder().height(), + legendWidth = target.children().filter(".legend").children().width() || 0; + + ctx = newCtx; + + // WARNING: HACK! REWRITE THIS CODE AS SOON AS POSSIBLE! + + // When combining smaller slices into an 'other' slice, we need to + // add a new series. Since Flot gives plugins no way to modify the + // list of series, the pie plugin uses a hack where the first call + // to processDatapoints results in a call to setData with the new + // list of series, then subsequent processDatapoints do nothing. + + // The plugin-global 'processed' flag is used to control this hack; + // it starts out false, and is set to true after the first call to + // processDatapoints. + + // Unfortunately this turns future setData calls into no-ops; they + // call processDatapoints, the flag is true, and nothing happens. + + // To fix this we'll set the flag back to false here in draw, when + // all series have been processed, so the next sequence of calls to + // processDatapoints once again starts out with a slice-combine. + // This is really a hack; in 0.9 we need to give plugins a proper + // way to modify series before any processing begins. + + processed = false; + + // calculate maximum radius and center point + + maxRadius = Math.min(canvasWidth, canvasHeight / options.series.pie.tilt) / 2; + centerTop = canvasHeight / 2 + options.series.pie.offset.top; + centerLeft = canvasWidth / 2; + + if (options.series.pie.offset.left == "auto") { + if (options.legend.position.match("w")) { + centerLeft += legendWidth / 2; + } else { + centerLeft -= legendWidth / 2; + } + if (centerLeft < maxRadius) { + centerLeft = maxRadius; + } else if (centerLeft > canvasWidth - maxRadius) { + centerLeft = canvasWidth - maxRadius; + } + } else { + centerLeft += options.series.pie.offset.left; + } + + var slices = plot.getData(), + attempts = 0; + + // Keep shrinking the pie's radius until drawPie returns true, + // indicating that all the labels fit, or we try too many times. + + do { + if (attempts > 0) { + maxRadius *= REDRAW_SHRINK; + } + attempts += 1; + clear(); + if (options.series.pie.tilt <= 0.8) { + drawShadow(); + } + } while (!drawPie() && attempts < REDRAW_ATTEMPTS) + + if (attempts >= REDRAW_ATTEMPTS) { + clear(); + target.prepend("
    Could not draw pie with labels contained inside canvas
    "); + } + + if (plot.setSeries && plot.insertLegend) { + plot.setSeries(slices); + plot.insertLegend(); + } + + // we're actually done at this point, just defining internal functions at this point + + function clear() { + ctx.clearRect(0, 0, canvasWidth, canvasHeight); + target.children().filter(".pieLabel, .pieLabelBackground").remove(); + } + + function drawShadow() { + + var shadowLeft = options.series.pie.shadow.left; + var shadowTop = options.series.pie.shadow.top; + var edge = 10; + var alpha = options.series.pie.shadow.alpha; + var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; + + if (radius >= canvasWidth / 2 - shadowLeft || radius * options.series.pie.tilt >= canvasHeight / 2 - shadowTop || radius <= edge) { + return; // shadow would be outside canvas, so don't draw it + } + + ctx.save(); + ctx.translate(shadowLeft,shadowTop); + ctx.globalAlpha = alpha; + ctx.fillStyle = "#000"; + + // center and rotate to starting position + + ctx.translate(centerLeft,centerTop); + ctx.scale(1, options.series.pie.tilt); + + //radius -= edge; + + for (var i = 1; i <= edge; i++) { + ctx.beginPath(); + ctx.arc(0, 0, radius, 0, Math.PI * 2, false); + ctx.fill(); + radius -= i; + } + + ctx.restore(); + } + + function drawPie() { + + var startAngle = Math.PI * options.series.pie.startAngle; + var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; + + // center and rotate to starting position + + ctx.save(); + ctx.translate(centerLeft,centerTop); + ctx.scale(1, options.series.pie.tilt); + //ctx.rotate(startAngle); // start at top; -- This doesn't work properly in Opera + + // draw slices + + ctx.save(); + var currentAngle = startAngle; + for (var i = 0; i < slices.length; ++i) { + slices[i].startAngle = currentAngle; + drawSlice(slices[i].angle, slices[i].color, true); + } + ctx.restore(); + + // draw slice outlines + + if (options.series.pie.stroke.width > 0) { + ctx.save(); + ctx.lineWidth = options.series.pie.stroke.width; + currentAngle = startAngle; + for (var i = 0; i < slices.length; ++i) { + drawSlice(slices[i].angle, options.series.pie.stroke.color, false); + } + ctx.restore(); + } + + // draw donut hole + + drawDonutHole(ctx); + + ctx.restore(); + + // Draw the labels, returning true if they fit within the plot + + if (options.series.pie.label.show) { + return drawLabels(); + } else return true; + + function drawSlice(angle, color, fill) { + + if (angle <= 0 || isNaN(angle)) { + return; + } + + if (fill) { + ctx.fillStyle = color; + } else { + ctx.strokeStyle = color; + ctx.lineJoin = "round"; + } + + ctx.beginPath(); + if (Math.abs(angle - Math.PI * 2) > 0.000000001) { + ctx.moveTo(0, 0); // Center of the pie + } + + //ctx.arc(0, 0, radius, 0, angle, false); // This doesn't work properly in Opera + ctx.arc(0, 0, radius,currentAngle, currentAngle + angle / 2, false); + ctx.arc(0, 0, radius,currentAngle + angle / 2, currentAngle + angle, false); + ctx.closePath(); + //ctx.rotate(angle); // This doesn't work properly in Opera + currentAngle += angle; + + if (fill) { + ctx.fill(); + } else { + ctx.stroke(); + } + } + + function drawLabels() { + + var currentAngle = startAngle; + var radius = options.series.pie.label.radius > 1 ? options.series.pie.label.radius : maxRadius * options.series.pie.label.radius; + + for (var i = 0; i < slices.length; ++i) { + if (slices[i].percent >= options.series.pie.label.threshold * 100) { + if (!drawLabel(slices[i], currentAngle, i)) { + return false; + } + } + currentAngle += slices[i].angle; + } + + return true; + + function drawLabel(slice, startAngle, index) { + + if (slice.data[0][1] == 0) { + return true; + } + + // format label text + + var lf = options.legend.labelFormatter, text, plf = options.series.pie.label.formatter; + + if (lf) { + text = lf(slice.label, slice); + } else { + text = slice.label; + } + + if (plf) { + text = plf(text, slice); + } + + var halfAngle = ((startAngle + slice.angle) + startAngle) / 2; + var x = centerLeft + Math.round(Math.cos(halfAngle) * radius); + var y = centerTop + Math.round(Math.sin(halfAngle) * radius) * options.series.pie.tilt; + + var html = "" + text + ""; + target.append(html); + + var label = target.children("#pieLabel" + index); + var labelTop = (y - label.height() / 2); + var labelLeft = (x - label.width() / 2); + + label.css("top", labelTop); + label.css("left", labelLeft); + + // check to make sure that the label is not outside the canvas + + if (0 - labelTop > 0 || 0 - labelLeft > 0 || canvasHeight - (labelTop + label.height()) < 0 || canvasWidth - (labelLeft + label.width()) < 0) { + return false; + } + + if (options.series.pie.label.background.opacity != 0) { + + // put in the transparent background separately to avoid blended labels and label boxes + + var c = options.series.pie.label.background.color; + + if (c == null) { + c = slice.color; + } + + var pos = "top:" + labelTop + "px;left:" + labelLeft + "px;"; + $("
    ") + .css("opacity", options.series.pie.label.background.opacity) + .insertBefore(label); + } + + return true; + } // end individual label function + } // end drawLabels function + } // end drawPie function + } // end draw function + + // Placed here because it needs to be accessed from multiple locations + + function drawDonutHole(layer) { + if (options.series.pie.innerRadius > 0) { + + // subtract the center + + layer.save(); + var innerRadius = options.series.pie.innerRadius > 1 ? options.series.pie.innerRadius : maxRadius * options.series.pie.innerRadius; + layer.globalCompositeOperation = "destination-out"; // this does not work with excanvas, but it will fall back to using the stroke color + layer.beginPath(); + layer.fillStyle = options.series.pie.stroke.color; + layer.arc(0, 0, innerRadius, 0, Math.PI * 2, false); + layer.fill(); + layer.closePath(); + layer.restore(); + + // add inner stroke + + layer.save(); + layer.beginPath(); + layer.strokeStyle = options.series.pie.stroke.color; + layer.arc(0, 0, innerRadius, 0, Math.PI * 2, false); + layer.stroke(); + layer.closePath(); + layer.restore(); + + // TODO: add extra shadow inside hole (with a mask) if the pie is tilted. + } + } + + //-- Additional Interactive related functions -- + + function isPointInPoly(poly, pt) { + for(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i) + ((poly[i][1] <= pt[1] && pt[1] < poly[j][1]) || (poly[j][1] <= pt[1] && pt[1]< poly[i][1])) + && (pt[0] < (poly[j][0] - poly[i][0]) * (pt[1] - poly[i][1]) / (poly[j][1] - poly[i][1]) + poly[i][0]) + && (c = !c); + return c; + } + + function findNearbySlice(mouseX, mouseY) { + + var slices = plot.getData(), + options = plot.getOptions(), + radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius, + x, y; + + for (var i = 0; i < slices.length; ++i) { + + var s = slices[i]; + + if (s.pie.show) { + + ctx.save(); + ctx.beginPath(); + ctx.moveTo(0, 0); // Center of the pie + //ctx.scale(1, options.series.pie.tilt); // this actually seems to break everything when here. + ctx.arc(0, 0, radius, s.startAngle, s.startAngle + s.angle / 2, false); + ctx.arc(0, 0, radius, s.startAngle + s.angle / 2, s.startAngle + s.angle, false); + ctx.closePath(); + x = mouseX - centerLeft; + y = mouseY - centerTop; + + if (ctx.isPointInPath) { + if (ctx.isPointInPath(mouseX - centerLeft, mouseY - centerTop)) { + ctx.restore(); + return { + datapoint: [s.percent, s.data], + dataIndex: 0, + series: s, + seriesIndex: i + }; + } + } else { + + // excanvas for IE doesn;t support isPointInPath, this is a workaround. + + var p1X = radius * Math.cos(s.startAngle), + p1Y = radius * Math.sin(s.startAngle), + p2X = radius * Math.cos(s.startAngle + s.angle / 4), + p2Y = radius * Math.sin(s.startAngle + s.angle / 4), + p3X = radius * Math.cos(s.startAngle + s.angle / 2), + p3Y = radius * Math.sin(s.startAngle + s.angle / 2), + p4X = radius * Math.cos(s.startAngle + s.angle / 1.5), + p4Y = radius * Math.sin(s.startAngle + s.angle / 1.5), + p5X = radius * Math.cos(s.startAngle + s.angle), + p5Y = radius * Math.sin(s.startAngle + s.angle), + arrPoly = [[0, 0], [p1X, p1Y], [p2X, p2Y], [p3X, p3Y], [p4X, p4Y], [p5X, p5Y]], + arrPoint = [x, y]; + + // TODO: perhaps do some mathmatical trickery here with the Y-coordinate to compensate for pie tilt? + + if (isPointInPoly(arrPoly, arrPoint)) { + ctx.restore(); + return { + datapoint: [s.percent, s.data], + dataIndex: 0, + series: s, + seriesIndex: i + }; + } + } + + ctx.restore(); + } + } + + return null; + } + + function onMouseMove(e) { + triggerClickHoverEvent("plothover", e); + } + + function onClick(e) { + triggerClickHoverEvent("plotclick", e); + } + + // trigger click or hover event (they send the same parameters so we share their code) + + function triggerClickHoverEvent(eventname, e) { + + var offset = plot.offset(); + var canvasX = parseInt(e.pageX - offset.left); + var canvasY = parseInt(e.pageY - offset.top); + var item = findNearbySlice(canvasX, canvasY); + + if (options.grid.autoHighlight) { + + // clear auto-highlights + + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.auto == eventname && !(item && h.series == item.series)) { + unhighlight(h.series); + } + } + } + + // highlight the slice + + if (item) { + highlight(item.series, eventname); + } + + // trigger any hover bind events + + var pos = { pageX: e.pageX, pageY: e.pageY }; + target.trigger(eventname, [pos, item]); + } + + function highlight(s, auto) { + //if (typeof s == "number") { + // s = series[s]; + //} + + var i = indexOfHighlight(s); + + if (i == -1) { + highlights.push({ series: s, auto: auto }); + plot.triggerRedrawOverlay(); + } else if (!auto) { + highlights[i].auto = false; + } + } + + function unhighlight(s) { + if (s == null) { + highlights = []; + plot.triggerRedrawOverlay(); + } + + //if (typeof s == "number") { + // s = series[s]; + //} + + var i = indexOfHighlight(s); + + if (i != -1) { + highlights.splice(i, 1); + plot.triggerRedrawOverlay(); + } + } + + function indexOfHighlight(s) { + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.series == s) + return i; + } + return -1; + } + + function drawOverlay(plot, octx) { + + var options = plot.getOptions(); + + var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; + + octx.save(); + octx.translate(centerLeft, centerTop); + octx.scale(1, options.series.pie.tilt); + + for (var i = 0; i < highlights.length; ++i) { + drawHighlight(highlights[i].series); + } + + drawDonutHole(octx); + + octx.restore(); + + function drawHighlight(series) { + + if (series.angle <= 0 || isNaN(series.angle)) { + return; + } + + //octx.fillStyle = parseColor(options.series.pie.highlight.color).scale(null, null, null, options.series.pie.highlight.opacity).toString(); + octx.fillStyle = "rgba(255, 255, 255, " + options.series.pie.highlight.opacity + ")"; // this is temporary until we have access to parseColor + octx.beginPath(); + if (Math.abs(series.angle - Math.PI * 2) > 0.000000001) { + octx.moveTo(0, 0); // Center of the pie + } + octx.arc(0, 0, radius, series.startAngle, series.startAngle + series.angle / 2, false); + octx.arc(0, 0, radius, series.startAngle + series.angle / 2, series.startAngle + series.angle, false); + octx.closePath(); + octx.fill(); + } + } + } // end init (plugin body) + + // define pie specific options and their default values + + var options = { + series: { + pie: { + show: false, + radius: "auto", // actual radius of the visible pie (based on full calculated radius if <=1, or hard pixel value) + innerRadius: 0, /* for donut */ + startAngle: 3/2, + tilt: 1, + shadow: { + left: 5, // shadow left offset + top: 15, // shadow top offset + alpha: 0.02 // shadow alpha + }, + offset: { + top: 0, + left: "auto" + }, + stroke: { + color: "#fff", + width: 1 + }, + label: { + show: "auto", + formatter: function(label, slice) { + return "
    " + label + "
    " + Math.round(slice.percent) + "%
    "; + }, // formatter function + radius: 1, // radius at which to place the labels (based on full calculated radius if <=1, or hard pixel value) + background: { + color: null, + opacity: 0 + }, + threshold: 0 // percentage at which to hide the label (i.e. the slice is too narrow) + }, + combine: { + threshold: -1, // percentage at which to combine little slices into one larger slice + color: null, // color to give the new slice (auto-generated if null) + label: "Other" // label to give the new slice + }, + highlight: { + //color: "#fff", // will add this functionality once parseColor is available + opacity: 0.5 + } + } + } + }; + + $.plot.plugins.push({ + init: init, + options: options, + name: "pie", + version: "1.1" + }); + +})(jQuery); diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.resize.js b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.resize.js new file mode 100644 index 0000000..a1a6894 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.resize.js @@ -0,0 +1,59 @@ +/* Flot plugin for automatically redrawing plots as the placeholder resizes. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +It works by listening for changes on the placeholder div (through the jQuery +resize event plugin) - if the size changes, it will redraw the plot. + +There are no options. If you need to disable the plugin for some plots, you +can just fix the size of their placeholders. + +*/ + +/* Inline dependency: + * jQuery resize event - v1.1 - 3/14/2010 + * http://benalman.com/projects/jquery-resize-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,t){"$:nomunge";var i=[],n=$.resize=$.extend($.resize,{}),a,r=false,s="setTimeout",u="resize",m=u+"-special-event",o="pendingDelay",l="activeDelay",f="throttleWindow";n[o]=200;n[l]=20;n[f]=true;$.event.special[u]={setup:function(){if(!n[f]&&this[s]){return false}var e=$(this);i.push(this);e.data(m,{w:e.width(),h:e.height()});if(i.length===1){a=t;h()}},teardown:function(){if(!n[f]&&this[s]){return false}var e=$(this);for(var t=i.length-1;t>=0;t--){if(i[t]==this){i.splice(t,1);break}}e.removeData(m);if(!i.length){if(r){cancelAnimationFrame(a)}else{clearTimeout(a)}a=null}},add:function(e){if(!n[f]&&this[s]){return false}var i;function a(e,n,a){var r=$(this),s=r.data(m)||{};s.w=n!==t?n:r.width();s.h=a!==t?a:r.height();i.apply(this,arguments)}if($.isFunction(e)){i=e;return a}else{i=e.handler;e.handler=a}}};function h(t){if(r===true){r=t||1}for(var s=i.length-1;s>=0;s--){var l=$(i[s]);if(l[0]==e||l.is(":visible")){var f=l.width(),c=l.height(),d=l.data(m);if(d&&(f!==d.w||c!==d.h)){l.trigger(u,[d.w=f,d.h=c]);r=t||true}}else{d=l.data(m);d.w=0;d.h=0}}if(a!==null){if(r&&(t==null||t-r<1e3)){a=e.requestAnimationFrame(h)}else{a=setTimeout(h,n[o]);r=false}}}if(!e.requestAnimationFrame){e.requestAnimationFrame=function(){return e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t,i){return e.setTimeout(function(){t((new Date).getTime())},n[l])}}()}if(!e.cancelAnimationFrame){e.cancelAnimationFrame=function(){return e.webkitCancelRequestAnimationFrame||e.mozCancelRequestAnimationFrame||e.oCancelRequestAnimationFrame||e.msCancelRequestAnimationFrame||clearTimeout}()}})(jQuery,this); + +(function ($) { + var options = { }; // no options + + function init(plot) { + function onResize() { + var placeholder = plot.getPlaceholder(); + + // somebody might have hidden us and we can't plot + // when we don't have the dimensions + if (placeholder.width() == 0 || placeholder.height() == 0) + return; + + plot.resize(); + plot.setupGrid(); + plot.draw(); + } + + function bindEvents(plot, eventHolder) { + plot.getPlaceholder().resize(onResize); + } + + function shutdown(plot, eventHolder) { + plot.getPlaceholder().unbind("resize", onResize); + } + + plot.hooks.bindEvents.push(bindEvents); + plot.hooks.shutdown.push(shutdown); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'resize', + version: '1.0' + }); +})(jQuery); diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.selection.js b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.selection.js new file mode 100644 index 0000000..6608b54 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.selection.js @@ -0,0 +1,360 @@ +/* Flot plugin for selecting regions of a plot. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +The plugin supports these options: + +selection: { + mode: null or "x" or "y" or "xy", + color: color, + shape: "round" or "miter" or "bevel", + minSize: number of pixels +} + +Selection support is enabled by setting the mode to one of "x", "y" or "xy". +In "x" mode, the user will only be able to specify the x range, similarly for +"y" mode. For "xy", the selection becomes a rectangle where both ranges can be +specified. "color" is color of the selection (if you need to change the color +later on, you can get to it with plot.getOptions().selection.color). "shape" +is the shape of the corners of the selection. + +"minSize" is the minimum size a selection can be in pixels. This value can +be customized to determine the smallest size a selection can be and still +have the selection rectangle be displayed. When customizing this value, the +fact that it refers to pixels, not axis units must be taken into account. +Thus, for example, if there is a bar graph in time mode with BarWidth set to 1 +minute, setting "minSize" to 1 will not make the minimum selection size 1 +minute, but rather 1 pixel. Note also that setting "minSize" to 0 will prevent +"plotunselected" events from being fired when the user clicks the mouse without +dragging. + +When selection support is enabled, a "plotselected" event will be emitted on +the DOM element you passed into the plot function. The event handler gets a +parameter with the ranges selected on the axes, like this: + + placeholder.bind( "plotselected", function( event, ranges ) { + alert("You selected " + ranges.xaxis.from + " to " + ranges.xaxis.to) + // similar for yaxis - with multiple axes, the extra ones are in + // x2axis, x3axis, ... + }); + +The "plotselected" event is only fired when the user has finished making the +selection. A "plotselecting" event is fired during the process with the same +parameters as the "plotselected" event, in case you want to know what's +happening while it's happening, + +A "plotunselected" event with no arguments is emitted when the user clicks the +mouse to remove the selection. As stated above, setting "minSize" to 0 will +destroy this behavior. + +The plugin allso adds the following methods to the plot object: + +- setSelection( ranges, preventEvent ) + + Set the selection rectangle. The passed in ranges is on the same form as + returned in the "plotselected" event. If the selection mode is "x", you + should put in either an xaxis range, if the mode is "y" you need to put in + an yaxis range and both xaxis and yaxis if the selection mode is "xy", like + this: + + setSelection({ xaxis: { from: 0, to: 10 }, yaxis: { from: 40, to: 60 } }); + + setSelection will trigger the "plotselected" event when called. If you don't + want that to happen, e.g. if you're inside a "plotselected" handler, pass + true as the second parameter. If you are using multiple axes, you can + specify the ranges on any of those, e.g. as x2axis/x3axis/... instead of + xaxis, the plugin picks the first one it sees. + +- clearSelection( preventEvent ) + + Clear the selection rectangle. Pass in true to avoid getting a + "plotunselected" event. + +- getSelection() + + Returns the current selection in the same format as the "plotselected" + event. If there's currently no selection, the function returns null. + +*/ + +(function ($) { + function init(plot) { + var selection = { + first: { x: -1, y: -1}, second: { x: -1, y: -1}, + show: false, + active: false + }; + + // FIXME: The drag handling implemented here should be + // abstracted out, there's some similar code from a library in + // the navigation plugin, this should be massaged a bit to fit + // the Flot cases here better and reused. Doing this would + // make this plugin much slimmer. + var savedhandlers = {}; + + var mouseUpHandler = null; + + function onMouseMove(e) { + if (selection.active) { + updateSelection(e); + + plot.getPlaceholder().trigger("plotselecting", [ getSelection() ]); + } + } + + function onMouseDown(e) { + if (e.which != 1) // only accept left-click + return; + + // cancel out any text selections + document.body.focus(); + + // prevent text selection and drag in old-school browsers + if (document.onselectstart !== undefined && savedhandlers.onselectstart == null) { + savedhandlers.onselectstart = document.onselectstart; + document.onselectstart = function () { return false; }; + } + if (document.ondrag !== undefined && savedhandlers.ondrag == null) { + savedhandlers.ondrag = document.ondrag; + document.ondrag = function () { return false; }; + } + + setSelectionPos(selection.first, e); + + selection.active = true; + + // this is a bit silly, but we have to use a closure to be + // able to whack the same handler again + mouseUpHandler = function (e) { onMouseUp(e); }; + + $(document).one("mouseup", mouseUpHandler); + } + + function onMouseUp(e) { + mouseUpHandler = null; + + // revert drag stuff for old-school browsers + if (document.onselectstart !== undefined) + document.onselectstart = savedhandlers.onselectstart; + if (document.ondrag !== undefined) + document.ondrag = savedhandlers.ondrag; + + // no more dragging + selection.active = false; + updateSelection(e); + + if (selectionIsSane()) + triggerSelectedEvent(); + else { + // this counts as a clear + plot.getPlaceholder().trigger("plotunselected", [ ]); + plot.getPlaceholder().trigger("plotselecting", [ null ]); + } + + return false; + } + + function getSelection() { + if (!selectionIsSane()) + return null; + + if (!selection.show) return null; + + var r = {}, c1 = selection.first, c2 = selection.second; + $.each(plot.getAxes(), function (name, axis) { + if (axis.used) { + var p1 = axis.c2p(c1[axis.direction]), p2 = axis.c2p(c2[axis.direction]); + r[name] = { from: Math.min(p1, p2), to: Math.max(p1, p2) }; + } + }); + return r; + } + + function triggerSelectedEvent() { + var r = getSelection(); + + plot.getPlaceholder().trigger("plotselected", [ r ]); + + // backwards-compat stuff, to be removed in future + if (r.xaxis && r.yaxis) + plot.getPlaceholder().trigger("selected", [ { x1: r.xaxis.from, y1: r.yaxis.from, x2: r.xaxis.to, y2: r.yaxis.to } ]); + } + + function clamp(min, value, max) { + return value < min ? min: (value > max ? max: value); + } + + function setSelectionPos(pos, e) { + var o = plot.getOptions(); + var offset = plot.getPlaceholder().offset(); + var plotOffset = plot.getPlotOffset(); + pos.x = clamp(0, e.pageX - offset.left - plotOffset.left, plot.width()); + pos.y = clamp(0, e.pageY - offset.top - plotOffset.top, plot.height()); + + if (o.selection.mode == "y") + pos.x = pos == selection.first ? 0 : plot.width(); + + if (o.selection.mode == "x") + pos.y = pos == selection.first ? 0 : plot.height(); + } + + function updateSelection(pos) { + if (pos.pageX == null) + return; + + setSelectionPos(selection.second, pos); + if (selectionIsSane()) { + selection.show = true; + plot.triggerRedrawOverlay(); + } + else + clearSelection(true); + } + + function clearSelection(preventEvent) { + if (selection.show) { + selection.show = false; + plot.triggerRedrawOverlay(); + if (!preventEvent) + plot.getPlaceholder().trigger("plotunselected", [ ]); + } + } + + // function taken from markings support in Flot + function extractRange(ranges, coord) { + var axis, from, to, key, axes = plot.getAxes(); + + for (var k in axes) { + axis = axes[k]; + if (axis.direction == coord) { + key = coord + axis.n + "axis"; + if (!ranges[key] && axis.n == 1) + key = coord + "axis"; // support x1axis as xaxis + if (ranges[key]) { + from = ranges[key].from; + to = ranges[key].to; + break; + } + } + } + + // backwards-compat stuff - to be removed in future + if (!ranges[key]) { + axis = coord == "x" ? plot.getXAxes()[0] : plot.getYAxes()[0]; + from = ranges[coord + "1"]; + to = ranges[coord + "2"]; + } + + // auto-reverse as an added bonus + if (from != null && to != null && from > to) { + var tmp = from; + from = to; + to = tmp; + } + + return { from: from, to: to, axis: axis }; + } + + function setSelection(ranges, preventEvent) { + var axis, range, o = plot.getOptions(); + + if (o.selection.mode == "y") { + selection.first.x = 0; + selection.second.x = plot.width(); + } + else { + range = extractRange(ranges, "x"); + + selection.first.x = range.axis.p2c(range.from); + selection.second.x = range.axis.p2c(range.to); + } + + if (o.selection.mode == "x") { + selection.first.y = 0; + selection.second.y = plot.height(); + } + else { + range = extractRange(ranges, "y"); + + selection.first.y = range.axis.p2c(range.from); + selection.second.y = range.axis.p2c(range.to); + } + + selection.show = true; + plot.triggerRedrawOverlay(); + if (!preventEvent && selectionIsSane()) + triggerSelectedEvent(); + } + + function selectionIsSane() { + var minSize = plot.getOptions().selection.minSize; + return Math.abs(selection.second.x - selection.first.x) >= minSize && + Math.abs(selection.second.y - selection.first.y) >= minSize; + } + + plot.clearSelection = clearSelection; + plot.setSelection = setSelection; + plot.getSelection = getSelection; + + plot.hooks.bindEvents.push(function(plot, eventHolder) { + var o = plot.getOptions(); + if (o.selection.mode != null) { + eventHolder.mousemove(onMouseMove); + eventHolder.mousedown(onMouseDown); + } + }); + + + plot.hooks.drawOverlay.push(function (plot, ctx) { + // draw selection + if (selection.show && selectionIsSane()) { + var plotOffset = plot.getPlotOffset(); + var o = plot.getOptions(); + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + var c = $.color.parse(o.selection.color); + + ctx.strokeStyle = c.scale('a', 0.8).toString(); + ctx.lineWidth = 1; + ctx.lineJoin = o.selection.shape; + ctx.fillStyle = c.scale('a', 0.4).toString(); + + var x = Math.min(selection.first.x, selection.second.x) + 0.5, + y = Math.min(selection.first.y, selection.second.y) + 0.5, + w = Math.abs(selection.second.x - selection.first.x) - 1, + h = Math.abs(selection.second.y - selection.first.y) - 1; + + ctx.fillRect(x, y, w, h); + ctx.strokeRect(x, y, w, h); + + ctx.restore(); + } + }); + + plot.hooks.shutdown.push(function (plot, eventHolder) { + eventHolder.unbind("mousemove", onMouseMove); + eventHolder.unbind("mousedown", onMouseDown); + + if (mouseUpHandler) + $(document).unbind("mouseup", mouseUpHandler); + }); + + } + + $.plot.plugins.push({ + init: init, + options: { + selection: { + mode: null, // one of null, "x", "y" or "xy" + color: "#e8cfac", + shape: "round", // one of "round", "miter", or "bevel" + minSize: 5 // minimum number of pixels + } + }, + name: 'selection', + version: '1.1' + }); +})(jQuery); diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.stack.js b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.stack.js new file mode 100644 index 0000000..e3f6097 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.stack.js @@ -0,0 +1,188 @@ +/* Flot plugin for stacking data sets rather than overlyaing them. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +The plugin assumes the data is sorted on x (or y if stacking horizontally). +For line charts, it is assumed that if a line has an undefined gap (from a +null point), then the line above it should have the same gap - insert zeros +instead of "null" if you want another behaviour. This also holds for the start +and end of the chart. Note that stacking a mix of positive and negative values +in most instances doesn't make sense (so it looks weird). + +Two or more series are stacked when their "stack" attribute is set to the same +key (which can be any number or string or just "true"). To specify the default +stack, you can set the stack option like this: + + series: { + stack: null/false, true, or a key (number/string) + } + +You can also specify it for a single series, like this: + + $.plot( $("#placeholder"), [{ + data: [ ... ], + stack: true + }]) + +The stacking order is determined by the order of the data series in the array +(later series end up on top of the previous). + +Internally, the plugin modifies the datapoints in each series, adding an +offset to the y value. For line series, extra data points are inserted through +interpolation. If there's a second y value, it's also adjusted (e.g for bar +charts or filled areas). + +*/ + +(function ($) { + var options = { + series: { stack: null } // or number/string + }; + + function init(plot) { + function findMatchingSeries(s, allseries) { + var res = null; + for (var i = 0; i < allseries.length; ++i) { + if (s == allseries[i]) + break; + + if (allseries[i].stack == s.stack) + res = allseries[i]; + } + + return res; + } + + function stackData(plot, s, datapoints) { + if (s.stack == null || s.stack === false) + return; + + var other = findMatchingSeries(s, plot.getData()); + if (!other) + return; + + var ps = datapoints.pointsize, + points = datapoints.points, + otherps = other.datapoints.pointsize, + otherpoints = other.datapoints.points, + newpoints = [], + px, py, intery, qx, qy, bottom, + withlines = s.lines.show, + horizontal = s.bars.horizontal, + withbottom = ps > 2 && (horizontal ? datapoints.format[2].x : datapoints.format[2].y), + withsteps = withlines && s.lines.steps, + fromgap = true, + keyOffset = horizontal ? 1 : 0, + accumulateOffset = horizontal ? 0 : 1, + i = 0, j = 0, l, m; + + while (true) { + if (i >= points.length) + break; + + l = newpoints.length; + + if (points[i] == null) { + // copy gaps + for (m = 0; m < ps; ++m) + newpoints.push(points[i + m]); + i += ps; + } + else if (j >= otherpoints.length) { + // for lines, we can't use the rest of the points + if (!withlines) { + for (m = 0; m < ps; ++m) + newpoints.push(points[i + m]); + } + i += ps; + } + else if (otherpoints[j] == null) { + // oops, got a gap + for (m = 0; m < ps; ++m) + newpoints.push(null); + fromgap = true; + j += otherps; + } + else { + // cases where we actually got two points + px = points[i + keyOffset]; + py = points[i + accumulateOffset]; + qx = otherpoints[j + keyOffset]; + qy = otherpoints[j + accumulateOffset]; + bottom = 0; + + if (px == qx) { + for (m = 0; m < ps; ++m) + newpoints.push(points[i + m]); + + newpoints[l + accumulateOffset] += qy; + bottom = qy; + + i += ps; + j += otherps; + } + else if (px > qx) { + // we got past point below, might need to + // insert interpolated extra point + if (withlines && i > 0 && points[i - ps] != null) { + intery = py + (points[i - ps + accumulateOffset] - py) * (qx - px) / (points[i - ps + keyOffset] - px); + newpoints.push(qx); + newpoints.push(intery + qy); + for (m = 2; m < ps; ++m) + newpoints.push(points[i + m]); + bottom = qy; + } + + j += otherps; + } + else { // px < qx + if (fromgap && withlines) { + // if we come from a gap, we just skip this point + i += ps; + continue; + } + + for (m = 0; m < ps; ++m) + newpoints.push(points[i + m]); + + // we might be able to interpolate a point below, + // this can give us a better y + if (withlines && j > 0 && otherpoints[j - otherps] != null) + bottom = qy + (otherpoints[j - otherps + accumulateOffset] - qy) * (px - qx) / (otherpoints[j - otherps + keyOffset] - qx); + + newpoints[l + accumulateOffset] += bottom; + + i += ps; + } + + fromgap = false; + + if (l != newpoints.length && withbottom) + newpoints[l + 2] += bottom; + } + + // maintain the line steps invariant + if (withsteps && l != newpoints.length && l > 0 + && newpoints[l] != null + && newpoints[l] != newpoints[l - ps] + && newpoints[l + 1] != newpoints[l - ps + 1]) { + for (m = 0; m < ps; ++m) + newpoints[l + ps + m] = newpoints[l + m]; + newpoints[l + 1] = newpoints[l - ps + 1]; + } + } + + datapoints.points = newpoints; + } + + plot.hooks.processDatapoints.push(stackData); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'stack', + version: '1.2' + }); +})(jQuery); diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.symbol.js b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.symbol.js new file mode 100644 index 0000000..61c15ac --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.symbol.js @@ -0,0 +1,71 @@ +/* Flot plugin that adds some extra symbols for plotting points. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +The symbols are accessed as strings through the standard symbol options: + + series: { + points: { + symbol: "square" // or "diamond", "triangle", "cross" + } + } + +*/ + +(function ($) { + function processRawData(plot, series, datapoints) { + // we normalize the area of each symbol so it is approximately the + // same as a circle of the given radius + + var handlers = { + square: function (ctx, x, y, radius, shadow) { + // pi * r^2 = (2s)^2 => s = r * sqrt(pi)/2 + var size = radius * Math.sqrt(Math.PI) / 2; + ctx.rect(x - size, y - size, size + size, size + size); + }, + diamond: function (ctx, x, y, radius, shadow) { + // pi * r^2 = 2s^2 => s = r * sqrt(pi/2) + var size = radius * Math.sqrt(Math.PI / 2); + ctx.moveTo(x - size, y); + ctx.lineTo(x, y - size); + ctx.lineTo(x + size, y); + ctx.lineTo(x, y + size); + ctx.lineTo(x - size, y); + }, + triangle: function (ctx, x, y, radius, shadow) { + // pi * r^2 = 1/2 * s^2 * sin (pi / 3) => s = r * sqrt(2 * pi / sin(pi / 3)) + var size = radius * Math.sqrt(2 * Math.PI / Math.sin(Math.PI / 3)); + var height = size * Math.sin(Math.PI / 3); + ctx.moveTo(x - size/2, y + height/2); + ctx.lineTo(x + size/2, y + height/2); + if (!shadow) { + ctx.lineTo(x, y - height/2); + ctx.lineTo(x - size/2, y + height/2); + } + }, + cross: function (ctx, x, y, radius, shadow) { + // pi * r^2 = (2s)^2 => s = r * sqrt(pi)/2 + var size = radius * Math.sqrt(Math.PI) / 2; + ctx.moveTo(x - size, y - size); + ctx.lineTo(x + size, y + size); + ctx.moveTo(x - size, y + size); + ctx.lineTo(x + size, y - size); + } + }; + + var s = series.points.symbol; + if (handlers[s]) + series.points.symbol = handlers[s]; + } + + function init(plot) { + plot.hooks.processDatapoints.push(processRawData); + } + + $.plot.plugins.push({ + init: init, + name: 'symbols', + version: '1.0' + }); +})(jQuery); diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.threshold.js b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.threshold.js new file mode 100644 index 0000000..0d73420 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.threshold.js @@ -0,0 +1,142 @@ +/* Flot plugin for thresholding data. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +The plugin supports these options: + + series: { + threshold: { + below: number + color: colorspec + } + } + +It can also be applied to a single series, like this: + + $.plot( $("#placeholder"), [{ + data: [ ... ], + threshold: { ... } + }]) + +An array can be passed for multiple thresholding, like this: + + threshold: [{ + below: number1 + color: color1 + },{ + below: number2 + color: color2 + }] + +These multiple threshold objects can be passed in any order since they are +sorted by the processing function. + +The data points below "below" are drawn with the specified color. This makes +it easy to mark points below 0, e.g. for budget data. + +Internally, the plugin works by splitting the data into two series, above and +below the threshold. The extra series below the threshold will have its label +cleared and the special "originSeries" attribute set to the original series. +You may need to check for this in hover events. + +*/ + +(function ($) { + var options = { + series: { threshold: null } // or { below: number, color: color spec} + }; + + function init(plot) { + function thresholdData(plot, s, datapoints, below, color) { + var ps = datapoints.pointsize, i, x, y, p, prevp, + thresholded = $.extend({}, s); // note: shallow copy + + thresholded.datapoints = { points: [], pointsize: ps, format: datapoints.format }; + thresholded.label = null; + thresholded.color = color; + thresholded.threshold = null; + thresholded.originSeries = s; + thresholded.data = []; + + var origpoints = datapoints.points, + addCrossingPoints = s.lines.show; + + var threspoints = []; + var newpoints = []; + var m; + + for (i = 0; i < origpoints.length; i += ps) { + x = origpoints[i]; + y = origpoints[i + 1]; + + prevp = p; + if (y < below) + p = threspoints; + else + p = newpoints; + + if (addCrossingPoints && prevp != p && x != null + && i > 0 && origpoints[i - ps] != null) { + var interx = x + (below - y) * (x - origpoints[i - ps]) / (y - origpoints[i - ps + 1]); + prevp.push(interx); + prevp.push(below); + for (m = 2; m < ps; ++m) + prevp.push(origpoints[i + m]); + + p.push(null); // start new segment + p.push(null); + for (m = 2; m < ps; ++m) + p.push(origpoints[i + m]); + p.push(interx); + p.push(below); + for (m = 2; m < ps; ++m) + p.push(origpoints[i + m]); + } + + p.push(x); + p.push(y); + for (m = 2; m < ps; ++m) + p.push(origpoints[i + m]); + } + + datapoints.points = newpoints; + thresholded.datapoints.points = threspoints; + + if (thresholded.datapoints.points.length > 0) { + var origIndex = $.inArray(s, plot.getData()); + // Insert newly-generated series right after original one (to prevent it from becoming top-most) + plot.getData().splice(origIndex + 1, 0, thresholded); + } + + // FIXME: there are probably some edge cases left in bars + } + + function processThresholds(plot, s, datapoints) { + if (!s.threshold) + return; + + if (s.threshold instanceof Array) { + s.threshold.sort(function(a, b) { + return a.below - b.below; + }); + + $(s.threshold).each(function(i, th) { + thresholdData(plot, s, datapoints, th.below, th.color); + }); + } + else { + thresholdData(plot, s, datapoints, s.threshold.below, s.threshold.color); + } + } + + plot.hooks.processDatapoints.push(processThresholds); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'threshold', + version: '1.2' + }); +})(jQuery); diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.time.js b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.time.js new file mode 100644 index 0000000..8b4849a --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.flot.time.js @@ -0,0 +1,432 @@ +/* Pretty handling of time axes. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +Set axis.mode to "time" to enable. See the section "Time series data" in +API.txt for details. + +*/ + +(function($) { + + var options = { + xaxis: { + timezone: null, // "browser" for local to the client or timezone for timezone-js + timeformat: null, // format string to use + twelveHourClock: false, // 12 or 24 time in time mode + monthNames: null // list of names of months + } + }; + + // round to nearby lower multiple of base + + function floorInBase(n, base) { + return base * Math.floor(n / base); + } + + // Returns a string with the date d formatted according to fmt. + // A subset of the Open Group's strftime format is supported. + + function formatDate(d, fmt, monthNames, dayNames) { + + if (typeof d.strftime == "function") { + return d.strftime(fmt); + } + + var leftPad = function(n, pad) { + n = "" + n; + pad = "" + (pad == null ? "0" : pad); + return n.length == 1 ? pad + n : n; + }; + + var r = []; + var escape = false; + var hours = d.getHours(); + var isAM = hours < 12; + + if (monthNames == null) { + monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; + } + + if (dayNames == null) { + dayNames = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; + } + + var hours12; + + if (hours > 12) { + hours12 = hours - 12; + } else if (hours == 0) { + hours12 = 12; + } else { + hours12 = hours; + } + + for (var i = 0; i < fmt.length; ++i) { + + var c = fmt.charAt(i); + + if (escape) { + switch (c) { + case 'a': c = "" + dayNames[d.getDay()]; break; + case 'b': c = "" + monthNames[d.getMonth()]; break; + case 'd': c = leftPad(d.getDate()); break; + case 'e': c = leftPad(d.getDate(), " "); break; + case 'h': // For back-compat with 0.7; remove in 1.0 + case 'H': c = leftPad(hours); break; + case 'I': c = leftPad(hours12); break; + case 'l': c = leftPad(hours12, " "); break; + case 'm': c = leftPad(d.getMonth() + 1); break; + case 'M': c = leftPad(d.getMinutes()); break; + // quarters not in Open Group's strftime specification + case 'q': + c = "" + (Math.floor(d.getMonth() / 3) + 1); break; + case 'S': c = leftPad(d.getSeconds()); break; + case 'y': c = leftPad(d.getFullYear() % 100); break; + case 'Y': c = "" + d.getFullYear(); break; + case 'p': c = (isAM) ? ("" + "am") : ("" + "pm"); break; + case 'P': c = (isAM) ? ("" + "AM") : ("" + "PM"); break; + case 'w': c = "" + d.getDay(); break; + } + r.push(c); + escape = false; + } else { + if (c == "%") { + escape = true; + } else { + r.push(c); + } + } + } + + return r.join(""); + } + + // To have a consistent view of time-based data independent of which time + // zone the client happens to be in we need a date-like object independent + // of time zones. This is done through a wrapper that only calls the UTC + // versions of the accessor methods. + + function makeUtcWrapper(d) { + + function addProxyMethod(sourceObj, sourceMethod, targetObj, targetMethod) { + sourceObj[sourceMethod] = function() { + return targetObj[targetMethod].apply(targetObj, arguments); + }; + }; + + var utc = { + date: d + }; + + // support strftime, if found + + if (d.strftime != undefined) { + addProxyMethod(utc, "strftime", d, "strftime"); + } + + addProxyMethod(utc, "getTime", d, "getTime"); + addProxyMethod(utc, "setTime", d, "setTime"); + + var props = ["Date", "Day", "FullYear", "Hours", "Milliseconds", "Minutes", "Month", "Seconds"]; + + for (var p = 0; p < props.length; p++) { + addProxyMethod(utc, "get" + props[p], d, "getUTC" + props[p]); + addProxyMethod(utc, "set" + props[p], d, "setUTC" + props[p]); + } + + return utc; + }; + + // select time zone strategy. This returns a date-like object tied to the + // desired timezone + + function dateGenerator(ts, opts) { + if (opts.timezone == "browser") { + return new Date(ts); + } else if (!opts.timezone || opts.timezone == "utc") { + return makeUtcWrapper(new Date(ts)); + } else if (typeof timezoneJS != "undefined" && typeof timezoneJS.Date != "undefined") { + var d = new timezoneJS.Date(); + // timezone-js is fickle, so be sure to set the time zone before + // setting the time. + d.setTimezone(opts.timezone); + d.setTime(ts); + return d; + } else { + return makeUtcWrapper(new Date(ts)); + } + } + + // map of app. size of time units in milliseconds + + var timeUnitSize = { + "second": 1000, + "minute": 60 * 1000, + "hour": 60 * 60 * 1000, + "day": 24 * 60 * 60 * 1000, + "month": 30 * 24 * 60 * 60 * 1000, + "quarter": 3 * 30 * 24 * 60 * 60 * 1000, + "year": 365.2425 * 24 * 60 * 60 * 1000 + }; + + // the allowed tick sizes, after 1 year we use + // an integer algorithm + + var baseSpec = [ + [1, "second"], [2, "second"], [5, "second"], [10, "second"], + [30, "second"], + [1, "minute"], [2, "minute"], [5, "minute"], [10, "minute"], + [30, "minute"], + [1, "hour"], [2, "hour"], [4, "hour"], + [8, "hour"], [12, "hour"], + [1, "day"], [2, "day"], [3, "day"], + [0.25, "month"], [0.5, "month"], [1, "month"], + [2, "month"] + ]; + + // we don't know which variant(s) we'll need yet, but generating both is + // cheap + + var specMonths = baseSpec.concat([[3, "month"], [6, "month"], + [1, "year"]]); + var specQuarters = baseSpec.concat([[1, "quarter"], [2, "quarter"], + [1, "year"]]); + + function init(plot) { + plot.hooks.processOptions.push(function (plot, options) { + $.each(plot.getAxes(), function(axisName, axis) { + + var opts = axis.options; + + if (opts.mode == "time") { + axis.tickGenerator = function(axis) { + + var ticks = []; + var d = dateGenerator(axis.min, opts); + var minSize = 0; + + // make quarter use a possibility if quarters are + // mentioned in either of these options + + var spec = (opts.tickSize && opts.tickSize[1] === + "quarter") || + (opts.minTickSize && opts.minTickSize[1] === + "quarter") ? specQuarters : specMonths; + + if (opts.minTickSize != null) { + if (typeof opts.tickSize == "number") { + minSize = opts.tickSize; + } else { + minSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]]; + } + } + + for (var i = 0; i < spec.length - 1; ++i) { + if (axis.delta < (spec[i][0] * timeUnitSize[spec[i][1]] + + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2 + && spec[i][0] * timeUnitSize[spec[i][1]] >= minSize) { + break; + } + } + + var size = spec[i][0]; + var unit = spec[i][1]; + + // special-case the possibility of several years + + if (unit == "year") { + + // if given a minTickSize in years, just use it, + // ensuring that it's an integer + + if (opts.minTickSize != null && opts.minTickSize[1] == "year") { + size = Math.floor(opts.minTickSize[0]); + } else { + + var magn = Math.pow(10, Math.floor(Math.log(axis.delta / timeUnitSize.year) / Math.LN10)); + var norm = (axis.delta / timeUnitSize.year) / magn; + + if (norm < 1.5) { + size = 1; + } else if (norm < 3) { + size = 2; + } else if (norm < 7.5) { + size = 5; + } else { + size = 10; + } + + size *= magn; + } + + // minimum size for years is 1 + + if (size < 1) { + size = 1; + } + } + + axis.tickSize = opts.tickSize || [size, unit]; + var tickSize = axis.tickSize[0]; + unit = axis.tickSize[1]; + + var step = tickSize * timeUnitSize[unit]; + + if (unit == "second") { + d.setSeconds(floorInBase(d.getSeconds(), tickSize)); + } else if (unit == "minute") { + d.setMinutes(floorInBase(d.getMinutes(), tickSize)); + } else if (unit == "hour") { + d.setHours(floorInBase(d.getHours(), tickSize)); + } else if (unit == "month") { + d.setMonth(floorInBase(d.getMonth(), tickSize)); + } else if (unit == "quarter") { + d.setMonth(3 * floorInBase(d.getMonth() / 3, + tickSize)); + } else if (unit == "year") { + d.setFullYear(floorInBase(d.getFullYear(), tickSize)); + } + + // reset smaller components + + d.setMilliseconds(0); + + if (step >= timeUnitSize.minute) { + d.setSeconds(0); + } + if (step >= timeUnitSize.hour) { + d.setMinutes(0); + } + if (step >= timeUnitSize.day) { + d.setHours(0); + } + if (step >= timeUnitSize.day * 4) { + d.setDate(1); + } + if (step >= timeUnitSize.month * 2) { + d.setMonth(floorInBase(d.getMonth(), 3)); + } + if (step >= timeUnitSize.quarter * 2) { + d.setMonth(floorInBase(d.getMonth(), 6)); + } + if (step >= timeUnitSize.year) { + d.setMonth(0); + } + + var carry = 0; + var v = Number.NaN; + var prev; + + do { + + prev = v; + v = d.getTime(); + ticks.push(v); + + if (unit == "month" || unit == "quarter") { + if (tickSize < 1) { + + // a bit complicated - we'll divide the + // month/quarter up but we need to take + // care of fractions so we don't end up in + // the middle of a day + + d.setDate(1); + var start = d.getTime(); + d.setMonth(d.getMonth() + + (unit == "quarter" ? 3 : 1)); + var end = d.getTime(); + d.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize); + carry = d.getHours(); + d.setHours(0); + } else { + d.setMonth(d.getMonth() + + tickSize * (unit == "quarter" ? 3 : 1)); + } + } else if (unit == "year") { + d.setFullYear(d.getFullYear() + tickSize); + } else { + d.setTime(v + step); + } + } while (v < axis.max && v != prev); + + return ticks; + }; + + axis.tickFormatter = function (v, axis) { + + var d = dateGenerator(v, axis.options); + + // first check global format + + if (opts.timeformat != null) { + return formatDate(d, opts.timeformat, opts.monthNames, opts.dayNames); + } + + // possibly use quarters if quarters are mentioned in + // any of these places + + var useQuarters = (axis.options.tickSize && + axis.options.tickSize[1] == "quarter") || + (axis.options.minTickSize && + axis.options.minTickSize[1] == "quarter"); + + var t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]]; + var span = axis.max - axis.min; + var suffix = (opts.twelveHourClock) ? " %p" : ""; + var hourCode = (opts.twelveHourClock) ? "%I" : "%H"; + var fmt; + + if (t < timeUnitSize.minute) { + fmt = hourCode + ":%M:%S" + suffix; + } else if (t < timeUnitSize.day) { + if (span < 2 * timeUnitSize.day) { + fmt = hourCode + ":%M" + suffix; + } else { + fmt = "%b %d " + hourCode + ":%M" + suffix; + } + } else if (t < timeUnitSize.month) { + fmt = "%b %d"; + } else if ((useQuarters && t < timeUnitSize.quarter) || + (!useQuarters && t < timeUnitSize.year)) { + if (span < timeUnitSize.year) { + fmt = "%b"; + } else { + fmt = "%b %Y"; + } + } else if (useQuarters && t < timeUnitSize.year) { + if (span < timeUnitSize.year) { + fmt = "Q%q"; + } else { + fmt = "Q%q %Y"; + } + } else { + fmt = "%Y"; + } + + var rt = formatDate(d, fmt, opts.monthNames, opts.dayNames); + + return rt; + }; + } + }); + }); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'time', + version: '1.0' + }); + + // Time-axis support used to be in Flot core, which exposed the + // formatDate function on the plot object. Various plugins depend + // on the function, so we need to re-expose it here. + + $.plot.formatDate = formatDate; + $.plot.dateGenerator = dateGenerator; + +})(jQuery); diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.js b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.js new file mode 100644 index 0000000..e41f0ab --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/jquery.js @@ -0,0 +1,9472 @@ +/*! + * jQuery JavaScript Library v1.8.3 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2012 jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: Tue Nov 13 2012 08:20:33 GMT-0500 (Eastern Standard Time) + */ +(function( window, undefined ) { +var + // A central reference to the root jQuery(document) + rootjQuery, + + // The deferred used on DOM ready + readyList, + + // Use the correct document accordingly with window argument (sandbox) + document = window.document, + location = window.location, + navigator = window.navigator, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // Save a reference to some core methods + core_push = Array.prototype.push, + core_slice = Array.prototype.slice, + core_indexOf = Array.prototype.indexOf, + core_toString = Object.prototype.toString, + core_hasOwn = Object.prototype.hasOwnProperty, + core_trim = String.prototype.trim, + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Used for matching numbers + core_pnum = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source, + + // Used for detecting and trimming whitespace + core_rnotwhite = /\S/, + core_rspace = /\s+/, + + // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE) + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + rquickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, + rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/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(); + }, + + // The ready event handler and self cleanup method + DOMContentLoaded = function() { + if ( document.addEventListener ) { + document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + jQuery.ready(); + } else if ( document.readyState === "complete" ) { + // we're here because readyState === "complete" in oldIE + // which is good enough for us to call the dom ready! + document.detachEvent( "onreadystatechange", DOMContentLoaded ); + jQuery.ready(); + } + }, + + // [[Class]] -> type pairs + class2type = {}; + +jQuery.fn = jQuery.prototype = { + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem, ret, doc; + + // Handle $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt(0) === "<" && selector.charAt( 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; + doc = ( context && context.nodeType ? context.ownerDocument || context : document ); + + // scripts is true for back-compat + selector = jQuery.parseHTML( match[1], doc, true ); + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + this.attr.call( selector, context, true ); + } + + return jQuery.merge( this, selector ); + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we 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 || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The current version of jQuery being used + jquery: "1.8.3", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + toArray: function() { + return core_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 a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems, name, selector ) { + + // 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; + + if ( name === "find" ) { + ret.selector = this.selector + ( this.selector ? " " : "" ) + selector; + } else if ( name ) { + ret.selector = this.selector + "." + name + "(" + selector + ")"; + } + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; + }, + + eq: function( i ) { + i = +i; + return i === -1 ? + this.slice( i ) : + this.slice( i, i + 1 ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + slice: function() { + return this.pushStack( core_slice.apply( this, arguments ), + "slice", core_slice.call(arguments).join(",") ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: core_push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +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; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // 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 ( length === i ) { + 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({ + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // 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; + } + + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready, 1 ); + } + + // 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.trigger ) { + jQuery( document ).trigger("ready").off("ready"); + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + isWindow: function( obj ) { + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + return obj == null ? + String( obj ) : + class2type[ core_toString.call(obj) ] || "object"; + }, + + isPlainObject: function( obj ) { + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !core_hasOwn.call(obj, "constructor") && + !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for ( key in obj ) {} + + return key === undefined || core_hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + // data: string of html + // context (optional): If specified, the fragment will be created in this context, defaults to document + // scripts (optional): If true, will include scripts passed in the html string + parseHTML: function( data, context, scripts ) { + var parsed; + if ( !data || typeof data !== "string" ) { + return null; + } + if ( typeof context === "boolean" ) { + scripts = context; + context = 0; + } + context = context || document; + + // Single tag + if ( (parsed = rsingleTag.exec( data )) ) { + return [ context.createElement( parsed[1] ) ]; + } + + parsed = jQuery.buildFragment( [ data ], context, scripts ? null : [] ); + return jQuery.merge( [], + (parsed.cacheable ? jQuery.clone( parsed.fragment ) : parsed.fragment).childNodes ); + }, + + parseJSON: function( data ) { + if ( !data || typeof data !== "string") { + return null; + } + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + + } + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + if ( !data || typeof data !== "string" ) { + return null; + } + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && core_rnotwhite.test( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // 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(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var name, + i = 0, + length = obj.length, + isObj = length === undefined || jQuery.isFunction( obj ); + + if ( args ) { + if ( isObj ) { + for ( name in obj ) { + if ( callback.apply( obj[ name ], args ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.apply( obj[ i++ ], args ) === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isObj ) { + for ( name in obj ) { + if ( callback.call( obj[ name ], name, obj[ name ] ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.call( obj[ i ], i, obj[ i++ ] ) === false ) { + break; + } + } + } + } + + return obj; + }, + + // Use native String.trim function wherever possible + trim: core_trim && !core_trim.call("\uFEFF\xA0") ? + function( text ) { + return text == null ? + "" : + core_trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var type, + ret = results || []; + + if ( arr != null ) { + // The window, strings (and functions) also have 'length' + // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 + type = jQuery.type( arr ); + + if ( arr.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( arr ) ) { + core_push.call( ret, arr ); + } else { + jQuery.merge( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + var len; + + if ( arr ) { + if ( core_indexOf ) { + return core_indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var l = second.length, + i = first.length, + j = 0; + + if ( typeof l === "number" ) { + for ( ; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var retVal, + ret = [], + i = 0, + length = elems.length; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, key, + ret = [], + i = 0, + length = elems.length, + // jquery objects are treated as arrays + isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( key in elems ) { + value = callback( elems[ key ], key, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return ret.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 = core_slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context, args.concat( core_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; + }, + + // Multifunctional method to get and set values of a collection + // The value/s can optionally be executed if it's a function + access: function( elems, fn, key, value, chainable, emptyGet, pass ) { + var exec, + bulk = key == null, + i = 0, + length = elems.length; + + // Sets many values + if ( key && typeof key === "object" ) { + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], 1, emptyGet, value ); + } + chainable = 1; + + // Sets one value + } else if ( value !== undefined ) { + // Optionally, function values get executed if exec is true + exec = pass === undefined && jQuery.isFunction( value ); + + if ( bulk ) { + // Bulk operations only iterate when executing function values + if ( exec ) { + exec = fn; + fn = function( elem, key, value ) { + return exec.call( jQuery( elem ), value ); + }; + + // Otherwise they run against the entire set + } else { + fn.call( elems, value ); + fn = null; + } + } + + if ( fn ) { + for (; i < length; i++ ) { + fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); + } + } + + chainable = 1; + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; + }, + + now: function() { + return ( new Date() ).getTime(); + } +}); + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // we once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready, 1 ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", jQuery.ready, false ); + + // If IE event model is used + } else { + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", DOMContentLoaded ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", jQuery.ready ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch(e) {} + + if ( top && top.doScroll ) { + (function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll("left"); + } catch(e) { + return setTimeout( doScrollCheck, 50 ); + } + + // and execute any waiting functions + jQuery.ready(); + } + })(); + } + } + } + return readyList.promise( obj ); +}; + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.split( core_rspace ), 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" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // Flag to know if list is currently firing + firing, + // First callback to fire (used internally by add and fireWith) + firingStart, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Control if a given callback is in the list + has: function( fn ) { + return jQuery.inArray( fn, list ) > -1; + }, + // Remove all callbacks from the list + empty: function() { + list = []; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( list && ( !fired || stack ) ) { + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + 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 action = tuple[ 0 ], + fn = fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ]( jQuery.isFunction( fn ) ? + function() { + var returned = fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] ); + } + } : + newDefer[ action ] + ); + }); + 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 ] = list.fire + deferred[ tuple[0] ] = list.fire; + 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 = core_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 ? core_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() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); +jQuery.support = (function() { + + var support, + all, + a, + select, + opt, + input, + fragment, + eventName, + i, + isSupported, + clickFn, + div = document.createElement("div"); + + // Setup + div.setAttribute( "className", "t" ); + div.innerHTML = "
    a"; + + // Support tests won't run in some limited or non-browser environments + all = div.getElementsByTagName("*"); + a = div.getElementsByTagName("a")[ 0 ]; + if ( !all || !a || !all.length ) { + return {}; + } + + // First batch of tests + select = document.createElement("select"); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName("input")[ 0 ]; + + a.style.cssText = "top:1px;float:left;opacity:.5"; + support = { + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: ( div.firstChild.nodeType === 3 ), + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: !div.getElementsByTagName("tbody").length, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: !!div.getElementsByTagName("link").length, + + // Get the style information from getAttribute + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: ( a.getAttribute("href") === "/a" ), + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + opacity: /^0.5/.test( a.style.opacity ), + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: !!a.style.cssFloat, + + // Make sure that if no value is specified for a checkbox + // that it defaults to "on". + // (WebKit defaults to "" instead) + checkOn: ( input.value === "on" ), + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + optSelected: opt.selected, + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + + // Tests for enctype support on a form (#6743) + enctype: !!document.createElement("form").enctype, + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>", + + // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode + boxModel: ( document.compatMode === "CSS1Compat" ), + + // Will be defined later + submitBubbles: true, + changeBubbles: true, + focusinBubbles: false, + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true, + boxSizingReliable: true, + pixelPosition: false + }; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Test to see if it's possible to delete an expando from an element + // Fails in Internet Explorer + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { + div.attachEvent( "onclick", clickFn = function() { + // Cloning a node shouldn't copy over any + // bound event handlers (IE does this) + support.noCloneEvent = false; + }); + div.cloneNode( true ).fireEvent("onclick"); + div.detachEvent( "onclick", clickFn ); + } + + // Check if a radio maintains its value + // after being appended to the DOM + input = document.createElement("input"); + input.value = "t"; + input.setAttribute( "type", "radio" ); + support.radioValue = input.value === "t"; + + input.setAttribute( "checked", "checked" ); + + // #11217 - WebKit loses check when the name is after the checked attribute + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + fragment = document.createDocumentFragment(); + fragment.appendChild( div.lastChild ); + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + fragment.removeChild( input ); + fragment.appendChild( div ); + + // Technique from Juriy Zaytsev + // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/ + // We only care about the case where non-standard event systems + // are used, namely in IE. Short-circuiting here helps us to + // avoid an eval call (in setAttribute) which can cause CSP + // to go haywire. See: https://developer.mozilla.org/en/Security/CSP + if ( div.attachEvent ) { + for ( i in { + submit: true, + change: true, + focusin: true + }) { + eventName = "on" + i; + isSupported = ( eventName in div ); + if ( !isSupported ) { + div.setAttribute( eventName, "return;" ); + isSupported = ( typeof div[ eventName ] === "function" ); + } + support[ i + "Bubbles" ] = isSupported; + } + } + + // Run tests that need a body at doc ready + jQuery(function() { + var container, div, tds, marginDiv, + divReset = "padding:0;margin:0;border:0;display:block;overflow:hidden;", + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + container = document.createElement("div"); + container.style.cssText = "visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px"; + body.insertBefore( container, body.firstChild ); + + // Construct the test element + div = document.createElement("div"); + container.appendChild( div ); + + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + // (only IE 8 fails this test) + div.innerHTML = "
    t
    "; + tds = div.getElementsByTagName("td"); + tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none"; + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Check if empty table cells still have offsetWidth/Height + // (IE <= 8 fail this test) + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Check box-sizing and margin behavior + div.innerHTML = ""; + div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;"; + support.boxSizing = ( div.offsetWidth === 4 ); + support.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 ); + + // NOTE: To any future maintainer, we've window.getComputedStyle + // because jsdom on node.js will break without it. + if ( window.getComputedStyle ) { + support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; + support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. For more + // info see bug #3333 + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + marginDiv = document.createElement("div"); + marginDiv.style.cssText = div.style.cssText = divReset; + marginDiv.style.marginRight = marginDiv.style.width = "0"; + div.style.width = "1px"; + div.appendChild( marginDiv ); + support.reliableMarginRight = + !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); + } + + if ( typeof div.style.zoom !== "undefined" ) { + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + // (IE < 8 does this) + div.innerHTML = ""; + div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1"; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 ); + + // Check if elements with layout shrink-wrap their children + // (IE 6 does this) + div.style.display = "block"; + div.style.overflow = "visible"; + div.innerHTML = "
    "; + div.firstChild.style.width = "5px"; + support.shrinkWrapBlocks = ( div.offsetWidth !== 3 ); + + container.style.zoom = 1; + } + + // Null elements to avoid leaks in IE + body.removeChild( container ); + container = div = tds = marginDiv = null; + }); + + // Null elements to avoid leaks in IE + fragment.removeChild( div ); + all = a = select = opt = input = fragment = div = null; + + return support; +})(); +var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, + rmultiDash = /([A-Z])/g; + +jQuery.extend({ + cache: {}, + + deletedIds: [], + + // Remove at next major release (1.9/2.0) + uuid: 0, + + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", + "applet": true + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, ret, + internalKey = jQuery.expando, + getByName = typeof name === "string", + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + elem[ internalKey ] = id = jQuery.deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // Avoids exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( getByName ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; + }, + + removeData: function( elem, name, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, l, + + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split(" "); + } + } + } + + for ( i = 0, l = name.length; i < l; i++ ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + } else if ( jQuery.support.deleteExpando || cache != cache.window ) { + delete cache[ id ]; + + // When all else fails, null + } else { + cache[ id ] = null; + } + }, + + // For internal use only. + _data: function( elem, name, data ) { + return jQuery.data( elem, name, data, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ]; + + // nodes accept data unless otherwise specified; rejection can be conditional + return !noData || noData !== true && elem.getAttribute("classid") === noData; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var parts, part, attr, name, l, + elem = this[0], + i = 0, + data = null; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + attr = elem.attributes; + for ( l = attr.length; i < l; i++ ) { + name = attr[i].name; + + if ( !name.indexOf( "data-" ) ) { + name = jQuery.camelCase( name.substring(5) ); + + dataAttr( elem, name, data[ name ] ); + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + parts = key.split( ".", 2 ); + parts[1] = parts[1] ? "." + parts[1] : ""; + part = parts[1] + "!"; + + return jQuery.access( this, function( value ) { + + if ( value === undefined ) { + data = this.triggerHandler( "getData" + part, [ parts[0] ] ); + + // Try to fetch any internally stored data first + if ( data === undefined && elem ) { + data = jQuery.data( elem, key ); + data = dataAttr( elem, key, data ); + } + + return data === undefined && parts[1] ? + this.data( parts[0] ) : + data; + } + + parts[1] = value; + this.each(function() { + var self = jQuery( this ); + + self.triggerHandler( "setData" + part, parts ); + jQuery.data( this, key, value ); + self.triggerHandler( "changeData" + part, parts ); + }); + }, null, value, arguments.length > 1, null, false ); + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).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 + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( 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 intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + jQuery.removeData( elem, type + "queue", true ); + jQuery.removeData( elem, key, true ); + }) + }); + } +}); + +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 ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + 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 = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + 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 = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var nodeHook, boolHook, fixSpecified, + rclass = /[\t\r\n]/g, + rreturn = /\r/g, + rtype = /^(?:button|input)$/i, + rfocusable = /^(?:button|input|object|select|textarea)$/i, + rclickable = /^a(?:rea|)$/i, + rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classNames, i, l, elem, + setClass, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call(this, j, this.className) ); + }); + } + + if ( value && typeof value === "string" ) { + classNames = value.split( core_rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 ) { + if ( !elem.className && classNames.length === 1 ) { + elem.className = value; + + } else { + setClass = " " + elem.className + " "; + + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + if ( setClass.indexOf( " " + classNames[ c ] + " " ) < 0 ) { + setClass += classNames[ c ] + " "; + } + } + elem.className = jQuery.trim( setClass ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var removes, className, elem, c, cl, i, l; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call(this, j, this.className) ); + }); + } + if ( (value && typeof value === "string") || value === undefined ) { + removes = ( value || "" ).split( core_rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + if ( elem.nodeType === 1 && elem.className ) { + + className = (" " + elem.className + " ").replace( rclass, " " ); + + // loop over each item in the removal list + for ( c = 0, cl = removes.length; c < cl; c++ ) { + // Remove until there is nothing to remove, + while ( className.indexOf(" " + removes[ c ] + " ") >= 0 ) { + className = className.replace( " " + removes[ c ] + " " , " " ); + } + } + elem.className = value ? jQuery.trim( className ) : ""; + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.split( core_rspace ); + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space separated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + } else if ( type === "undefined" || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // toggle whole className + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { + return true; + } + } + + return false; + }, + + 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, + self = jQuery(this); + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.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 ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + 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 ]; + + // oldIE 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 + ( jQuery.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 values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + // Unused in 1.8, left in so attrFn-stabbers won't die; remove in 1.9 + attrFn: {}, + + attr: function( elem, name, value, pass ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( pass && jQuery.isFunction( jQuery.fn[ name ] ) ) { + return jQuery( elem )[ name ]( value ); + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( notxml ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + + } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, value + "" ); + return value; + } + + } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + + ret = elem.getAttribute( name ); + + // Non-existent attributes return null, we normalize to undefined + return ret === null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var propName, attrNames, name, isBool, + i = 0; + + if ( value && elem.nodeType === 1 ) { + + attrNames = value.split( core_rspace ); + + for ( ; i < attrNames.length; i++ ) { + name = attrNames[ i ]; + + if ( name ) { + propName = jQuery.propFix[ name ] || name; + isBool = rboolean.test( name ); + + // See #9699 for explanation of this approach (setting first, then removal) + // Do not do this for boolean attributes (see #10870) + if ( !isBool ) { + jQuery.attr( elem, name, "" ); + } + elem.removeAttribute( getSetAttribute ? name : propName ); + + // Set corresponding property to false for boolean attributes + if ( isBool && propName in elem ) { + elem[ propName ] = false; + } + } + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + // We can't allow the type property to be changed (since it causes problems in IE) + if ( rtype.test( elem.nodeName ) && elem.parentNode ) { + jQuery.error( "type property can't be changed" ); + } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to it's default in case type is set after value + // This is for element creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + }, + // Use the value property for back compat + // Use the nodeHook for button elements in IE6/7 (#1954) + value: { + get: function( elem, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.get( elem, name ); + } + return name in elem ? + elem.value : + null; + }, + set: function( elem, value, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.set( elem, value, name ); + } + // Does not return so that setAttribute is also used + elem.value = value; + } + } + }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // 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; + + } else { + return ( elem[ name ] = value ); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + 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/ + var attributeNode = elem.getAttributeNode("tabindex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + } +}); + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + // Align boolean attributes with corresponding properties + // Fall back to attribute presence where some booleans are not supported + var attrNode, + property = jQuery.prop( elem, name ); + return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + var propName; + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + // value is true since we know at this point it's type boolean and not false + // Set boolean attributes to the same name and set the DOM property + propName = jQuery.propFix[ name ] || name; + if ( propName in elem ) { + // Only set the IDL specifically if it already exists on the element + elem[ propName ] = true; + } + + elem.setAttribute( name, name.toLowerCase() ); + } + return name; + } +}; + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + fixSpecified = { + name: true, + id: true, + coords: true + }; + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = jQuery.valHooks.button = { + get: function( elem, name ) { + var ret; + ret = elem.getAttributeNode( name ); + return ret && ( fixSpecified[ name ] ? ret.value !== "" : ret.specified ) ? + ret.value : + undefined; + }, + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + ret = document.createAttribute( name ); + elem.setAttributeNode( ret ); + } + return ( ret.value = value + "" ); + } + }; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }); + }); + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + get: nodeHook.get, + set: function( elem, value, name ) { + if ( value === "" ) { + value = "false"; + } + nodeHook.set( elem, value, name ); + } + }; +} + + +// Some attributes require a special call on IE +if ( !jQuery.support.hrefNormalized ) { + jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + get: function( elem ) { + var ret = elem.getAttribute( name, 2 ); + return ret === null ? undefined : ret; + } + }); + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Normalize to lowercase since IE uppercases css property names + return elem.style.cssText.toLowerCase() || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = value + "" ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }); +} + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }); +}); +var rformElems = /^(?:textarea|input|select)$/i, + rtypenamespace = /^([^\.]*|)(?:\.(.+)|)$/, + rhoverHack = /(?:^|\s)hover(\.\S+|)\b/, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + hoverHack = function( events ) { + return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" ); + }; + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + add: function( elem, types, handler, data, selector ) { + + var elemData, eventHandle, events, + t, tns, type, namespaces, handleObj, + handleObjIn, handlers, special; + + // Don't attach events to noData or text/comment nodes (allow plain objects tho) + if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) { + 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 + events = elemData.events; + if ( !events ) { + elemData.events = events = {}; + } + eventHandle = elemData.handle; + if ( !eventHandle ) { + elemData.handle = eventHandle = 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" && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + // jQuery(...).bind("mouseover mouseout", fn); + types = jQuery.trim( hoverHack(types) ).split( " " ); + for ( t = 0; t < types.length; t++ ) { + + tns = rtypenamespace.exec( types[t] ) || []; + type = tns[1]; + namespaces = ( tns[2] || "" ).split( "." ).sort(); + + // 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: tns[1], + 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 + handlers = events[ type ]; + if ( !handlers ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + 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; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + global: {}, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var t, tns, type, origType, namespaces, origCount, + j, events, special, eventType, handleObj, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = jQuery.trim( hoverHack( types || "" ) ).split(" "); + for ( t = 0; t < types.length; t++ ) { + tns = rtypenamespace.exec( types[t] ) || []; + type = origType = tns[1]; + namespaces = tns[2]; + + // 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; + eventType = events[ type ] || []; + origCount = eventType.length; + namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.|)") + "(\\.|$)") : null; + + // Remove matching events + for ( j = 0; j < eventType.length; j++ ) { + handleObj = eventType[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !namespaces || namespaces.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + eventType.splice( j--, 1 ); + + if ( handleObj.selector ) { + eventType.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 ( eventType.length === 0 && origCount !== eventType.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery.removeData( elem, "events", true ); + } + }, + + // Events that are safe to short-circuit if no handlers are attached. + // Native DOM events should not be added, they may have inline handlers. + customEvent: { + "getData": true, + "setData": true, + "changeData": true + }, + + trigger: function( event, data, elem, onlyHandlers ) { + // Don't do events on text and comment nodes + if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) { + return; + } + + // Event object or event type + var cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType, + type = event.type || event, + namespaces = []; + + // 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( "!" ) >= 0 ) { + // Exclusive events trigger only for the exact event (no namespaces) + type = type.slice(0, -1); + exclusive = true; + } + + if ( type.indexOf( "." ) >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + + if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { + // No jQuery handlers for this event type, and it can't have inline handlers + return; + } + + // Caller can pass in an Event, Object, or just an event type string + event = typeof event === "object" ? + // jQuery.Event object + event[ jQuery.expando ] ? event : + // Object literal + new jQuery.Event( type, event ) : + // Just the event type (string) + new jQuery.Event( type ); + + event.type = type; + event.isTrigger = true; + event.exclusive = exclusive; + event.namespace = namespaces.join( "." ); + event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null; + ontype = type.indexOf( ":" ) < 0 ? "on" + type : ""; + + // Handle a global trigger + if ( !elem ) { + + // TODO: Stop taunting the data cache; remove global events and always attach to document + cache = jQuery.cache; + for ( i in cache ) { + if ( cache[ i ].events && cache[ i ].events[ type ] ) { + jQuery.event.trigger( event, data, cache[ i ].handle.elem, true ); + } + } + return; + } + + // 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 ? jQuery.makeArray( data ) : []; + data.unshift( event ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( 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) + eventPath = [[ elem, special.bindType || type ]]; + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode; + for ( old = elem; cur; cur = cur.parentNode ) { + eventPath.push([ cur, bubbleType ]); + old = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( old === (elem.ownerDocument || document) ) { + eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]); + } + } + + // Fire handlers on the event path + for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) { + + cur = eventPath[i][0]; + event.type = eventPath[i][1]; + + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + // Note that this is a bare JS function and not a jQuery handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === 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( elem.ownerDocument, data ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + // IE<9 dies on focus/blur to hidden element (#1486) + if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + old = elem[ ontype ]; + + if ( old ) { + 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 ( old ) { + elem[ ontype ] = old; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event || window.event ); + + var i, j, cur, ret, selMatch, matched, matches, handleObj, sel, related, + handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []), + delegateCount = handlers.delegateCount, + args = core_slice.call( arguments ), + run_all = !event.exclusive && !event.namespace, + special = jQuery.event.special[ event.type ] || {}, + handlerQueue = []; + + // 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 that should run if there are delegated events + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && !(event.button && event.type === "click") ) { + + for ( cur = event.target; cur != this; cur = cur.parentNode || this ) { + + // Don't process clicks (ONLY) on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.disabled !== true || event.type !== "click" ) { + selMatch = {}; + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + sel = handleObj.selector; + + if ( selMatch[ sel ] === undefined ) { + selMatch[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( selMatch[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, matches: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( handlers.length > delegateCount ) { + handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) }); + } + + // Run delegates first; they may want to stop propagation beneath us + for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) { + matched = handlerQueue[ i ]; + event.currentTarget = matched.elem; + + for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) { + handleObj = matched.matches[ j ]; + + // Triggered event must either 1) be non-exclusive and have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) { + + event.data = handleObj.data; + event.handleObj = handleObj; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + event.result = ret; + if ( 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; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 *** + props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget 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 fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button, + fromElement = original.fromElement; + + // 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 relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // 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, + originalEvent = event, + fixHook = jQuery.event.fixHooks[ event.type ] || {}, + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = jQuery.Event( originalEvent ); + + for ( i = copy.length; i; ) { + prop = copy[ --i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Target should not be a text node (#504, Safari) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328; IE6/7/8) + event.metaKey = !!event.metaKey; + + return fixHook.filter? fixHook.filter( event, originalEvent ) : event; + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + + focus: { + delegateType: "focusin" + }, + blur: { + delegateType: "focusout" + }, + + beforeunload: { + setup: function( data, namespaces, eventHandle ) { + // We only want to do this special case on windows + if ( jQuery.isWindow( this ) ) { + this.onbeforeunload = eventHandle; + } + }, + + teardown: function( namespaces, eventHandle ) { + if ( this.onbeforeunload === eventHandle ) { + this.onbeforeunload = null; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +// Some plugins are using, but it's undocumented/deprecated and will be removed. +// The 1.7 special event interface should provide all the hooks needed now. +jQuery.event.handle = jQuery.event.dispatch; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 + // detachEvent needed property on element, by name of that event, to properly expose it to GC + if ( typeof elem[ name ] === "undefined" ) { + elem[ name ] = null; + } + + elem.detachEvent( name, 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.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? 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; +}; + +function returnFalse() { + return false; +} +function returnTrue() { + return 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 = { + preventDefault: function() { + this.isDefaultPrevented = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + + // if preventDefault exists run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // otherwise set the returnValue property of the original event to false (IE) + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + this.isPropagationStopped = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + // if stopPropagation exists run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + // otherwise set the cancelBubble property of the original event to true (IE) + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj, + selector = handleObj.selector; + + // For mousenter/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; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !jQuery._data( form, "_submit_attached" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submit_bubble = true; + }); + jQuery._data( form, "_submit_attached", true ); + } + }); + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( event._submit_bubble ) { + delete event._submit_bubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + } + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + } + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event, true ); + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "_change_attached" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + jQuery._data( elem, "_change_attached", true ); + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { // && selector != null + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + 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 this; + } + + 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 this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( 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 ); + }); + }, + + bind: function( types, data, fn ) { + return this.on( types, null, data, fn ); + }, + unbind: function( types, fn ) { + return this.off( types, null, fn ); + }, + + live: function( types, data, fn ) { + jQuery( this.context ).on( types, this.selector, data, fn ); + return this; + }, + die: function( types, fn ) { + jQuery( this.context ).off( types, this.selector || "**", fn ); + return this; + }, + + 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 ); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + if ( this[0] ) { + return jQuery.event.trigger( type, data, this[0], true ); + } + }, + + toggle: function( fn ) { + // Save reference to arguments for access in closure + var args = arguments, + guid = fn.guid || jQuery.guid++, + i = 0, + toggler = function( event ) { + // Figure out which function to execute + var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i; + jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 ); + + // Make sure that clicks stop + event.preventDefault(); + + // and execute the function + return args[ lastToggle ].apply( this, arguments ) || false; + }; + + // link all the functions, so any of them can unbind this click handler + toggler.guid = guid; + while ( i < args.length ) { + args[ i++ ].guid = guid; + } + + return this.click( toggler ); + }, + + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +}); + +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 ) { + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; + + if ( rkeyEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks; + } + + if ( rmouseEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks; + } +}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2012 jQuery Foundation and other contributors + * Released under the MIT license + * http://sizzlejs.com/ + */ +(function( window, undefined ) { + +var cachedruns, + assertGetIdNotName, + Expr, + getText, + isXML, + contains, + compile, + sortOrder, + hasDuplicate, + outermostContext, + + baseHasDuplicate = true, + strundefined = "undefined", + + expando = ( "sizcache" + Math.random() ).replace( ".", "" ), + + Token = String, + document = window.document, + docElem = document.documentElement, + dirruns = 0, + done = 0, + pop = [].pop, + push = [].push, + slice = [].slice, + // Use a stripped-down indexOf if a native one is unavailable + indexOf = [].indexOf || function( elem ) { + var i = 0, + len = this.length; + for ( ; i < len; i++ ) { + if ( this[i] === elem ) { + return i; + } + } + return -1; + }, + + // Augment a function for special use by Sizzle + markFunction = function( fn, value ) { + fn[ expando ] = value == null || value; + return fn; + }, + + createCache = function() { + var cache = {}, + keys = []; + + return markFunction(function( key, value ) { + // Only keep the most recent entries + if ( keys.push( key ) > Expr.cacheLength ) { + delete cache[ keys.shift() ]; + } + + // Retrieve with (key + " ") to avoid collision with native Object.prototype properties (see Issue #157) + return (cache[ key + " " ] = value); + }, cache ); + }, + + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + + // Regex + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier (http://www.w3.org/TR/css3-selectors/#attribute-selectors) + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors + operators = "([*^$|!~]?=)", + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + + "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", + + // Prefer arguments not in parens/brackets, + // then attribute selectors and non-pseudos (denoted by :), + // then anything else + // These preferences are here to reduce the number of selectors + // needing tokenize in the PSEUDO preFilter + pseudos = ":(" + characterEncoding + ")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:" + attributes + ")|[^:]|\\\\.)*|.*))\\)|)", + + // For matchExpr.POS and matchExpr.needsContext + pos = ":(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ), + rpseudo = new RegExp( pseudos ), + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/, + + rnot = /^:not/, + rsibling = /[\x20\t\r\n\f]*[+~]/, + rendsWithNot = /:not\($/, + + rheader = /h\d/i, + rinputs = /input|select|textarea|button/i, + + rbackslash = /\\(?!\\)/g, + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "POS": new RegExp( pos, "i" ), + "CHILD": new RegExp( "^:(only|nth|first|last)-child(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + // For use in libraries implementing .is() + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|" + pos, "i" ) + }, + + // Support + + // Used for testing something on an element + assert = function( fn ) { + var div = document.createElement("div"); + + try { + return fn( div ); + } catch (e) { + return false; + } finally { + // release memory in IE + div = null; + } + }, + + // Check if getElementsByTagName("*") returns only elements + assertTagNameNoComments = assert(function( div ) { + div.appendChild( document.createComment("") ); + return !div.getElementsByTagName("*").length; + }), + + // Check if getAttribute returns normalized href attributes + assertHrefNotNormalized = assert(function( div ) { + div.innerHTML = ""; + return div.firstChild && typeof div.firstChild.getAttribute !== strundefined && + div.firstChild.getAttribute("href") === "#"; + }), + + // Check if attributes should be retrieved by attribute nodes + assertAttributes = assert(function( div ) { + div.innerHTML = ""; + var type = typeof div.lastChild.getAttribute("multiple"); + // IE8 returns a string for some attributes even when not present + return type !== "boolean" && type !== "string"; + }), + + // Check if getElementsByClassName can be trusted + assertUsableClassName = assert(function( div ) { + // Opera can't find a second classname (in 9.6) + div.innerHTML = ""; + if ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) { + return false; + } + + // Safari 3.2 caches class attributes and doesn't catch changes + div.lastChild.className = "e"; + return div.getElementsByClassName("e").length === 2; + }), + + // Check if getElementById returns elements by name + // Check if getElementsByName privileges form controls or returns elements by ID + assertUsableName = assert(function( div ) { + // Inject content + div.id = expando + 0; + div.innerHTML = "
    "; + docElem.insertBefore( div, docElem.firstChild ); + + // Test + var pass = document.getElementsByName && + // buggy browsers will return fewer than the correct 2 + document.getElementsByName( expando ).length === 2 + + // buggy browsers will return more than the correct 0 + document.getElementsByName( expando + 0 ).length; + assertGetIdNotName = !document.getElementById( expando ); + + // Cleanup + docElem.removeChild( div ); + + return pass; + }); + +// If slice is not available, provide a backup +try { + slice.call( docElem.childNodes, 0 )[0].nodeType; +} catch ( e ) { + slice = function( i ) { + var elem, + results = []; + for ( ; (elem = this[i]); i++ ) { + results.push( elem ); + } + return results; + }; +} + +function Sizzle( selector, context, results, seed ) { + results = results || []; + context = context || document; + var match, elem, xml, m, + nodeType = context.nodeType; + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + if ( nodeType !== 1 && nodeType !== 9 ) { + return []; + } + + xml = isXML( context ); + + if ( !xml && !seed ) { + if ( (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, slice.call(context.getElementsByTagName( selector ), 0) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && assertUsableClassName && context.getElementsByClassName ) { + push.apply( results, slice.call(context.getElementsByClassName( m ), 0) ); + return results; + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed, xml ); +} + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + return Sizzle( expr, null, null, [ elem ] ).length > 0; +}; + +// Returns a function to use in pseudos for input types +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 +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 +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]); + } + } + }); + }); +} + +/** + * 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 ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (see #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 + } else { + + // If no nodeType, this is expected to be an array + for ( ; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } + return ret; +}; + +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; +}; + +// Element contains another +contains = Sizzle.contains = 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) ); + } : + docElem.compareDocumentPosition ? + function( a, b ) { + return b && !!( a.compareDocumentPosition( b ) & 16 ); + } : + function( a, b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + return false; + }; + +Sizzle.attr = function( elem, name ) { + var val, + xml = isXML( elem ); + + if ( !xml ) { + name = name.toLowerCase(); + } + if ( (val = Expr.attrHandle[ name ]) ) { + return val( elem ); + } + if ( xml || assertAttributes ) { + return elem.getAttribute( name ); + } + val = elem.getAttributeNode( name ); + return val ? + typeof elem[ name ] === "boolean" ? + elem[ name ] ? name : null : + val.specified ? val.value : null : + null; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + // IE6/7 return a modified href + attrHandle: assertHrefNotNormalized ? + {} : + { + "href": function( elem ) { + return elem.getAttribute( "href", 2 ); + }, + "type": function( elem ) { + return elem.getAttribute("type"); + } + }, + + find: { + "ID": assertGetIdNotName ? + function( id, context, xml ) { + if ( typeof context.getElementById !== strundefined && !xml ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + } : + function( id, context, xml ) { + if ( typeof context.getElementById !== strundefined && !xml ) { + var m = context.getElementById( id ); + + return m ? + m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ? + [m] : + undefined : + []; + } + }, + + "TAG": assertTagNameNoComments ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + var elem, + tmp = [], + i = 0; + + for ( ; (elem = results[i]); i++ ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }, + + "NAME": assertUsableName && function( tag, context ) { + if ( typeof context.getElementsByName !== strundefined ) { + return context.getElementsByName( name ); + } + }, + + "CLASS": assertUsableClassName && function( className, context, xml ) { + if ( typeof context.getElementsByClassName !== strundefined && !xml ) { + return context.getElementsByClassName( className ); + } + } + }, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( rbackslash, "" ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[4] || match[5] || "" ).replace( rbackslash, "" ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 3 xn-component of xn+y argument ([+-]?\d*n|) + 4 sign of xn-component + 5 x of xn-component + 6 sign of y-component + 7 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1] === "nth" ) { + // nth-child requires argument + if ( !match[2] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[3] = +( match[3] ? match[4] + (match[5] || 1) : 2 * ( match[2] === "even" || match[2] === "odd" ) ); + match[4] = +( ( match[6] + match[7] ) || match[2] === "odd" ); + + // other types prohibit arguments + } else if ( match[2] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var unquoted, excess; + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + if ( match[3] ) { + match[2] = match[3]; + } else if ( (unquoted = match[4]) ) { + // Only check arguments that contain a pseudo + if ( 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 + unquoted = unquoted.slice( 0, excess ); + match[0] = match[0].slice( 0, excess ); + } + match[2] = unquoted; + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + "ID": assertGetIdNotName ? + function( id ) { + id = id.replace( rbackslash, "" ); + return function( elem ) { + return elem.getAttribute("id") === id; + }; + } : + function( id ) { + id = id.replace( rbackslash, "" ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === id; + }; + }, + + "TAG": function( nodeName ) { + if ( nodeName === "*" ) { + return function() { return true; }; + } + nodeName = nodeName.replace( rbackslash, "" ).toLowerCase(); + + return function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ expando ][ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem, context ) { + 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.substr( result.length - check.length ) === check : + operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.substr( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, argument, first, last ) { + + if ( type === "nth" ) { + return function( elem ) { + var node, diff, + parent = elem.parentNode; + + if ( first === 1 && last === 0 ) { + return true; + } + + if ( parent ) { + diff = 0; + for ( node = parent.firstChild; node; node = node.nextSibling ) { + if ( node.nodeType === 1 ) { + diff++; + if ( elem === node ) { + break; + } + } + } + } + + // Incorporate the offset (or cast to NaN), then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + }; + } + + return function( elem ) { + var node = elem; + + switch ( type ) { + case "only": + case "first": + while ( (node = node.previousSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + if ( type === "first" ) { + return true; + } + + node = elem; + + /* falls through */ + case "last": + while ( (node = node.nextSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + return true; + } + }; + }, + + "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.call( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + 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 ); + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + "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; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), + // not comment, processing instructions, or others + // Thanks to Diego Perini for the nodeName shortcut + // Greater than "@" means alpha characters (specifically not starting with "#" or "?") + var nodeType; + elem = elem.firstChild; + while ( elem ) { + if ( elem.nodeName > "@" || (nodeType = elem.nodeType) === 3 || nodeType === 4 ) { + return false; + } + elem = elem.nextSibling; + } + return true; + }, + + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "text": function( elem ) { + var type, attr; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && + (type = elem.type) === "text" && + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === type ); + }, + + // Input types + "radio": createInputPseudo("radio"), + "checkbox": createInputPseudo("checkbox"), + "file": createInputPseudo("file"), + "password": createInputPseudo("password"), + "image": createInputPseudo("image"), + + "submit": createButtonPseudo("submit"), + "reset": createButtonPseudo("reset"), + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "focus": function( elem ) { + var doc = elem.ownerDocument; + return elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + "active": function( elem ) { + return elem === elem.ownerDocument.activeElement; + }, + + // Positional types + "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 ) { + for ( var i = 0; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + for ( var i = 1; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + for ( var i = argument < 0 ? argument + length : argument; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + for ( var i = argument < 0 ? argument + length : argument; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +function siblingCheck( a, b, ret ) { + if ( a === b ) { + return ret; + } + + var cur = a.nextSibling; + + while ( cur ) { + if ( cur === b ) { + return -1; + } + + cur = cur.nextSibling; + } + + return 1; +} + +sortOrder = docElem.compareDocumentPosition ? + function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + return ( !a.compareDocumentPosition || !b.compareDocumentPosition ? + a.compareDocumentPosition : + a.compareDocumentPosition(b) & 4 + ) ? -1 : 1; + } : + function( a, b ) { + // The nodes are identical, we can exit early + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Fallback to using sourceIndex (in IE) if it's available on both nodes + } else if ( a.sourceIndex && b.sourceIndex ) { + return a.sourceIndex - b.sourceIndex; + } + + var al, bl, + ap = [], + bp = [], + aup = a.parentNode, + bup = b.parentNode, + cur = aup; + + // If the nodes are siblings (or identical) we can do a quick check + if ( aup === bup ) { + return siblingCheck( a, b ); + + // If no parents were found then the nodes are disconnected + } else if ( !aup ) { + return -1; + + } else if ( !bup ) { + return 1; + } + + // Otherwise they're somewhere else in the tree so we need + // to build up a full list of the parentNodes for comparison + while ( cur ) { + ap.unshift( cur ); + cur = cur.parentNode; + } + + cur = bup; + + while ( cur ) { + bp.unshift( cur ); + cur = cur.parentNode; + } + + al = ap.length; + bl = bp.length; + + // Start walking down the tree looking for a discrepancy + for ( var i = 0; i < al && i < bl; i++ ) { + if ( ap[i] !== bp[i] ) { + return siblingCheck( ap[i], bp[i] ); + } + } + + // We ended someplace up the tree so do a sibling check + return i === al ? + siblingCheck( a, bp[i], -1 ) : + siblingCheck( ap[i], b, 1 ); + }; + +// Always assume the presence of duplicates if sort doesn't +// pass them to our comparison function (as in Google Chrome). +[0, 0].sort( sortOrder ); +baseHasDuplicate = !hasDuplicate; + +// Document sorting and removing duplicates +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + i = 1, + j = 0; + + hasDuplicate = baseHasDuplicate; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( ; (elem = results[i]); i++ ) { + if ( elem === results[ i - 1 ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + return results; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +function tokenize( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ expando ][ 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 )) ) { + tokens.push( matched = new Token( match.shift() ) ); + soFar = soFar.slice( matched.length ); + + // Cast descendant combinators to space + matched.type = match[0].replace( rtrim, " " ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + + tokens.push( matched = new Token( match.shift() ) ); + soFar = soFar.slice( matched.length ); + matched.type = type; + matched.matches = match; + } + } + + 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 addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && combinator.dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( checkNonElements || elem.nodeType === 1 ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( !xml ) { + var cache, + dirkey = dirruns + " " + doneName + " ", + cachedkey = dirkey + cachedruns; + while ( (elem = elem[ dir ]) ) { + if ( checkNonElements || elem.nodeType === 1 ) { + if ( (cache = elem[ expando ]) === cachedkey ) { + return elem.sizset; + } else if ( typeof cache === "string" && cache.indexOf(dirkey) === 0 ) { + if ( elem.sizset ) { + return elem; + } + } else { + elem[ expando ] = cachedkey; + if ( matcher( elem, context, xml ) ) { + elem.sizset = true; + return elem; + } + elem.sizset = false; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( checkNonElements || elem.nodeType === 1 ) { + if ( matcher( elem, context, xml ) ) { + return elem; + } + } + } + } + }; +} + +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 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.call( 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.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + } ]; + + 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 && tokens.slice( 0, i - 1 ).join("").replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && tokens.join("") + ); + } + 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, expandContext ) { + var elem, j, matcher, + setMatched = [], + matchedCount = 0, + i = "0", + unmatched = seed && [], + outermost = expandContext != null, + contextBackup = outermostContext, + // We must always have either seed elements or context + elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ), + // Nested matchers should use non-integer dirruns + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.E); + + if ( outermost ) { + outermostContext = context !== document && context; + cachedruns = superMatcher.el; + } + + // Add elements passing elementMatchers directly to results + for ( ; (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + for ( j = 0; (matcher = elementMatchers[j]); j++ ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + cachedruns = ++superMatcher.el; + } + } + + // 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 ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + for ( j = 0; (matcher = setMatchers[j]); 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; + }; + + superMatcher.el = 0; + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ expando ][ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !group ) { + group = tokenize( selector ); + } + i = group.length; + while ( i-- ) { + cached = matcherFromTokens( group[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + } + return cached; +}; + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function select( selector, context, results, seed, xml ) { + var i, tokens, token, type, find, + match = tokenize( selector ), + j = match.length; + + if ( !seed ) { + // Try to minimize operations if there is only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + context.nodeType === 9 && !xml && + Expr.relative[ tokens[1].type ] ) { + + context = Expr.find["ID"]( token.matches[0].replace( rbackslash, "" ), context, xml )[0]; + if ( !context ) { + return results; + } + + selector = selector.slice( tokens.shift().length ); + } + + // Fetch a seed set for right-to-left matching + for ( i = matchExpr["POS"].test( selector ) ? -1 : tokens.length - 1; i >= 0; 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( rbackslash, "" ), + rsibling.test( tokens[0].type ) && context.parentNode || context, + xml + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && tokens.join(""); + if ( !selector ) { + push.apply( results, slice.call( seed, 0 ) ); + return results; + } + + break; + } + } + } + } + } + + // Compile and execute a filtering function + // Provide `match` to avoid retokenization if we modified the selector above + compile( selector, match )( + seed, + context, + xml, + results, + rsibling.test( selector ) + ); + return results; +} + +if ( document.querySelectorAll ) { + (function() { + var disconnectedMatch, + oldSelect = select, + rescape = /'|\\/g, + rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g, + + // qSa(:focus) reports false when true (Chrome 21), no need to also add to buggyMatches since matches checks buggyQSA + // A support test would require too much code (would include document ready) + rbuggyQSA = [ ":focus" ], + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + // A support test would require too much code (would include document ready) + // just skip matchesSelector for :active + rbuggyMatches = [ ":active" ], + matches = docElem.matchesSelector || + docElem.mozMatchesSelector || + docElem.webkitMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector; + + // 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 explictly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + div.innerHTML = ""; + + // IE8 - Some boolean attributes are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here (do not put tests after this one) + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + + // Opera 10-12/IE9 - ^= $= *= and empty values + // Should not select anything + div.innerHTML = "

    "; + if ( div.querySelectorAll("[test^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here (do not put tests after this one) + div.innerHTML = ""; + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push(":enabled", ":disabled"); + } + }); + + // rbuggyQSA always contains :focus, so no need for a length check + rbuggyQSA = /* rbuggyQSA.length && */ new RegExp( rbuggyQSA.join("|") ); + + select = function( selector, context, results, seed, xml ) { + // Only use querySelectorAll when not filtering, + // when this is not xml, + // and when no QSA bugs apply + if ( !seed && !xml && !rbuggyQSA.test( selector ) ) { + var groups, i, + old = true, + nid = expando, + newContext = context, + newSelector = context.nodeType === 9 && selector; + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + groups[i].join(""); + } + newContext = rsibling.test( selector ) && context.parentNode || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, slice.call( newContext.querySelectorAll( + newSelector + ), 0 ) ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + + return oldSelect( selector, context, results, seed, xml ); + }; + + if ( matches ) { + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + try { + matches.call( div, "[test!='']:sizzle" ); + rbuggyMatches.push( "!=", pseudos ); + } catch ( e ) {} + }); + + // rbuggyMatches always contains :active and :focus, so no need for a length check + rbuggyMatches = /* rbuggyMatches.length && */ new RegExp( rbuggyMatches.join("|") ); + + Sizzle.matchesSelector = function( elem, expr ) { + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + // rbuggyMatches always contains :active, so no need for an existence check + if ( !isXML( elem ) && !rbuggyMatches.test( expr ) && !rbuggyQSA.test( expr ) ) { + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || 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, null, null, [ elem ] ).length > 0; + }; + } + })(); +} + +// Deprecated +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Back-compat +function setFilters() {} +Expr.filters = setFilters.prototype = Expr.pseudos; +Expr.setFilters = new setFilters(); + +// Override sizzle attribute retrieval +Sizzle.attr = jQuery.attr; +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})( window ); +var runtil = /Until$/, + rparentsprev = /^(?:parents|prev(?:Until|All))/, + isSimple = /^.[^:#\[\.,]*$/, + rneedsContext = jQuery.expr.match.needsContext, + // 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({ + find: function( selector ) { + var i, l, length, n, r, ret, + self = this; + + if ( typeof selector !== "string" ) { + return jQuery( selector ).filter(function() { + for ( i = 0, l = self.length; i < l; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }); + } + + ret = this.pushStack( "", "find", selector ); + + for ( i = 0, l = this.length; i < l; i++ ) { + length = ret.length; + jQuery.find( selector, this[i], ret ); + + if ( i > 0 ) { + // Make sure that the results are unique + for ( n = length; n < ret.length; n++ ) { + for ( r = 0; r < length; r++ ) { + if ( ret[r] === ret[n] ) { + ret.splice(n--, 1); + break; + } + } + } + } + } + + return ret; + }, + + has: function( target ) { + var i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false), "not", selector); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true), "filter", selector ); + }, + + is: function( selector ) { + return !!selector && ( + typeof selector === "string" ? + // 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". + rneedsContext.test( selector ) ? + jQuery( selector, this.context ).index( this[0] ) >= 0 : + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + ret = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + cur = this[i]; + + while ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + } + cur = cur.parentNode; + } + } + + ret = ret.length > 1 ? jQuery.unique( ret ) : ret; + + return this.pushStack( ret, "closest", selectors ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? + all : + jQuery.unique( all ) ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +jQuery.fn.andSelf = jQuery.fn.addBack; + +// A painfully simple check to see if an element is disconnected +// from a document (should be improved, where feasible). +function isDisconnected( node ) { + return !node || !node.parentNode || node.parentNode.nodeType === 11; +} + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && 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 jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( this.length > 1 && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, core_slice.call( arguments ).join(",") ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : + jQuery.find.matches(expr, elems); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem, i ) { + return ( elem === qualifier ) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem, i ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; + }); +} +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rtbody = /]", "i"), + rcheckableType = /^(?:checkbox|radio)$/, + // checked="checked" or checked + rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, + rscriptType = /\/(java|ecma)script/i, + rcleanScript = /^\s*\s*$/g, + wrapMap = { + option: [ 1, "" ], + legend: [ 1, "
    ", "
    " ], + thead: [ 1, "", "
    " ], + tr: [ 2, "", "
    " ], + td: [ 3, "", "
    " ], + col: [ 2, "", "
    " ], + area: [ 1, "", "" ], + _default: [ 0, "", "" ] + }, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement("div") ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, +// unless wrapped in a div with non-breaking characters in front of it. +if ( !jQuery.support.htmlSerialize ) { + wrapMap._default = [ 1, "X
    ", "
    " ]; +} + +jQuery.fn.extend({ + text: function( value ) { + return jQuery.access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); + }, null, value, arguments.length ); + }, + + wrapAll: function( html ) { + 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 + var 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.firstChild && elem.firstChild.nodeType === 1 ) { + elem = elem.firstChild; + } + + 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(); + }, + + append: function() { + return this.domManip(arguments, true, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 ) { + this.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip(arguments, true, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 ) { + this.insertBefore( elem, this.firstChild ); + } + }); + }, + + before: function() { + if ( !isDisconnected( this[0] ) ) { + return this.domManip(arguments, false, function( elem ) { + this.parentNode.insertBefore( elem, this ); + }); + } + + if ( arguments.length ) { + var set = jQuery.clean( arguments ); + return this.pushStack( jQuery.merge( set, this ), "before", this.selector ); + } + }, + + after: function() { + if ( !isDisconnected( this[0] ) ) { + return this.domManip(arguments, false, function( elem ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + }); + } + + if ( arguments.length ) { + var set = jQuery.clean( arguments ); + return this.pushStack( jQuery.merge( this, set ), "after", this.selector ); + } + }, + + // keepData is for internal use only--do not document + remove: function( selector, keepData ) { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + if ( !selector || jQuery.filter( selector, [ elem ] ).length ) { + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( elem.getElementsByTagName("*") ); + jQuery.cleanData( [ elem ] ); + } + + if ( elem.parentNode ) { + elem.parentNode.removeChild( elem ); + } + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( elem.getElementsByTagName("*") ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + } + + 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 jQuery.access( this, function( value ) { + var elem = this[0] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for (; i < l; i++ ) { + // Remove element nodes and prevent memory leaks + elem = this[i] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( elem.getElementsByTagName( "*" ) ); + 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( value ) { + if ( !isDisconnected( this[0] ) ) { + // Make sure that the elements are removed from the DOM before they are inserted + // this can help fix replacing a parent with child elements + if ( jQuery.isFunction( value ) ) { + return this.each(function(i) { + var self = jQuery(this), old = self.html(); + self.replaceWith( value.call( this, i, old ) ); + }); + } + + if ( typeof value !== "string" ) { + value = jQuery( value ).detach(); + } + + return this.each(function() { + var next = this.nextSibling, + parent = this.parentNode; + + jQuery( this ).remove(); + + if ( next ) { + jQuery(next).before( value ); + } else { + jQuery(parent).append( value ); + } + }); + } + + return this.length ? + this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) : + this; + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, table, callback ) { + + // Flatten any nested arrays + args = [].concat.apply( [], args ); + + var results, first, fragment, iNoClone, + i = 0, + value = args[0], + scripts = [], + l = this.length; + + // We can't cloneNode fragments that contain checked, in WebKit + if ( !jQuery.support.checkClone && l > 1 && typeof value === "string" && rchecked.test( value ) ) { + return this.each(function() { + jQuery(this).domManip( args, table, callback ); + }); + } + + if ( jQuery.isFunction(value) ) { + return this.each(function(i) { + var self = jQuery(this); + args[0] = value.call( this, i, table ? self.html() : undefined ); + self.domManip( args, table, callback ); + }); + } + + if ( this[0] ) { + results = jQuery.buildFragment( args, this, scripts ); + fragment = results.fragment; + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + table = table && jQuery.nodeName( first, "tr" ); + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + // Fragments from the fragment cache must always be cloned and never used in place. + for ( iNoClone = results.cacheable || l - 1; i < l; i++ ) { + callback.call( + table && jQuery.nodeName( this[i], "table" ) ? + findOrAppend( this[i], "tbody" ) : + this[i], + i === iNoClone ? + fragment : + jQuery.clone( fragment, true, true ) + ); + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + + if ( scripts.length ) { + jQuery.each( scripts, function( i, elem ) { + if ( elem.src ) { + if ( jQuery.ajax ) { + jQuery.ajax({ + url: elem.src, + type: "GET", + dataType: "script", + async: false, + global: false, + "throws": true + }); + } else { + jQuery.error("no ajax"); + } + } else { + jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "" ) ); + } + + if ( elem.parentNode ) { + elem.parentNode.removeChild( elem ); + } + }); + } + } + + return this; + } +}); + +function findOrAppend( elem, tag ) { + return elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) ); +} + +function cloneCopyEvent( src, dest ) { + + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function cloneFixAttributes( src, dest ) { + var nodeName; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + // clearAttributes removes the attributes, which we don't want, + // but also removes the attachEvent events, which we *do* want + if ( dest.clearAttributes ) { + dest.clearAttributes(); + } + + // mergeAttributes, in contrast, only merges back on the + // original attributes, not the events + if ( dest.mergeAttributes ) { + dest.mergeAttributes( src ); + } + + nodeName = dest.nodeName.toLowerCase(); + + if ( nodeName === "object" ) { + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( jQuery.support.html5Clone && (src.innerHTML && !jQuery.trim(dest.innerHTML)) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + + // IE blanks contents when cloning scripts + } else if ( nodeName === "script" && dest.text !== src.text ) { + dest.text = src.text; + } + + // Event data gets referenced instead of copied if the expando + // gets copied too + dest.removeAttribute( jQuery.expando ); +} + +jQuery.buildFragment = function( args, context, scripts ) { + var fragment, cacheable, cachehit, + first = args[ 0 ]; + + // Set context from what may come in as undefined or a jQuery collection or a node + // Updated to fix #12266 where accessing context[0] could throw an exception in IE9/10 & + // also doubles as fix for #8950 where plain objects caused createDocumentFragment exception + context = context || document; + context = !context.nodeType && context[0] || context; + context = context.ownerDocument || context; + + // Only cache "small" (1/2 KB) HTML strings that are associated with the main document + // Cloning options loses the selected state, so don't cache them + // IE 6 doesn't like it when you put or elements in a fragment + // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache + // Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501 + if ( args.length === 1 && typeof first === "string" && first.length < 512 && context === document && + first.charAt(0) === "<" && !rnocache.test( first ) && + (jQuery.support.checkClone || !rchecked.test( first )) && + (jQuery.support.html5Clone || !rnoshimcache.test( first )) ) { + + // Mark cacheable and look for a hit + cacheable = true; + fragment = jQuery.fragments[ first ]; + cachehit = fragment !== undefined; + } + + if ( !fragment ) { + fragment = context.createDocumentFragment(); + jQuery.clean( args, context, fragment, scripts ); + + // Update the cache, but only store false + // unless this is a second parsing of the same content + if ( cacheable ) { + jQuery.fragments[ first ] = cachehit && fragment; + } + } + + return { fragment: fragment, cacheable: cacheable }; +}; + +jQuery.fragments = {}; + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + l = insert.length, + parent = this.length === 1 && this[0].parentNode; + + if ( (parent == null || parent && parent.nodeType === 11 && parent.childNodes.length === 1) && l === 1 ) { + insert[ original ]( this[0] ); + return this; + } else { + for ( ; i < l; i++ ) { + elems = ( i > 0 ? this.clone(true) : this ).get(); + jQuery( insert[i] )[ original ]( elems ); + ret = ret.concat( elems ); + } + + return this.pushStack( ret, name, insert.selector ); + } + }; +}); + +function getAll( elem ) { + if ( typeof elem.getElementsByTagName !== "undefined" ) { + return elem.getElementsByTagName( "*" ); + + } else if ( typeof elem.querySelectorAll !== "undefined" ) { + return elem.querySelectorAll( "*" ); + + } else { + return []; + } +} + +// Used in clean, fixes the defaultChecked property +function fixDefaultChecked( elem ) { + if ( rcheckableType.test( elem.type ) ) { + elem.defaultChecked = elem.checked; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var srcElements, + destElements, + i, + clone; + + if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && + (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { + // IE copies events bound via attachEvent when using cloneNode. + // Calling detachEvent on the clone will also remove the events + // from the original. In order to get around this, we use some + // proprietary methods to clear the events. Thanks to MooTools + // guys for this hotness. + + cloneFixAttributes( elem, clone ); + + // Using Sizzle here is crazy slow, so we use getElementsByTagName instead + srcElements = getAll( elem ); + destElements = getAll( clone ); + + // Weird iteration because IE will replace the length property + // with an element if you are cloning the body and one of the + // elements on the page has a name or id of "length" + for ( i = 0; srcElements[i]; ++i ) { + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[i] ) { + cloneFixAttributes( srcElements[i], destElements[i] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + cloneCopyEvent( elem, clone ); + + if ( deepDataAndEvents ) { + srcElements = getAll( elem ); + destElements = getAll( clone ); + + for ( i = 0; srcElements[i]; ++i ) { + cloneCopyEvent( srcElements[i], destElements[i] ); + } + } + } + + srcElements = destElements = null; + + // Return the cloned set + return clone; + }, + + clean: function( elems, context, fragment, scripts ) { + var i, j, elem, tag, wrap, depth, div, hasBody, tbody, len, handleScript, jsTags, + safe = context === document && safeFragment, + ret = []; + + // Ensure that context is a document + if ( !context || typeof context.createDocumentFragment === "undefined" ) { + context = document; + } + + // Use the already-created safe fragment if context permits + for ( i = 0; (elem = elems[i]) != null; i++ ) { + if ( typeof elem === "number" ) { + elem += ""; + } + + if ( !elem ) { + continue; + } + + // Convert html string into DOM nodes + if ( typeof elem === "string" ) { + if ( !rhtml.test( elem ) ) { + elem = context.createTextNode( elem ); + } else { + // Ensure a safe container in which to render the html + safe = safe || createSafeFragment( context ); + div = context.createElement("div"); + safe.appendChild( div ); + + // Fix "XHTML"-style tags in all browsers + elem = elem.replace(rxhtmlTag, "<$1>"); + + // Go to html and back, then peel off extra wrappers + tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + depth = wrap[0]; + div.innerHTML = wrap[1] + elem + wrap[2]; + + // Move to the right depth + while ( depth-- ) { + div = div.lastChild; + } + + // Remove IE's autoinserted from table fragments + if ( !jQuery.support.tbody ) { + + // String was a , *may* have spurious + hasBody = rtbody.test(elem); + tbody = tag === "table" && !hasBody ? + div.firstChild && div.firstChild.childNodes : + + // String was a bare or + wrap[1] === "
    " && !hasBody ? + div.childNodes : + []; + + for ( j = tbody.length - 1; j >= 0 ; --j ) { + if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) { + tbody[ j ].parentNode.removeChild( tbody[ j ] ); + } + } + } + + // IE completely kills leading whitespace when innerHTML is used + if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild ); + } + + elem = div.childNodes; + + // Take out of fragment container (we need a fresh div each time) + div.parentNode.removeChild( div ); + } + } + + if ( elem.nodeType ) { + ret.push( elem ); + } else { + jQuery.merge( ret, elem ); + } + } + + // Fix #11356: Clear elements from safeFragment + if ( div ) { + elem = div = safe = null; + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !jQuery.support.appendChecked ) { + for ( i = 0; (elem = ret[i]) != null; i++ ) { + if ( jQuery.nodeName( elem, "input" ) ) { + fixDefaultChecked( elem ); + } else if ( typeof elem.getElementsByTagName !== "undefined" ) { + jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked ); + } + } + } + + // Append elements to a provided document fragment + if ( fragment ) { + // Special handling of each script element + handleScript = function( elem ) { + // Check if we consider it executable + if ( !elem.type || rscriptType.test( elem.type ) ) { + // Detach the script and store it in the scripts array (if provided) or the fragment + // Return truthy to indicate that it has been handled + return scripts ? + scripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) : + fragment.appendChild( elem ); + } + }; + + for ( i = 0; (elem = ret[i]) != null; i++ ) { + // Check if we're done after handling an executable script + if ( !( jQuery.nodeName( elem, "script" ) && handleScript( elem ) ) ) { + // Append to fragment and handle embedded scripts + fragment.appendChild( elem ); + if ( typeof elem.getElementsByTagName !== "undefined" ) { + // handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration + jsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName("script") ), handleScript ); + + // Splice the scripts into ret after their former ancestor and advance our index beyond them + ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) ); + i += jsTags.length; + } + } + } + } + + return ret; + }, + + cleanData: function( elems, /* internal */ acceptData ) { + var data, id, elem, type, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + deleteExpando = jQuery.support.deleteExpando, + special = jQuery.event.special; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( acceptData || jQuery.acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + 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 ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( deleteExpando ) { + delete elem[ internalKey ]; + + } else if ( elem.removeAttribute ) { + elem.removeAttribute( internalKey ); + + } else { + elem[ internalKey ] = null; + } + + jQuery.deletedIds.push( id ); + } + } + } + } + } +}); +// Limit scope pollution from any deprecated API +(function() { + +var matched, browser; + +// Use of jQuery.browser is frowned upon. +// More details: http://api.jquery.com/jQuery.browser +// jQuery.uaMatch maintained for back-compat +jQuery.uaMatch = function( ua ) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) || + /(webkit)[ \/]([\w.]+)/.exec( ua ) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) || + /(msie) ([\w.]+)/.exec( ua ) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; +}; + +matched = jQuery.uaMatch( navigator.userAgent ); +browser = {}; + +if ( matched.browser ) { + browser[ matched.browser ] = true; + browser.version = matched.version; +} + +// Chrome is Webkit, but Webkit is also Safari. +if ( browser.chrome ) { + browser.webkit = true; +} else if ( browser.webkit ) { + browser.safari = true; +} + +jQuery.browser = browser; + +jQuery.sub = function() { + function jQuerySub( selector, context ) { + return new jQuerySub.fn.init( selector, context ); + } + jQuery.extend( true, jQuerySub, this ); + jQuerySub.superclass = this; + jQuerySub.fn = jQuerySub.prototype = this(); + jQuerySub.fn.constructor = jQuerySub; + jQuerySub.sub = this.sub; + jQuerySub.fn.init = function init( selector, context ) { + if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { + context = jQuerySub( context ); + } + + return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); + }; + jQuerySub.fn.init.prototype = jQuerySub.fn; + var rootjQuerySub = jQuerySub(document); + return jQuerySub; +}; + +})(); +var curCSS, iframe, iframeDoc, + ralpha = /alpha\([^)]*\)/i, + ropacity = /opacity=([^)]*)/, + rposition = /^(top|right|bottom|left)$/, + // 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]).+)/, + rmargin = /^margin/, + rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ), + rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ), + rrelNum = new RegExp( "^([-+])=(" + core_pnum + ")", "i" ), + elemdisplay = { BODY: "block" }, + + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: 0, + fontWeight: 400 + }, + + cssExpand = [ "Top", "Right", "Bottom", "Left" ], + cssPrefixes = [ "Webkit", "O", "Moz", "ms" ], + + eventsToggle = jQuery.fn.toggle; + +// return a css property mapped to a potentially vendor prefixed property +function vendorPropName( style, name ) { + + // shortcut for names that are not vendor prefixed + if ( name in style ) { + return name; + } + + // check for vendor prefixed names + var capName = name.charAt(0).toUpperCase() + name.slice(1), + origName = name, + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in style ) { + return name; + } + } + + return origName; +} + +function isHidden( elem, el ) { + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); +} + +function showHide( elements, show ) { + var elem, display, + values = [], + index = 0, + length = elements.length; + + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + values[ index ] = jQuery._data( elem, "olddisplay" ); + if ( show ) { + // Reset the inline display of this element to learn if it is + // being hidden by cascaded rules or not + if ( !values[ index ] && elem.style.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 ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); + } + } else { + display = curCSS( elem, "display" ); + + if ( !values[ index ] && display !== "none" ) { + jQuery._data( elem, "olddisplay", 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.fn.extend({ + css: function( name, value ) { + return jQuery.access( this, function( elem, name, value ) { + 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, fn2 ) { + var bool = typeof state === "boolean"; + + if ( jQuery.isFunction( state ) && jQuery.isFunction( fn2 ) ) { + return eventsToggle.apply( this, arguments ); + } + + return this.each(function() { + if ( bool ? state : isHidden( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + }); + } +}); + +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; + + } + } + } + }, + + // Exclude the following css properties to add px + cssNumber: { + "fillOpacity": true, + "fontWeight": true, + "lineHeight": true, + "opacity": 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: { + // normalize float css property + "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat" + }, + + // 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( style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // convert relative number strings (+= or -=) to relative numbers. #7345 + if ( type === "string" && (ret = rrelNum.exec( value )) ) { + value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); + // Fixes bug #9237 + type = "number"; + } + + // Make sure that NaN and null values aren't set. See: #7116 + if ( value == null || type === "number" && isNaN( value ) ) { + return; + } + + // If a number was passed in, add 'px' to the (except for certain CSS properties) + if ( type === "number" && !jQuery.cssNumber[ origName ] ) { + value += "px"; + } + + // 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 ) { + // Wrapped to prevent IE from throwing errors when 'invalid' values are provided + // Fixes bug #5509 + try { + style[ name ] = value; + } catch(e) {} + } + + } 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, numeric, extra ) { + 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( elem.style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + 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 ); + } + + //convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Return, converting to number if forced or a qualifier was provided and val looks numeric + if ( numeric || extra !== undefined ) { + num = parseFloat( val ); + return numeric || jQuery.isNumeric( num ) ? num || 0 : val; + } + return val; + }, + + // A method for quickly swapping in/out CSS properties to get correct calculations + swap: function( elem, options, callback ) { + 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.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; + } +}); + +// NOTE: To any future maintainer, we've window.getComputedStyle +// because jsdom on node.js will break without it. +if ( window.getComputedStyle ) { + curCSS = function( elem, name ) { + var ret, width, minWidth, maxWidth, + computed = window.getComputedStyle( elem, null ), + style = elem.style; + + if ( computed ) { + + // getPropertyValue is only needed for .css('filter') in IE9, see #12537 + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right + // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels + // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values + if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret; + }; +} else if ( document.documentElement.currentStyle ) { + curCSS = function( elem, name ) { + var left, rsLeft, + ret = elem.currentStyle && elem.currentStyle[ name ], + style = elem.style; + + // Avoid setting ret to empty string here + // so we don't default to auto + if ( ret == null && style && style[ name ] ) { + ret = style[ name ]; + } + + // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + // but not position css attributes, as those are proportional to the parent element instead + // and we can't measure the parent instead because it might trigger a "stacking dolls" problem + if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { + + // Remember the original values + left = style.left; + rsLeft = elem.runtimeStyle && elem.runtimeStyle.left; + + // Put in the new values to get a computed value out + if ( rsLeft ) { + elem.runtimeStyle.left = elem.currentStyle.left; + } + style.left = name === "fontSize" ? "1em" : ret; + ret = style.pixelLeft + "px"; + + // Revert the changed values + style.left = left; + if ( rsLeft ) { + elem.runtimeStyle.left = rsLeft; + } + } + + return ret === "" ? "auto" : ret; + }; +} + +function setPositiveNumber( elem, value, subtract ) { + var matches = rnumsplit.exec( value ); + return matches ? + Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox ) { + 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" ) { + // we use jQuery.css instead of curCSS here + // because of the reliableMarginRight CSS hook! + val += jQuery.css( elem, extra + cssExpand[ i ], true ); + } + + // From this point on we use curCSS for maximum performance (relevant in animations) + if ( isBorderBox ) { + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= parseFloat( curCSS( elem, "padding" + cssExpand[ i ] ) ) || 0; + } + + // at this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= parseFloat( curCSS( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0; + } + } else { + // at this point, extra isn't content, so add padding + val += parseFloat( curCSS( elem, "padding" + cssExpand[ i ] ) ) || 0; + + // at this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += parseFloat( curCSS( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0; + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with offset property, which is equivalent to the border-box value + var val = name === "width" ? elem.offsetWidth : elem.offsetHeight, + valueIsBorderBox = true, + isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing" ) === "border-box"; + + // 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 ); + if ( val < 0 || val == null ) { + val = elem.style[ name ]; + } + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test(val) ) { + return val; + } + + // we need the check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && ( jQuery.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 + ) + ) + "px"; +} + + +// Try to determine the default display value of an element +function css_defaultDisplay( nodeName ) { + if ( elemdisplay[ nodeName ] ) { + return elemdisplay[ nodeName ]; + } + + var elem = jQuery( "<" + nodeName + ">" ).appendTo( document.body ), + display = elem.css("display"); + elem.remove(); + + // If the simple way fails, + // get element's real default display by attaching it to a temp iframe + if ( display === "none" || display === "" ) { + // Use the already-created iframe if possible + iframe = document.body.appendChild( + iframe || jQuery.extend( document.createElement("iframe"), { + frameBorder: 0, + width: 0, + height: 0 + }) + ); + + // Create a cacheable copy of the iframe document on first call. + // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML + // document to it; WebKit & Firefox won't allow reusing the iframe document. + if ( !iframeDoc || !iframe.createElement ) { + iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document; + iframeDoc.write(""); + iframeDoc.close(); + } + + elem = iframeDoc.body.appendChild( iframeDoc.createElement(nodeName) ); + + display = curCSS( elem, "display" ); + document.body.removeChild( iframe ); + } + + // Store the correct default display + elemdisplay[ nodeName ] = display; + + return display; +} + +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 + // however, it must have a current display style that would benefit from this + if ( elem.offsetWidth === 0 && rdisplayswap.test( curCSS( elem, "display" ) ) ) { + return jQuery.swap( elem, cssShow, function() { + return getWidthOrHeight( elem, name, extra ); + }); + } else { + return getWidthOrHeight( elem, name, extra ); + } + } + }, + + set: function( elem, value, extra ) { + return setPositiveNumber( elem, value, extra ? + augmentWidthOrHeight( + elem, + name, + extra, + jQuery.support.boxSizing && jQuery.css( elem, "boxSizing" ) === "border-box" + ) : 0 + ); + } + }; +}); + +if ( !jQuery.support.opacity ) { + jQuery.cssHooks.opacity = { + get: function( elem, computed ) { + // IE uses filters for opacity + return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ? + ( 0.01 * parseFloat( RegExp.$1 ) ) + "" : + computed ? "1" : ""; + }, + + set: function( elem, value ) { + var style = elem.style, + currentStyle = elem.currentStyle, + opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "", + filter = currentStyle && currentStyle.filter || style.filter || ""; + + // IE has trouble with opacity if it does not have layout + // Force it by setting the zoom level + style.zoom = 1; + + // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652 + if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" && + style.removeAttribute ) { + + // Setting style.filter to null, "" & " " still leave "filter:" in the cssText + // if "filter:" is present at all, clearType is disabled, we want to avoid this + // style.removeAttribute is IE Only, but so apparently is this code path... + style.removeAttribute( "filter" ); + + // if there there is no filter style applied in a css rule, we are done + if ( currentStyle && !currentStyle.filter ) { + return; + } + } + + // otherwise, set new filter values + style.filter = ralpha.test( filter ) ? + filter.replace( ralpha, opacity ) : + filter + " " + opacity; + } + }; +} + +// These hooks cannot be added until DOM ready because the support test +// for it is not run until after DOM ready +jQuery(function() { + if ( !jQuery.support.reliableMarginRight ) { + jQuery.cssHooks.marginRight = { + get: function( elem, computed ) { + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + // Work around by temporarily setting element display to inline-block + return jQuery.swap( elem, { "display": "inline-block" }, function() { + if ( computed ) { + return curCSS( elem, "marginRight" ); + } + }); + } + }; + } + + // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 + // getComputedStyle returns percent when specified for top/left/bottom/right + // rather than make the css module depend on the offset module, we just check for it here + if ( !jQuery.support.pixelPosition && jQuery.fn.position ) { + jQuery.each( [ "top", "left" ], function( i, prop ) { + jQuery.cssHooks[ prop ] = { + get: function( elem, computed ) { + if ( computed ) { + var ret = curCSS( elem, prop ); + // if curCSS returns percentage, fallback to offset + return rnumnonpx.test( ret ) ? jQuery( elem ).position()[ prop ] + "px" : ret; + } + } + }; + }); + } + +}); + +if ( jQuery.expr && jQuery.expr.filters ) { + jQuery.expr.filters.hidden = function( elem ) { + return ( elem.offsetWidth === 0 && elem.offsetHeight === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || curCSS( elem, "display" )) === "none"); + }; + + jQuery.expr.filters.visible = function( elem ) { + return !jQuery.expr.filters.hidden( elem ); + }; +} + +// 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, + + // assumes a single number if not a string + parts = typeof value === "string" ? value.split(" ") : [ value ], + expanded = {}; + + for ( i = 0; 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; + } +}); +var r20 = /%20/g, + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i, + rselectTextarea = /^(?:select|textarea)/i; + +jQuery.fn.extend({ + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map(function(){ + return this.elements ? jQuery.makeArray( this.elements ) : this; + }) + .filter(function(){ + return this.name && !this.disabled && + ( this.checked || rselectTextarea.test( this.nodeName ) || + rinput.test( this.type ) ); + }) + .map(function( i, elem ){ + var val = jQuery( this ).val(); + + return val == null ? + null : + jQuery.isArray( val ) ? + jQuery.map( val, function( val, i ){ + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + }) : + { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + }).get(); + } +}); + +//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, "+" ); +}; + +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 { + // If array item is non-scalar (array or object), encode its + // numeric index to resolve deserialization ambiguity issues. + // Note that rack (as of 1.0.0) can't currently deserialize + // nested arrays properly, and attempting to do so may cause + // a server error. Possible fixes are to modify rack's + // deserialization algorithm or to provide an option or flag + // to force array serialization to be shallow. + buildParams( prefix + "[" + ( typeof v === "object" ? 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 ); + } +} +var + // Document location + ajaxLocParts, + ajaxLocation, + + rhash = /#.*$/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + rquery = /\?/, + rscript = /)<[^<]*)*<\/script>/gi, + rts = /([?&])_=[^&]*/, + rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/, + + // Keep a copy of the old load method + _load = jQuery.fn.load, + + /* 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 = ["*/"] + ["*"]; + +// #8138, IE may throw an exception when accessing +// a field from window.location if document.domain has been set +try { + ajaxLocation = location.href; +} catch( e ) { + // Use the href attribute of an A element + // since IE will modify it given document.location + ajaxLocation = document.createElement( "a" ); + ajaxLocation.href = ""; + ajaxLocation = ajaxLocation.href; +} + +// Segment location into parts +ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || []; + +// 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, list, placeBefore, + dataTypes = dataTypeExpression.toLowerCase().split( core_rspace ), + i = 0, + length = dataTypes.length; + + if ( jQuery.isFunction( func ) ) { + // For each dataType in the dataTypeExpression + for ( ; i < length; i++ ) { + dataType = dataTypes[ i ]; + // We control if we're asked to add before + // any existing element + placeBefore = /^\+/.test( dataType ); + if ( placeBefore ) { + dataType = dataType.substr( 1 ) || "*"; + } + list = structure[ dataType ] = structure[ dataType ] || []; + // then we add to the structure accordingly + list[ placeBefore ? "unshift" : "push" ]( func ); + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR, + dataType /* internal */, inspected /* internal */ ) { + + dataType = dataType || options.dataTypes[ 0 ]; + inspected = inspected || {}; + + inspected[ dataType ] = true; + + var selection, + list = structure[ dataType ], + i = 0, + length = list ? list.length : 0, + executeOnly = ( structure === prefilters ); + + for ( ; i < length && ( executeOnly || !selection ); i++ ) { + selection = list[ i ]( options, originalOptions, jqXHR ); + // If we got redirected to another dataType + // we try there if executing only and not done already + if ( typeof selection === "string" ) { + if ( !executeOnly || inspected[ selection ] ) { + selection = undefined; + } else { + options.dataTypes.unshift( selection ); + selection = inspectPrefiltersOrTransports( + structure, options, originalOptions, jqXHR, selection, inspected ); + } + } + } + // If we're only executing or nothing was selected + // we try the catchall dataType if not done already + if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) { + selection = inspectPrefiltersOrTransports( + structure, options, originalOptions, jqXHR, "*", inspected ); + } + // unnecessary when only executing (prefilters) + // but it'll be ignored by the caller in that case + return selection; +} + +// 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 ); + } +} + +jQuery.fn.load = function( url, params, callback ) { + if ( typeof url !== "string" && _load ) { + return _load.apply( this, arguments ); + } + + // Don't do a request if no elements are being requested + if ( !this.length ) { + return this; + } + + var selector, type, response, + self = this, + off = url.indexOf(" "); + + if ( off >= 0 ) { + selector = url.slice( off, url.length ); + 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"; + } + + // Request the remote document + jQuery.ajax({ + url: url, + + // if "type" variable is undefined, then "GET" method will be used + type: type, + dataType: "html", + data: params, + complete: function( jqXHR, status ) { + if ( callback ) { + self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] ); + } + } + }).done(function( responseText ) { + + // Save response for use in complete callback + response = arguments; + + // See if a selector was specified + self.html( selector ? + + // Create a dummy div to hold the results + jQuery("
    ") + + // inject the contents of the document in, removing the scripts + // to avoid any 'Permission Denied' errors in IE + .append( responseText.replace( rscript, "" ) ) + + // Locate the specified elements + .find( selector ) : + + // If not, just inject the full result + responseText ); + + }); + + return this; +}; + +// Attach a bunch of functions for handling common AJAX events +jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){ + jQuery.fn[ o ] = function( f ){ + return this.on( o, f ); + }; +}); + +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; + } + + return jQuery.ajax({ + type: method, + url: url, + data: data, + success: callback, + dataType: type + }); + }; +}); + +jQuery.extend({ + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + // 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 ) { + if ( settings ) { + // Building a settings object + ajaxExtend( target, jQuery.ajaxSettings ); + } else { + // Extending ajaxSettings + settings = target; + target = jQuery.ajaxSettings; + } + ajaxExtend( target, settings ); + return target; + }, + + ajaxSettings: { + url: ajaxLocation, + isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ), + global: true, + type: "GET", + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + processData: true, + async: true, + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + xml: "application/xml, text/xml", + html: "text/html", + text: "text/plain", + json: "application/json, text/javascript", + "*": allTypes + }, + + contents: { + xml: /xml/, + html: /html/, + json: /json/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText" + }, + + // List of data converters + // 1) key format is "source_type destination_type" (a single space in-between) + // 2) the catchall symbol "*" can be used for source_type + converters: { + + // Convert anything to text + "* text": window.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: { + context: true, + url: true + } + }, + + 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 // ifModified key + ifModifiedKey, + // Response headers + responseHeadersString, + responseHeaders, + // transport + transport, + // timeout handle + timeoutTimer, + // Cross-domain detection vars + parts, + // 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 + // It's the callbackContext if one was provided in the options + // and if it's a DOM node or a jQuery collection + globalEventContext = callbackContext !== s && + ( callbackContext.nodeType || callbackContext instanceof 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, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( !state ) { + var lname = name.toLowerCase(); + name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Raw string + getAllResponseHeaders: function() { + return state === 2 ? responseHeadersString : null; + }, + + // 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 === undefined ? null : match; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( !state ) { + s.mimeType = type; + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + statusText = statusText || strAbort; + if ( transport ) { + transport.abort( statusText ); + } + done( 0, statusText ); + return this; + } + }; + + // Callback for when everything is done + // It is defined here because jslint complains if it is declared + // at the end of the function (which would be more logical and readable) + 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 ) { + 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; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // If successful, handle type chaining + if ( status >= 200 && status < 300 || status === 304 ) { + + // 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[ ifModifiedKey ] = modified; + } + modified = jqXHR.getResponseHeader("Etag"); + if ( modified ) { + jQuery.etag[ ifModifiedKey ] = modified; + } + } + + // If not modified + if ( status === 304 ) { + + statusText = "notmodified"; + isSuccess = true; + + // If we have data + } else { + + isSuccess = ajaxConvert( s, response ); + statusText = isSuccess.state; + success = isSuccess.data; + error = isSuccess.error; + isSuccess = !error; + } + } else { + // We extract error from statusText + // then normalize statusText and status for non-aborts + error = statusText; + if ( !statusText || status ) { + 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( "ajax" + ( isSuccess ? "Success" : "Error" ), + [ 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" ); + } + } + } + + // Attach deferreds + deferred.promise( jqXHR ); + jqXHR.success = jqXHR.done; + jqXHR.error = jqXHR.fail; + jqXHR.complete = completeDeferred.add; + + // Status-dependent callbacks + jqXHR.statusCode = function( map ) { + if ( map ) { + var tmp; + if ( state < 2 ) { + for ( tmp in map ) { + statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ]; + } + } else { + tmp = map[ jqXHR.status ]; + jqXHR.always( tmp ); + } + } + return this; + }; + + // Remove hash character (#7531: and string promotion) + // Add protocol if not provided (#5866: IE7 issue with protocol-less urls) + // We also use the url parameter if available + s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" ); + + // Extract dataTypes list + s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( core_rspace ); + + // A cross-domain request is in order when we have a protocol:host:port mismatch + if ( s.crossDomain == null ) { + parts = rurl.exec( s.url.toLowerCase() ); + s.crossDomain = !!( parts && + ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] || + ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) != + ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) ) + ); + } + + // 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 + fireGlobals = s.global; + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // If data is available, append data to url + if ( s.data ) { + s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data; + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Get ifModifiedKey before adding the anti-cache parameter + ifModifiedKey = s.url; + + // Add anti-cache in url if needed + if ( s.cache === false ) { + + var ts = jQuery.now(), + // try replacing _= if it is there + ret = s.url.replace( rts, "$1_=" + ts ); + + // if nothing was replaced, add timestamp to the end + s.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" ); + } + } + + // 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 If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + ifModifiedKey = ifModifiedKey || s.url; + if ( jQuery.lastModified[ ifModifiedKey ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] ); + } + if ( jQuery.etag[ ifModifiedKey ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] ); + } + } + + // 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 ] ); + } + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = 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; + } + } + } + + return jqXHR; + }, + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {} + +}); + +/* Handles responses to an ajax request: + * - sets all responseXXX fields accordingly + * - 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, + responseFields = s.responseFields; + + // Fill responseXXX fields + for ( type in responseFields ) { + if ( type in responses ) { + jqXHR[ responseFields[type] ] = responses[ type ]; + } + } + + // 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 +function ajaxConvert( s, response ) { + + var conv, conv2, current, tmp, + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(), + prev = dataTypes[ 0 ], + converters = {}, + i = 0; + + // Apply the dataFilter if provided + if ( s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + // Convert to each sequential dataType, tolerating list modification + for ( ; (current = dataTypes[++i]); ) { + + // There's only work to do if current dataType is non-auto + if ( current !== "*" ) { + + // Convert response if prev dataType is non-auto and differs from current + 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.splice( i--, 0, current ); + } + + 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 }; + } + } + } + } + + // Update prev for next iteration + prev = current; + } + } + + return { state: "success", data: response }; +} +var oldCallbacks = [], + rquestion = /\?/, + rjsonp = /(=)\?(?=&|$)|\?\?/, + nonce = jQuery.now(); + +// 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, + data = s.data, + url = s.url, + hasCallback = s.jsonp !== false, + replaceInUrl = hasCallback && rjsonp.test( url ), + replaceInData = hasCallback && !replaceInUrl && typeof data === "string" && + !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && + rjsonp.test( data ); + + // Handle iff the expected data type is "jsonp" or we have a parameter to set + if ( s.dataTypes[ 0 ] === "jsonp" || replaceInUrl || replaceInData ) { + + // Get callback name, remembering preexisting value associated with it + callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ? + s.jsonpCallback() : + s.jsonpCallback; + overwritten = window[ callbackName ]; + + // Insert callback into url or form data + if ( replaceInUrl ) { + s.url = url.replace( rjsonp, "$1" + callbackName ); + } else if ( replaceInData ) { + s.data = data.replace( rjsonp, "$1" + callbackName ); + } else if ( hasCallback ) { + s.url += ( rquestion.test( 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 + window[ callbackName ] = function() { + responseContainer = arguments; + }; + + // Clean-up function (fires after converters) + jqXHR.always(function() { + // Restore preexisting value + 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"; + } +}); +// Install script dataType +jQuery.ajaxSetup({ + accepts: { + script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /javascript|ecmascript/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +}); + +// Handle cache's special case and global +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + s.global = false; + } +}); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function(s) { + + // This transport only deals with cross domain requests + if ( s.crossDomain ) { + + var script, + head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement; + + return { + + send: function( _, callback ) { + + script = document.createElement( "script" ); + + script.async = "async"; + + if ( s.scriptCharset ) { + script.charset = s.scriptCharset; + } + + script.src = s.url; + + // Attach handlers for all browsers + script.onload = script.onreadystatechange = function( _, isAbort ) { + + if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) { + + // Handle memory leak in IE + script.onload = script.onreadystatechange = null; + + // Remove the script + if ( head && script.parentNode ) { + head.removeChild( script ); + } + + // Dereference the script + script = undefined; + + // Callback if not abort + if ( !isAbort ) { + callback( 200, "success" ); + } + } + }; + // Use insertBefore instead of appendChild to circumvent an IE6 bug. + // This arises when a base node is used (#2709 and #4378). + head.insertBefore( script, head.firstChild ); + }, + + abort: function() { + if ( script ) { + script.onload( 0, 1 ); + } + } + }; + } +}); +var xhrCallbacks, + // #5280: Internet Explorer will keep connections alive if we don't abort on unload + xhrOnUnloadAbort = window.ActiveXObject ? function() { + // Abort all pending requests + for ( var key in xhrCallbacks ) { + xhrCallbacks[ key ]( 0, 1 ); + } + } : false, + xhrId = 0; + +// Functions to create xhrs +function createStandardXHR() { + try { + return new window.XMLHttpRequest(); + } catch( e ) {} +} + +function createActiveXHR() { + try { + return new window.ActiveXObject( "Microsoft.XMLHTTP" ); + } catch( e ) {} +} + +// Create the request object +// (This is still attached to ajaxSettings for backward compatibility) +jQuery.ajaxSettings.xhr = window.ActiveXObject ? + /* Microsoft failed to properly + * implement the XMLHttpRequest in IE7 (can't request local files), + * so we use the ActiveXObject when it is available + * Additionally XMLHttpRequest can be disabled in IE7/IE8 so + * we need a fallback. + */ + function() { + return !this.isLocal && createStandardXHR() || createActiveXHR(); + } : + // For all other browsers, use the standard XMLHttpRequest object + createStandardXHR; + +// Determine support properties +(function( xhr ) { + jQuery.extend( jQuery.support, { + ajax: !!xhr, + cors: !!xhr && ( "withCredentials" in xhr ) + }); +})( jQuery.ajaxSettings.xhr() ); + +// Create transport if the browser can provide an xhr +if ( jQuery.support.ajax ) { + + jQuery.ajaxTransport(function( s ) { + // Cross domain only allowed if supported through XMLHttpRequest + if ( !s.crossDomain || jQuery.support.cors ) { + + var callback; + + return { + send: function( headers, complete ) { + + // Get a new xhr + var handle, i, + xhr = s.xhr(); + + // Open the socket + // Passing null username, generates a login popup on Opera (#2865) + if ( s.username ) { + xhr.open( s.type, s.url, s.async, s.username, s.password ); + } else { + xhr.open( s.type, s.url, s.async ); + } + + // Apply custom fields if provided + if ( s.xhrFields ) { + for ( i in s.xhrFields ) { + xhr[ i ] = s.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( s.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( s.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 ( !s.crossDomain && !headers["X-Requested-With"] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Need an extra try/catch for cross domain requests in Firefox 3 + try { + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + } catch( _ ) {} + + // Do send the request + // This may raise an exception which is actually + // handled in jQuery.ajax (so no try/catch here) + xhr.send( ( s.hasContent && s.data ) || null ); + + // Listener + callback = function( _, isAbort ) { + + var status, + statusText, + responseHeaders, + responses, + xml; + + // Firefox throws exceptions when accessing properties + // of an xhr when a network error occurred + // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE) + try { + + // Was never called and is aborted or complete + if ( callback && ( isAbort || xhr.readyState === 4 ) ) { + + // Only called once + callback = undefined; + + // Do not keep as active anymore + if ( handle ) { + xhr.onreadystatechange = jQuery.noop; + if ( xhrOnUnloadAbort ) { + delete xhrCallbacks[ handle ]; + } + } + + // If it's an abort + if ( isAbort ) { + // Abort it manually if needed + if ( xhr.readyState !== 4 ) { + xhr.abort(); + } + } else { + status = xhr.status; + responseHeaders = xhr.getAllResponseHeaders(); + responses = {}; + xml = xhr.responseXML; + + // Construct response list + if ( xml && xml.documentElement /* #4958 */ ) { + responses.xml = xml; + } + + // When requesting binary data, IE6-9 will throw an exception + // on any attempt to access responseText (#11426) + try { + responses.text = xhr.responseText; + } catch( e ) { + } + + // Firefox throws an exception when accessing + // statusText for faulty cross-domain requests + try { + statusText = xhr.statusText; + } catch( e ) { + // We normalize with Webkit giving an empty statusText + statusText = ""; + } + + // Filter status for non standard behaviors + + // If the request is local and we have data: assume a success + // (success with no data won't get notified, that's the best we + // can do given current implementations) + if ( !status && s.isLocal && !s.crossDomain ) { + status = responses.text ? 200 : 404; + // IE - #1450: sometimes returns 1223 when it should be 204 + } else if ( status === 1223 ) { + status = 204; + } + } + } + } catch( firefoxAccessException ) { + if ( !isAbort ) { + complete( -1, firefoxAccessException ); + } + } + + // Call complete if needed + if ( responses ) { + complete( status, statusText, responses, responseHeaders ); + } + }; + + if ( !s.async ) { + // if we're in sync mode we fire the callback + callback(); + } else if ( xhr.readyState === 4 ) { + // (IE6 & IE7) if it's in cache and has been + // retrieved directly we need to fire the callback + setTimeout( callback, 0 ); + } else { + handle = ++xhrId; + if ( xhrOnUnloadAbort ) { + // Create the active xhrs callbacks list if needed + // and attach the unload handler + if ( !xhrCallbacks ) { + xhrCallbacks = {}; + jQuery( window ).unload( xhrOnUnloadAbort ); + } + // Add to list of active xhrs callbacks + xhrCallbacks[ handle ] = callback; + } + xhr.onreadystatechange = callback; + } + }, + + abort: function() { + if ( callback ) { + callback(0,1); + } + } + }; + } + }); +} +var fxNow, timerId, + rfxtypes = /^(?:toggle|show|hide)$/, + rfxnum = new RegExp( "^(?:([-+])=|)(" + core_pnum + ")([a-z%]*)$", "i" ), + rrun = /queueHooks$/, + animationPrefilters = [ defaultPrefilter ], + tweeners = { + "*": [function( prop, value ) { + var end, unit, + tween = this.createTween( prop, value ), + parts = rfxnum.exec( value ), + target = tween.cur(), + start = +target || 0, + scale = 1, + maxIterations = 20; + + if ( parts ) { + end = +parts[2]; + unit = parts[3] || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + + // We need to compute starting value + if ( unit !== "px" && start ) { + // Iteratively approximate from a nonzero starting point + // Prefer the current property, because this process will be trivial if it uses the same units + // Fallback to end or a simple constant + start = jQuery.css( tween.elem, prop, true ) || end || 1; + + do { + // If previous iteration zeroed out, double until we get *something* + // Use a string for doubling factor so we don't accidentally see scale as unchanged below + scale = scale || ".5"; + + // Adjust and apply + start = start / scale; + jQuery.style( tween.elem, prop, start + unit ); + + // Update scale, tolerating zero or NaN from tween.cur() + // And breaking the loop if scale is unchanged or perfect, or if we've just had enough + } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations ); + } + + tween.unit = unit; + tween.start = start; + // If a +=/-= token was provided, we're doing a relative animation + tween.end = parts[1] ? start + ( parts[1] + 1 ) * end : end; + } + return tween; + }] + }; + +// Animations created synchronously will run synchronously +function createFxNow() { + setTimeout(function() { + fxNow = undefined; + }, 0 ); + return ( fxNow = jQuery.now() ); +} + +function createTweens( animation, props ) { + jQuery.each( props, function( prop, value ) { + var collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( collection[ index ].call( animation, prop, value ) ) { + + // we're done with this property + return; + } + } + }); +} + +function Animation( elem, properties, options ) { + var result, + index = 0, + tweenerIndex = 0, + length = animationPrefilters.length, + deferred = jQuery.Deferred().always( function() { + // don't match elem in the :animated selector + delete tick.elem; + }), + tick = function() { + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + // 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: {} }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end, easing ) { + 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; + + for ( ; index < length ; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // resolve when we played the last frame + // otherwise, reject + if ( gotoEnd ) { + 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 = animationPrefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + return result; + } + } + + createTweens( animation, props ); + + if ( jQuery.isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + jQuery.fx.timer( + jQuery.extend( tick, { + anim: animation, + queue: animation.opts.queue, + elem: elem + }) + ); + + // 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 ); +} + +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 wont overwrite keys already present. + // also - reusing 'index' from above 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; + } + } +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweener: function( props, callback ) { + if ( jQuery.isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.split(" "); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length ; index++ ) { + prop = props[ index ]; + tweeners[ prop ] = tweeners[ prop ] || []; + tweeners[ prop ].unshift( callback ); + } + }, + + prefilter: function( callback, prepend ) { + if ( prepend ) { + animationPrefilters.unshift( callback ); + } else { + animationPrefilters.push( callback ); + } + } +}); + +function defaultPrefilter( elem, props, opts ) { + var index, prop, value, length, dataShow, toggle, tween, hooks, oldfire, + anim = this, + style = elem.style, + orig = {}, + handled = [], + hidden = elem.nodeType && isHidden( elem ); + + // 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() { + // doing this makes sure that the complete handler will be 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 IE does 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 + if ( jQuery.css( elem, "display" ) === "inline" && + jQuery.css( elem, "float" ) === "none" ) { + + // inline-level elements accept inline-block; + // block-level elements need to be inline with layout + if ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) { + style.display = "inline-block"; + + } else { + style.zoom = 1; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + if ( !jQuery.support.shrinkWrapBlocks ) { + anim.done(function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + }); + } + } + + + // show/hide pass + for ( index in props ) { + value = props[ index ]; + if ( rfxtypes.exec( value ) ) { + delete props[ index ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + continue; + } + handled.push( index ); + } + } + + length = handled.length; + if ( length ) { + dataShow = jQuery._data( elem, "fxshow" ) || jQuery._data( elem, "fxshow", {} ); + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + + // 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; + jQuery.removeData( elem, "fxshow", true ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + }); + for ( index = 0 ; index < length ; index++ ) { + prop = handled[ index ]; + tween = anim.createTween( prop, hidden ? dataShow[ prop ] : 0 ); + orig[ prop ] = dataShow[ prop ] || jQuery.style( elem, prop ); + + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = tween.start; + if ( hidden ) { + tween.end = tween.start; + tween.start = prop === "width" || prop === "height" ? 1 : 0; + } + } + } + } +} + +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 || "swing"; + 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; + + if ( tween.elem[ tween.prop ] != null && + (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) { + return tween.elem[ tween.prop ]; + } + + // passing any value as a 4th parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails + // so, 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, false, "" ); + // 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 its + // available and use plain properties where available + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.style && ( 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; + } + } + } +}; + +// Remove in 2.0 - this supports IE8's 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.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" || + // special check for .toggle( handler, handler, ... ) + ( !i && jQuery.isFunction( speed ) && jQuery.isFunction( easing ) ) ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +}); + +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 resolve immediately + if ( empty ) { + anim.stop( true ); + } + }; + + 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 = jQuery._data( 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 ); + } + }); + } +}); + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + attrs = { height: type }, + i = 0; + + // if we include width, step value is 1 to do all cssExpand values, + // if we don't include width, 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; +} + +// 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.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.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p*Math.PI ) / 2; + } +}; + +jQuery.timers = []; +jQuery.fx = Tween.prototype.init; +jQuery.fx.tick = function() { + var timer, + timers = jQuery.timers, + i = 0; + + 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 ) { + if ( timer() && jQuery.timers.push( timer ) && !timerId ) { + timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval ); + } +}; + +jQuery.fx.interval = 13; + +jQuery.fx.stop = function() { + clearInterval( timerId ); + timerId = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + // Default speed + _default: 400 +}; + +// Back Compat <1.8 extension point +jQuery.fx.step = {}; + +if ( jQuery.expr && jQuery.expr.filters ) { + jQuery.expr.filters.animated = function( elem ) { + return jQuery.grep(jQuery.timers, function( fn ) { + return elem === fn.elem; + }).length; + }; +} +var rroot = /^(?:body|html)$/i; + +jQuery.fn.offset = function( options ) { + if ( arguments.length ) { + return options === undefined ? + this : + this.each(function( i ) { + jQuery.offset.setOffset( this, options, i ); + }); + } + + var docElem, body, win, clientTop, clientLeft, scrollTop, scrollLeft, + box = { top: 0, left: 0 }, + elem = this[ 0 ], + doc = elem && elem.ownerDocument; + + if ( !doc ) { + return; + } + + if ( (body = doc.body) === elem ) { + return jQuery.offset.bodyOffset( elem ); + } + + docElem = doc.documentElement; + + // Make sure it's not a disconnected DOM node + if ( !jQuery.contains( docElem, elem ) ) { + return box; + } + + // If we don't have gBCR, just use 0,0 rather than error + // BlackBerry 5, iOS 3 (original iPhone) + if ( typeof elem.getBoundingClientRect !== "undefined" ) { + box = elem.getBoundingClientRect(); + } + win = getWindow( doc ); + clientTop = docElem.clientTop || body.clientTop || 0; + clientLeft = docElem.clientLeft || body.clientLeft || 0; + scrollTop = win.pageYOffset || docElem.scrollTop; + scrollLeft = win.pageXOffset || docElem.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; +}; + +jQuery.offset = { + + bodyOffset: function( body ) { + var top = body.offsetTop, + left = body.offsetLeft; + + if ( jQuery.support.doesNotIncludeMarginInBodyOffset ) { + top += parseFloat( jQuery.css(body, "marginTop") ) || 0; + left += parseFloat( jQuery.css(body, "marginLeft") ) || 0; + } + + return { top: top, left: left }; + }, + + setOffset: function( elem, options, i ) { + var position = jQuery.css( elem, "position" ); + + // set position first, in-case top/left are set even on static elem + if ( position === "static" ) { + elem.style.position = "relative"; + } + + var curElem = jQuery( elem ), + curOffset = curElem.offset(), + curCSSTop = jQuery.css( elem, "top" ), + curCSSLeft = jQuery.css( elem, "left" ), + calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1, + props = {}, curPosition = {}, curTop, curLeft; + + // 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 ) ) { + options = options.call( elem, i, 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({ + + position: function() { + if ( !this[0] ) { + return; + } + + var elem = this[0], + + // Get *real* offsetParent + offsetParent = this.offsetParent(), + + // Get correct offsets + offset = this.offset(), + parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset(); + + // Subtract element margins + // note: when an element has margin: auto the offsetLeft and marginLeft + // are the same in Safari causing offset.left to incorrectly be 0 + offset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0; + offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0; + + // Add offsetParent borders + parentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0; + parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0; + + // Subtract the two offsets + return { + top: offset.top - parentOffset.top, + left: offset.left - parentOffset.left + }; + }, + + offsetParent: function() { + return this.map(function() { + var offsetParent = this.offsetParent || document.body; + while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) { + offsetParent = offsetParent.offsetParent; + } + return offsetParent || document.body; + }); + } +}); + + +// Create scrollLeft and scrollTop methods +jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) { + var top = /Y/.test( prop ); + + jQuery.fn[ method ] = function( val ) { + return jQuery.access( this, function( elem, method, val ) { + var win = getWindow( elem ); + + if ( val === undefined ) { + return win ? (prop in win) ? win[ prop ] : + win.document.documentElement[ method ] : + elem[ method ]; + } + + if ( win ) { + win.scrollTo( + !top ? val : jQuery( win ).scrollLeft(), + top ? val : jQuery( win ).scrollTop() + ); + + } else { + elem[ method ] = val; + } + }, method, val, arguments.length, null ); + }; +}); + +function getWindow( elem ) { + return jQuery.isWindow( elem ) ? + elem : + elem.nodeType === 9 ? + elem.defaultView || elem.parentWindow : + false; +} +// 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 jQuery.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 + // unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it. + 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, value, extra ) : + + // Set width or height on the element + jQuery.style( elem, type, value, extra ); + }, type, chainable ? margin : undefined, chainable, null ); + }; + }); +}); +// Expose jQuery to the global object +window.jQuery = window.$ = jQuery; + +// Expose jQuery as an AMD module, but only for AMD loaders that +// understand the issues with loading multiple versions of jQuery +// in a page that all might call define(). The loader will indicate +// they have special allowances for multiple jQuery versions by +// specifying define.amd.jQuery = true. Register as a named module, +// since jQuery can be concatenated with other files that may use define, +// but not use 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. +if ( typeof define === "function" && define.amd && define.amd.jQuery ) { + define( "jquery", [], function () { return jQuery; } ); +} + +})( window ); diff --git a/SpringBootHomework/target/classes/static/assets/plugins/flot/package.json b/SpringBootHomework/target/classes/static/assets/plugins/flot/package.json new file mode 100644 index 0000000..5f00e85 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/flot/package.json @@ -0,0 +1,11 @@ +{ + "name": "Flot", + "version": "0.8.3", + "main": "jquery.flot.js", + "scripts": { + "test": "make test" + }, + "devDependencies": { + "jshint": "0.9.1" + } +} diff --git a/SpringBootHomework/target/classes/static/assets/plugins/gmaps/gmaps.js b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/gmaps.js new file mode 100644 index 0000000..c4c2e1d --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/gmaps.js @@ -0,0 +1,2204 @@ +"use strict"; +(function(root, factory) { + if(typeof exports === 'object') { + module.exports = factory(); + } + else if(typeof define === 'function' && define.amd) { + define('GMaps', [], factory); + } + + root.GMaps = factory(); + +}(this, function() { + +/*! + * GMaps.js v0.4.18 + * http://hpneo.github.com/gmaps/ + * + * Copyright 2015, Gustavo Leon + * Released under the MIT License. + */ + +if (!(typeof window.google === 'object' && window.google.maps)) { + throw 'Google Maps API is required. Please register the following JavaScript library http://maps.google.com/maps/api/js?sensor=true.' +} + +var extend_object = function(obj, new_obj) { + var name; + + if (obj === new_obj) { + return obj; + } + + for (name in new_obj) { + obj[name] = new_obj[name]; + } + + return obj; +}; + +var replace_object = function(obj, replace) { + var name; + + if (obj === replace) { + return obj; + } + + for (name in replace) { + if (obj[name] != undefined) { + obj[name] = replace[name]; + } + } + + return obj; +}; + +var array_map = function(array, callback) { + var original_callback_params = Array.prototype.slice.call(arguments, 2), + array_return = [], + array_length = array.length, + i; + + if (Array.prototype.map && array.map === Array.prototype.map) { + array_return = Array.prototype.map.call(array, function(item) { + var callback_params = original_callback_params.slice(0); + callback_params.splice(0, 0, item); + + return callback.apply(this, callback_params); + }); + } + else { + for (i = 0; i < array_length; i++) { + callback_params = original_callback_params; + callback_params.splice(0, 0, array[i]); + array_return.push(callback.apply(this, callback_params)); + } + } + + return array_return; +}; + +var array_flat = function(array) { + var new_array = [], + i; + + for (i = 0; i < array.length; i++) { + new_array = new_array.concat(array[i]); + } + + return new_array; +}; + +var coordsToLatLngs = function(coords, useGeoJSON) { + var first_coord = coords[0], + second_coord = coords[1]; + + if (useGeoJSON) { + first_coord = coords[1]; + second_coord = coords[0]; + } + + return new google.maps.LatLng(first_coord, second_coord); +}; + +var arrayToLatLng = function(coords, useGeoJSON) { + var i; + + for (i = 0; i < coords.length; i++) { + if (!(coords[i] instanceof google.maps.LatLng)) { + if (coords[i].length > 0 && typeof(coords[i][0]) === "object") { + coords[i] = arrayToLatLng(coords[i], useGeoJSON); + } + else { + coords[i] = coordsToLatLngs(coords[i], useGeoJSON); + } + } + } + + return coords; +}; + + +var getElementsByClassName = function (class_name, context) { + + var element, + _class = class_name.replace('.', ''); + + if ('jQuery' in this && context) { + element = $("." + _class, context)[0]; + } else { + element = document.getElementsByClassName(_class)[0]; + } + return element; + +}; + +var getElementById = function(id, context) { + var element, + id = id.replace('#', ''); + + if ('jQuery' in window && context) { + element = $('#' + id, context)[0]; + } else { + element = document.getElementById(id); + }; + + return element; +}; + +var findAbsolutePosition = function(obj) { + var curleft = 0, + curtop = 0; + + if (obj.offsetParent) { + do { + curleft += obj.offsetLeft; + curtop += obj.offsetTop; + } while (obj = obj.offsetParent); + } + + return [curleft, curtop]; +}; + +var GMaps = (function(global) { + "use strict"; + + var doc = document; + + var GMaps = function(options) { + if (!this) return new GMaps(options); + + options.zoom = options.zoom || 15; + options.mapType = options.mapType || 'roadmap'; + + var self = this, + i, + events_that_hide_context_menu = [ + 'bounds_changed', 'center_changed', 'click', 'dblclick', 'drag', + 'dragend', 'dragstart', 'idle', 'maptypeid_changed', 'projection_changed', + 'resize', 'tilesloaded', 'zoom_changed' + ], + events_that_doesnt_hide_context_menu = ['mousemove', 'mouseout', 'mouseover'], + options_to_be_deleted = ['el', 'lat', 'lng', 'mapType', 'width', 'height', 'markerClusterer', 'enableNewStyle'], + identifier = options.el || options.div, + markerClustererFunction = options.markerClusterer, + mapType = google.maps.MapTypeId[options.mapType.toUpperCase()], + map_center = new google.maps.LatLng(options.lat, options.lng), + zoomControl = options.zoomControl || true, + zoomControlOpt = options.zoomControlOpt || { + style: 'DEFAULT', + position: 'TOP_LEFT' + }, + zoomControlStyle = zoomControlOpt.style || 'DEFAULT', + zoomControlPosition = zoomControlOpt.position || 'TOP_LEFT', + panControl = options.panControl || true, + mapTypeControl = options.mapTypeControl || true, + scaleControl = options.scaleControl || true, + streetViewControl = options.streetViewControl || true, + overviewMapControl = overviewMapControl || true, + map_options = {}, + map_base_options = { + zoom: this.zoom, + center: map_center, + mapTypeId: mapType + }, + map_controls_options = { + panControl: panControl, + zoomControl: zoomControl, + zoomControlOptions: { + style: google.maps.ZoomControlStyle[zoomControlStyle], + position: google.maps.ControlPosition[zoomControlPosition] + }, + mapTypeControl: mapTypeControl, + scaleControl: scaleControl, + streetViewControl: streetViewControl, + overviewMapControl: overviewMapControl + }; + + if (typeof(options.el) === 'string' || typeof(options.div) === 'string') { + + if (identifier.indexOf("#") > -1) { + this.el = getElementById(identifier, options.context); + } else { + this.el = getElementsByClassName.apply(this, [identifier, options.context]); + } + + } else { + this.el = identifier; + } + + if (typeof(this.el) === 'undefined' || this.el === null) { + throw 'No element defined.'; + } + + window.context_menu = window.context_menu || {}; + window.context_menu[self.el.id] = {}; + + this.controls = []; + this.overlays = []; + this.layers = []; // array with kml/georss and fusiontables layers, can be as many + this.singleLayers = {}; // object with the other layers, only one per layer + this.markers = []; + this.polylines = []; + this.routes = []; + this.polygons = []; + this.infoWindow = null; + this.overlay_el = null; + this.zoom = options.zoom; + this.registered_events = {}; + + this.el.style.width = options.width || this.el.scrollWidth || this.el.offsetWidth; + this.el.style.height = options.height || this.el.scrollHeight || this.el.offsetHeight; + + google.maps.visualRefresh = options.enableNewStyle; + + for (i = 0; i < options_to_be_deleted.length; i++) { + delete options[options_to_be_deleted[i]]; + } + + if(options.disableDefaultUI != true) { + map_base_options = extend_object(map_base_options, map_controls_options); + } + + map_options = extend_object(map_base_options, options); + + for (i = 0; i < events_that_hide_context_menu.length; i++) { + delete map_options[events_that_hide_context_menu[i]]; + } + + for (i = 0; i < events_that_doesnt_hide_context_menu.length; i++) { + delete map_options[events_that_doesnt_hide_context_menu[i]]; + } + + this.map = new google.maps.Map(this.el, map_options); + + if (markerClustererFunction) { + this.markerClusterer = markerClustererFunction.apply(this, [this.map]); + } + + var buildContextMenuHTML = function(control, e) { + var html = '', + options = window.context_menu[self.el.id][control]; + + for (var i in options){ + if (options.hasOwnProperty(i)) { + var option = options[i]; + + html += '
  • ' + option.title + '
  • '; + } + } + + if (!getElementById('gmaps_context_menu')) return; + + var context_menu_element = getElementById('gmaps_context_menu'); + + context_menu_element.innerHTML = html; + + var context_menu_items = context_menu_element.getElementsByTagName('a'), + context_menu_items_count = context_menu_items.length, + i; + + for (i = 0; i < context_menu_items_count; i++) { + var context_menu_item = context_menu_items[i]; + + var assign_menu_item_action = function(ev){ + ev.preventDefault(); + + options[this.id.replace(control + '_', '')].action.apply(self, [e]); + self.hideContextMenu(); + }; + + google.maps.event.clearListeners(context_menu_item, 'click'); + google.maps.event.addDomListenerOnce(context_menu_item, 'click', assign_menu_item_action, false); + } + + var position = findAbsolutePosition.apply(this, [self.el]), + left = position[0] + e.pixel.x - 15, + top = position[1] + e.pixel.y- 15; + + context_menu_element.style.left = left + "px"; + context_menu_element.style.top = top + "px"; + + context_menu_element.style.display = 'block'; + }; + + this.buildContextMenu = function(control, e) { + if (control === 'marker') { + e.pixel = {}; + + var overlay = new google.maps.OverlayView(); + overlay.setMap(self.map); + + overlay.draw = function() { + var projection = overlay.getProjection(), + position = e.marker.getPosition(); + + e.pixel = projection.fromLatLngToContainerPixel(position); + + buildContextMenuHTML(control, e); + }; + } + else { + buildContextMenuHTML(control, e); + } + }; + + this.setContextMenu = function(options) { + window.context_menu[self.el.id][options.control] = {}; + + var i, + ul = doc.createElement('ul'); + + for (i in options.options) { + if (options.options.hasOwnProperty(i)) { + var option = options.options[i]; + + window.context_menu[self.el.id][options.control][option.name] = { + title: option.title, + action: option.action + }; + } + } + + ul.id = 'gmaps_context_menu'; + ul.style.display = 'none'; + ul.style.position = 'absolute'; + ul.style.minWidth = '100px'; + ul.style.background = 'white'; + ul.style.listStyle = 'none'; + ul.style.padding = '8px'; + ul.style.boxShadow = '2px 2px 6px #ccc'; + + doc.body.appendChild(ul); + + var context_menu_element = getElementById('gmaps_context_menu') + + google.maps.event.addDomListener(context_menu_element, 'mouseout', function(ev) { + if (!ev.relatedTarget || !this.contains(ev.relatedTarget)) { + window.setTimeout(function(){ + context_menu_element.style.display = 'none'; + }, 400); + } + }, false); + }; + + this.hideContextMenu = function() { + var context_menu_element = getElementById('gmaps_context_menu'); + + if (context_menu_element) { + context_menu_element.style.display = 'none'; + } + }; + + var setupListener = function(object, name) { + google.maps.event.addListener(object, name, function(e){ + if (e == undefined) { + e = this; + } + + options[name].apply(this, [e]); + + self.hideContextMenu(); + }); + }; + + //google.maps.event.addListener(this.map, 'idle', this.hideContextMenu); + google.maps.event.addListener(this.map, 'zoom_changed', this.hideContextMenu); + + for (var ev = 0; ev < events_that_hide_context_menu.length; ev++) { + var name = events_that_hide_context_menu[ev]; + + if (name in options) { + setupListener(this.map, name); + } + } + + for (var ev = 0; ev < events_that_doesnt_hide_context_menu.length; ev++) { + var name = events_that_doesnt_hide_context_menu[ev]; + + if (name in options) { + setupListener(this.map, name); + } + } + + google.maps.event.addListener(this.map, 'rightclick', function(e) { + if (options.rightclick) { + options.rightclick.apply(this, [e]); + } + + if(window.context_menu[self.el.id]['map'] != undefined) { + self.buildContextMenu('map', e); + } + }); + + this.refresh = function() { + google.maps.event.trigger(this.map, 'resize'); + }; + + this.fitZoom = function() { + var latLngs = [], + markers_length = this.markers.length, + i; + + for (i = 0; i < markers_length; i++) { + if(typeof(this.markers[i].visible) === 'boolean' && this.markers[i].visible) { + latLngs.push(this.markers[i].getPosition()); + } + } + + this.fitLatLngBounds(latLngs); + }; + + this.fitLatLngBounds = function(latLngs) { + var total = latLngs.length, + bounds = new google.maps.LatLngBounds(), + i; + + for(i = 0; i < total; i++) { + bounds.extend(latLngs[i]); + } + + this.map.fitBounds(bounds); + }; + + this.setCenter = function(lat, lng, callback) { + this.map.panTo(new google.maps.LatLng(lat, lng)); + + if (callback) { + callback(); + } + }; + + this.getElement = function() { + return this.el; + }; + + this.zoomIn = function(value) { + value = value || 1; + + this.zoom = this.map.getZoom() + value; + this.map.setZoom(this.zoom); + }; + + this.zoomOut = function(value) { + value = value || 1; + + this.zoom = this.map.getZoom() - value; + this.map.setZoom(this.zoom); + }; + + var native_methods = [], + method; + + for (method in this.map) { + if (typeof(this.map[method]) == 'function' && !this[method]) { + native_methods.push(method); + } + } + + for (i = 0; i < native_methods.length; i++) { + (function(gmaps, scope, method_name) { + gmaps[method_name] = function(){ + return scope[method_name].apply(scope, arguments); + }; + })(this, this.map, native_methods[i]); + } + }; + + return GMaps; +})(this); + +GMaps.prototype.createControl = function(options) { + var control = document.createElement('div'); + + control.style.cursor = 'pointer'; + + if (options.disableDefaultStyles !== true) { + control.style.fontFamily = 'Roboto, Arial, sans-serif'; + control.style.fontSize = '11px'; + control.style.boxShadow = 'rgba(0, 0, 0, 0.298039) 0px 1px 4px -1px'; + } + + for (var option in options.style) { + control.style[option] = options.style[option]; + } + + if (options.id) { + control.id = options.id; + } + + if (options.classes) { + control.className = options.classes; + } + + if (options.content) { + if (typeof options.content === 'string') { + control.innerHTML = options.content; + } + else if (options.content instanceof HTMLElement) { + control.appendChild(options.content); + } + } + + if (options.position) { + control.position = google.maps.ControlPosition[options.position.toUpperCase()]; + } + + for (var ev in options.events) { + (function(object, name) { + google.maps.event.addDomListener(object, name, function(){ + options.events[name].apply(this, [this]); + }); + })(control, ev); + } + + control.index = 1; + + return control; +}; + +GMaps.prototype.addControl = function(options) { + var control = this.createControl(options); + + this.controls.push(control); + this.map.controls[control.position].push(control); + + return control; +}; + +GMaps.prototype.removeControl = function(control) { + var position = null, + i; + + for (i = 0; i < this.controls.length; i++) { + if (this.controls[i] == control) { + position = this.controls[i].position; + this.controls.splice(i, 1); + } + } + + if (position) { + for (i = 0; i < this.map.controls.length; i++) { + var controlsForPosition = this.map.controls[control.position]; + + if (controlsForPosition.getAt(i) == control) { + controlsForPosition.removeAt(i); + + break; + } + } + } + + return control; +}; + +GMaps.prototype.createMarker = function(options) { + if (options.lat == undefined && options.lng == undefined && options.position == undefined) { + throw 'No latitude or longitude defined.'; + } + + var self = this, + details = options.details, + fences = options.fences, + outside = options.outside, + base_options = { + position: new google.maps.LatLng(options.lat, options.lng), + map: null + }, + marker_options = extend_object(base_options, options); + + delete marker_options.lat; + delete marker_options.lng; + delete marker_options.fences; + delete marker_options.outside; + + var marker = new google.maps.Marker(marker_options); + + marker.fences = fences; + + if (options.infoWindow) { + marker.infoWindow = new google.maps.InfoWindow(options.infoWindow); + + var info_window_events = ['closeclick', 'content_changed', 'domready', 'position_changed', 'zindex_changed']; + + for (var ev = 0; ev < info_window_events.length; ev++) { + (function(object, name) { + if (options.infoWindow[name]) { + google.maps.event.addListener(object, name, function(e){ + options.infoWindow[name].apply(this, [e]); + }); + } + })(marker.infoWindow, info_window_events[ev]); + } + } + + var marker_events = ['animation_changed', 'clickable_changed', 'cursor_changed', 'draggable_changed', 'flat_changed', 'icon_changed', 'position_changed', 'shadow_changed', 'shape_changed', 'title_changed', 'visible_changed', 'zindex_changed']; + + var marker_events_with_mouse = ['dblclick', 'drag', 'dragend', 'dragstart', 'mousedown', 'mouseout', 'mouseover', 'mouseup']; + + for (var ev = 0; ev < marker_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(){ + options[name].apply(this, [this]); + }); + } + })(marker, marker_events[ev]); + } + + for (var ev = 0; ev < marker_events_with_mouse.length; ev++) { + (function(map, object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(me){ + if(!me.pixel){ + me.pixel = map.getProjection().fromLatLngToPoint(me.latLng) + } + + options[name].apply(this, [me]); + }); + } + })(this.map, marker, marker_events_with_mouse[ev]); + } + + google.maps.event.addListener(marker, 'click', function() { + this.details = details; + + if (options.click) { + options.click.apply(this, [this]); + } + + if (marker.infoWindow) { + self.hideInfoWindows(); + marker.infoWindow.open(self.map, marker); + } + }); + + google.maps.event.addListener(marker, 'rightclick', function(e) { + e.marker = this; + + if (options.rightclick) { + options.rightclick.apply(this, [e]); + } + + if (window.context_menu[self.el.id]['marker'] != undefined) { + self.buildContextMenu('marker', e); + } + }); + + if (marker.fences) { + google.maps.event.addListener(marker, 'dragend', function() { + self.checkMarkerGeofence(marker, function(m, f) { + outside(m, f); + }); + }); + } + + return marker; +}; + +GMaps.prototype.addMarker = function(options) { + var marker; + if(options.hasOwnProperty('gm_accessors_')) { + // Native google.maps.Marker object + marker = options; + } + else { + if ((options.hasOwnProperty('lat') && options.hasOwnProperty('lng')) || options.position) { + marker = this.createMarker(options); + } + else { + throw 'No latitude or longitude defined.'; + } + } + + marker.setMap(this.map); + + if(this.markerClusterer) { + this.markerClusterer.addMarker(marker); + } + + this.markers.push(marker); + + GMaps.fire('marker_added', marker, this); + + return marker; +}; + +GMaps.prototype.addMarkers = function(array) { + for (var i = 0, marker; marker=array[i]; i++) { + this.addMarker(marker); + } + + return this.markers; +}; + +GMaps.prototype.hideInfoWindows = function() { + for (var i = 0, marker; marker = this.markers[i]; i++){ + if (marker.infoWindow) { + marker.infoWindow.close(); + } + } +}; + +GMaps.prototype.removeMarker = function(marker) { + for (var i = 0; i < this.markers.length; i++) { + if (this.markers[i] === marker) { + this.markers[i].setMap(null); + this.markers.splice(i, 1); + + if(this.markerClusterer) { + this.markerClusterer.removeMarker(marker); + } + + GMaps.fire('marker_removed', marker, this); + + break; + } + } + + return marker; +}; + +GMaps.prototype.removeMarkers = function (collection) { + var new_markers = []; + + if (typeof collection == 'undefined') { + for (var i = 0; i < this.markers.length; i++) { + var marker = this.markers[i]; + marker.setMap(null); + + if(this.markerClusterer) { + this.markerClusterer.removeMarker(marker); + } + + GMaps.fire('marker_removed', marker, this); + } + + this.markers = new_markers; + } + else { + for (var i = 0; i < collection.length; i++) { + var index = this.markers.indexOf(collection[i]); + + if (index > -1) { + var marker = this.markers[index]; + marker.setMap(null); + + if(this.markerClusterer) { + this.markerClusterer.removeMarker(marker); + } + + GMaps.fire('marker_removed', marker, this); + } + } + + for (var i = 0; i < this.markers.length; i++) { + var marker = this.markers[i]; + if (marker.getMap() != null) { + new_markers.push(marker); + } + } + + this.markers = new_markers; + } +}; + +GMaps.prototype.drawOverlay = function(options) { + var overlay = new google.maps.OverlayView(), + auto_show = true; + + overlay.setMap(this.map); + + if (options.auto_show != null) { + auto_show = options.auto_show; + } + + overlay.onAdd = function() { + var el = document.createElement('div'); + + el.style.borderStyle = "none"; + el.style.borderWidth = "0px"; + el.style.position = "absolute"; + el.style.zIndex = 100; + el.innerHTML = options.content; + + overlay.el = el; + + if (!options.layer) { + options.layer = 'overlayLayer'; + } + + var panes = this.getPanes(), + overlayLayer = panes[options.layer], + stop_overlay_events = ['contextmenu', 'DOMMouseScroll', 'dblclick', 'mousedown']; + + overlayLayer.appendChild(el); + + for (var ev = 0; ev < stop_overlay_events.length; ev++) { + (function(object, name) { + google.maps.event.addDomListener(object, name, function(e){ + if (navigator.userAgent.toLowerCase().indexOf('msie') != -1 && document.all) { + e.cancelBubble = true; + e.returnValue = false; + } + else { + e.stopPropagation(); + } + }); + })(el, stop_overlay_events[ev]); + } + + if (options.click) { + panes.overlayMouseTarget.appendChild(overlay.el); + google.maps.event.addDomListener(overlay.el, 'click', function() { + options.click.apply(overlay, [overlay]); + }); + } + + google.maps.event.trigger(this, 'ready'); + }; + + overlay.draw = function() { + var projection = this.getProjection(), + pixel = projection.fromLatLngToDivPixel(new google.maps.LatLng(options.lat, options.lng)); + + options.horizontalOffset = options.horizontalOffset || 0; + options.verticalOffset = options.verticalOffset || 0; + + var el = overlay.el, + content = el.children[0], + content_height = content.clientHeight, + content_width = content.clientWidth; + + switch (options.verticalAlign) { + case 'top': + el.style.top = (pixel.y - content_height + options.verticalOffset) + 'px'; + break; + default: + case 'middle': + el.style.top = (pixel.y - (content_height / 2) + options.verticalOffset) + 'px'; + break; + case 'bottom': + el.style.top = (pixel.y + options.verticalOffset) + 'px'; + break; + } + + switch (options.horizontalAlign) { + case 'left': + el.style.left = (pixel.x - content_width + options.horizontalOffset) + 'px'; + break; + default: + case 'center': + el.style.left = (pixel.x - (content_width / 2) + options.horizontalOffset) + 'px'; + break; + case 'right': + el.style.left = (pixel.x + options.horizontalOffset) + 'px'; + break; + } + + el.style.display = auto_show ? 'block' : 'none'; + + if (!auto_show) { + options.show.apply(this, [el]); + } + }; + + overlay.onRemove = function() { + var el = overlay.el; + + if (options.remove) { + options.remove.apply(this, [el]); + } + else { + overlay.el.parentNode.removeChild(overlay.el); + overlay.el = null; + } + }; + + this.overlays.push(overlay); + return overlay; +}; + +GMaps.prototype.removeOverlay = function(overlay) { + for (var i = 0; i < this.overlays.length; i++) { + if (this.overlays[i] === overlay) { + this.overlays[i].setMap(null); + this.overlays.splice(i, 1); + + break; + } + } +}; + +GMaps.prototype.removeOverlays = function() { + for (var i = 0, item; item = this.overlays[i]; i++) { + item.setMap(null); + } + + this.overlays = []; +}; + +GMaps.prototype.drawPolyline = function(options) { + var path = [], + points = options.path; + + if (points.length) { + if (points[0][0] === undefined) { + path = points; + } + else { + for (var i = 0, latlng; latlng = points[i]; i++) { + path.push(new google.maps.LatLng(latlng[0], latlng[1])); + } + } + } + + var polyline_options = { + map: this.map, + path: path, + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight, + geodesic: options.geodesic, + clickable: true, + editable: false, + visible: true + }; + + if (options.hasOwnProperty("clickable")) { + polyline_options.clickable = options.clickable; + } + + if (options.hasOwnProperty("editable")) { + polyline_options.editable = options.editable; + } + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + if (options.hasOwnProperty("zIndex")) { + polyline_options.zIndex = options.zIndex; + } + + var polyline = new google.maps.Polyline(polyline_options); + + var polyline_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick']; + + for (var ev = 0; ev < polyline_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(e){ + options[name].apply(this, [e]); + }); + } + })(polyline, polyline_events[ev]); + } + + this.polylines.push(polyline); + + GMaps.fire('polyline_added', polyline, this); + + return polyline; +}; + +GMaps.prototype.removePolyline = function(polyline) { + for (var i = 0; i < this.polylines.length; i++) { + if (this.polylines[i] === polyline) { + this.polylines[i].setMap(null); + this.polylines.splice(i, 1); + + GMaps.fire('polyline_removed', polyline, this); + + break; + } + } +}; + +GMaps.prototype.removePolylines = function() { + for (var i = 0, item; item = this.polylines[i]; i++) { + item.setMap(null); + } + + this.polylines = []; +}; + +GMaps.prototype.drawCircle = function(options) { + options = extend_object({ + map: this.map, + center: new google.maps.LatLng(options.lat, options.lng) + }, options); + + delete options.lat; + delete options.lng; + + var polygon = new google.maps.Circle(options), + polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick']; + + for (var ev = 0; ev < polygon_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(e){ + options[name].apply(this, [e]); + }); + } + })(polygon, polygon_events[ev]); + } + + this.polygons.push(polygon); + + return polygon; +}; + +GMaps.prototype.drawRectangle = function(options) { + options = extend_object({ + map: this.map + }, options); + + var latLngBounds = new google.maps.LatLngBounds( + new google.maps.LatLng(options.bounds[0][0], options.bounds[0][1]), + new google.maps.LatLng(options.bounds[1][0], options.bounds[1][1]) + ); + + options.bounds = latLngBounds; + + var polygon = new google.maps.Rectangle(options), + polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick']; + + for (var ev = 0; ev < polygon_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(e){ + options[name].apply(this, [e]); + }); + } + })(polygon, polygon_events[ev]); + } + + this.polygons.push(polygon); + + return polygon; +}; + +GMaps.prototype.drawPolygon = function(options) { + var useGeoJSON = false; + + if(options.hasOwnProperty("useGeoJSON")) { + useGeoJSON = options.useGeoJSON; + } + + delete options.useGeoJSON; + + options = extend_object({ + map: this.map + }, options); + + if (useGeoJSON == false) { + options.paths = [options.paths.slice(0)]; + } + + if (options.paths.length > 0) { + if (options.paths[0].length > 0) { + options.paths = array_flat(array_map(options.paths, arrayToLatLng, useGeoJSON)); + } + } + + var polygon = new google.maps.Polygon(options), + polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick']; + + for (var ev = 0; ev < polygon_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(e){ + options[name].apply(this, [e]); + }); + } + })(polygon, polygon_events[ev]); + } + + this.polygons.push(polygon); + + GMaps.fire('polygon_added', polygon, this); + + return polygon; +}; + +GMaps.prototype.removePolygon = function(polygon) { + for (var i = 0; i < this.polygons.length; i++) { + if (this.polygons[i] === polygon) { + this.polygons[i].setMap(null); + this.polygons.splice(i, 1); + + GMaps.fire('polygon_removed', polygon, this); + + break; + } + } +}; + +GMaps.prototype.removePolygons = function() { + for (var i = 0, item; item = this.polygons[i]; i++) { + item.setMap(null); + } + + this.polygons = []; +}; + +GMaps.prototype.getFromFusionTables = function(options) { + var events = options.events; + + delete options.events; + + var fusion_tables_options = options, + layer = new google.maps.FusionTablesLayer(fusion_tables_options); + + for (var ev in events) { + (function(object, name) { + google.maps.event.addListener(object, name, function(e) { + events[name].apply(this, [e]); + }); + })(layer, ev); + } + + this.layers.push(layer); + + return layer; +}; + +GMaps.prototype.loadFromFusionTables = function(options) { + var layer = this.getFromFusionTables(options); + layer.setMap(this.map); + + return layer; +}; + +GMaps.prototype.getFromKML = function(options) { + var url = options.url, + events = options.events; + + delete options.url; + delete options.events; + + var kml_options = options, + layer = new google.maps.KmlLayer(url, kml_options); + + for (var ev in events) { + (function(object, name) { + google.maps.event.addListener(object, name, function(e) { + events[name].apply(this, [e]); + }); + })(layer, ev); + } + + this.layers.push(layer); + + return layer; +}; + +GMaps.prototype.loadFromKML = function(options) { + var layer = this.getFromKML(options); + layer.setMap(this.map); + + return layer; +}; + +GMaps.prototype.addLayer = function(layerName, options) { + //var default_layers = ['weather', 'clouds', 'traffic', 'transit', 'bicycling', 'panoramio', 'places']; + options = options || {}; + var layer; + + switch(layerName) { + case 'weather': this.singleLayers.weather = layer = new google.maps.weather.WeatherLayer(); + break; + case 'clouds': this.singleLayers.clouds = layer = new google.maps.weather.CloudLayer(); + break; + case 'traffic': this.singleLayers.traffic = layer = new google.maps.TrafficLayer(); + break; + case 'transit': this.singleLayers.transit = layer = new google.maps.TransitLayer(); + break; + case 'bicycling': this.singleLayers.bicycling = layer = new google.maps.BicyclingLayer(); + break; + case 'panoramio': + this.singleLayers.panoramio = layer = new google.maps.panoramio.PanoramioLayer(); + layer.setTag(options.filter); + delete options.filter; + + //click event + if (options.click) { + google.maps.event.addListener(layer, 'click', function(event) { + options.click(event); + delete options.click; + }); + } + break; + case 'places': + this.singleLayers.places = layer = new google.maps.places.PlacesService(this.map); + + //search, nearbySearch, radarSearch callback, Both are the same + if (options.search || options.nearbySearch || options.radarSearch) { + var placeSearchRequest = { + bounds : options.bounds || null, + keyword : options.keyword || null, + location : options.location || null, + name : options.name || null, + radius : options.radius || null, + rankBy : options.rankBy || null, + types : options.types || null + }; + + if (options.radarSearch) { + layer.radarSearch(placeSearchRequest, options.radarSearch); + } + + if (options.search) { + layer.search(placeSearchRequest, options.search); + } + + if (options.nearbySearch) { + layer.nearbySearch(placeSearchRequest, options.nearbySearch); + } + } + + //textSearch callback + if (options.textSearch) { + var textSearchRequest = { + bounds : options.bounds || null, + location : options.location || null, + query : options.query || null, + radius : options.radius || null + }; + + layer.textSearch(textSearchRequest, options.textSearch); + } + break; + } + + if (layer !== undefined) { + if (typeof layer.setOptions == 'function') { + layer.setOptions(options); + } + if (typeof layer.setMap == 'function') { + layer.setMap(this.map); + } + + return layer; + } +}; + +GMaps.prototype.removeLayer = function(layer) { + if (typeof(layer) == "string" && this.singleLayers[layer] !== undefined) { + this.singleLayers[layer].setMap(null); + + delete this.singleLayers[layer]; + } + else { + for (var i = 0; i < this.layers.length; i++) { + if (this.layers[i] === layer) { + this.layers[i].setMap(null); + this.layers.splice(i, 1); + + break; + } + } + } +}; + +var travelMode, unitSystem; + +GMaps.prototype.getRoutes = function(options) { + switch (options.travelMode) { + case 'bicycling': + travelMode = google.maps.TravelMode.BICYCLING; + break; + case 'transit': + travelMode = google.maps.TravelMode.TRANSIT; + break; + case 'driving': + travelMode = google.maps.TravelMode.DRIVING; + break; + default: + travelMode = google.maps.TravelMode.WALKING; + break; + } + + if (options.unitSystem === 'imperial') { + unitSystem = google.maps.UnitSystem.IMPERIAL; + } + else { + unitSystem = google.maps.UnitSystem.METRIC; + } + + var base_options = { + avoidHighways: false, + avoidTolls: false, + optimizeWaypoints: false, + waypoints: [] + }, + request_options = extend_object(base_options, options); + + request_options.origin = /string/.test(typeof options.origin) ? options.origin : new google.maps.LatLng(options.origin[0], options.origin[1]); + request_options.destination = /string/.test(typeof options.destination) ? options.destination : new google.maps.LatLng(options.destination[0], options.destination[1]); + request_options.travelMode = travelMode; + request_options.unitSystem = unitSystem; + + delete request_options.callback; + delete request_options.error; + + var self = this, + service = new google.maps.DirectionsService(); + + service.route(request_options, function(result, status) { + if (status === google.maps.DirectionsStatus.OK) { + for (var r in result.routes) { + if (result.routes.hasOwnProperty(r)) { + self.routes.push(result.routes[r]); + } + } + + if (options.callback) { + options.callback(self.routes); + } + } + else { + if (options.error) { + options.error(result, status); + } + } + }); +}; + +GMaps.prototype.removeRoutes = function() { + this.routes = []; +}; + +GMaps.prototype.getElevations = function(options) { + options = extend_object({ + locations: [], + path : false, + samples : 256 + }, options); + + if (options.locations.length > 0) { + if (options.locations[0].length > 0) { + options.locations = array_flat(array_map([options.locations], arrayToLatLng, false)); + } + } + + var callback = options.callback; + delete options.callback; + + var service = new google.maps.ElevationService(); + + //location request + if (!options.path) { + delete options.path; + delete options.samples; + + service.getElevationForLocations(options, function(result, status) { + if (callback && typeof(callback) === "function") { + callback(result, status); + } + }); + //path request + } else { + var pathRequest = { + path : options.locations, + samples : options.samples + }; + + service.getElevationAlongPath(pathRequest, function(result, status) { + if (callback && typeof(callback) === "function") { + callback(result, status); + } + }); + } +}; + +GMaps.prototype.cleanRoute = GMaps.prototype.removePolylines; + +GMaps.prototype.drawRoute = function(options) { + var self = this; + + this.getRoutes({ + origin: options.origin, + destination: options.destination, + travelMode: options.travelMode, + waypoints: options.waypoints, + unitSystem: options.unitSystem, + error: options.error, + callback: function(e) { + if (e.length > 0) { + var polyline_options = { + path: e[e.length - 1].overview_path, + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight + }; + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + self.drawPolyline(polyline_options); + + if (options.callback) { + options.callback(e[e.length - 1]); + } + } + } + }); +}; + +GMaps.prototype.travelRoute = function(options) { + if (options.origin && options.destination) { + this.getRoutes({ + origin: options.origin, + destination: options.destination, + travelMode: options.travelMode, + waypoints : options.waypoints, + unitSystem: options.unitSystem, + error: options.error, + callback: function(e) { + //start callback + if (e.length > 0 && options.start) { + options.start(e[e.length - 1]); + } + + //step callback + if (e.length > 0 && options.step) { + var route = e[e.length - 1]; + if (route.legs.length > 0) { + var steps = route.legs[0].steps; + for (var i = 0, step; step = steps[i]; i++) { + step.step_number = i; + options.step(step, (route.legs[0].steps.length - 1)); + } + } + } + + //end callback + if (e.length > 0 && options.end) { + options.end(e[e.length - 1]); + } + } + }); + } + else if (options.route) { + if (options.route.legs.length > 0) { + var steps = options.route.legs[0].steps; + for (var i = 0, step; step = steps[i]; i++) { + step.step_number = i; + options.step(step); + } + } + } +}; + +GMaps.prototype.drawSteppedRoute = function(options) { + var self = this; + + if (options.origin && options.destination) { + this.getRoutes({ + origin: options.origin, + destination: options.destination, + travelMode: options.travelMode, + waypoints : options.waypoints, + error: options.error, + callback: function(e) { + //start callback + if (e.length > 0 && options.start) { + options.start(e[e.length - 1]); + } + + //step callback + if (e.length > 0 && options.step) { + var route = e[e.length - 1]; + if (route.legs.length > 0) { + var steps = route.legs[0].steps; + for (var i = 0, step; step = steps[i]; i++) { + step.step_number = i; + var polyline_options = { + path: step.path, + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight + }; + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + self.drawPolyline(polyline_options); + options.step(step, (route.legs[0].steps.length - 1)); + } + } + } + + //end callback + if (e.length > 0 && options.end) { + options.end(e[e.length - 1]); + } + } + }); + } + else if (options.route) { + if (options.route.legs.length > 0) { + var steps = options.route.legs[0].steps; + for (var i = 0, step; step = steps[i]; i++) { + step.step_number = i; + var polyline_options = { + path: step.path, + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight + }; + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + self.drawPolyline(polyline_options); + options.step(step); + } + } + } +}; + +GMaps.Route = function(options) { + this.origin = options.origin; + this.destination = options.destination; + this.waypoints = options.waypoints; + + this.map = options.map; + this.route = options.route; + this.step_count = 0; + this.steps = this.route.legs[0].steps; + this.steps_length = this.steps.length; + + var polyline_options = { + path: new google.maps.MVCArray(), + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight + }; + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + this.polyline = this.map.drawPolyline(polyline_options).getPath(); +}; + +GMaps.Route.prototype.getRoute = function(options) { + var self = this; + + this.map.getRoutes({ + origin : this.origin, + destination : this.destination, + travelMode : options.travelMode, + waypoints : this.waypoints || [], + error: options.error, + callback : function() { + self.route = e[0]; + + if (options.callback) { + options.callback.call(self); + } + } + }); +}; + +GMaps.Route.prototype.back = function() { + if (this.step_count > 0) { + this.step_count--; + var path = this.route.legs[0].steps[this.step_count].path; + + for (var p in path){ + if (path.hasOwnProperty(p)){ + this.polyline.pop(); + } + } + } +}; + +GMaps.Route.prototype.forward = function() { + if (this.step_count < this.steps_length) { + var path = this.route.legs[0].steps[this.step_count].path; + + for (var p in path){ + if (path.hasOwnProperty(p)){ + this.polyline.push(path[p]); + } + } + this.step_count++; + } +}; + +GMaps.prototype.checkGeofence = function(lat, lng, fence) { + return fence.containsLatLng(new google.maps.LatLng(lat, lng)); +}; + +GMaps.prototype.checkMarkerGeofence = function(marker, outside_callback) { + if (marker.fences) { + for (var i = 0, fence; fence = marker.fences[i]; i++) { + var pos = marker.getPosition(); + if (!this.checkGeofence(pos.lat(), pos.lng(), fence)) { + outside_callback(marker, fence); + } + } + } +}; + +GMaps.prototype.toImage = function(options) { + var options = options || {}, + static_map_options = {}; + + static_map_options['size'] = options['size'] || [this.el.clientWidth, this.el.clientHeight]; + static_map_options['lat'] = this.getCenter().lat(); + static_map_options['lng'] = this.getCenter().lng(); + + if (this.markers.length > 0) { + static_map_options['markers'] = []; + + for (var i = 0; i < this.markers.length; i++) { + static_map_options['markers'].push({ + lat: this.markers[i].getPosition().lat(), + lng: this.markers[i].getPosition().lng() + }); + } + } + + if (this.polylines.length > 0) { + var polyline = this.polylines[0]; + + static_map_options['polyline'] = {}; + static_map_options['polyline']['path'] = google.maps.geometry.encoding.encodePath(polyline.getPath()); + static_map_options['polyline']['strokeColor'] = polyline.strokeColor + static_map_options['polyline']['strokeOpacity'] = polyline.strokeOpacity + static_map_options['polyline']['strokeWeight'] = polyline.strokeWeight + } + + return GMaps.staticMapURL(static_map_options); +}; + +GMaps.staticMapURL = function(options){ + var parameters = [], + data, + static_root = (location.protocol === 'file:' ? 'http:' : location.protocol ) + '//maps.googleapis.com/maps/api/staticmap'; + + if (options.url) { + static_root = options.url; + delete options.url; + } + + static_root += '?'; + + var markers = options.markers; + + delete options.markers; + + if (!markers && options.marker) { + markers = [options.marker]; + delete options.marker; + } + + var styles = options.styles; + + delete options.styles; + + var polyline = options.polyline; + delete options.polyline; + + /** Map options **/ + if (options.center) { + parameters.push('center=' + options.center); + delete options.center; + } + else if (options.address) { + parameters.push('center=' + options.address); + delete options.address; + } + else if (options.lat) { + parameters.push(['center=', options.lat, ',', options.lng].join('')); + delete options.lat; + delete options.lng; + } + else if (options.visible) { + var visible = encodeURI(options.visible.join('|')); + parameters.push('visible=' + visible); + } + + var size = options.size; + if (size) { + if (size.join) { + size = size.join('x'); + } + delete options.size; + } + else { + size = '630x300'; + } + parameters.push('size=' + size); + + if (!options.zoom && options.zoom !== false) { + options.zoom = 15; + } + + var sensor = options.hasOwnProperty('sensor') ? !!options.sensor : true; + delete options.sensor; + parameters.push('sensor=' + sensor); + + for (var param in options) { + if (options.hasOwnProperty(param)) { + parameters.push(param + '=' + options[param]); + } + } + + /** Markers **/ + if (markers) { + var marker, loc; + + for (var i = 0; data = markers[i]; i++) { + marker = []; + + if (data.size && data.size !== 'normal') { + marker.push('size:' + data.size); + delete data.size; + } + else if (data.icon) { + marker.push('icon:' + encodeURI(data.icon)); + delete data.icon; + } + + if (data.color) { + marker.push('color:' + data.color.replace('#', '0x')); + delete data.color; + } + + if (data.label) { + marker.push('label:' + data.label[0].toUpperCase()); + delete data.label; + } + + loc = (data.address ? data.address : data.lat + ',' + data.lng); + delete data.address; + delete data.lat; + delete data.lng; + + for(var param in data){ + if (data.hasOwnProperty(param)) { + marker.push(param + ':' + data[param]); + } + } + + if (marker.length || i === 0) { + marker.push(loc); + marker = marker.join('|'); + parameters.push('markers=' + encodeURI(marker)); + } + // New marker without styles + else { + marker = parameters.pop() + encodeURI('|' + loc); + parameters.push(marker); + } + } + } + + /** Map Styles **/ + if (styles) { + for (var i = 0; i < styles.length; i++) { + var styleRule = []; + if (styles[i].featureType){ + styleRule.push('feature:' + styles[i].featureType.toLowerCase()); + } + + if (styles[i].elementType) { + styleRule.push('element:' + styles[i].elementType.toLowerCase()); + } + + for (var j = 0; j < styles[i].stylers.length; j++) { + for (var p in styles[i].stylers[j]) { + var ruleArg = styles[i].stylers[j][p]; + if (p == 'hue' || p == 'color') { + ruleArg = '0x' + ruleArg.substring(1); + } + styleRule.push(p + ':' + ruleArg); + } + } + + var rule = styleRule.join('|'); + if (rule != '') { + parameters.push('style=' + rule); + } + } + } + + /** Polylines **/ + function parseColor(color, opacity) { + if (color[0] === '#'){ + color = color.replace('#', '0x'); + + if (opacity) { + opacity = parseFloat(opacity); + opacity = Math.min(1, Math.max(opacity, 0)); + if (opacity === 0) { + return '0x00000000'; + } + opacity = (opacity * 255).toString(16); + if (opacity.length === 1) { + opacity += opacity; + } + + color = color.slice(0,8) + opacity; + } + } + return color; + } + + if (polyline) { + data = polyline; + polyline = []; + + if (data.strokeWeight) { + polyline.push('weight:' + parseInt(data.strokeWeight, 10)); + } + + if (data.strokeColor) { + var color = parseColor(data.strokeColor, data.strokeOpacity); + polyline.push('color:' + color); + } + + if (data.fillColor) { + var fillcolor = parseColor(data.fillColor, data.fillOpacity); + polyline.push('fillcolor:' + fillcolor); + } + + var path = data.path; + if (path.join) { + for (var j=0, pos; pos=path[j]; j++) { + polyline.push(pos.join(',')); + } + } + else { + polyline.push('enc:' + path); + } + + polyline = polyline.join('|'); + parameters.push('path=' + encodeURI(polyline)); + } + + /** Retina support **/ + var dpi = window.devicePixelRatio || 1; + parameters.push('scale=' + dpi); + + parameters = parameters.join('&'); + return static_root + parameters; +}; + +GMaps.prototype.addMapType = function(mapTypeId, options) { + if (options.hasOwnProperty("getTileUrl") && typeof(options["getTileUrl"]) == "function") { + options.tileSize = options.tileSize || new google.maps.Size(256, 256); + + var mapType = new google.maps.ImageMapType(options); + + this.map.mapTypes.set(mapTypeId, mapType); + } + else { + throw "'getTileUrl' function required."; + } +}; + +GMaps.prototype.addOverlayMapType = function(options) { + if (options.hasOwnProperty("getTile") && typeof(options["getTile"]) == "function") { + var overlayMapTypeIndex = options.index; + + delete options.index; + + this.map.overlayMapTypes.insertAt(overlayMapTypeIndex, options); + } + else { + throw "'getTile' function required."; + } +}; + +GMaps.prototype.removeOverlayMapType = function(overlayMapTypeIndex) { + this.map.overlayMapTypes.removeAt(overlayMapTypeIndex); +}; + +GMaps.prototype.addStyle = function(options) { + var styledMapType = new google.maps.StyledMapType(options.styles, { name: options.styledMapName }); + + this.map.mapTypes.set(options.mapTypeId, styledMapType); +}; + +GMaps.prototype.setStyle = function(mapTypeId) { + this.map.setMapTypeId(mapTypeId); +}; + +GMaps.prototype.createPanorama = function(streetview_options) { + if (!streetview_options.hasOwnProperty('lat') || !streetview_options.hasOwnProperty('lng')) { + streetview_options.lat = this.getCenter().lat(); + streetview_options.lng = this.getCenter().lng(); + } + + this.panorama = GMaps.createPanorama(streetview_options); + + this.map.setStreetView(this.panorama); + + return this.panorama; +}; + +GMaps.createPanorama = function(options) { + var el = getElementById(options.el, options.context); + + options.position = new google.maps.LatLng(options.lat, options.lng); + + delete options.el; + delete options.context; + delete options.lat; + delete options.lng; + + var streetview_events = ['closeclick', 'links_changed', 'pano_changed', 'position_changed', 'pov_changed', 'resize', 'visible_changed'], + streetview_options = extend_object({visible : true}, options); + + for (var i = 0; i < streetview_events.length; i++) { + delete streetview_options[streetview_events[i]]; + } + + var panorama = new google.maps.StreetViewPanorama(el, streetview_options); + + for (var i = 0; i < streetview_events.length; i++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(){ + options[name].apply(this); + }); + } + })(panorama, streetview_events[i]); + } + + return panorama; +}; + +GMaps.prototype.on = function(event_name, handler) { + return GMaps.on(event_name, this, handler); +}; + +GMaps.prototype.off = function(event_name) { + GMaps.off(event_name, this); +}; + +GMaps.custom_events = ['marker_added', 'marker_removed', 'polyline_added', 'polyline_removed', 'polygon_added', 'polygon_removed', 'geolocated', 'geolocation_failed']; + +GMaps.on = function(event_name, object, handler) { + if (GMaps.custom_events.indexOf(event_name) == -1) { + if(object instanceof GMaps) object = object.map; + return google.maps.event.addListener(object, event_name, handler); + } + else { + var registered_event = { + handler : handler, + eventName : event_name + }; + + object.registered_events[event_name] = object.registered_events[event_name] || []; + object.registered_events[event_name].push(registered_event); + + return registered_event; + } +}; + +GMaps.off = function(event_name, object) { + if (GMaps.custom_events.indexOf(event_name) == -1) { + if(object instanceof GMaps) object = object.map; + google.maps.event.clearListeners(object, event_name); + } + else { + object.registered_events[event_name] = []; + } +}; + +GMaps.fire = function(event_name, object, scope) { + if (GMaps.custom_events.indexOf(event_name) == -1) { + google.maps.event.trigger(object, event_name, Array.prototype.slice.apply(arguments).slice(2)); + } + else { + if(event_name in scope.registered_events) { + var firing_events = scope.registered_events[event_name]; + + for(var i = 0; i < firing_events.length; i++) { + (function(handler, scope, object) { + handler.apply(scope, [object]); + })(firing_events[i]['handler'], scope, object); + } + } + } +}; + +GMaps.geolocate = function(options) { + var complete_callback = options.always || options.complete; + + if (navigator.geolocation) { + navigator.geolocation.getCurrentPosition(function(position) { + options.success(position); + + if (complete_callback) { + complete_callback(); + } + }, function(error) { + options.error(error); + + if (complete_callback) { + complete_callback(); + } + }, options.options); + } + else { + options.not_supported(); + + if (complete_callback) { + complete_callback(); + } + } +}; + +GMaps.geocode = function(options) { + this.geocoder = new google.maps.Geocoder(); + var callback = options.callback; + if (options.hasOwnProperty('lat') && options.hasOwnProperty('lng')) { + options.latLng = new google.maps.LatLng(options.lat, options.lng); + } + + delete options.lat; + delete options.lng; + delete options.callback; + + this.geocoder.geocode(options, function(results, status) { + callback(results, status); + }); +}; + +//========================== +// Polygon containsLatLng +// https://github.com/tparkin/Google-Maps-Point-in-Polygon +// Poygon getBounds extension - google-maps-extensions +// http://code.google.com/p/google-maps-extensions/source/browse/google.maps.Polygon.getBounds.js +if (!google.maps.Polygon.prototype.getBounds) { + google.maps.Polygon.prototype.getBounds = function(latLng) { + var bounds = new google.maps.LatLngBounds(); + var paths = this.getPaths(); + var path; + + for (var p = 0; p < paths.getLength(); p++) { + path = paths.getAt(p); + for (var i = 0; i < path.getLength(); i++) { + bounds.extend(path.getAt(i)); + } + } + + return bounds; + }; +} + +if (!google.maps.Polygon.prototype.containsLatLng) { + // Polygon containsLatLng - method to determine if a latLng is within a polygon + google.maps.Polygon.prototype.containsLatLng = function(latLng) { + // Exclude points outside of bounds as there is no way they are in the poly + var bounds = this.getBounds(); + + if (bounds !== null && !bounds.contains(latLng)) { + return false; + } + + // Raycast point in polygon method + var inPoly = false; + + var numPaths = this.getPaths().getLength(); + for (var p = 0; p < numPaths; p++) { + var path = this.getPaths().getAt(p); + var numPoints = path.getLength(); + var j = numPoints - 1; + + for (var i = 0; i < numPoints; i++) { + var vertex1 = path.getAt(i); + var vertex2 = path.getAt(j); + + if (vertex1.lng() < latLng.lng() && vertex2.lng() >= latLng.lng() || vertex2.lng() < latLng.lng() && vertex1.lng() >= latLng.lng()) { + if (vertex1.lat() + (latLng.lng() - vertex1.lng()) / (vertex2.lng() - vertex1.lng()) * (vertex2.lat() - vertex1.lat()) < latLng.lat()) { + inPoly = !inPoly; + } + } + + j = i; + } + } + + return inPoly; + }; +} + +if (!google.maps.Circle.prototype.containsLatLng) { + google.maps.Circle.prototype.containsLatLng = function(latLng) { + if (google.maps.geometry) { + return google.maps.geometry.spherical.computeDistanceBetween(this.getCenter(), latLng) <= this.getRadius(); + } + else { + return true; + } + }; +} + +google.maps.LatLngBounds.prototype.containsLatLng = function(latLng) { + return this.contains(latLng); +}; + +google.maps.Marker.prototype.setFences = function(fences) { + this.fences = fences; +}; + +google.maps.Marker.prototype.addFence = function(fence) { + this.fences.push(fence); +}; + +google.maps.Marker.prototype.getId = function() { + return this['__gm_id']; +}; + +//========================== +// Array indexOf +// https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf +if (!Array.prototype.indexOf) { + Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) { + "use strict"; + if (this == null) { + throw new TypeError(); + } + var t = Object(this); + var len = t.length >>> 0; + if (len === 0) { + return -1; + } + var n = 0; + if (arguments.length > 1) { + n = Number(arguments[1]); + if (n != n) { // shortcut for verifying if it's NaN + n = 0; + } else if (n != 0 && n != Infinity && n != -Infinity) { + n = (n > 0 || -1) * Math.floor(Math.abs(n)); + } + } + if (n >= len) { + return -1; + } + var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0); + for (; k < len; k++) { + if (k in t && t[k] === searchElement) { + return k; + } + } + return -1; + } +} + +return GMaps; +})); diff --git a/SpringBootHomework/target/classes/static/assets/plugins/gmaps/gmaps.min.js b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/gmaps.min.js new file mode 100644 index 0000000..34599bc --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/gmaps.min.js @@ -0,0 +1,2 @@ +"use strict";!function(a,b){"object"==typeof exports?module.exports=b():"function"==typeof define&&define.amd&&define("GMaps",[],b),a.GMaps=b()}(this,function(){if("object"!=typeof window.google||!window.google.maps)throw"Google Maps API is required. Please register the following JavaScript library http://maps.google.com/maps/api/js?sensor=true.";var a=function(a,b){var c;if(a===b)return a;for(c in b)a[c]=b[c];return a},b=function(a,b){var c,d=Array.prototype.slice.call(arguments,2),e=[],f=a.length;if(Array.prototype.map&&a.map===Array.prototype.map)e=Array.prototype.map.call(a,function(a){var c=d.slice(0);return c.splice(0,0,a),b.apply(this,c)});else for(c=0;f>c;c++)callback_params=d,callback_params.splice(0,0,a[c]),e.push(b.apply(this,callback_params));return e},c=function(a){var b,c=[];for(b=0;b0&&"object"==typeof a[c][0]?a[c]=f(a[c],b):a[c]=d(a[c],b));return a},g=function(a,b){var c,d=a.replace(".","");return c="jQuery"in this&&b?$("."+d,b)[0]:document.getElementsByClassName(d)[0]},h=function(a,b){var c,a=a.replace("#","");return c="jQuery"in window&&b?$("#"+a,b)[0]:document.getElementById(a)},i=function(a){var b=0,c=0;if(a.offsetParent)do b+=a.offsetLeft,c+=a.offsetTop;while(a=a.offsetParent);return[b,c]},j=function(b){var c=document,d=function(b){if(!this)return new d(b);b.zoom=b.zoom||15,b.mapType=b.mapType||"roadmap";var e,f=this,j=["bounds_changed","center_changed","click","dblclick","drag","dragend","dragstart","idle","maptypeid_changed","projection_changed","resize","tilesloaded","zoom_changed"],k=["mousemove","mouseout","mouseover"],l=["el","lat","lng","mapType","width","height","markerClusterer","enableNewStyle"],m=b.el||b.div,n=b.markerClusterer,o=google.maps.MapTypeId[b.mapType.toUpperCase()],p=new google.maps.LatLng(b.lat,b.lng),q=b.zoomControl||!0,r=b.zoomControlOpt||{style:"DEFAULT",position:"TOP_LEFT"},s=r.style||"DEFAULT",t=r.position||"TOP_LEFT",u=b.panControl||!0,v=b.mapTypeControl||!0,w=b.scaleControl||!0,x=b.streetViewControl||!0,y=y||!0,z={},A={zoom:this.zoom,center:p,mapTypeId:o},B={panControl:u,zoomControl:q,zoomControlOptions:{style:google.maps.ZoomControlStyle[s],position:google.maps.ControlPosition[t]},mapTypeControl:v,scaleControl:w,streetViewControl:x,overviewMapControl:y};if("string"==typeof b.el||"string"==typeof b.div?m.indexOf("#")>-1?this.el=h(m,b.context):this.el=g.apply(this,[m,b.context]):this.el=m,"undefined"==typeof this.el||null===this.el)throw"No element defined.";for(window.context_menu=window.context_menu||{},window.context_menu[f.el.id]={},this.controls=[],this.overlays=[],this.layers=[],this.singleLayers={},this.markers=[],this.polylines=[],this.routes=[],this.polygons=[],this.infoWindow=null,this.overlay_el=null,this.zoom=b.zoom,this.registered_events={},this.el.style.width=b.width||this.el.scrollWidth||this.el.offsetWidth,this.el.style.height=b.height||this.el.scrollHeight||this.el.offsetHeight,google.maps.visualRefresh=b.enableNewStyle,e=0;e'+g.title+""}if(h("gmaps_context_menu")){var j=h("gmaps_context_menu");j.innerHTML=c;var e,k=j.getElementsByTagName("a"),l=k.length;for(e=0;l>e;e++){var m=k[e],n=function(c){c.preventDefault(),d[this.id.replace(a+"_","")].action.apply(f,[b]),f.hideContextMenu()};google.maps.event.clearListeners(m,"click"),google.maps.event.addDomListenerOnce(m,"click",n,!1)}var o=i.apply(this,[f.el]),p=o[0]+b.pixel.x-15,q=o[1]+b.pixel.y-15;j.style.left=p+"px",j.style.top=q+"px",j.style.display="block"}};this.buildContextMenu=function(a,b){if("marker"===a){b.pixel={};var c=new google.maps.OverlayView;c.setMap(f.map),c.draw=function(){var d=c.getProjection(),e=b.marker.getPosition();b.pixel=d.fromLatLngToContainerPixel(e),C(a,b)}}else C(a,b)},this.setContextMenu=function(a){window.context_menu[f.el.id][a.control]={};var b,d=c.createElement("ul");for(b in a.options)if(a.options.hasOwnProperty(b)){var e=a.options[b];window.context_menu[f.el.id][a.control][e.name]={title:e.title,action:e.action}}d.id="gmaps_context_menu",d.style.display="none",d.style.position="absolute",d.style.minWidth="100px",d.style.background="white",d.style.listStyle="none",d.style.padding="8px",d.style.boxShadow="2px 2px 6px #ccc",c.body.appendChild(d);var g=h("gmaps_context_menu");google.maps.event.addDomListener(g,"mouseout",function(a){a.relatedTarget&&this.contains(a.relatedTarget)||window.setTimeout(function(){g.style.display="none"},400)},!1)},this.hideContextMenu=function(){var a=h("gmaps_context_menu");a&&(a.style.display="none")};var D=function(a,c){google.maps.event.addListener(a,c,function(a){void 0==a&&(a=this),b[c].apply(this,[a]),f.hideContextMenu()})};google.maps.event.addListener(this.map,"zoom_changed",this.hideContextMenu);for(var E=0;Ea;a++)"boolean"==typeof this.markers[a].visible&&this.markers[a].visible&&b.push(this.markers[a].getPosition());this.fitLatLngBounds(b)},this.fitLatLngBounds=function(a){var b,c=a.length,d=new google.maps.LatLngBounds;for(b=0;c>b;b++)d.extend(a[b]);this.map.fitBounds(d)},this.setCenter=function(a,b,c){this.map.panTo(new google.maps.LatLng(a,b)),c&&c()},this.getElement=function(){return this.el},this.zoomIn=function(a){a=a||1,this.zoom=this.map.getZoom()+a,this.map.setZoom(this.zoom)},this.zoomOut=function(a){a=a||1,this.zoom=this.map.getZoom()-a,this.map.setZoom(this.zoom)};var G,H=[];for(G in this.map)"function"!=typeof this.map[G]||this[G]||H.push(G);for(e=0;e-1){var d=this.markers[e];d.setMap(null),this.markerClusterer&&this.markerClusterer.removeMarker(d),j.fire("marker_removed",d,this)}}for(var c=0;c0&&d.paths[0].length>0&&(d.paths=c(b(d.paths,f,e)));for(var g=new google.maps.Polygon(d),h=["click","dblclick","mousedown","mousemove","mouseout","mouseover","mouseup","rightclick"],i=0;i0&&d.locations[0].length>0&&(d.locations=c(b([d.locations],f,!1)));var e=d.callback;delete d.callback;var g=new google.maps.ElevationService;if(d.path){var h={path:d.locations,samples:d.samples};g.getElevationAlongPath(h,function(a,b){e&&"function"==typeof e&&e(a,b)})}else delete d.path,delete d.samples,g.getElevationForLocations(d,function(a,b){e&&"function"==typeof e&&e(a,b)})},j.prototype.cleanRoute=j.prototype.removePolylines,j.prototype.drawRoute=function(a){var b=this;this.getRoutes({origin:a.origin,destination:a.destination,travelMode:a.travelMode,waypoints:a.waypoints,unitSystem:a.unitSystem,error:a.error,callback:function(c){if(c.length>0){var d={path:c[c.length-1].overview_path,strokeColor:a.strokeColor,strokeOpacity:a.strokeOpacity,strokeWeight:a.strokeWeight};a.hasOwnProperty("icons")&&(d.icons=a.icons),b.drawPolyline(d),a.callback&&a.callback(c[c.length-1])}}})},j.prototype.travelRoute=function(a){if(a.origin&&a.destination)this.getRoutes({origin:a.origin,destination:a.destination,travelMode:a.travelMode,waypoints:a.waypoints,unitSystem:a.unitSystem,error:a.error,callback:function(b){if(b.length>0&&a.start&&a.start(b[b.length-1]),b.length>0&&a.step){var c=b[b.length-1];if(c.legs.length>0)for(var d,e=c.legs[0].steps,f=0;d=e[f];f++)d.step_number=f,a.step(d,c.legs[0].steps.length-1)}b.length>0&&a.end&&a.end(b[b.length-1])}});else if(a.route&&a.route.legs.length>0)for(var b,c=a.route.legs[0].steps,d=0;b=c[d];d++)b.step_number=d,a.step(b)},j.prototype.drawSteppedRoute=function(a){var b=this;if(a.origin&&a.destination)this.getRoutes({origin:a.origin,destination:a.destination,travelMode:a.travelMode,waypoints:a.waypoints,error:a.error,callback:function(c){if(c.length>0&&a.start&&a.start(c[c.length-1]),c.length>0&&a.step){var d=c[c.length-1];if(d.legs.length>0)for(var e,f=d.legs[0].steps,g=0;e=f[g];g++){e.step_number=g;var h={path:e.path,strokeColor:a.strokeColor,strokeOpacity:a.strokeOpacity,strokeWeight:a.strokeWeight};a.hasOwnProperty("icons")&&(h.icons=a.icons),b.drawPolyline(h),a.step(e,d.legs[0].steps.length-1)}}c.length>0&&a.end&&a.end(c[c.length-1])}});else if(a.route&&a.route.legs.length>0)for(var c,d=a.route.legs[0].steps,e=0;c=d[e];e++){c.step_number=e;var f={path:c.path,strokeColor:a.strokeColor,strokeOpacity:a.strokeOpacity,strokeWeight:a.strokeWeight};a.hasOwnProperty("icons")&&(f.icons=a.icons),b.drawPolyline(f),a.step(c)}},j.Route=function(a){this.origin=a.origin,this.destination=a.destination,this.waypoints=a.waypoints,this.map=a.map,this.route=a.route,this.step_count=0,this.steps=this.route.legs[0].steps,this.steps_length=this.steps.length;var b={path:new google.maps.MVCArray,strokeColor:a.strokeColor,strokeOpacity:a.strokeOpacity,strokeWeight:a.strokeWeight};a.hasOwnProperty("icons")&&(b.icons=a.icons),this.polyline=this.map.drawPolyline(b).getPath()},j.Route.prototype.getRoute=function(a){var b=this;this.map.getRoutes({origin:this.origin,destination:this.destination,travelMode:a.travelMode,waypoints:this.waypoints||[],error:a.error,callback:function(){b.route=e[0],a.callback&&a.callback.call(b)}})},j.Route.prototype.back=function(){if(this.step_count>0){this.step_count--;var a=this.route.legs[0].steps[this.step_count].path;for(var b in a)a.hasOwnProperty(b)&&this.polyline.pop()}},j.Route.prototype.forward=function(){if(this.step_count0){b.markers=[];for(var c=0;c0){var d=this.polylines[0];b.polyline={},b.polyline.path=google.maps.geometry.encoding.encodePath(d.getPath()),b.polyline.strokeColor=d.strokeColor,b.polyline.strokeOpacity=d.strokeOpacity,b.polyline.strokeWeight=d.strokeWeight}return j.staticMapURL(b)},j.staticMapURL=function(a){function b(a,b){if("#"===a[0]&&(a=a.replace("#","0x"),b)){if(b=parseFloat(b),b=Math.min(1,Math.max(b,0)),0===b)return"0x00000000";b=(255*b).toString(16),1===b.length&&(b+=b),a=a.slice(0,8)+b}return a}var c,d=[],e=("file:"===location.protocol?"http:":location.protocol)+"//maps.googleapis.com/maps/api/staticmap";a.url&&(e=a.url,delete a.url),e+="?";var f=a.markers;delete a.markers,!f&&a.marker&&(f=[a.marker],delete a.marker);var g=a.styles;delete a.styles;var h=a.polyline;if(delete a.polyline,a.center)d.push("center="+a.center),delete a.center;else if(a.address)d.push("center="+a.address),delete a.address;else if(a.lat)d.push(["center=",a.lat,",",a.lng].join("")),delete a.lat,delete a.lng;else if(a.visible){var i=encodeURI(a.visible.join("|"));d.push("visible="+i)}var j=a.size;j?(j.join&&(j=j.join("x")),delete a.size):j="630x300",d.push("size="+j),a.zoom||a.zoom===!1||(a.zoom=15);var k=a.hasOwnProperty("sensor")?!!a.sensor:!0;delete a.sensor,d.push("sensor="+k);for(var l in a)a.hasOwnProperty(l)&&d.push(l+"="+a[l]);if(f)for(var m,n,o=0;c=f[o];o++){m=[],c.size&&"normal"!==c.size?(m.push("size:"+c.size),delete c.size):c.icon&&(m.push("icon:"+encodeURI(c.icon)),delete c.icon),c.color&&(m.push("color:"+c.color.replace("#","0x")),delete c.color),c.label&&(m.push("label:"+c.label[0].toUpperCase()),delete c.label),n=c.address?c.address:c.lat+","+c.lng,delete c.address,delete c.lat,delete c.lng;for(var l in c)c.hasOwnProperty(l)&&m.push(l+":"+c[l]);m.length||0===o?(m.push(n),m=m.join("|"),d.push("markers="+encodeURI(m))):(m=d.pop()+encodeURI("|"+n),d.push(m))}if(g)for(var o=0;oe;e++)for(var f=this.getPaths().getAt(e),g=f.getLength(),h=g-1,i=0;g>i;i++){var j=f.getAt(i),k=f.getAt(h);(j.lng()=a.lng()||k.lng()=a.lng())&&j.lat()+(a.lng()-j.lng())/(k.lng()-j.lng())*(k.lat()-j.lat())>>0;if(0===c)return-1;var d=0;if(arguments.length>1&&(d=Number(arguments[1]),d!=d?d=0:0!=d&&d!=1/0&&d!=-(1/0)&&(d=(d>0||-1)*Math.floor(Math.abs(d)))),d>=c)return-1;for(var e=d>=0?d:Math.max(c-Math.abs(d),0);c>e;e++)if(e in b&&b[e]===a)return e;return-1}),j}); +//# sourceMappingURL=gmaps.min.js.map \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/assets/plugins/gmaps/gmaps.min.js.map b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/gmaps.min.js.map new file mode 100644 index 0000000..1ad84b5 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/gmaps.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"gmaps.min.js","sources":["gmaps.js"],"names":["root","factory","exports","module","define","amd","GMaps","this","window","google","maps","extend_object","obj","new_obj","name","array_map","array","callback","i","original_callback_params","Array","prototype","slice","call","arguments","array_return","array_length","length","map","item","callback_params","splice","apply","push","array_flat","new_array","concat","coordsToLatLngs","coords","useGeoJSON","first_coord","second_coord","LatLng","arrayToLatLng","getElementsByClassName","class_name","context","element","_class","replace","$","document","getElementById","id","findAbsolutePosition","curleft","curtop","offsetParent","offsetLeft","offsetTop","global","doc","options","zoom","mapType","self","events_that_hide_context_menu","events_that_doesnt_hide_context_menu","options_to_be_deleted","identifier","el","div","markerClustererFunction","markerClusterer","MapTypeId","toUpperCase","map_center","lat","lng","zoomControl","zoomControlOpt","style","position","zoomControlStyle","zoomControlPosition","panControl","mapTypeControl","scaleControl","streetViewControl","overviewMapControl","map_options","map_base_options","center","mapTypeId","map_controls_options","zoomControlOptions","ZoomControlStyle","ControlPosition","indexOf","context_menu","controls","overlays","layers","singleLayers","markers","polylines","routes","polygons","infoWindow","overlay_el","registered_events","width","scrollWidth","offsetWidth","height","scrollHeight","offsetHeight","visualRefresh","enableNewStyle","disableDefaultUI","Map","buildContextMenuHTML","control","e","html","hasOwnProperty","option","title","context_menu_element","innerHTML","context_menu_items","getElementsByTagName","context_menu_items_count","context_menu_item","assign_menu_item_action","ev","preventDefault","action","hideContextMenu","event","clearListeners","addDomListenerOnce","left","pixel","x","top","y","display","buildContextMenu","overlay","OverlayView","setMap","draw","projection","getProjection","marker","getPosition","fromLatLngToContainerPixel","setContextMenu","ul","createElement","minWidth","background","listStyle","padding","boxShadow","body","appendChild","addDomListener","relatedTarget","contains","setTimeout","setupListener","object","addListener","undefined","rightclick","refresh","trigger","fitZoom","latLngs","markers_length","visible","fitLatLngBounds","total","bounds","LatLngBounds","extend","fitBounds","setCenter","panTo","getElement","zoomIn","value","getZoom","setZoom","zoomOut","method","native_methods","gmaps","scope","method_name","createControl","cursor","disableDefaultStyles","fontFamily","fontSize","classes","className","content","HTMLElement","events","index","addControl","removeControl","controlsForPosition","getAt","removeAt","createMarker","details","fences","outside","base_options","marker_options","Marker","InfoWindow","info_window_events","marker_events","marker_events_with_mouse","me","fromLatLngToPoint","latLng","click","hideInfoWindows","open","checkMarkerGeofence","m","f","addMarker","fire","addMarkers","close","removeMarker","removeMarkers","collection","new_markers","getMap","drawOverlay","auto_show","onAdd","borderStyle","borderWidth","zIndex","layer","panes","getPanes","overlayLayer","stop_overlay_events","navigator","userAgent","toLowerCase","all","cancelBubble","returnValue","stopPropagation","overlayMouseTarget","fromLatLngToDivPixel","horizontalOffset","verticalOffset","children","content_height","clientHeight","content_width","clientWidth","verticalAlign","horizontalAlign","show","onRemove","remove","parentNode","removeChild","removeOverlay","removeOverlays","drawPolyline","path","points","latlng","polyline_options","strokeColor","strokeOpacity","strokeWeight","geodesic","clickable","editable","icons","polyline","Polyline","polyline_events","removePolyline","removePolylines","drawCircle","polygon","Circle","polygon_events","drawRectangle","latLngBounds","Rectangle","drawPolygon","paths","Polygon","removePolygon","removePolygons","getFromFusionTables","fusion_tables_options","FusionTablesLayer","loadFromFusionTables","getFromKML","url","kml_options","KmlLayer","loadFromKML","addLayer","layerName","weather","WeatherLayer","clouds","CloudLayer","traffic","TrafficLayer","transit","TransitLayer","bicycling","BicyclingLayer","panoramio","PanoramioLayer","setTag","filter","places","PlacesService","search","nearbySearch","radarSearch","placeSearchRequest","keyword","location","radius","rankBy","types","textSearch","textSearchRequest","query","setOptions","removeLayer","travelMode","unitSystem","getRoutes","TravelMode","BICYCLING","TRANSIT","DRIVING","WALKING","UnitSystem","IMPERIAL","METRIC","avoidHighways","avoidTolls","optimizeWaypoints","waypoints","request_options","origin","test","destination","error","service","DirectionsService","route","result","status","DirectionsStatus","OK","r","removeRoutes","getElevations","locations","samples","ElevationService","pathRequest","getElevationAlongPath","getElevationForLocations","cleanRoute","drawRoute","overview_path","travelRoute","start","step","legs","steps","step_number","end","drawSteppedRoute","Route","step_count","steps_length","MVCArray","getPath","getRoute","back","p","pop","forward","checkGeofence","fence","containsLatLng","outside_callback","pos","toImage","static_map_options","getCenter","geometry","encoding","encodePath","staticMapURL","parseColor","color","opacity","parseFloat","Math","min","max","toString","data","parameters","static_root","protocol","styles","address","join","encodeURI","size","sensor","param","loc","icon","label","styleRule","featureType","elementType","j","stylers","ruleArg","substring","rule","parseInt","fillColor","fillcolor","fillOpacity","dpi","devicePixelRatio","addMapType","tileSize","Size","ImageMapType","mapTypes","set","addOverlayMapType","overlayMapTypeIndex","overlayMapTypes","insertAt","removeOverlayMapType","addStyle","styledMapType","StyledMapType","styledMapName","setStyle","setMapTypeId","createPanorama","streetview_options","panorama","setStreetView","streetview_events","StreetViewPanorama","on","event_name","handler","off","custom_events","registered_event","eventName","firing_events","geolocate","complete_callback","always","complete","geolocation","getCurrentPosition","success","not_supported","geocode","geocoder","Geocoder","results","getBounds","getPaths","getLength","inPoly","numPaths","numPoints","vertex1","vertex2","spherical","computeDistanceBetween","getRadius","setFences","addFence","getId","searchElement","TypeError","t","Object","len","n","Number","Infinity","floor","abs","k"],"mappings":"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"} \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/assets/plugins/gmaps/jquery.gmaps.js b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/jquery.gmaps.js new file mode 100644 index 0000000..d9e9190 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/jquery.gmaps.js @@ -0,0 +1,13 @@ +$(document).ready(function () { + // Simple map + map = new GMaps({ + el: '#gmaps-simple', + lat: 34.05, + lng: -78.72, + zoom: 5, + panControl: false, + streetViewControl: false, + mapTypeControl: false, + overviewMapControl: false + }); +}); diff --git a/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.controls.js b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.controls.js new file mode 100644 index 0000000..cbd525c --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.controls.js @@ -0,0 +1,83 @@ +GMaps.prototype.createControl = function(options) { + var control = document.createElement('div'); + + control.style.cursor = 'pointer'; + + if (options.disableDefaultStyles !== true) { + control.style.fontFamily = 'Roboto, Arial, sans-serif'; + control.style.fontSize = '11px'; + control.style.boxShadow = 'rgba(0, 0, 0, 0.298039) 0px 1px 4px -1px'; + } + + for (var option in options.style) { + control.style[option] = options.style[option]; + } + + if (options.id) { + control.id = options.id; + } + + if (options.classes) { + control.className = options.classes; + } + + if (options.content) { + if (typeof options.content === 'string') { + control.innerHTML = options.content; + } + else if (options.content instanceof HTMLElement) { + control.appendChild(options.content); + } + } + + if (options.position) { + control.position = google.maps.ControlPosition[options.position.toUpperCase()]; + } + + for (var ev in options.events) { + (function(object, name) { + google.maps.event.addDomListener(object, name, function(){ + options.events[name].apply(this, [this]); + }); + })(control, ev); + } + + control.index = 1; + + return control; +}; + +GMaps.prototype.addControl = function(options) { + var control = this.createControl(options); + + this.controls.push(control); + this.map.controls[control.position].push(control); + + return control; +}; + +GMaps.prototype.removeControl = function(control) { + var position = null, + i; + + for (i = 0; i < this.controls.length; i++) { + if (this.controls[i] == control) { + position = this.controls[i].position; + this.controls.splice(i, 1); + } + } + + if (position) { + for (i = 0; i < this.map.controls.length; i++) { + var controlsForPosition = this.map.controls[control.position]; + + if (controlsForPosition.getAt(i) == control) { + controlsForPosition.removeAt(i); + + break; + } + } + } + + return control; +}; diff --git a/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.core.js b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.core.js new file mode 100644 index 0000000..242c80f --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.core.js @@ -0,0 +1,488 @@ +if (!(typeof window.google === 'object' && window.google.maps)) { + throw 'Google Maps API is required. Please register the following JavaScript library http://maps.google.com/maps/api/js?sensor=true.' +} + +var extend_object = function(obj, new_obj) { + var name; + + if (obj === new_obj) { + return obj; + } + + for (name in new_obj) { + obj[name] = new_obj[name]; + } + + return obj; +}; + +var replace_object = function(obj, replace) { + var name; + + if (obj === replace) { + return obj; + } + + for (name in replace) { + if (obj[name] != undefined) { + obj[name] = replace[name]; + } + } + + return obj; +}; + +var array_map = function(array, callback) { + var original_callback_params = Array.prototype.slice.call(arguments, 2), + array_return = [], + array_length = array.length, + i; + + if (Array.prototype.map && array.map === Array.prototype.map) { + array_return = Array.prototype.map.call(array, function(item) { + var callback_params = original_callback_params.slice(0); + callback_params.splice(0, 0, item); + + return callback.apply(this, callback_params); + }); + } + else { + for (i = 0; i < array_length; i++) { + callback_params = original_callback_params; + callback_params.splice(0, 0, array[i]); + array_return.push(callback.apply(this, callback_params)); + } + } + + return array_return; +}; + +var array_flat = function(array) { + var new_array = [], + i; + + for (i = 0; i < array.length; i++) { + new_array = new_array.concat(array[i]); + } + + return new_array; +}; + +var coordsToLatLngs = function(coords, useGeoJSON) { + var first_coord = coords[0], + second_coord = coords[1]; + + if (useGeoJSON) { + first_coord = coords[1]; + second_coord = coords[0]; + } + + return new google.maps.LatLng(first_coord, second_coord); +}; + +var arrayToLatLng = function(coords, useGeoJSON) { + var i; + + for (i = 0; i < coords.length; i++) { + if (!(coords[i] instanceof google.maps.LatLng)) { + if (coords[i].length > 0 && typeof(coords[i][0]) === "object") { + coords[i] = arrayToLatLng(coords[i], useGeoJSON); + } + else { + coords[i] = coordsToLatLngs(coords[i], useGeoJSON); + } + } + } + + return coords; +}; + + +var getElementsByClassName = function (class_name, context) { + + var element, + _class = class_name.replace('.', ''); + + if ('jQuery' in this && context) { + element = $("." + _class, context)[0]; + } else { + element = document.getElementsByClassName(_class)[0]; + } + return element; + +}; + +var getElementById = function(id, context) { + var element, + id = id.replace('#', ''); + + if ('jQuery' in window && context) { + element = $('#' + id, context)[0]; + } else { + element = document.getElementById(id); + }; + + return element; +}; + +var findAbsolutePosition = function(obj) { + var curleft = 0, + curtop = 0; + + if (obj.offsetParent) { + do { + curleft += obj.offsetLeft; + curtop += obj.offsetTop; + } while (obj = obj.offsetParent); + } + + return [curleft, curtop]; +}; + +var GMaps = (function(global) { + "use strict"; + + var doc = document; + + var GMaps = function(options) { + if (!this) return new GMaps(options); + + options.zoom = options.zoom || 15; + options.mapType = options.mapType || 'roadmap'; + + var self = this, + i, + events_that_hide_context_menu = [ + 'bounds_changed', 'center_changed', 'click', 'dblclick', 'drag', + 'dragend', 'dragstart', 'idle', 'maptypeid_changed', 'projection_changed', + 'resize', 'tilesloaded', 'zoom_changed' + ], + events_that_doesnt_hide_context_menu = ['mousemove', 'mouseout', 'mouseover'], + options_to_be_deleted = ['el', 'lat', 'lng', 'mapType', 'width', 'height', 'markerClusterer', 'enableNewStyle'], + identifier = options.el || options.div, + markerClustererFunction = options.markerClusterer, + mapType = google.maps.MapTypeId[options.mapType.toUpperCase()], + map_center = new google.maps.LatLng(options.lat, options.lng), + zoomControl = options.zoomControl || true, + zoomControlOpt = options.zoomControlOpt || { + style: 'DEFAULT', + position: 'TOP_LEFT' + }, + zoomControlStyle = zoomControlOpt.style || 'DEFAULT', + zoomControlPosition = zoomControlOpt.position || 'TOP_LEFT', + panControl = options.panControl || true, + mapTypeControl = options.mapTypeControl || true, + scaleControl = options.scaleControl || true, + streetViewControl = options.streetViewControl || true, + overviewMapControl = overviewMapControl || true, + map_options = {}, + map_base_options = { + zoom: this.zoom, + center: map_center, + mapTypeId: mapType + }, + map_controls_options = { + panControl: panControl, + zoomControl: zoomControl, + zoomControlOptions: { + style: google.maps.ZoomControlStyle[zoomControlStyle], + position: google.maps.ControlPosition[zoomControlPosition] + }, + mapTypeControl: mapTypeControl, + scaleControl: scaleControl, + streetViewControl: streetViewControl, + overviewMapControl: overviewMapControl + }; + + if (typeof(options.el) === 'string' || typeof(options.div) === 'string') { + + if (identifier.indexOf("#") > -1) { + this.el = getElementById(identifier, options.context); + } else { + this.el = getElementsByClassName.apply(this, [identifier, options.context]); + } + + } else { + this.el = identifier; + } + + if (typeof(this.el) === 'undefined' || this.el === null) { + throw 'No element defined.'; + } + + window.context_menu = window.context_menu || {}; + window.context_menu[self.el.id] = {}; + + this.controls = []; + this.overlays = []; + this.layers = []; // array with kml/georss and fusiontables layers, can be as many + this.singleLayers = {}; // object with the other layers, only one per layer + this.markers = []; + this.polylines = []; + this.routes = []; + this.polygons = []; + this.infoWindow = null; + this.overlay_el = null; + this.zoom = options.zoom; + this.registered_events = {}; + + this.el.style.width = options.width || this.el.scrollWidth || this.el.offsetWidth; + this.el.style.height = options.height || this.el.scrollHeight || this.el.offsetHeight; + + google.maps.visualRefresh = options.enableNewStyle; + + for (i = 0; i < options_to_be_deleted.length; i++) { + delete options[options_to_be_deleted[i]]; + } + + if(options.disableDefaultUI != true) { + map_base_options = extend_object(map_base_options, map_controls_options); + } + + map_options = extend_object(map_base_options, options); + + for (i = 0; i < events_that_hide_context_menu.length; i++) { + delete map_options[events_that_hide_context_menu[i]]; + } + + for (i = 0; i < events_that_doesnt_hide_context_menu.length; i++) { + delete map_options[events_that_doesnt_hide_context_menu[i]]; + } + + this.map = new google.maps.Map(this.el, map_options); + + if (markerClustererFunction) { + this.markerClusterer = markerClustererFunction.apply(this, [this.map]); + } + + var buildContextMenuHTML = function(control, e) { + var html = '', + options = window.context_menu[self.el.id][control]; + + for (var i in options){ + if (options.hasOwnProperty(i)) { + var option = options[i]; + + html += '
  • ' + option.title + '
  • '; + } + } + + if (!getElementById('gmaps_context_menu')) return; + + var context_menu_element = getElementById('gmaps_context_menu'); + + context_menu_element.innerHTML = html; + + var context_menu_items = context_menu_element.getElementsByTagName('a'), + context_menu_items_count = context_menu_items.length, + i; + + for (i = 0; i < context_menu_items_count; i++) { + var context_menu_item = context_menu_items[i]; + + var assign_menu_item_action = function(ev){ + ev.preventDefault(); + + options[this.id.replace(control + '_', '')].action.apply(self, [e]); + self.hideContextMenu(); + }; + + google.maps.event.clearListeners(context_menu_item, 'click'); + google.maps.event.addDomListenerOnce(context_menu_item, 'click', assign_menu_item_action, false); + } + + var position = findAbsolutePosition.apply(this, [self.el]), + left = position[0] + e.pixel.x - 15, + top = position[1] + e.pixel.y- 15; + + context_menu_element.style.left = left + "px"; + context_menu_element.style.top = top + "px"; + + context_menu_element.style.display = 'block'; + }; + + this.buildContextMenu = function(control, e) { + if (control === 'marker') { + e.pixel = {}; + + var overlay = new google.maps.OverlayView(); + overlay.setMap(self.map); + + overlay.draw = function() { + var projection = overlay.getProjection(), + position = e.marker.getPosition(); + + e.pixel = projection.fromLatLngToContainerPixel(position); + + buildContextMenuHTML(control, e); + }; + } + else { + buildContextMenuHTML(control, e); + } + }; + + this.setContextMenu = function(options) { + window.context_menu[self.el.id][options.control] = {}; + + var i, + ul = doc.createElement('ul'); + + for (i in options.options) { + if (options.options.hasOwnProperty(i)) { + var option = options.options[i]; + + window.context_menu[self.el.id][options.control][option.name] = { + title: option.title, + action: option.action + }; + } + } + + ul.id = 'gmaps_context_menu'; + ul.style.display = 'none'; + ul.style.position = 'absolute'; + ul.style.minWidth = '100px'; + ul.style.background = 'white'; + ul.style.listStyle = 'none'; + ul.style.padding = '8px'; + ul.style.boxShadow = '2px 2px 6px #ccc'; + + doc.body.appendChild(ul); + + var context_menu_element = getElementById('gmaps_context_menu') + + google.maps.event.addDomListener(context_menu_element, 'mouseout', function(ev) { + if (!ev.relatedTarget || !this.contains(ev.relatedTarget)) { + window.setTimeout(function(){ + context_menu_element.style.display = 'none'; + }, 400); + } + }, false); + }; + + this.hideContextMenu = function() { + var context_menu_element = getElementById('gmaps_context_menu'); + + if (context_menu_element) { + context_menu_element.style.display = 'none'; + } + }; + + var setupListener = function(object, name) { + google.maps.event.addListener(object, name, function(e){ + if (e == undefined) { + e = this; + } + + options[name].apply(this, [e]); + + self.hideContextMenu(); + }); + }; + + //google.maps.event.addListener(this.map, 'idle', this.hideContextMenu); + google.maps.event.addListener(this.map, 'zoom_changed', this.hideContextMenu); + + for (var ev = 0; ev < events_that_hide_context_menu.length; ev++) { + var name = events_that_hide_context_menu[ev]; + + if (name in options) { + setupListener(this.map, name); + } + } + + for (var ev = 0; ev < events_that_doesnt_hide_context_menu.length; ev++) { + var name = events_that_doesnt_hide_context_menu[ev]; + + if (name in options) { + setupListener(this.map, name); + } + } + + google.maps.event.addListener(this.map, 'rightclick', function(e) { + if (options.rightclick) { + options.rightclick.apply(this, [e]); + } + + if(window.context_menu[self.el.id]['map'] != undefined) { + self.buildContextMenu('map', e); + } + }); + + this.refresh = function() { + google.maps.event.trigger(this.map, 'resize'); + }; + + this.fitZoom = function() { + var latLngs = [], + markers_length = this.markers.length, + i; + + for (i = 0; i < markers_length; i++) { + if(typeof(this.markers[i].visible) === 'boolean' && this.markers[i].visible) { + latLngs.push(this.markers[i].getPosition()); + } + } + + this.fitLatLngBounds(latLngs); + }; + + this.fitLatLngBounds = function(latLngs) { + var total = latLngs.length, + bounds = new google.maps.LatLngBounds(), + i; + + for(i = 0; i < total; i++) { + bounds.extend(latLngs[i]); + } + + this.map.fitBounds(bounds); + }; + + this.setCenter = function(lat, lng, callback) { + this.map.panTo(new google.maps.LatLng(lat, lng)); + + if (callback) { + callback(); + } + }; + + this.getElement = function() { + return this.el; + }; + + this.zoomIn = function(value) { + value = value || 1; + + this.zoom = this.map.getZoom() + value; + this.map.setZoom(this.zoom); + }; + + this.zoomOut = function(value) { + value = value || 1; + + this.zoom = this.map.getZoom() - value; + this.map.setZoom(this.zoom); + }; + + var native_methods = [], + method; + + for (method in this.map) { + if (typeof(this.map[method]) == 'function' && !this[method]) { + native_methods.push(method); + } + } + + for (i = 0; i < native_methods.length; i++) { + (function(gmaps, scope, method_name) { + gmaps[method_name] = function(){ + return scope[method_name].apply(scope, arguments); + }; + })(this, this.map, native_methods[i]); + } + }; + + return GMaps; +})(this); diff --git a/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.events.js b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.events.js new file mode 100644 index 0000000..bacf1b2 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.events.js @@ -0,0 +1,54 @@ +GMaps.prototype.on = function(event_name, handler) { + return GMaps.on(event_name, this, handler); +}; + +GMaps.prototype.off = function(event_name) { + GMaps.off(event_name, this); +}; + +GMaps.custom_events = ['marker_added', 'marker_removed', 'polyline_added', 'polyline_removed', 'polygon_added', 'polygon_removed', 'geolocated', 'geolocation_failed']; + +GMaps.on = function(event_name, object, handler) { + if (GMaps.custom_events.indexOf(event_name) == -1) { + if(object instanceof GMaps) object = object.map; + return google.maps.event.addListener(object, event_name, handler); + } + else { + var registered_event = { + handler : handler, + eventName : event_name + }; + + object.registered_events[event_name] = object.registered_events[event_name] || []; + object.registered_events[event_name].push(registered_event); + + return registered_event; + } +}; + +GMaps.off = function(event_name, object) { + if (GMaps.custom_events.indexOf(event_name) == -1) { + if(object instanceof GMaps) object = object.map; + google.maps.event.clearListeners(object, event_name); + } + else { + object.registered_events[event_name] = []; + } +}; + +GMaps.fire = function(event_name, object, scope) { + if (GMaps.custom_events.indexOf(event_name) == -1) { + google.maps.event.trigger(object, event_name, Array.prototype.slice.apply(arguments).slice(2)); + } + else { + if(event_name in scope.registered_events) { + var firing_events = scope.registered_events[event_name]; + + for(var i = 0; i < firing_events.length; i++) { + (function(handler, scope, object) { + handler.apply(scope, [object]); + })(firing_events[i]['handler'], scope, object); + } + } + } +}; diff --git a/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.geofences.js b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.geofences.js new file mode 100644 index 0000000..ffba09d --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.geofences.js @@ -0,0 +1,14 @@ +GMaps.prototype.checkGeofence = function(lat, lng, fence) { + return fence.containsLatLng(new google.maps.LatLng(lat, lng)); +}; + +GMaps.prototype.checkMarkerGeofence = function(marker, outside_callback) { + if (marker.fences) { + for (var i = 0, fence; fence = marker.fences[i]; i++) { + var pos = marker.getPosition(); + if (!this.checkGeofence(pos.lat(), pos.lng(), fence)) { + outside_callback(marker, fence); + } + } + } +}; diff --git a/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.geometry.js b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.geometry.js new file mode 100644 index 0000000..6c672d7 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.geometry.js @@ -0,0 +1,205 @@ +GMaps.prototype.drawPolyline = function(options) { + var path = [], + points = options.path; + + if (points.length) { + if (points[0][0] === undefined) { + path = points; + } + else { + for (var i = 0, latlng; latlng = points[i]; i++) { + path.push(new google.maps.LatLng(latlng[0], latlng[1])); + } + } + } + + var polyline_options = { + map: this.map, + path: path, + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight, + geodesic: options.geodesic, + clickable: true, + editable: false, + visible: true + }; + + if (options.hasOwnProperty("clickable")) { + polyline_options.clickable = options.clickable; + } + + if (options.hasOwnProperty("editable")) { + polyline_options.editable = options.editable; + } + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + if (options.hasOwnProperty("zIndex")) { + polyline_options.zIndex = options.zIndex; + } + + var polyline = new google.maps.Polyline(polyline_options); + + var polyline_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick']; + + for (var ev = 0; ev < polyline_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(e){ + options[name].apply(this, [e]); + }); + } + })(polyline, polyline_events[ev]); + } + + this.polylines.push(polyline); + + GMaps.fire('polyline_added', polyline, this); + + return polyline; +}; + +GMaps.prototype.removePolyline = function(polyline) { + for (var i = 0; i < this.polylines.length; i++) { + if (this.polylines[i] === polyline) { + this.polylines[i].setMap(null); + this.polylines.splice(i, 1); + + GMaps.fire('polyline_removed', polyline, this); + + break; + } + } +}; + +GMaps.prototype.removePolylines = function() { + for (var i = 0, item; item = this.polylines[i]; i++) { + item.setMap(null); + } + + this.polylines = []; +}; + +GMaps.prototype.drawCircle = function(options) { + options = extend_object({ + map: this.map, + center: new google.maps.LatLng(options.lat, options.lng) + }, options); + + delete options.lat; + delete options.lng; + + var polygon = new google.maps.Circle(options), + polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick']; + + for (var ev = 0; ev < polygon_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(e){ + options[name].apply(this, [e]); + }); + } + })(polygon, polygon_events[ev]); + } + + this.polygons.push(polygon); + + return polygon; +}; + +GMaps.prototype.drawRectangle = function(options) { + options = extend_object({ + map: this.map + }, options); + + var latLngBounds = new google.maps.LatLngBounds( + new google.maps.LatLng(options.bounds[0][0], options.bounds[0][1]), + new google.maps.LatLng(options.bounds[1][0], options.bounds[1][1]) + ); + + options.bounds = latLngBounds; + + var polygon = new google.maps.Rectangle(options), + polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick']; + + for (var ev = 0; ev < polygon_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(e){ + options[name].apply(this, [e]); + }); + } + })(polygon, polygon_events[ev]); + } + + this.polygons.push(polygon); + + return polygon; +}; + +GMaps.prototype.drawPolygon = function(options) { + var useGeoJSON = false; + + if(options.hasOwnProperty("useGeoJSON")) { + useGeoJSON = options.useGeoJSON; + } + + delete options.useGeoJSON; + + options = extend_object({ + map: this.map + }, options); + + if (useGeoJSON == false) { + options.paths = [options.paths.slice(0)]; + } + + if (options.paths.length > 0) { + if (options.paths[0].length > 0) { + options.paths = array_flat(array_map(options.paths, arrayToLatLng, useGeoJSON)); + } + } + + var polygon = new google.maps.Polygon(options), + polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick']; + + for (var ev = 0; ev < polygon_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(e){ + options[name].apply(this, [e]); + }); + } + })(polygon, polygon_events[ev]); + } + + this.polygons.push(polygon); + + GMaps.fire('polygon_added', polygon, this); + + return polygon; +}; + +GMaps.prototype.removePolygon = function(polygon) { + for (var i = 0; i < this.polygons.length; i++) { + if (this.polygons[i] === polygon) { + this.polygons[i].setMap(null); + this.polygons.splice(i, 1); + + GMaps.fire('polygon_removed', polygon, this); + + break; + } + } +}; + +GMaps.prototype.removePolygons = function() { + for (var i = 0, item; item = this.polygons[i]; i++) { + item.setMap(null); + } + + this.polygons = []; +}; diff --git a/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.layers.js b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.layers.js new file mode 100644 index 0000000..7bb94ee --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.layers.js @@ -0,0 +1,158 @@ +GMaps.prototype.getFromFusionTables = function(options) { + var events = options.events; + + delete options.events; + + var fusion_tables_options = options, + layer = new google.maps.FusionTablesLayer(fusion_tables_options); + + for (var ev in events) { + (function(object, name) { + google.maps.event.addListener(object, name, function(e) { + events[name].apply(this, [e]); + }); + })(layer, ev); + } + + this.layers.push(layer); + + return layer; +}; + +GMaps.prototype.loadFromFusionTables = function(options) { + var layer = this.getFromFusionTables(options); + layer.setMap(this.map); + + return layer; +}; + +GMaps.prototype.getFromKML = function(options) { + var url = options.url, + events = options.events; + + delete options.url; + delete options.events; + + var kml_options = options, + layer = new google.maps.KmlLayer(url, kml_options); + + for (var ev in events) { + (function(object, name) { + google.maps.event.addListener(object, name, function(e) { + events[name].apply(this, [e]); + }); + })(layer, ev); + } + + this.layers.push(layer); + + return layer; +}; + +GMaps.prototype.loadFromKML = function(options) { + var layer = this.getFromKML(options); + layer.setMap(this.map); + + return layer; +}; + +GMaps.prototype.addLayer = function(layerName, options) { + //var default_layers = ['weather', 'clouds', 'traffic', 'transit', 'bicycling', 'panoramio', 'places']; + options = options || {}; + var layer; + + switch(layerName) { + case 'weather': this.singleLayers.weather = layer = new google.maps.weather.WeatherLayer(); + break; + case 'clouds': this.singleLayers.clouds = layer = new google.maps.weather.CloudLayer(); + break; + case 'traffic': this.singleLayers.traffic = layer = new google.maps.TrafficLayer(); + break; + case 'transit': this.singleLayers.transit = layer = new google.maps.TransitLayer(); + break; + case 'bicycling': this.singleLayers.bicycling = layer = new google.maps.BicyclingLayer(); + break; + case 'panoramio': + this.singleLayers.panoramio = layer = new google.maps.panoramio.PanoramioLayer(); + layer.setTag(options.filter); + delete options.filter; + + //click event + if (options.click) { + google.maps.event.addListener(layer, 'click', function(event) { + options.click(event); + delete options.click; + }); + } + break; + case 'places': + this.singleLayers.places = layer = new google.maps.places.PlacesService(this.map); + + //search, nearbySearch, radarSearch callback, Both are the same + if (options.search || options.nearbySearch || options.radarSearch) { + var placeSearchRequest = { + bounds : options.bounds || null, + keyword : options.keyword || null, + location : options.location || null, + name : options.name || null, + radius : options.radius || null, + rankBy : options.rankBy || null, + types : options.types || null + }; + + if (options.radarSearch) { + layer.radarSearch(placeSearchRequest, options.radarSearch); + } + + if (options.search) { + layer.search(placeSearchRequest, options.search); + } + + if (options.nearbySearch) { + layer.nearbySearch(placeSearchRequest, options.nearbySearch); + } + } + + //textSearch callback + if (options.textSearch) { + var textSearchRequest = { + bounds : options.bounds || null, + location : options.location || null, + query : options.query || null, + radius : options.radius || null + }; + + layer.textSearch(textSearchRequest, options.textSearch); + } + break; + } + + if (layer !== undefined) { + if (typeof layer.setOptions == 'function') { + layer.setOptions(options); + } + if (typeof layer.setMap == 'function') { + layer.setMap(this.map); + } + + return layer; + } +}; + +GMaps.prototype.removeLayer = function(layer) { + if (typeof(layer) == "string" && this.singleLayers[layer] !== undefined) { + this.singleLayers[layer].setMap(null); + + delete this.singleLayers[layer]; + } + else { + for (var i = 0; i < this.layers.length; i++) { + if (this.layers[i] === layer) { + this.layers[i].setMap(null); + this.layers.splice(i, 1); + + break; + } + } + } +}; diff --git a/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.map_types.js b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.map_types.js new file mode 100644 index 0000000..ef47106 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.map_types.js @@ -0,0 +1,29 @@ +GMaps.prototype.addMapType = function(mapTypeId, options) { + if (options.hasOwnProperty("getTileUrl") && typeof(options["getTileUrl"]) == "function") { + options.tileSize = options.tileSize || new google.maps.Size(256, 256); + + var mapType = new google.maps.ImageMapType(options); + + this.map.mapTypes.set(mapTypeId, mapType); + } + else { + throw "'getTileUrl' function required."; + } +}; + +GMaps.prototype.addOverlayMapType = function(options) { + if (options.hasOwnProperty("getTile") && typeof(options["getTile"]) == "function") { + var overlayMapTypeIndex = options.index; + + delete options.index; + + this.map.overlayMapTypes.insertAt(overlayMapTypeIndex, options); + } + else { + throw "'getTile' function required."; + } +}; + +GMaps.prototype.removeOverlayMapType = function(overlayMapTypeIndex) { + this.map.overlayMapTypes.removeAt(overlayMapTypeIndex); +}; diff --git a/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.markers.js b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.markers.js new file mode 100644 index 0000000..8a2de1c --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.markers.js @@ -0,0 +1,210 @@ +GMaps.prototype.createMarker = function(options) { + if (options.lat == undefined && options.lng == undefined && options.position == undefined) { + throw 'No latitude or longitude defined.'; + } + + var self = this, + details = options.details, + fences = options.fences, + outside = options.outside, + base_options = { + position: new google.maps.LatLng(options.lat, options.lng), + map: null + }, + marker_options = extend_object(base_options, options); + + delete marker_options.lat; + delete marker_options.lng; + delete marker_options.fences; + delete marker_options.outside; + + var marker = new google.maps.Marker(marker_options); + + marker.fences = fences; + + if (options.infoWindow) { + marker.infoWindow = new google.maps.InfoWindow(options.infoWindow); + + var info_window_events = ['closeclick', 'content_changed', 'domready', 'position_changed', 'zindex_changed']; + + for (var ev = 0; ev < info_window_events.length; ev++) { + (function(object, name) { + if (options.infoWindow[name]) { + google.maps.event.addListener(object, name, function(e){ + options.infoWindow[name].apply(this, [e]); + }); + } + })(marker.infoWindow, info_window_events[ev]); + } + } + + var marker_events = ['animation_changed', 'clickable_changed', 'cursor_changed', 'draggable_changed', 'flat_changed', 'icon_changed', 'position_changed', 'shadow_changed', 'shape_changed', 'title_changed', 'visible_changed', 'zindex_changed']; + + var marker_events_with_mouse = ['dblclick', 'drag', 'dragend', 'dragstart', 'mousedown', 'mouseout', 'mouseover', 'mouseup']; + + for (var ev = 0; ev < marker_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(){ + options[name].apply(this, [this]); + }); + } + })(marker, marker_events[ev]); + } + + for (var ev = 0; ev < marker_events_with_mouse.length; ev++) { + (function(map, object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(me){ + if(!me.pixel){ + me.pixel = map.getProjection().fromLatLngToPoint(me.latLng) + } + + options[name].apply(this, [me]); + }); + } + })(this.map, marker, marker_events_with_mouse[ev]); + } + + google.maps.event.addListener(marker, 'click', function() { + this.details = details; + + if (options.click) { + options.click.apply(this, [this]); + } + + if (marker.infoWindow) { + self.hideInfoWindows(); + marker.infoWindow.open(self.map, marker); + } + }); + + google.maps.event.addListener(marker, 'rightclick', function(e) { + e.marker = this; + + if (options.rightclick) { + options.rightclick.apply(this, [e]); + } + + if (window.context_menu[self.el.id]['marker'] != undefined) { + self.buildContextMenu('marker', e); + } + }); + + if (marker.fences) { + google.maps.event.addListener(marker, 'dragend', function() { + self.checkMarkerGeofence(marker, function(m, f) { + outside(m, f); + }); + }); + } + + return marker; +}; + +GMaps.prototype.addMarker = function(options) { + var marker; + if(options.hasOwnProperty('gm_accessors_')) { + // Native google.maps.Marker object + marker = options; + } + else { + if ((options.hasOwnProperty('lat') && options.hasOwnProperty('lng')) || options.position) { + marker = this.createMarker(options); + } + else { + throw 'No latitude or longitude defined.'; + } + } + + marker.setMap(this.map); + + if(this.markerClusterer) { + this.markerClusterer.addMarker(marker); + } + + this.markers.push(marker); + + GMaps.fire('marker_added', marker, this); + + return marker; +}; + +GMaps.prototype.addMarkers = function(array) { + for (var i = 0, marker; marker=array[i]; i++) { + this.addMarker(marker); + } + + return this.markers; +}; + +GMaps.prototype.hideInfoWindows = function() { + for (var i = 0, marker; marker = this.markers[i]; i++){ + if (marker.infoWindow) { + marker.infoWindow.close(); + } + } +}; + +GMaps.prototype.removeMarker = function(marker) { + for (var i = 0; i < this.markers.length; i++) { + if (this.markers[i] === marker) { + this.markers[i].setMap(null); + this.markers.splice(i, 1); + + if(this.markerClusterer) { + this.markerClusterer.removeMarker(marker); + } + + GMaps.fire('marker_removed', marker, this); + + break; + } + } + + return marker; +}; + +GMaps.prototype.removeMarkers = function (collection) { + var new_markers = []; + + if (typeof collection == 'undefined') { + for (var i = 0; i < this.markers.length; i++) { + var marker = this.markers[i]; + marker.setMap(null); + + if(this.markerClusterer) { + this.markerClusterer.removeMarker(marker); + } + + GMaps.fire('marker_removed', marker, this); + } + + this.markers = new_markers; + } + else { + for (var i = 0; i < collection.length; i++) { + var index = this.markers.indexOf(collection[i]); + + if (index > -1) { + var marker = this.markers[index]; + marker.setMap(null); + + if(this.markerClusterer) { + this.markerClusterer.removeMarker(marker); + } + + GMaps.fire('marker_removed', marker, this); + } + } + + for (var i = 0; i < this.markers.length; i++) { + var marker = this.markers[i]; + if (marker.getMap() != null) { + new_markers.push(marker); + } + } + + this.markers = new_markers; + } +}; diff --git a/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.native_extensions.js b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.native_extensions.js new file mode 100644 index 0000000..9c9353e --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.native_extensions.js @@ -0,0 +1,121 @@ +//========================== +// Polygon containsLatLng +// https://github.com/tparkin/Google-Maps-Point-in-Polygon +// Poygon getBounds extension - google-maps-extensions +// http://code.google.com/p/google-maps-extensions/source/browse/google.maps.Polygon.getBounds.js +if (!google.maps.Polygon.prototype.getBounds) { + google.maps.Polygon.prototype.getBounds = function(latLng) { + var bounds = new google.maps.LatLngBounds(); + var paths = this.getPaths(); + var path; + + for (var p = 0; p < paths.getLength(); p++) { + path = paths.getAt(p); + for (var i = 0; i < path.getLength(); i++) { + bounds.extend(path.getAt(i)); + } + } + + return bounds; + }; +} + +if (!google.maps.Polygon.prototype.containsLatLng) { + // Polygon containsLatLng - method to determine if a latLng is within a polygon + google.maps.Polygon.prototype.containsLatLng = function(latLng) { + // Exclude points outside of bounds as there is no way they are in the poly + var bounds = this.getBounds(); + + if (bounds !== null && !bounds.contains(latLng)) { + return false; + } + + // Raycast point in polygon method + var inPoly = false; + + var numPaths = this.getPaths().getLength(); + for (var p = 0; p < numPaths; p++) { + var path = this.getPaths().getAt(p); + var numPoints = path.getLength(); + var j = numPoints - 1; + + for (var i = 0; i < numPoints; i++) { + var vertex1 = path.getAt(i); + var vertex2 = path.getAt(j); + + if (vertex1.lng() < latLng.lng() && vertex2.lng() >= latLng.lng() || vertex2.lng() < latLng.lng() && vertex1.lng() >= latLng.lng()) { + if (vertex1.lat() + (latLng.lng() - vertex1.lng()) / (vertex2.lng() - vertex1.lng()) * (vertex2.lat() - vertex1.lat()) < latLng.lat()) { + inPoly = !inPoly; + } + } + + j = i; + } + } + + return inPoly; + }; +} + +if (!google.maps.Circle.prototype.containsLatLng) { + google.maps.Circle.prototype.containsLatLng = function(latLng) { + if (google.maps.geometry) { + return google.maps.geometry.spherical.computeDistanceBetween(this.getCenter(), latLng) <= this.getRadius(); + } + else { + return true; + } + }; +} + +google.maps.LatLngBounds.prototype.containsLatLng = function(latLng) { + return this.contains(latLng); +}; + +google.maps.Marker.prototype.setFences = function(fences) { + this.fences = fences; +}; + +google.maps.Marker.prototype.addFence = function(fence) { + this.fences.push(fence); +}; + +google.maps.Marker.prototype.getId = function() { + return this['__gm_id']; +}; + +//========================== +// Array indexOf +// https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf +if (!Array.prototype.indexOf) { + Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) { + "use strict"; + if (this == null) { + throw new TypeError(); + } + var t = Object(this); + var len = t.length >>> 0; + if (len === 0) { + return -1; + } + var n = 0; + if (arguments.length > 1) { + n = Number(arguments[1]); + if (n != n) { // shortcut for verifying if it's NaN + n = 0; + } else if (n != 0 && n != Infinity && n != -Infinity) { + n = (n > 0 || -1) * Math.floor(Math.abs(n)); + } + } + if (n >= len) { + return -1; + } + var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0); + for (; k < len; k++) { + if (k in t && t[k] === searchElement) { + return k; + } + } + return -1; + } +} \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.overlays.js b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.overlays.js new file mode 100644 index 0000000..ab64b4a --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.overlays.js @@ -0,0 +1,134 @@ +GMaps.prototype.drawOverlay = function(options) { + var overlay = new google.maps.OverlayView(), + auto_show = true; + + overlay.setMap(this.map); + + if (options.auto_show != null) { + auto_show = options.auto_show; + } + + overlay.onAdd = function() { + var el = document.createElement('div'); + + el.style.borderStyle = "none"; + el.style.borderWidth = "0px"; + el.style.position = "absolute"; + el.style.zIndex = 100; + el.innerHTML = options.content; + + overlay.el = el; + + if (!options.layer) { + options.layer = 'overlayLayer'; + } + + var panes = this.getPanes(), + overlayLayer = panes[options.layer], + stop_overlay_events = ['contextmenu', 'DOMMouseScroll', 'dblclick', 'mousedown']; + + overlayLayer.appendChild(el); + + for (var ev = 0; ev < stop_overlay_events.length; ev++) { + (function(object, name) { + google.maps.event.addDomListener(object, name, function(e){ + if (navigator.userAgent.toLowerCase().indexOf('msie') != -1 && document.all) { + e.cancelBubble = true; + e.returnValue = false; + } + else { + e.stopPropagation(); + } + }); + })(el, stop_overlay_events[ev]); + } + + if (options.click) { + panes.overlayMouseTarget.appendChild(overlay.el); + google.maps.event.addDomListener(overlay.el, 'click', function() { + options.click.apply(overlay, [overlay]); + }); + } + + google.maps.event.trigger(this, 'ready'); + }; + + overlay.draw = function() { + var projection = this.getProjection(), + pixel = projection.fromLatLngToDivPixel(new google.maps.LatLng(options.lat, options.lng)); + + options.horizontalOffset = options.horizontalOffset || 0; + options.verticalOffset = options.verticalOffset || 0; + + var el = overlay.el, + content = el.children[0], + content_height = content.clientHeight, + content_width = content.clientWidth; + + switch (options.verticalAlign) { + case 'top': + el.style.top = (pixel.y - content_height + options.verticalOffset) + 'px'; + break; + default: + case 'middle': + el.style.top = (pixel.y - (content_height / 2) + options.verticalOffset) + 'px'; + break; + case 'bottom': + el.style.top = (pixel.y + options.verticalOffset) + 'px'; + break; + } + + switch (options.horizontalAlign) { + case 'left': + el.style.left = (pixel.x - content_width + options.horizontalOffset) + 'px'; + break; + default: + case 'center': + el.style.left = (pixel.x - (content_width / 2) + options.horizontalOffset) + 'px'; + break; + case 'right': + el.style.left = (pixel.x + options.horizontalOffset) + 'px'; + break; + } + + el.style.display = auto_show ? 'block' : 'none'; + + if (!auto_show) { + options.show.apply(this, [el]); + } + }; + + overlay.onRemove = function() { + var el = overlay.el; + + if (options.remove) { + options.remove.apply(this, [el]); + } + else { + overlay.el.parentNode.removeChild(overlay.el); + overlay.el = null; + } + }; + + this.overlays.push(overlay); + return overlay; +}; + +GMaps.prototype.removeOverlay = function(overlay) { + for (var i = 0; i < this.overlays.length; i++) { + if (this.overlays[i] === overlay) { + this.overlays[i].setMap(null); + this.overlays.splice(i, 1); + + break; + } + } +}; + +GMaps.prototype.removeOverlays = function() { + for (var i = 0, item; item = this.overlays[i]; i++) { + item.setMap(null); + } + + this.overlays = []; +}; diff --git a/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.routes.js b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.routes.js new file mode 100644 index 0000000..031b815 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.routes.js @@ -0,0 +1,330 @@ +var travelMode, unitSystem; + +GMaps.prototype.getRoutes = function(options) { + switch (options.travelMode) { + case 'bicycling': + travelMode = google.maps.TravelMode.BICYCLING; + break; + case 'transit': + travelMode = google.maps.TravelMode.TRANSIT; + break; + case 'driving': + travelMode = google.maps.TravelMode.DRIVING; + break; + default: + travelMode = google.maps.TravelMode.WALKING; + break; + } + + if (options.unitSystem === 'imperial') { + unitSystem = google.maps.UnitSystem.IMPERIAL; + } + else { + unitSystem = google.maps.UnitSystem.METRIC; + } + + var base_options = { + avoidHighways: false, + avoidTolls: false, + optimizeWaypoints: false, + waypoints: [] + }, + request_options = extend_object(base_options, options); + + request_options.origin = /string/.test(typeof options.origin) ? options.origin : new google.maps.LatLng(options.origin[0], options.origin[1]); + request_options.destination = /string/.test(typeof options.destination) ? options.destination : new google.maps.LatLng(options.destination[0], options.destination[1]); + request_options.travelMode = travelMode; + request_options.unitSystem = unitSystem; + + delete request_options.callback; + delete request_options.error; + + var self = this, + service = new google.maps.DirectionsService(); + + service.route(request_options, function(result, status) { + if (status === google.maps.DirectionsStatus.OK) { + for (var r in result.routes) { + if (result.routes.hasOwnProperty(r)) { + self.routes.push(result.routes[r]); + } + } + + if (options.callback) { + options.callback(self.routes); + } + } + else { + if (options.error) { + options.error(result, status); + } + } + }); +}; + +GMaps.prototype.removeRoutes = function() { + this.routes = []; +}; + +GMaps.prototype.getElevations = function(options) { + options = extend_object({ + locations: [], + path : false, + samples : 256 + }, options); + + if (options.locations.length > 0) { + if (options.locations[0].length > 0) { + options.locations = array_flat(array_map([options.locations], arrayToLatLng, false)); + } + } + + var callback = options.callback; + delete options.callback; + + var service = new google.maps.ElevationService(); + + //location request + if (!options.path) { + delete options.path; + delete options.samples; + + service.getElevationForLocations(options, function(result, status) { + if (callback && typeof(callback) === "function") { + callback(result, status); + } + }); + //path request + } else { + var pathRequest = { + path : options.locations, + samples : options.samples + }; + + service.getElevationAlongPath(pathRequest, function(result, status) { + if (callback && typeof(callback) === "function") { + callback(result, status); + } + }); + } +}; + +GMaps.prototype.cleanRoute = GMaps.prototype.removePolylines; + +GMaps.prototype.drawRoute = function(options) { + var self = this; + + this.getRoutes({ + origin: options.origin, + destination: options.destination, + travelMode: options.travelMode, + waypoints: options.waypoints, + unitSystem: options.unitSystem, + error: options.error, + callback: function(e) { + if (e.length > 0) { + var polyline_options = { + path: e[e.length - 1].overview_path, + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight + }; + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + self.drawPolyline(polyline_options); + + if (options.callback) { + options.callback(e[e.length - 1]); + } + } + } + }); +}; + +GMaps.prototype.travelRoute = function(options) { + if (options.origin && options.destination) { + this.getRoutes({ + origin: options.origin, + destination: options.destination, + travelMode: options.travelMode, + waypoints : options.waypoints, + unitSystem: options.unitSystem, + error: options.error, + callback: function(e) { + //start callback + if (e.length > 0 && options.start) { + options.start(e[e.length - 1]); + } + + //step callback + if (e.length > 0 && options.step) { + var route = e[e.length - 1]; + if (route.legs.length > 0) { + var steps = route.legs[0].steps; + for (var i = 0, step; step = steps[i]; i++) { + step.step_number = i; + options.step(step, (route.legs[0].steps.length - 1)); + } + } + } + + //end callback + if (e.length > 0 && options.end) { + options.end(e[e.length - 1]); + } + } + }); + } + else if (options.route) { + if (options.route.legs.length > 0) { + var steps = options.route.legs[0].steps; + for (var i = 0, step; step = steps[i]; i++) { + step.step_number = i; + options.step(step); + } + } + } +}; + +GMaps.prototype.drawSteppedRoute = function(options) { + var self = this; + + if (options.origin && options.destination) { + this.getRoutes({ + origin: options.origin, + destination: options.destination, + travelMode: options.travelMode, + waypoints : options.waypoints, + error: options.error, + callback: function(e) { + //start callback + if (e.length > 0 && options.start) { + options.start(e[e.length - 1]); + } + + //step callback + if (e.length > 0 && options.step) { + var route = e[e.length - 1]; + if (route.legs.length > 0) { + var steps = route.legs[0].steps; + for (var i = 0, step; step = steps[i]; i++) { + step.step_number = i; + var polyline_options = { + path: step.path, + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight + }; + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + self.drawPolyline(polyline_options); + options.step(step, (route.legs[0].steps.length - 1)); + } + } + } + + //end callback + if (e.length > 0 && options.end) { + options.end(e[e.length - 1]); + } + } + }); + } + else if (options.route) { + if (options.route.legs.length > 0) { + var steps = options.route.legs[0].steps; + for (var i = 0, step; step = steps[i]; i++) { + step.step_number = i; + var polyline_options = { + path: step.path, + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight + }; + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + self.drawPolyline(polyline_options); + options.step(step); + } + } + } +}; + +GMaps.Route = function(options) { + this.origin = options.origin; + this.destination = options.destination; + this.waypoints = options.waypoints; + + this.map = options.map; + this.route = options.route; + this.step_count = 0; + this.steps = this.route.legs[0].steps; + this.steps_length = this.steps.length; + + var polyline_options = { + path: new google.maps.MVCArray(), + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight + }; + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + this.polyline = this.map.drawPolyline(polyline_options).getPath(); +}; + +GMaps.Route.prototype.getRoute = function(options) { + var self = this; + + this.map.getRoutes({ + origin : this.origin, + destination : this.destination, + travelMode : options.travelMode, + waypoints : this.waypoints || [], + error: options.error, + callback : function() { + self.route = e[0]; + + if (options.callback) { + options.callback.call(self); + } + } + }); +}; + +GMaps.Route.prototype.back = function() { + if (this.step_count > 0) { + this.step_count--; + var path = this.route.legs[0].steps[this.step_count].path; + + for (var p in path){ + if (path.hasOwnProperty(p)){ + this.polyline.pop(); + } + } + } +}; + +GMaps.Route.prototype.forward = function() { + if (this.step_count < this.steps_length) { + var path = this.route.legs[0].steps[this.step_count].path; + + for (var p in path){ + if (path.hasOwnProperty(p)){ + this.polyline.push(path[p]); + } + } + this.step_count++; + } +}; diff --git a/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.static.js b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.static.js new file mode 100644 index 0000000..ef325bb --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.static.js @@ -0,0 +1,245 @@ +GMaps.prototype.toImage = function(options) { + var options = options || {}, + static_map_options = {}; + + static_map_options['size'] = options['size'] || [this.el.clientWidth, this.el.clientHeight]; + static_map_options['lat'] = this.getCenter().lat(); + static_map_options['lng'] = this.getCenter().lng(); + + if (this.markers.length > 0) { + static_map_options['markers'] = []; + + for (var i = 0; i < this.markers.length; i++) { + static_map_options['markers'].push({ + lat: this.markers[i].getPosition().lat(), + lng: this.markers[i].getPosition().lng() + }); + } + } + + if (this.polylines.length > 0) { + var polyline = this.polylines[0]; + + static_map_options['polyline'] = {}; + static_map_options['polyline']['path'] = google.maps.geometry.encoding.encodePath(polyline.getPath()); + static_map_options['polyline']['strokeColor'] = polyline.strokeColor + static_map_options['polyline']['strokeOpacity'] = polyline.strokeOpacity + static_map_options['polyline']['strokeWeight'] = polyline.strokeWeight + } + + return GMaps.staticMapURL(static_map_options); +}; + +GMaps.staticMapURL = function(options){ + var parameters = [], + data, + static_root = (location.protocol === 'file:' ? 'http:' : location.protocol ) + '//maps.googleapis.com/maps/api/staticmap'; + + if (options.url) { + static_root = options.url; + delete options.url; + } + + static_root += '?'; + + var markers = options.markers; + + delete options.markers; + + if (!markers && options.marker) { + markers = [options.marker]; + delete options.marker; + } + + var styles = options.styles; + + delete options.styles; + + var polyline = options.polyline; + delete options.polyline; + + /** Map options **/ + if (options.center) { + parameters.push('center=' + options.center); + delete options.center; + } + else if (options.address) { + parameters.push('center=' + options.address); + delete options.address; + } + else if (options.lat) { + parameters.push(['center=', options.lat, ',', options.lng].join('')); + delete options.lat; + delete options.lng; + } + else if (options.visible) { + var visible = encodeURI(options.visible.join('|')); + parameters.push('visible=' + visible); + } + + var size = options.size; + if (size) { + if (size.join) { + size = size.join('x'); + } + delete options.size; + } + else { + size = '630x300'; + } + parameters.push('size=' + size); + + if (!options.zoom && options.zoom !== false) { + options.zoom = 15; + } + + var sensor = options.hasOwnProperty('sensor') ? !!options.sensor : true; + delete options.sensor; + parameters.push('sensor=' + sensor); + + for (var param in options) { + if (options.hasOwnProperty(param)) { + parameters.push(param + '=' + options[param]); + } + } + + /** Markers **/ + if (markers) { + var marker, loc; + + for (var i = 0; data = markers[i]; i++) { + marker = []; + + if (data.size && data.size !== 'normal') { + marker.push('size:' + data.size); + delete data.size; + } + else if (data.icon) { + marker.push('icon:' + encodeURI(data.icon)); + delete data.icon; + } + + if (data.color) { + marker.push('color:' + data.color.replace('#', '0x')); + delete data.color; + } + + if (data.label) { + marker.push('label:' + data.label[0].toUpperCase()); + delete data.label; + } + + loc = (data.address ? data.address : data.lat + ',' + data.lng); + delete data.address; + delete data.lat; + delete data.lng; + + for(var param in data){ + if (data.hasOwnProperty(param)) { + marker.push(param + ':' + data[param]); + } + } + + if (marker.length || i === 0) { + marker.push(loc); + marker = marker.join('|'); + parameters.push('markers=' + encodeURI(marker)); + } + // New marker without styles + else { + marker = parameters.pop() + encodeURI('|' + loc); + parameters.push(marker); + } + } + } + + /** Map Styles **/ + if (styles) { + for (var i = 0; i < styles.length; i++) { + var styleRule = []; + if (styles[i].featureType){ + styleRule.push('feature:' + styles[i].featureType.toLowerCase()); + } + + if (styles[i].elementType) { + styleRule.push('element:' + styles[i].elementType.toLowerCase()); + } + + for (var j = 0; j < styles[i].stylers.length; j++) { + for (var p in styles[i].stylers[j]) { + var ruleArg = styles[i].stylers[j][p]; + if (p == 'hue' || p == 'color') { + ruleArg = '0x' + ruleArg.substring(1); + } + styleRule.push(p + ':' + ruleArg); + } + } + + var rule = styleRule.join('|'); + if (rule != '') { + parameters.push('style=' + rule); + } + } + } + + /** Polylines **/ + function parseColor(color, opacity) { + if (color[0] === '#'){ + color = color.replace('#', '0x'); + + if (opacity) { + opacity = parseFloat(opacity); + opacity = Math.min(1, Math.max(opacity, 0)); + if (opacity === 0) { + return '0x00000000'; + } + opacity = (opacity * 255).toString(16); + if (opacity.length === 1) { + opacity += opacity; + } + + color = color.slice(0,8) + opacity; + } + } + return color; + } + + if (polyline) { + data = polyline; + polyline = []; + + if (data.strokeWeight) { + polyline.push('weight:' + parseInt(data.strokeWeight, 10)); + } + + if (data.strokeColor) { + var color = parseColor(data.strokeColor, data.strokeOpacity); + polyline.push('color:' + color); + } + + if (data.fillColor) { + var fillcolor = parseColor(data.fillColor, data.fillOpacity); + polyline.push('fillcolor:' + fillcolor); + } + + var path = data.path; + if (path.join) { + for (var j=0, pos; pos=path[j]; j++) { + polyline.push(pos.join(',')); + } + } + else { + polyline.push('enc:' + path); + } + + polyline = polyline.join('|'); + parameters.push('path=' + encodeURI(polyline)); + } + + /** Retina support **/ + var dpi = window.devicePixelRatio || 1; + parameters.push('scale=' + dpi); + + parameters = parameters.join('&'); + return static_root + parameters; +}; diff --git a/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.streetview.js b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.streetview.js new file mode 100644 index 0000000..21522ac --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.streetview.js @@ -0,0 +1,44 @@ +GMaps.prototype.createPanorama = function(streetview_options) { + if (!streetview_options.hasOwnProperty('lat') || !streetview_options.hasOwnProperty('lng')) { + streetview_options.lat = this.getCenter().lat(); + streetview_options.lng = this.getCenter().lng(); + } + + this.panorama = GMaps.createPanorama(streetview_options); + + this.map.setStreetView(this.panorama); + + return this.panorama; +}; + +GMaps.createPanorama = function(options) { + var el = getElementById(options.el, options.context); + + options.position = new google.maps.LatLng(options.lat, options.lng); + + delete options.el; + delete options.context; + delete options.lat; + delete options.lng; + + var streetview_events = ['closeclick', 'links_changed', 'pano_changed', 'position_changed', 'pov_changed', 'resize', 'visible_changed'], + streetview_options = extend_object({visible : true}, options); + + for (var i = 0; i < streetview_events.length; i++) { + delete streetview_options[streetview_events[i]]; + } + + var panorama = new google.maps.StreetViewPanorama(el, streetview_options); + + for (var i = 0; i < streetview_events.length; i++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(){ + options[name].apply(this); + }); + } + })(panorama, streetview_events[i]); + } + + return panorama; +}; diff --git a/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.styles.js b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.styles.js new file mode 100644 index 0000000..0ec0087 --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.styles.js @@ -0,0 +1,9 @@ +GMaps.prototype.addStyle = function(options) { + var styledMapType = new google.maps.StyledMapType(options.styles, { name: options.styledMapName }); + + this.map.mapTypes.set(options.mapTypeId, styledMapType); +}; + +GMaps.prototype.setStyle = function(mapTypeId) { + this.map.setMapTypeId(mapTypeId); +}; diff --git a/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.utils.js b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.utils.js new file mode 100644 index 0000000..b4f26ab --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/gmaps/lib/gmaps.utils.js @@ -0,0 +1,42 @@ +GMaps.geolocate = function(options) { + var complete_callback = options.always || options.complete; + + if (navigator.geolocation) { + navigator.geolocation.getCurrentPosition(function(position) { + options.success(position); + + if (complete_callback) { + complete_callback(); + } + }, function(error) { + options.error(error); + + if (complete_callback) { + complete_callback(); + } + }, options.options); + } + else { + options.not_supported(); + + if (complete_callback) { + complete_callback(); + } + } +}; + +GMaps.geocode = function(options) { + this.geocoder = new google.maps.Geocoder(); + var callback = options.callback; + if (options.hasOwnProperty('lat') && options.hasOwnProperty('lng')) { + options.latLng = new google.maps.LatLng(options.lat, options.lng); + } + + delete options.lat; + delete options.lng; + delete options.callback; + + this.geocoder.geocode(options, function(results, status) { + callback(results, status); + }); +}; diff --git a/SpringBootHomework/target/classes/static/assets/plugins/jquery/jquery.min.js b/SpringBootHomework/target/classes/static/assets/plugins/jquery/jquery.min.js new file mode 100644 index 0000000..36aefef --- /dev/null +++ b/SpringBootHomework/target/classes/static/assets/plugins/jquery/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v3.2.0 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.0",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S), +a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,""],thead:[1,"
    ","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d)); +},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,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"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r(" + + + + + + + + + + + Home + + + + + + + + + + + + + + + +
    + + + +
    + + + +
    + + + +
    + +
    + + + + + + + + + + + + + +
    + + + +
    + + + + +
    +
    +

    今日竞赛

    + +
    +
    +

    竞赛是每个人单独完成作业

    +
    +
    +
    +
    +

    竞赛作业,需要在中午12点前提交

    +
    +
    +
    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SpringBootHomework/target/classes/static/index2.html b/SpringBootHomework/target/classes/static/index2.html new file mode 100644 index 0000000..adbf815 --- /dev/null +++ b/SpringBootHomework/target/classes/static/index2.html @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + Home + + + + + + + + + + + + + + + +
    + + + +
    + + + +
    + + + +
    + +
    + + + + + + + + + + + + + +
    + + + +
    + + + + +
    +
    +

    今日结对

    + +
    +
    +

    结对是多人合作完成作业

    +
    +
    +
    +
    +

    结对作业,需要在下午4点前提交

    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SpringBootHomework/target/classes/static/index3.html b/SpringBootHomework/target/classes/static/index3.html new file mode 100644 index 0000000..b5d0e3d --- /dev/null +++ b/SpringBootHomework/target/classes/static/index3.html @@ -0,0 +1,236 @@ + + + + + + + + + + + + + + + + Home + + + + + + + + + + + + + + + +
    + + + +
    + + + +
    + + + +
    + +
    + + + + + + + + + + + + + +
    + + + +
    + + + + +
    +
    +

    布置作业

    + +
    +
    + +
    + +
    +

    名称

    + +
    +
    + + +
    + +
    +

    截止日期

    + +
    +
    +

    内容

    + +
    +
    + +
    +
    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SpringBootHomework/target/classes/static/index4.html b/SpringBootHomework/target/classes/static/index4.html new file mode 100644 index 0000000..afc4d81 --- /dev/null +++ b/SpringBootHomework/target/classes/static/index4.html @@ -0,0 +1,357 @@ + + + + + + + + + + + + + + + Home + + + + + + + + + + + + + + + +
    + + + +
    + + + +
    + + + +
    + +
    + + + + + + + + + + + + + +
    + + + +
    + + + + +
    +
    +

    Dashboard

    + +
    +
    +
    + + + + + +
    +
    + + + + + + + + + + + + +
    编号作业名类型更新日期截止日期
    +
    +
    +
    +
    +
      +
    +
    +
    +
    + + + +
    + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SpringBootHomework/target/classes/static/index5.html b/SpringBootHomework/target/classes/static/index5.html new file mode 100644 index 0000000..d0ec687 --- /dev/null +++ b/SpringBootHomework/target/classes/static/index5.html @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + Home + + + + + + + + + + + + + + + +
    + + + +
    + + + +
    + + + +
    + +
    + + + + + + + + + + + + + +
    + + + +
    + + + + +
    +
    +

    排行榜

    + +
    +
    + + +
    +
    +    + +    + +
    +
    +
    + + + + + + + + + + + + +
    排名名字完成次数
    +
    +
    + + +
    + +
    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SpringBootHomework/target/classes/static/js/auth.js b/SpringBootHomework/target/classes/static/js/auth.js new file mode 100644 index 0000000..8cf9a33 --- /dev/null +++ b/SpringBootHomework/target/classes/static/js/auth.js @@ -0,0 +1,136 @@ +var Auth = { + vars: { + lowin: document.querySelector('.lowin'), + lowin_brand: document.querySelector('.lowin-brand'), + lowin_wrapper: document.querySelector('.lowin-wrapper'), + lowin_login: document.querySelector('.lowin-login'), + lowin_wrapper_height: 0, + login_back_link: document.querySelector('.login-back-link'), + forgot_link: document.querySelector('.forgot-link'), + login_link: document.querySelector('.login-link'), + login_btn: document.querySelector('.login-btn'), + register_link: document.querySelector('.register-link'), + password_group: document.querySelector('.password-group'), + password_group_height: 0, + lowin_register: document.querySelector('.lowin-register'), + lowin_footer: document.querySelector('.lowin-footer'), + box: document.getElementsByClassName('lowin-box'), + option: {} + }, + register(e) { + Auth.vars.lowin_login.className += ' lowin-animated'; + setTimeout(() => { + Auth.vars.lowin_login.style.display = 'none'; + }, 500); + Auth.vars.lowin_register.style.display = 'block'; + Auth.vars.lowin_register.className += ' lowin-animated-flip'; + + Auth.setHeight(Auth.vars.lowin_register.offsetHeight + Auth.vars.lowin_footer.offsetHeight); + + e.preventDefault(); + }, + login(e) { + Auth.vars.lowin_register.classList.remove('lowin-animated-flip'); + Auth.vars.lowin_register.className += ' lowin-animated-flipback'; + Auth.vars.lowin_login.style.display = 'block'; + Auth.vars.lowin_login.classList.remove('lowin-animated'); + Auth.vars.lowin_login.className += ' lowin-animatedback'; + setTimeout(() => { + Auth.vars.lowin_register.style.display = 'none'; + }, 500); + + setTimeout(() => { + Auth.vars.lowin_register.classList.remove('lowin-animated-flipback'); + Auth.vars.lowin_login.classList.remove('lowin-animatedback'); + },1000); + + Auth.setHeight(Auth.vars.lowin_login.offsetHeight + Auth.vars.lowin_footer.offsetHeight); + + e.preventDefault(); + }, + forgot(e) { + Auth.vars.password_group.classList += ' lowin-animated'; + Auth.vars.login_back_link.style.display = 'block'; + + setTimeout(() => { + Auth.vars.login_back_link.style.opacity = 1; + Auth.vars.password_group.style.height = 0; + Auth.vars.password_group.style.margin = 0; + }, 100); + + Auth.vars.login_btn.innerText = 'Forgot Password'; + + Auth.setHeight(Auth.vars.lowin_wrapper_height - Auth.vars.password_group_height); + Auth.vars.lowin_login.querySelector('form').setAttribute('action', Auth.vars.option.forgot_url); + + e.preventDefault(); + }, + loginback(e) { + Auth.vars.password_group.classList.remove('lowin-animated'); + Auth.vars.password_group.classList += ' lowin-animated-back'; + Auth.vars.password_group.style.display = 'block'; + + setTimeout(() => { + Auth.vars.login_back_link.style.opacity = 0; + Auth.vars.password_group.style.height = Auth.vars.password_group_height + 'px'; + Auth.vars.password_group.style.marginBottom = 30 + 'px'; + }, 100); + + setTimeout(() => { + Auth.vars.login_back_link.style.display = 'none'; + Auth.vars.password_group.classList.remove('lowin-animated-back'); + }, 1000); + + Auth.vars.login_btn.innerText = 'Sign In'; + Auth.vars.lowin_login.querySelector('form').setAttribute('action', Auth.vars.option.login_url); + + Auth.setHeight(Auth.vars.lowin_wrapper_height); + + e.preventDefault(); + }, + setHeight(height) { + Auth.vars.lowin_wrapper.style.minHeight = height + 'px'; + }, + brand() { + Auth.vars.lowin_brand.classList += ' lowin-animated'; + setTimeout(() => { + Auth.vars.lowin_brand.classList.remove('lowin-animated'); + }, 1000); + }, + init(option) { + Auth.setHeight(Auth.vars.box[0].offsetHeight + Auth.vars.lowin_footer.offsetHeight); + + Auth.vars.password_group.style.height = Auth.vars.password_group.offsetHeight + 'px'; + Auth.vars.password_group_height = Auth.vars.password_group.offsetHeight; + Auth.vars.lowin_wrapper_height = Auth.vars.lowin_wrapper.offsetHeight; + + Auth.vars.option = option; + Auth.vars.lowin_login.querySelector('form').setAttribute('action', option.login_url); + + var len = Auth.vars.box.length - 1; + + for(var i = 0; i <= len; i++) { + if(i !== 0) { + Auth.vars.box[i].className += ' lowin-flip'; + } + } + + Auth.vars.forgot_link.addEventListener("click", (e) => { + Auth.forgot(e); + }); + + Auth.vars.register_link.addEventListener("click", (e) => { + Auth.brand(); + Auth.register(e); + }); + + Auth.vars.login_link.addEventListener("click", (e) => { + Auth.brand(); + Auth.login(e); + }); + + Auth.vars.login_back_link.addEventListener("click", (e) => { + Auth.loginback(e); + }); + } +} \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/js/custom.js b/SpringBootHomework/target/classes/static/js/custom.js new file mode 100644 index 0000000..85faf82 --- /dev/null +++ b/SpringBootHomework/target/classes/static/js/custom.js @@ -0,0 +1,96 @@ +/* +Template Name: Monster Admin +Author: Themedesigner +Email: niravjoshi87@gmail.com +File: js +*/ +$(function() { + "use strict"; + $(function() { + $(".preloader").fadeOut(); + }); + jQuery(document).on('click', '.mega-dropdown', function(e) { + e.stopPropagation() + }); + // ============================================================== + // This is for the top header part and sidebar part + // ============================================================== + var set = function() { + var width = (window.innerWidth > 0) ? window.innerWidth : this.screen.width; + var topOffset = 70; + if (width < 500) { + $("body").addClass("mini-sidebar"); + $('.navbar-brand span').hide(); + $(".scroll-sidebar, .slimScrollDiv").css("overflow-x", "visible").parent().css("overflow", "visible"); + $(".sidebartoggler i").addClass("ti-menu"); + } else { + $("body").removeClass("mini-sidebar"); + $('.navbar-brand span').show(); + $(".sidebartoggler i").removeClass("ti-menu"); + } + + var height = ((window.innerHeight > 0) ? window.innerHeight : this.screen.height) - 1; + height = height - topOffset; + if (height < 1) height = 1; + if (height > topOffset) { + $(".page-wrapper").css("min-height", (height) + "px"); + } + + }; + $(window).ready(set); + $(window).on("resize", set); + + // topbar stickey on scroll + + $(".fix-header .topbar").stick_in_parent({ + + }); + + // this is for close icon when navigation open in mobile view + $(".nav-toggler").click(function() { + $("body").toggleClass("show-sidebar"); + $(".nav-toggler i").toggleClass("ti-menu"); + $(".nav-toggler i").addClass("ti-close"); + }); + $(".sidebartoggler").on('click', function() { + $(".sidebartoggler i").toggleClass("ti-menu"); + }); + + // ============================================================== + // Auto select left navbar + // ============================================================== + $(function() { + var url = window.location; + var element = $('ul#sidebarnav a').filter(function() { + return this.href == url; + }).addClass('active').parent().addClass('active'); + while (true) { + if (element.is('li')) { + element = element.parent().addClass('in').parent().addClass('active'); + } else { + break; + } + } + }); + + // ============================================================== + // Sidebarmenu + // ============================================================== + $(function() { + $('#sidebarnav').metisMenu(); + }); + // ============================================================== + // Slimscrollbars + // ============================================================== + $('.scroll-sidebar').slimScroll({ + position: 'left', + size: "5px", + height: '100%', + color: '#dcdcdc' + }); + + // ============================================================== + // Resize all elements + // ============================================================== + $("body").trigger("resize"); +}); diff --git a/SpringBootHomework/target/classes/static/js/custom.min.js b/SpringBootHomework/target/classes/static/js/custom.min.js new file mode 100644 index 0000000..1c28fad --- /dev/null +++ b/SpringBootHomework/target/classes/static/js/custom.min.js @@ -0,0 +1 @@ +$(function(){"use strict";$(function(){$(".preloader").fadeOut()}),jQuery(document).on("click",".mega-dropdown",function(i){i.stopPropagation()});var i=function(){var i=window.innerWidth>0?window.innerWidth:this.screen.width,e=70;500>i?($("body").addClass("mini-sidebar"),$(".navbar-brand span").hide(),$(".scroll-sidebar, .slimScrollDiv").css("overflow-x","visible").parent().css("overflow","visible"),$(".sidebartoggler i").addClass("ti-menu")):($("body").removeClass("mini-sidebar"),$(".navbar-brand span").show(),$(".sidebartoggler i").removeClass("ti-menu"));var s=(window.innerHeight>0?window.innerHeight:this.screen.height)-1;s-=e,1>s&&(s=1),s>e&&$(".page-wrapper").css("min-height",s+"px")};$(window).ready(i),$(window).on("resize",i),$(".fix-header .topbar").stick_in_parent({}),$(".nav-toggler").click(function(){$("body").toggleClass("show-sidebar"),$(".nav-toggler i").toggleClass("ti-menu"),$(".nav-toggler i").addClass("ti-close")}),$(".sidebartoggler").on("click",function(){$(".sidebartoggler i").toggleClass("ti-menu")}),$(function(){for(var i=window.location,e=$("ul#sidebarnav a").filter(function(){return this.href==i}).addClass("active").parent().addClass("active");;){if(!e.is("li"))break;e=e.parent().addClass("in").parent().addClass("active")}}),$(function(){$("#sidebarnav").metisMenu()}),$(".scroll-sidebar").slimScroll({position:"left",size:"5px",height:"100%",color:"#dcdcdc"}),$("body").trigger("resize")}); \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/js/flot-data.js b/SpringBootHomework/target/classes/static/js/flot-data.js new file mode 100644 index 0000000..e35827f --- /dev/null +++ b/SpringBootHomework/target/classes/static/js/flot-data.js @@ -0,0 +1,130 @@ +/* +Template Name: Monster Admin +Author: Themedesigner +Email: niravjoshi87@gmail.com +File: js +*/ +// Real Time chart +var data = [], + totalPoints = 300; + +function getRandomData() { + if (data.length > 0) data = data.slice(1); + // Do a random walk + while (data.length < totalPoints) { + var prev = data.length > 0 ? data[data.length - 1] : 50, + y = prev + Math.random() * 10 - 5; + if (y < 0) { + y = 0; + } else if (y > 100) { + y = 100; + } + data.push(y); + } + // Zip the generated y values with the x values + var res = []; + for (var i = 0; i < data.length; ++i) { + res.push([i, data[i]]) + } + return res; +} +// Set up the control widget +var updateInterval = 30; +$("#updateInterval").val(updateInterval).change(function() { + var v = $(this).val(); + if (v && !isNaN(+v)) { + updateInterval = +v; + if (updateInterval < 1) { + updateInterval = 1; + } else if (updateInterval > 3000) { + updateInterval = 3000; + } + $(this).val("" + updateInterval); + } +}); +var plot = $.plot("#placeholder", [getRandomData()], { + series: { + shadowSize: 0 // Drawing is faster without shadows + }, + yaxis: { + min: 0, + max: 100 + }, + xaxis: { + show: false + }, + colors: ["#55ce63"], + grid: { + color: "#AFAFAF", + hoverable: true, + borderWidth: 0, + backgroundColor: '#FFF' + }, + tooltip: true, + tooltipOpts: { + content: "Y: %y", + defaultTheme: false + } +}); + +function update() { + plot.setData([getRandomData()]); + // Since the axes don't change, we don't need to call plot.setupGrid() + plot.draw(); + setTimeout(update, updateInterval); +} +update(); +//Flot Line Chart +$(document).ready(function() { + console.log("document ready"); + var offset = 0; + plot(); + + function plot() { + var sin = [], + cos = []; + for (var i = 0; i < 12; i += 0.2) { + sin.push([i, Math.sin(i + offset)]); + cos.push([i, Math.cos(i + offset)]); + } + var options = { + series: { + lines: { + show: true + }, + points: { + show: true + } + }, + grid: { + hoverable: true //IMPORTANT! this is needed for tooltip to work + }, + yaxis: { + min: -1.2, + max: 1.2 + }, + colors: ["#009efb", "#55ce63"], + grid: { + color: "#AFAFAF", + hoverable: true, + borderWidth: 0, + backgroundColor: '#FFF' + }, + tooltip: true, + tooltipOpts: { + content: "'%s' of %x.1 is %y.4", + shifts: { + x: -60, + y: 25 + } + } + }; + var plotObj = $.plot($("#flot-line-chart"), [{ + data: sin, + label: "sin(x)", + }, { + data: cos, + label: "cos(x)" + }], options); + } +}); diff --git a/SpringBootHomework/target/classes/static/js/index1.js b/SpringBootHomework/target/classes/static/js/index1.js new file mode 100644 index 0000000..46532a7 --- /dev/null +++ b/SpringBootHomework/target/classes/static/js/index1.js @@ -0,0 +1,31 @@ +$(document).ready(function () { + var loginname; + var logintype; + var loginid; + $.post("showId", function (data) { + loginname = data.username; + logintype = data.type; + loginid = data.id; + if (loginname == null) { + window.location.href = "login.html"; + } + if (logintype == "student") { + $("#index3").css("display", "none"); + } + + $("#username").text(loginname); + }, "json"); + + $.post("homework/showByType/竞赛", {"type": "竞赛"}, function (json) { + $("#hw").empty(); + for (var i = 0; i < json.length; i++) { + $("#hw").append( + "

    " + + json[i].title + + "

    " + "
  • " + json[i].details + "
  • " + ); + } + }) + + +}) diff --git a/SpringBootHomework/target/classes/static/js/index2.js b/SpringBootHomework/target/classes/static/js/index2.js new file mode 100644 index 0000000..2266d66 --- /dev/null +++ b/SpringBootHomework/target/classes/static/js/index2.js @@ -0,0 +1,30 @@ +$(document).ready(function () { + var loginname; + var logintype; + var loginid; + $.post("showId", function (data) { + loginname = data.username; + logintype = data.type; + loginid = data.id; + if (loginname == null) { + window.location.href = "login.html"; + } + if (logintype == "student") { + $("#index3").css("display", "none"); + } + $("#username").text(loginname); + }, "json"); + + $.post("homework/showByType/结对", {"type": "结对"}, function (json) { + $("#hw").empty(); + for (var i = 0; i < json.length; i++) { + $("#hw").append( + "

    " + + json[i].title + + "

    " + "
  • " + json[i].details + "
  • " + ); + } + }) + + +}) diff --git a/SpringBootHomework/target/classes/static/js/index3.js b/SpringBootHomework/target/classes/static/js/index3.js new file mode 100644 index 0000000..eac4c73 --- /dev/null +++ b/SpringBootHomework/target/classes/static/js/index3.js @@ -0,0 +1,49 @@ +$(document).ready(function () { + var loginname; + var logintype; + var loginid; + $.post("showId", function (data) { + loginname = data.username; + logintype = data.type; + loginid = data.id; + if (loginname == null) { + window.location.href = "login.html"; + } + if (logintype == "student") { + window.location.href = "index.html"; + } + $("#username").text(loginname); + }, "json"); + + $("button[name='btnn']").click(function () { + var adata = { + "title": $("#title").val(), + "type": $("#type").val(), + "finishTime": $("#finishTime").val(), + "details": $("#details").val() + } + var data = JSON.stringify(adata); + $.ajax({ + type: "POST", + contentType: "application/json", + data: data, + url: "homework/save", + success: function (res) { + if (res != "") { + alert("添加成功"); + window.location.href = "index3.html"; + } else { + alert("添加失败"); + window.location.href = "index3.html"; + } + }, + error: function () { + alert("失败"); + window.location.href = "index3.html"; + } + }); + + }) + + +}) diff --git a/SpringBootHomework/target/classes/static/js/index4.js b/SpringBootHomework/target/classes/static/js/index4.js new file mode 100644 index 0000000..a5d0bc3 --- /dev/null +++ b/SpringBootHomework/target/classes/static/js/index4.js @@ -0,0 +1,410 @@ +$(document).ready(function () { + var loginname; + var logintype; + var loginid; + $.post("showId", function (data) { + loginname = data.username; + logintype = data.type; + loginid = data.id; + if (loginname == null) { + window.location.href = "login.html"; + } + if (logintype == "student") { + $("#index3").css("display", "none"); + $("button[name='changebtn']").attr("style", "display:none;"); + $("button[name='deletebtn']").attr("style", "display:none;"); + } + $("#username").text(loginname); + }, "json"); + + function SimpleDateFormat(pattern) { + var fmt = new Object(); + fmt.pattern = pattern; + + fmt.parse = function (source) { + try { + return new Date(source); + } catch (e) { + console.log("字符串 " + source + " 转时间格式失败!"); + return null; + } + }; + + fmt.format = function (date) { + if (typeof (date) == "undefined" || date == null || date == "") { + return ""; + } + + try { + date = new Date(date); + } catch (e) { + console.log("时间 " + date + " 格式化失败!"); + return ""; + } + + var strTime = this.pattern;//时间表达式的正则 + + var o = { + "M+": date.getMonth() + 1, //月份 + "d+": date.getDate(), //日 + "H+": date.getHours(), //小时 + "m+": date.getMinutes(), //分 + "s+": date.getSeconds(), //秒 + "q+": Math.floor((date.getMonth() + 3) / 3), //季度 + "S": date.getMilliseconds() //毫秒 + }; + + if (/(y+)/.test(strTime)) { + strTime = strTime + .replace(RegExp.$1, (date.getFullYear() + "") + .substr(4 - RegExp.$1.length)); + } + for (var k in o) { + if (new RegExp("(" + k + ")").test(strTime)) { + strTime = strTime.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); + } + } + + return strTime; + }; + return fmt; + } + + function getdata(pagen,type,finishTime) { + $.getJSON("homework/showByTypeAndFinishTime/" + pagen, {type: type, finishTime: finishTime}, function (json) { + if (pagen <= json.totalPages) { + $("#tbodymainbtn").empty(); + for (var i = 0; i < json.content.length; i++) { + $("#tbodymainbtn").append( + "" + + "" + json.content[i].id + + "" + + "" + json.content[i].title + + "" + + "" + json.content[i].type + + "" + + "" + json.content[i].updateTime + + "" + + "" + json.content[i].finishTime + + "" + + "" + + "" + + "" + + "" + + "" + ); + } + var pagenum = json.totalPages; + $(".pagination").empty(); + $(".pagination").append('
  • 首页
  • '); + $(".pagination").append('
  • 上一页
  • '); + for (var j = 0; j < pagenum; j++) { + $(".pagination").append('
  • ' + (j + 1) + '
  • '); + } + $(".pagination").append('
  • 下一页
  • '); + $(".pagination").append('
  • 尾页
  • '); + $(".page-item").removeClass("active"); + $("#page" + pagen).addClass("active"); + $("#nextpage").click(function () { + var pagenum1 = Number(pagen) + Number(1); + if (pagen < pagenum - 1) { + getdata(pagenum1,type,finishTime); + } + }); + $("#previosepage").click(function () { + var pagenum2 = Number(pagen) - Number(1); + if (pagen > 0) { + getdata(pagenum2,type,finishTime); + } + }); + $("#lastpage").click(function () { + console.log(1); + getdata(pagenum-1,type,finishTime); + }); + $("#firstpage").click(function () { + console.log(1); + getdata(0,type,finishTime); + }); + + + $(".page-item").click(function () { + page = this.id.substr(4); + getdata(page,type,finishTime); + }); + if (logintype == "student") { + $("button[name='changebtn']").attr("style", "display:none;"); + $("button[name='deletebtn']").attr("style", "display:none;"); + } + $("button[name='changebtn']").click(function () { + var id = this.id + var fmt = SimpleDateFormat("yyyy-MM-dd"); + $.getJSON("homework/findAllById/" + id, {id: id}, function (js) { + $("#changebtn").empty(); + $("#id").attr("value", js[0].id); + $("#hwtitle").attr("value", js[0].title); + $("#hwtype").attr("value", js[0].type); + $("#hwupdateTime").attr("value", fmt.format(js[0].updateTime)); + $("#hwfinishTime").attr("value", fmt.format(js[0].finishTime)); + document.getElementById("hwdetails").innerHTML = js[0].details; + $('#modalhwdetail').modal("show"); + $("button[name='btnn']").click(function () { + var adata = { + "id": $("#id").val(), + "title": $("#hwtitle").val(), + "type": $("#hwtype").val(), + "updateTime": $("#hwupdateTime").val(), + "finishTime": $("#hwfinishTime").val(), + "details": $("#hwdetails").val() + } + var data = JSON.stringify(adata); + $.ajax({ + type: "POST", + contentType: "application/json", + data: data, + url: "homework/update", + success: function (res) { + if (res != "") { + alert("修改成功"); + window.location.href = "index4.html"; + } else { + alert("修改失败"); + window.location.href = "index4.html"; + } + }, + error: function () { + alert("失败"); + window.location.href = "index4.html"; + } + }); + }) + }) + }) + + $("button[name='deletebtn']").click(function () { + var id = this.id; + console.log(id); + $.getJSON("homework/deleteById/" + id, {id: id}, function (rs) { + if (rs.rs == 'success') { + window.location.href = "index4.html"; + } else { + alert("删除失败"); + window.location.href = "index4.html"; + } + }); + }) + + $("button[name='checkbtn']").click(function () { + var fmt = SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + $.getJSON("homework/showdetails/" + this.id, {"id": this.id}, function (json) { + $("#dtbodybtn").empty(); + for (var i = 0; i < json.length; i++) { + $("#dtbodybtn").append( + "" + + "" + json[i].id + + "" + + "" + json[i].username + + "" + + "" + fmt.format(json[i].completeTime) + + "" + + "" + json[i].status + + "" + + "" + ) + } + + }) + $('#modalhwdetail2').modal("show"); + + + }) + + $("button[name='uploadbtn']").click(function () { + var hid = this.id; + var uid = loginid; + $('#uploadmodal').modal("show"); + $("button[name='uploadbtn2']").click(function () { + var formData = new FormData(document.getElementById("upload-form")); + $.ajax({ + url: "homework/upload", + method: 'POST', + data: formData, + contentType: false, + processData: false, + success: function (resp) { + if (resp.result != null) { + $.getJSON("homework/saveDetails/" + uid + "/" + hid + "/" + resp.result, function (json) { + if ("outtime" == json.rs) { + alert("已超时"); + } else if ("fail" == json.rs) { + alert("失败"); + } else { + alert(" 添加成功"); + $('#modalhwdetail2').modal('hide'); + } + }) + + } else { + alert("上传失败"); + } + } + }); + + }) + }) + } + + + }) + }; + + $("button[name='searchbtn']").click(function () { + var type = $("#searchtype").val(); + var finishTime = $("#searchfinishTime").val(); + getdata(0,type,finishTime); + // $.getJSON("homework/showByTypeAndFinishTime", {type: type, finishTime: finishTime}, function (json) { + // $("#tbodymainbtn").empty(); + // for (var i = 0; i < json.length; i++) { + // $("#tbodymainbtn").append( + // "" + // + "" + json[i].id + // + "" + // + "" + json[i].title + // + "" + // + "" + json[i].type + // + "" + // + "" + json[i].updateTime + // + "" + // + "" + json[i].finishTime + // + "" + // + "" + // + "" + // + "" + // + "" + // + "" + // ); + // } + // if (logintype == "student") { + // $("button[name='changebtn']").attr("style", "display:none;"); + // $("button[name='deletebtn']").attr("style", "display:none;"); + // } + // $("button[name='changebtn']").click(function () { + // var id = this.id + // var fmt = SimpleDateFormat("yyyy-MM-dd"); + // $.getJSON("homework/findAllById/" + id, {id: id}, function (js) { + // $("#changebtn").empty(); + // $("#id").attr("value", js[0].id); + // $("#hwtitle").attr("value", js[0].title); + // $("#hwtype").attr("value", js[0].type); + // $("#hwupdateTime").attr("value", fmt.format(js[0].updateTime)); + // $("#hwfinishTime").attr("value", fmt.format(js[0].finishTime)); + // document.getElementById("hwdetails").innerHTML = js[0].details; + // $('#modalhwdetail').modal("show"); + // $("button[name='btnn']").click(function () { + // var adata = { + // "id": $("#id").val(), + // "title": $("#hwtitle").val(), + // "type": $("#hwtype").val(), + // "updateTime": $("#hwupdateTime").val(), + // "finishTime": $("#hwfinishTime").val(), + // "details": $("#hwdetails").val() + // } + // var data = JSON.stringify(adata); + // $.ajax({ + // type: "POST", + // contentType: "application/json", + // data: data, + // url: "homework/update", + // success: function (res) { + // if (res != "") { + // alert("修改成功"); + // window.location.href = "index4.html"; + // } else { + // alert("修改失败"); + // window.location.href = "index4.html"; + // } + // }, + // error: function () { + // alert("失败"); + // window.location.href = "index4.html"; + // } + // }); + // }) + // }) + // }) + // + // $("button[name='deletebtn']").click(function () { + // var id = this.id; + // console.log(id); + // $.getJSON("homework/deleteById/" + id, {id: id}, function (rs) { + // if (rs.rs == 'success') { + // window.location.href = "index4.html"; + // } else { + // alert("删除失败"); + // window.location.href = "index4.html"; + // } + // }); + // }) + // + // $("button[name='checkbtn']").click(function () { + // var fmt = SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + // $.getJSON("homework/showdetails/" + this.id, {"id": this.id}, function (json) { + // $("#dtbodybtn").empty(); + // for (var i = 0; i < json.length; i++) { + // $("#dtbodybtn").append( + // "" + // + "" + json[i].id + // + "" + // + "" + json[i].username + // + "" + // + "" + fmt.format(json[i].completeTime) + // + "" + // + "" + json[i].status + // + "" + // + "" + // ) + // } + // + // }) + // $('#modalhwdetail2').modal("show"); + // + // + // }) + // + // $("button[name='uploadbtn']").click(function () { + // var hid = this.id; + // var uid = loginid; + // $('#uploadmodal').modal("show"); + // $("button[name='uploadbtn2']").click(function () { + // var formData = new FormData(document.getElementById("upload-form")); + // $.ajax({ + // url: "homework/upload", + // method: 'POST', + // data: formData, + // contentType: false, + // processData: false, + // success: function (resp) { + // if (resp.result != null) { + // $.getJSON("homework/saveDetails/" + uid + "/" + hid + "/" + resp.result, function (json) { + // if ("outtime" == json.rs) { + // alert("已超时"); + // } else if ("fail" == json.rs) { + // alert("失败"); + // } else { + // alert(" 添加成功"); + // $('#modalhwdetail2').modal('hide'); + // } + // }) + // + // } else { + // alert("上传失败"); + // } + // } + // }); + // + // }) + // }) + // }) + }) + + +}) diff --git a/SpringBootHomework/target/classes/static/js/index5.js b/SpringBootHomework/target/classes/static/js/index5.js new file mode 100644 index 0000000..e41c8e3 --- /dev/null +++ b/SpringBootHomework/target/classes/static/js/index5.js @@ -0,0 +1,41 @@ +$(document).ready(function () { + var loginname; + var logintype; + var loginid; + $.post("showId", function (data) { + loginname = data.username; + logintype = data.type; + loginid = data.id; + if (loginname == null) { + window.location.href = "login.html"; + } + if (logintype == "student") { + $("#index3").css("display", "none"); + } + + $("#username").text(loginname); + }, "json"); + + + $("#btn1").click(function () { + $.getJSON("homework/rank/" + $("#type").val(), {"type": $("#type").val()}, function (json) { + $("#tbodymain").empty(); + for (var i = 0; i < json.length; i++) { + var rank = i+1; + $("#tbodymain").append( + "" + + "" + rank + + "" + + "" + json[i].username + + "" + + "" + json[i].ac + + "" + + "" + ) + } + + }) + }) + + +}) diff --git a/SpringBootHomework/target/classes/static/js/jquery.slimscroll.js b/SpringBootHomework/target/classes/static/js/jquery.slimscroll.js new file mode 100644 index 0000000..92d31d2 --- /dev/null +++ b/SpringBootHomework/target/classes/static/js/jquery.slimscroll.js @@ -0,0 +1 @@ +!function(e){e.fn.extend({slimScroll:function(i){var o={width:"auto",height:"250px",size:"7px",color:"#000",position:"right",distance:"1px",start:"top",opacity:.4,alwaysVisible:!1,disableFadeOut:!1,railVisible:!1,railColor:"#333",railOpacity:.2,railDraggable:!0,railClass:"slimScrollRail",barClass:"slimScrollBar",wrapperClass:"slimScrollDiv",allowPageScroll:!1,wheelStep:20,touchScrollStep:200,borderRadius:"7px",railBorderRadius:"7px"},s=e.extend(o,i);return this.each(function(){function o(t){if(h){var t=t||window.event,i=0;t.wheelDelta&&(i=-t.wheelDelta/120),t.detail&&(i=t.detail/3);var o=t.target||t.srcTarget||t.srcElement;e(o).closest("."+s.wrapperClass).is(x.parent())&&r(i,!0),t.preventDefault&&!y&&t.preventDefault(),y||(t.returnValue=!1)}}function r(e,t,i){y=!1;var o=e,r=x.outerHeight()-R.outerHeight();if(t&&(o=parseInt(R.css("top"))+e*parseInt(s.wheelStep)/100*R.outerHeight(),o=Math.min(Math.max(o,0),r),o=e>0?Math.ceil(o):Math.floor(o),R.css({top:o+"px"})),v=parseInt(R.css("top"))/(x.outerHeight()-R.outerHeight()),o=v*(x[0].scrollHeight-x.outerHeight()),i){o=e;var a=o/x[0].scrollHeight*x.outerHeight();a=Math.min(Math.max(a,0),r),R.css({top:a+"px"})}x.scrollTop(o),x.trigger("slimscrolling",~~o),n(),c()}function a(e){window.addEventListener?(e.addEventListener("DOMMouseScroll",o,!1),e.addEventListener("mousewheel",o,!1)):document.attachEvent("onmousewheel",o)}function l(){f=Math.max(x.outerHeight()/x[0].scrollHeight*x.outerHeight(),m),R.css({height:f+"px"});var e=f==x.outerHeight()?"none":"block";R.css({display:e})}function n(){if(l(),clearTimeout(p),v==~~v){if(y=s.allowPageScroll,b!=v){var e=0==~~v?"top":"bottom";x.trigger("slimscroll",e)}}else y=!1;return b=v,f>=x.outerHeight()?void(y=!0):(R.stop(!0,!0).fadeIn("fast"),void(s.railVisible&&E.stop(!0,!0).fadeIn("fast")))}function c(){s.alwaysVisible||(p=setTimeout(function(){s.disableFadeOut&&h||u||d||(R.fadeOut("slow"),E.fadeOut("slow"))},1e3))}var h,u,d,p,g,f,v,b,w="
    ",m=30,y=!1,x=e(this);if(x.parent().hasClass(s.wrapperClass)){var C=x.scrollTop();if(R=x.closest("."+s.barClass),E=x.closest("."+s.railClass),l(),e.isPlainObject(i)){if("height"in i&&"auto"==i.height){x.parent().css("height","auto"),x.css("height","auto");var H=x.parent().parent().height();x.parent().css("height",H),x.css("height",H)}if("scrollTo"in i)C=parseInt(s.scrollTo);else if("scrollBy"in i)C+=parseInt(s.scrollBy);else if("destroy"in i)return R.remove(),E.remove(),void x.unwrap();r(C,!1,!0)}}else if(!(e.isPlainObject(i)&&"destroy"in i)){s.height="auto"==s.height?x.parent().height():s.height;var S=e(w).addClass(s.wrapperClass).css({position:"relative",overflow:"hidden",width:s.width,height:s.height});x.css({overflow:"hidden",width:s.width,height:s.height});var E=e(w).addClass(s.railClass).css({width:s.size,height:"100%",position:"absolute",top:0,display:s.alwaysVisible&&s.railVisible?"block":"none","border-radius":s.railBorderRadius,background:s.railColor,opacity:s.railOpacity,zIndex:90}),R=e(w).addClass(s.barClass).css({background:s.color,width:s.size,position:"absolute",top:0,opacity:s.opacity,display:s.alwaysVisible?"block":"none","border-radius":s.borderRadius,BorderRadius:s.borderRadius,MozBorderRadius:s.borderRadius,WebkitBorderRadius:s.borderRadius,zIndex:99}),D="right"==s.position?{right:s.distance}:{left:s.distance};E.css(D),R.css(D),x.wrap(S),x.parent().append(R),x.parent().append(E),s.railDraggable&&R.bind("mousedown",function(i){var o=e(document);return d=!0,t=parseFloat(R.css("top")),pageY=i.pageY,o.bind("mousemove.slimscroll",function(e){currTop=t+e.pageY-pageY,R.css("top",currTop),r(0,R.position().top,!1)}),o.bind("mouseup.slimscroll",function(e){d=!1,c(),o.unbind(".slimscroll")}),!1}).bind("selectstart.slimscroll",function(e){return e.stopPropagation(),e.preventDefault(),!1}),E.hover(function(){n()},function(){c()}),R.hover(function(){u=!0},function(){u=!1}),x.hover(function(){h=!0,n(),c()},function(){h=!1,c()}),x.bind("touchstart",function(e,t){e.originalEvent.touches.length&&(g=e.originalEvent.touches[0].pageY)}),x.bind("touchmove",function(e){if(y||e.originalEvent.preventDefault(),e.originalEvent.touches.length){var t=(g-e.originalEvent.touches[0].pageY)/s.touchScrollStep;r(t,!0),g=e.originalEvent.touches[0].pageY}}),l(),"bottom"===s.start?(R.css({top:x.outerHeight()-R.outerHeight()}),r(0,!0)):"top"!==s.start&&(r(e(s.start).position().top,null,!0),s.alwaysVisible||R.hide()),a(this)}}),this}}),e.fn.extend({slimscroll:e.fn.slimScroll})}(jQuery); \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/js/login.js b/SpringBootHomework/target/classes/static/js/login.js new file mode 100644 index 0000000..683b249 --- /dev/null +++ b/SpringBootHomework/target/classes/static/js/login.js @@ -0,0 +1,61 @@ +$(function () { + $("#btn").attr('disabled', true); + $("#namep").hide(); + $("#pwd").blur(function () { + var pwd = $("#pwd").val(); + if (pwd.length == 0) { + $("#pwdp").show(); + $("#btn").attr('disabled', true); + } else { + $("#pwdp").hide(); + $("#btn").attr('disabled', false); + } + }); + $("#name").blur(function () { + var name = $("#name").val(); + if (name.length == 0) { + $("#namepp").show(); + $("#btn").attr('disabled', true); + } else if (name.length > 0) { + $("#namepp").hide(); + $("#btn").attr('disabled', false); + } + if (/^[0-9a-zA-Z_]{1,30}$/.test(name)) { + $("#namep").hide(); + $("#btn").attr('disabled', false); + } else if (name.length > 30) { + $("#namep").show(); + $("#btn").attr('disabled', true); + } + }); + + $("button[name='btn']").click(function () { + + var adata = { + "username": $("#name").val(), + "password": $("#pwd").val(), + "type": $("#type").val() + } + var data = JSON.stringify(adata); + $.ajax({ + type: "POST", + contentType: "application/json", + data: data, + url: "login", + success: function (res) { + if (res != null) { + $.getJSON("setId", {"id": res.id, "username": res.username,"type":res.type}, function (data) { + window.location.href = "index.html"; + }, "json"); + + } else { + window.location.href = "login.html"; + } + }, + error: function () { + window.location.href = "login.html"; + } + }); + }) + +}) diff --git a/SpringBootHomework/target/classes/static/js/register.js b/SpringBootHomework/target/classes/static/js/register.js new file mode 100644 index 0000000..493cbc7 --- /dev/null +++ b/SpringBootHomework/target/classes/static/js/register.js @@ -0,0 +1,94 @@ +$(function () { + $("#btn").attr('disabled', true); + $("#namep").hide(); + $("#pwd").blur(function () { + var pwd = $("#pwd").val(); + if (/^[0-9a-zA-Z_]{6,15}$/.test(pwd)) { + $("#pwdp").hide(); + $("#btn").attr('disabled', false); + + } else { + $("#pwdp").show(); + $("#btn").attr('disabled', true); + + } + }); + $("#pwd2").blur(function () { + var pwd2 = $("#pwd2").val(); + if (pwd2 != $("#pwd").val()) { + $("#pwd3p").show(); + $("#btn").attr('disabled', true); + } else if (pwd2 == $("#pwd").val()) { + $("#pwd3p").hide(); + $("#btn").attr('disabled', false); + } + if (pwd2.length == 0) { + $("#pwd2p").show(); + $("#btn").attr('disabled', true); + } else if (pwd2.length > 0) { + $("#pwd2p").hide(); + $("#btn").attr('disabled', false); + } + }); + $("#name").blur(function () { + var name = $("#name").val(); + if (this.value.length == 0) { + $("#namepp").show(); + $("#btn").attr('disabled', true); + } else if (name.length > 0) { + $("#namepp").hide(); + $("#btn").attr('disabled', false); + } + if (/^[0-9a-zA-Z_]{1,30}$/.test(name)) { + $("#namep").hide(); + $("#btn").attr('disabled', false); + } else if (name.length > 30) { + $("#namep").show(); + $("#btn").attr('disabled', true); + } + $.getJSON("checkName", {username: name}, function (json) { + console.log(json); + var rs = json.result + ""; + console.log(rs); + if (rs == 'false') { + $("#nameppp").hide(); + $("#btn").attr('disabled', false); + } else { + $("#nameppp").show(); + $("#btn").attr('disabled', true); + } + }); + }); + + + $("button[name='btn']").click(function () { + + var adata = { + "username": $("#name").val(), + "password": $("#pwd").val(), + "type":$("#type").val() + } + var data = JSON.stringify(adata); + $.ajax({ + type: "POST", + contentType: "application/json", + data: data, + url: "register", + success: function (res) { + console.log(res); + if (res != "" && res == "success") { + alert("注册成功"); + window.location.href = "login.html"; + } else { + alert("注册失败"); + window.location.href = "register.html"; + } + }, + error: function () { + alert("失败"); + window.location.href = "register.html"; + } + }); + }) + +}) diff --git a/SpringBootHomework/target/classes/static/js/sidebarmenu.js b/SpringBootHomework/target/classes/static/js/sidebarmenu.js new file mode 100644 index 0000000..2052e0c --- /dev/null +++ b/SpringBootHomework/target/classes/static/js/sidebarmenu.js @@ -0,0 +1,342 @@ +/* +Template Name: Monster Admin +Author: Themedesigner +Email: niravjoshi87@gmail.com +File: js +*/ +(function (global, factory) { + if (typeof define === "function" && define.amd) { + define(['jquery'], factory); + } else if (typeof exports !== "undefined") { + factory(require('jquery')); + } else { + var mod = { + exports: {} + }; + factory(global.jquery); + global.metisMenu = mod.exports; + } +})(this, function (_jquery) { + 'use strict'; + + var _jquery2 = _interopRequireDefault(_jquery); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + var Util = function ($) { + var transition = false; + + var TransitionEndEvent = { + WebkitTransition: 'webkitTransitionEnd', + MozTransition: 'transitionend', + OTransition: 'oTransitionEnd otransitionend', + transition: 'transitionend' + }; + + function getSpecialTransitionEndEvent() { + return { + bindType: transition.end, + delegateType: transition.end, + handle: function handle(event) { + if ($(event.target).is(this)) { + return event.handleObj.handler.apply(this, arguments); + } + return undefined; + } + }; + } + + function transitionEndTest() { + if (window.QUnit) { + return false; + } + + var el = document.createElement('mm'); + + for (var name in TransitionEndEvent) { + if (el.style[name] !== undefined) { + return { + end: TransitionEndEvent[name] + }; + } + } + + return false; + } + + function transitionEndEmulator(duration) { + var _this2 = this; + + var called = false; + + $(this).one(Util.TRANSITION_END, function () { + called = true; + }); + + setTimeout(function () { + if (!called) { + Util.triggerTransitionEnd(_this2); + } + }, duration); + + return this; + } + + function setTransitionEndSupport() { + transition = transitionEndTest(); + $.fn.emulateTransitionEnd = transitionEndEmulator; + + if (Util.supportsTransitionEnd()) { + $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); + } + } + + var Util = { + TRANSITION_END: 'mmTransitionEnd', + + triggerTransitionEnd: function triggerTransitionEnd(element) { + $(element).trigger(transition.end); + }, + supportsTransitionEnd: function supportsTransitionEnd() { + return Boolean(transition); + } + }; + + setTransitionEndSupport(); + + return Util; + }(jQuery); + + var MetisMenu = function ($) { + + var NAME = 'metisMenu'; + var DATA_KEY = 'metisMenu'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 350; + + var Default = { + toggle: true, + preventDefault: true, + activeClass: 'active', + collapseClass: 'collapse', + collapseInClass: 'in', + collapsingClass: 'collapsing', + triggerElement: 'a', + parentTrigger: 'li', + subMenu: 'ul' + }; + + var Event = { + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var MetisMenu = function () { + function MetisMenu(element, config) { + _classCallCheck(this, MetisMenu); + + this._element = element; + this._config = this._getConfig(config); + this._transitioning = null; + + this.init(); + } + + MetisMenu.prototype.init = function init() { + var self = this; + $(this._element).find(this._config.parentTrigger + '.' + this._config.activeClass).has(this._config.subMenu).children(this._config.subMenu).attr('aria-expanded', true).addClass(this._config.collapseClass + ' ' + this._config.collapseInClass); + + $(this._element).find(this._config.parentTrigger).not('.' + this._config.activeClass).has(this._config.subMenu).children(this._config.subMenu).attr('aria-expanded', false).addClass(this._config.collapseClass); + + $(this._element).find(this._config.parentTrigger).has(this._config.subMenu).children(this._config.triggerElement).on(Event.CLICK_DATA_API, function (e) { + var _this = $(this); + var _parent = _this.parent(self._config.parentTrigger); + var _siblings = _parent.siblings(self._config.parentTrigger).children(self._config.triggerElement); + var _list = _parent.children(self._config.subMenu); + if (self._config.preventDefault) { + e.preventDefault(); + } + if (_this.attr('aria-disabled') === 'true') { + return; + } + if (_parent.hasClass(self._config.activeClass)) { + _this.attr('aria-expanded', false); + self._hide(_list); + } else { + self._show(_list); + _this.attr('aria-expanded', true); + if (self._config.toggle) { + _siblings.attr('aria-expanded', false); + } + } + + if (self._config.onTransitionStart) { + self._config.onTransitionStart(e); + } + }); + }; + + MetisMenu.prototype._show = function _show(element) { + if (this._transitioning || $(element).hasClass(this._config.collapsingClass)) { + return; + } + var _this = this; + var _el = $(element); + + var startEvent = $.Event(Event.SHOW); + _el.trigger(startEvent); + + if (startEvent.isDefaultPrevented()) { + return; + } + + _el.parent(this._config.parentTrigger).addClass(this._config.activeClass); + + if (this._config.toggle) { + this._hide(_el.parent(this._config.parentTrigger).siblings().children(this._config.subMenu + '.' + this._config.collapseInClass).attr('aria-expanded', false)); + } + + _el.removeClass(this._config.collapseClass).addClass(this._config.collapsingClass).height(0); + + this.setTransitioning(true); + + var complete = function complete() { + + _el.removeClass(_this._config.collapsingClass).addClass(_this._config.collapseClass + ' ' + _this._config.collapseInClass).height('').attr('aria-expanded', true); + + _this.setTransitioning(false); + + _el.trigger(Event.SHOWN); + }; + + if (!Util.supportsTransitionEnd()) { + complete(); + return; + } + + _el.height(_el[0].scrollHeight).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + }; + + MetisMenu.prototype._hide = function _hide(element) { + + if (this._transitioning || !$(element).hasClass(this._config.collapseInClass)) { + return; + } + var _this = this; + var _el = $(element); + + var startEvent = $.Event(Event.HIDE); + _el.trigger(startEvent); + + if (startEvent.isDefaultPrevented()) { + return; + } + + _el.parent(this._config.parentTrigger).removeClass(this._config.activeClass); + _el.height(_el.height())[0].offsetHeight; + + _el.addClass(this._config.collapsingClass).removeClass(this._config.collapseClass).removeClass(this._config.collapseInClass); + + this.setTransitioning(true); + + var complete = function complete() { + if (_this._transitioning && _this._config.onTransitionEnd) { + _this._config.onTransitionEnd(); + } + + _this.setTransitioning(false); + _el.trigger(Event.HIDDEN); + + _el.removeClass(_this._config.collapsingClass).addClass(_this._config.collapseClass).attr('aria-expanded', false); + }; + + if (!Util.supportsTransitionEnd()) { + complete(); + return; + } + + _el.height() == 0 || _el.css('display') == 'none' ? complete() : _el.height(0).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + }; + + MetisMenu.prototype.setTransitioning = function setTransitioning(isTransitioning) { + this._transitioning = isTransitioning; + }; + + MetisMenu.prototype.dispose = function dispose() { + $.removeData(this._element, DATA_KEY); + + $(this._element).find(this._config.parentTrigger).has(this._config.subMenu).children(this._config.triggerElement).off('click'); + + this._transitioning = null; + this._config = null; + this._element = null; + }; + + MetisMenu.prototype._getConfig = function _getConfig(config) { + config = $.extend({}, Default, config); + return config; + }; + + MetisMenu._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DATA_KEY); + var _config = $.extend({}, Default, $this.data(), (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config); + + if (!data && /dispose/.test(config)) { + this.dispose(); + } + + if (!data) { + data = new MetisMenu(this, _config); + $this.data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); + }; + + return MetisMenu; + }(); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = MetisMenu._jQueryInterface; + $.fn[NAME].Constructor = MetisMenu; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return MetisMenu._jQueryInterface; + }; + return MetisMenu; + }(jQuery); +}); \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/js/table.js b/SpringBootHomework/target/classes/static/js/table.js new file mode 100644 index 0000000..c272fcc --- /dev/null +++ b/SpringBootHomework/target/classes/static/js/table.js @@ -0,0 +1,71 @@ +$(document).ready(function () { + $.getJSON("getAll", function (json) { + console.log(json); + $("#tbodymainbtn").empty(); + for (var i = 0; i < json.length; i++) { + $("#tbodymainbtn").append( + "" + + "" + json[i].id + + "" + + "" + json[i].username + + "" + + "" + json[i].password + + "" + + "" + "  " + + "" + ); + $("#tbodymainbtn").append( + "
    " + + "" + + "" + + "" + + "" + + "
    " + ); + } + + + //jquery 样式查找 “点+样式名字” + $("button[name='btn001']").click(function () { + var id = this.id; + //从最后面开始,截取一位 + var numb = id.slice(4); + console.log("****************" + id); + $("#tridval" + numb).hide(); + $("#tridval2" + numb).show(); + + }); + + + $("button[name='btn002']").click(function () { + var id = this.id; + //从最后面开始,截取一位 + var numb = id.slice(4); + console.log("****************" + id); + var nval = $("#name2" + numb).val(); + var aval = $("#password2" + numb).val(); + console.log("********name2********" + nval); + console.log("********age2********" + aval); + + $("#tridval" + numb).show(); + $("#tridval2" + numb).hide(); + + + }); + + $("button[name='btn003']").click(function () { + var uid =this.id; + var numb = uid.slice(4); + console.log(numb); + $.getJSON("delete",{id:numb},function (json) { + console.log("delete-----",json); + }) + }) + + + }); + +}); diff --git a/SpringBootHomework/target/classes/static/js/waves.js b/SpringBootHomework/target/classes/static/js/waves.js new file mode 100644 index 0000000..d559e22 --- /dev/null +++ b/SpringBootHomework/target/classes/static/js/waves.js @@ -0,0 +1 @@ +!function(t){"use strict";function e(t){return null!==t&&t===t.window}function n(t){return e(t)?t:9===t.nodeType&&t.defaultView}function a(t){var e,a,i={top:0,left:0},o=t&&t.ownerDocument;return e=o.documentElement,"undefined"!=typeof t.getBoundingClientRect&&(i=t.getBoundingClientRect()),a=n(o),{top:i.top+a.pageYOffset-e.clientTop,left:i.left+a.pageXOffset-e.clientLeft}}function i(t){var e="";for(var n in t)t.hasOwnProperty(n)&&(e+=n+":"+t[n]+";");return e}function o(t){if(d.allowEvent(t)===!1)return null;for(var e=null,n=t.target||t.srcElement;null!==n.parentElement;){if(!(n instanceof SVGElement||-1===n.className.indexOf("waves-effect"))){e=n;break}if(n.classList.contains("waves-effect")){e=n;break}n=n.parentElement}return e}function r(e){var n=o(e);null!==n&&(c.show(e,n),"ontouchstart"in t&&(n.addEventListener("touchend",c.hide,!1),n.addEventListener("touchcancel",c.hide,!1)),n.addEventListener("mouseup",c.hide,!1),n.addEventListener("mouseleave",c.hide,!1))}var s=s||{},u=document.querySelectorAll.bind(document),c={duration:750,show:function(t,e){if(2===t.button)return!1;var n=e||this,o=document.createElement("div");o.className="waves-ripple",n.appendChild(o);var r=a(n),s=t.pageY-r.top,u=t.pageX-r.left,d="scale("+n.clientWidth/100*10+")";"touches"in t&&(s=t.touches[0].pageY-r.top,u=t.touches[0].pageX-r.left),o.setAttribute("data-hold",Date.now()),o.setAttribute("data-scale",d),o.setAttribute("data-x",u),o.setAttribute("data-y",s);var l={top:s+"px",left:u+"px"};o.className=o.className+" waves-notransition",o.setAttribute("style",i(l)),o.className=o.className.replace("waves-notransition",""),l["-webkit-transform"]=d,l["-moz-transform"]=d,l["-ms-transform"]=d,l["-o-transform"]=d,l.transform=d,l.opacity="1",l["-webkit-transition-duration"]=c.duration+"ms",l["-moz-transition-duration"]=c.duration+"ms",l["-o-transition-duration"]=c.duration+"ms",l["transition-duration"]=c.duration+"ms",l["-webkit-transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",l["-moz-transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",l["-o-transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",l["transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",o.setAttribute("style",i(l))},hide:function(t){d.touchup(t);var e=this,n=(1.4*e.clientWidth,null),a=e.getElementsByClassName("waves-ripple");if(!(a.length>0))return!1;n=a[a.length-1];var o=n.getAttribute("data-x"),r=n.getAttribute("data-y"),s=n.getAttribute("data-scale"),u=Date.now()-Number(n.getAttribute("data-hold")),l=350-u;0>l&&(l=0),setTimeout(function(){var t={top:r+"px",left:o+"px",opacity:"0","-webkit-transition-duration":c.duration+"ms","-moz-transition-duration":c.duration+"ms","-o-transition-duration":c.duration+"ms","transition-duration":c.duration+"ms","-webkit-transform":s,"-moz-transform":s,"-ms-transform":s,"-o-transform":s,transform:s};n.setAttribute("style",i(t)),setTimeout(function(){try{e.removeChild(n)}catch(t){return!1}},c.duration)},l)},wrapInput:function(t){for(var e=0;e0&&(d.touches-=1)},500):"mousedown"===t.type&&d.touches>0&&(e=!1),e},touchup:function(t){d.allowEvent(t)}};s.displayEffect=function(e){e=e||{},"duration"in e&&(c.duration=e.duration),c.wrapInput(u(".waves-effect")),"ontouchstart"in t&&document.body.addEventListener("touchstart",r,!1),document.body.addEventListener("mousedown",r,!1)},s.attach=function(e){"input"===e.tagName.toLowerCase()&&(c.wrapInput([e]),e=e.parentElement),"ontouchstart"in t&&e.addEventListener("touchstart",r,!1),e.addEventListener("mousedown",r,!1)},t.Waves=s,document.addEventListener("DOMContentLoaded",function(){s.displayEffect()},!1)}(window); \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/login.html b/SpringBootHomework/target/classes/static/login.html new file mode 100644 index 0000000..d909b3e --- /dev/null +++ b/SpringBootHomework/target/classes/static/login.html @@ -0,0 +1,65 @@ + + + + + + 登陆 + + + + + + + + +
    +
    + +
    +
    + + +
    +
    + + + + + + \ No newline at end of file diff --git a/SpringBootHomework/target/classes/static/register.html b/SpringBootHomework/target/classes/static/register.html new file mode 100644 index 0000000..65ce2a8 --- /dev/null +++ b/SpringBootHomework/target/classes/static/register.html @@ -0,0 +1,69 @@ + + + + + + + + + 注册 + + + + + +
    +
    + +
    +
    +
    +
    +
    +

    Let's create your account

    +
    + + + + + +
    +
    + + + + +
    +
    + + + + +
    + + +
    + 已有账号? +
    +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/SpringBootHomework/target/maven-archiver/pom.properties b/SpringBootHomework/target/maven-archiver/pom.properties new file mode 100644 index 0000000..a677e96 --- /dev/null +++ b/SpringBootHomework/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +version=0.0.1-SNAPSHOT +groupId=zz +artifactId=SpringBootHomework diff --git a/SpringBootHomework/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/SpringBootHomework/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/SpringBootHomework/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/SpringBootHomework/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..d3e7e58 --- /dev/null +++ b/SpringBootHomework/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,13 @@ +C:\bsea\wp\2019\07\04\SpringBoot2\SpringBootHomework\src\main\java\com\cy\entity\HomeworkRankDTO.java +C:\bsea\wp\2019\07\04\SpringBoot2\SpringBootHomework\src\main\java\com\cy\entity\Homework.java +C:\bsea\wp\2019\07\04\SpringBoot2\SpringBootHomework\src\main\java\com\cy\controller\HomeworkController.java +C:\bsea\wp\2019\07\04\SpringBoot2\SpringBootHomework\src\main\java\com\cy\service\HomeworkService.java +C:\bsea\wp\2019\07\04\SpringBoot2\SpringBootHomework\src\main\java\com\cy\entity\HomeworkUserDTO.java +C:\bsea\wp\2019\07\04\SpringBoot2\SpringBootHomework\src\main\java\com\cy\repository\DTODao.java +C:\bsea\wp\2019\07\04\SpringBoot2\SpringBootHomework\src\main\java\com\cy\repository\HomeworkRepository.java +C:\bsea\wp\2019\07\04\SpringBoot2\SpringBootHomework\src\main\java\com\cy\repository\UserRepository.java +C:\bsea\wp\2019\07\04\SpringBoot2\SpringBootHomework\src\main\java\com\cy\entity\User.java +C:\bsea\wp\2019\07\04\SpringBoot2\SpringBootHomework\src\main\java\com\cy\controller\UserController.java +C:\bsea\wp\2019\07\04\SpringBoot2\SpringBootHomework\src\main\java\com\cy\SpringBootHomeworkApplication.java +C:\bsea\wp\2019\07\04\SpringBoot2\SpringBootHomework\src\main\java\com\cy\service\UserService.java +C:\bsea\wp\2019\07\04\SpringBoot2\SpringBootHomework\src\main\java\com\cy\utils\KeyUtils.java diff --git a/SpringBootHomework/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/SpringBootHomework/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..e69de29

    Ut)(^^`DAXmpW+BV#O<<#bEPGj20ad7B zBe3zU-}CXujdhC9RZ|J)?Pijp$zjwtGMh^or!n;W0Y>KD%s`110`v=%*>-?iy*$&= z+Ms1;Z0xwbIi?`X@%A!Sg{gkKijS=H6--Cx$9z(dF;1iU2obn`yT*3A=_I;#>FB-Mu9}0W!AgB@C5-;|CAyVWBpq7XCKr3XUanh<*$5aMZ>h}4ta4ue z+ZzPA?isO!GR#mgrIPQIOhl6x3<5W(9o~r$85V_A zx%6UlQ~5D*FhV3)mo-ubxA>bi%%|=c2^qh9O#tH?^0hTzIC@AJuO4yT#%kVzX7Fg4 z>+EI!qB{e_buH{*E0u3o?V;1H<(Q<`Dx9>Q`ak9<@1+gxxt8<989wi4{Gu3=zWgvG zVQF6bcJ=ajpsH=copG*Z%osvRgkHPdtIa;*Vn?8M1YD2%?uKBz(}lhBA=K$;-%H#n zU-%Vnn%uo|aa~kavF;o~+jbQ_J-1UxG3leX(_74avgFCeNQqWCy> zp<4q*wX$wcBMo)1P@={O?yUZXRKZ`ZqcP$mc`vd)JAOPcJnZ%xjoe@Q|BL)(>^sFG zT^F49)y!|j8u6#H2?mJZp zAH8uZF~}LCgED~O9<`0v$K68~26IL! zVQqL|yNX(ggwzc&(bs|s$p-R4|B}uKoOPX#mVr|2 z&n_Are~r5qdYGz8__T;R%Ll*5|rJ0O>USX*6wV%ZS%+IsXLAQR7hHYd~2h zbbnyrUQQ&;)EO&nVL%*t%RZ}!k7sw36hOUfh+q3&j((1ueToZ%&FQZu=UD$v8O=yW zxdZ#dlipVSrJ!164r;iuZh z(FAjz+B5BL;&zx8{(@W_bwuGi*szzE(ZS_6k|OAay-?YHpM{P-x={Q8QL_Egfi6fC zaCv4jR<2?YExEj=w@S%dau}q+Avx=yw7+P7{`k54td8G@{c2Arx%zO4u1=quA5h48 z^R;f{qnt{K!`(H=QYumHG3B++D0=*^ejb353`Rm0G@a1_CyD!BfxsWn$!LESZ2{JY zwug#be1ynzbR5%CJM-mOqXrBc^GrVTnvw=~`IB2|G6{xwAh<25mUJYUSZK^*& z@f=6GxruW8kF*HL#N8+(Z+L4i-I>PgC@-Cxb0ZW{&LLeNf2Re*==C(WFe_Y?cIuQO z27iXL2io-L;cybwyul!K<<*XX3Tc>|Vr0*p+U;$!r+SGcHIgL4S(`T)jrs?OvH3Rk z-I+LXVQ#AhnB*Y>V3%ocmb(taGkO0j&YP)AIMXS+xI$vJqhPeF+{R2MH0^C7iFOjM zG@`UVcKpiPRS@p>=*f`%rP31Qe7H;`0#Vhga6Q3mBbjhtI@1RsVDBvAL#4S|K8p}& zYA4c>iXxda*w2>Xd%G}#w})!Xi_`Fan+CfW83(j_2s zzR260sfO7S!<{|*6z+VBD*h%2u2BW!auGe$;^t_K4^NEO2A%gvgByvq;C>%bRHVR$+UO2w-o$z+Y z3BV^dwGyd--|?0VsN63c3=9-A?;6PaFH_7; zcU*2vn4th|E;ys6z3jl-RrDRB-`Sdypr^$2FN$GOemqv6uU+N#h;_Oq$M{9if-^!HhzV(vIcU3z zsl~8vmO-O(#Bn31({upK5PHJ1&mn_ zA&nbZ4}{JL#Zi+0@l4Um@SS69?8~>yP4ytuPjcK?CYvgdx$*G>vH$qy6tesI_ffu|f2VH*gw66{qNdc(?&FGGQD-CrbW5)b<7rM2OZLmA5|@@BYH^o`Xsz?z4CO*tGG2_ z2g$F-u5(>Dl$bi~tIgo)&XZMmqtpGeLL9lcR!U|MKfH9t-sOFR_P;i1K}r6Eb=h^k z*>$Zkzz0eTu!VG$ta3L4vt=hkY5++)dUUAi2;&6--9rfJUvuDMpuaZb&+^Vh5U;@G@xRqbp@gLc* zS$$&_ibFh2e$yroVDPuA03&yCa0tQJ+s%{!b2oJS*buge0Y3c3yY+{sB8f_Wt(zb> z9J(#1krj!V2S?N@vY7T4<<`X&nc|oE`Fcqv15feN-9~DQT{PB%pL5gu17n-90jSq* zD1XsT^O$4=d-U!5~8GOGGBm?DEeN}S3n@tN^| z-ix<;btuUfkqYF9xQ^|6QNw}@j9@c#P*lS+lA{{NY*i_Ay^48oG(3p7c`q4h^xrwp zJT3kJ)$v<|LRa_H1ggs(2Sz}e^9q*ca;=rXQG@2j%!Is*L2>K4O552k0puZmE;^l5 z`OA%(0#{#HGXEN8T7Dx(k?FGUIx|m&RKU@7F-__5)kc4SgIh)Cp8?Oo8BWhH{$~`* zJo3zyJG2#_o9zW*lXee18-^sT6iou8XU=)O%G1#c2pAWV#70)@Bp;G^vY=MgPlxZ% z2I@lYNev4H!A+C5hCb1%iZ0B*zt*2WNXkFZ0wH_#x%>KD{rsGE-=1v0{b=K(E-Z&K z_oe&a{=I<$@$cmgoP)iha_8ynN*i?Y!{Ev)C<20#7P@|9oy7xj*fkx(PZ)0)L+xzn zY07F-G22@c>JrKcZHOm%P@p6JZKy@G6kpQv_7@qGfD<&=$AOoTB4ecOr?Pk_;Hk=o#D*>2f5h zhAXIQ7B&lWEc!!5zib)Vl5_@)rJV74nue#$;#S3(YpmGyO~z z6RB%^@7l6|5b^nH7&Nj`-RK$mMvO9W73_Tul1Q!X+a>(Mtcb>GRDECytqgA6y9G-%pvSN{CV(n8!Ys3TPdHu7CYk$#LWjnh{SmPS2 zyz28_FiC(8dJM2@CfIG}oY6#?FB87oK>iLf1KgVz>}&1%RsJG#rdcE7VQKe^6l1qPwPid2x8a@V0~ zszdQn7S=S8-d*3D8LJxSQJ-tnPC6uG`cmO5Z3JrEWp0bIyko2EM{HjkuPEu(O-hAh z#BRiGHk=EzKGT8C=le)w>|hKqmp;-^XYdHcp};Xew>K5zh0qAGuSf%v^SVRvZ0M_@ zIW^9UGxH13LVQg4;r`M40W7F$(Ro$fuwMlbEv>Ia@6cuU!(2|Td$P_gz<+<4}KCnqxj?1 zug8JRdy#JkK4(Y)L4MW02)Y3!m~&J~02~7-(3L$4^Que^3l&yEQahi)w=>28aBYff zG7p}^>c%@K5pG-0HU>!FY}}KVGqOV#K8V^RmNcE&1T*Ll{W}Sn{<_e5sve&DZ;j9w?uBlM7870Tkq}W8xFg8YRn2iFQVY zt}rqjo9#IkBkt@bltXlr5gTb{h!^-{n6hXzPx+;FRw(h;NNI~p$3q4C5b|9OFrJpd zLd-|4z}9>!+Cx9(cA8I8hP+*KUNE>Ym+#CpYepsfT+@Z=30{U+f&iemaEIh6rjee@ z_o6aV$qy;%c)Lsp(SWuxvueMQo5j>_Q_^R$W{wC{vYg9A0^i8**}FsO6?IjKq}yjP znOc6pm1tr1@V9&AZn2Au7H=~$xE$`Ux3X|@5WuAk1~SVP&%$o`EYSy$V8(oN=0FTlx zs5`nZ-u15SJ+yhCI1~ahnYf+q@5sIFvqU=?<3jVK{UoKVo^Z_DUEPnCl?LO^u!ZBx z(~P?=V;_YQSt1QWJAuSIaW%z7F)(-HQF!nV7LRnUTJqg5GQi=UQ!O1_oZz5tRNpGb zaP4mODtka?*ekMs-w2~c{t*3xV1Sa`ViKSU#5f1&XhC1wOit z9P{i9CgRE#ZR(awrgsIhi~;SEslMkC3CrT*g;HcB^YV+{(LE}#;!UW%g7_sR1ByLNc+scLwSCloOoDYXQ8JUqP{y}CoG2JM?kxt{7 zdqV;-;xw~INxa{M?a6$qT_pp?wEw62YP9@b3-r`om2X6$xO*}Wl!G$>Y88rBVPcMC zN2`u=Sz)Ffb8E@NSACm!X0Rn{@}-YDDJ_ri@!TUbkXqEEuqZkJSw z)yc%v)ho|KcmQ`K7;|bh#C#oMSQo5W&@F#araX~zNx+7qB2kjN;pFaxLi%FuD#k)8 zN^sd0^xTIsQVpHg9qI+QtKiFEy}%HcZf-CWxvM*hT6_4N%R8%COKtH@z#6;;Nzeiob{-Cr5v=!l_0z?`)~p^pZT)T_wW!QL5= znscP#W1gCQ{KBTeC~SX`7B{ZPTvs9E*onDWWzQ&xuDIv+7+<5AzCFJcQ5_O$wUNQ| zCs!Bmj)ujkFv^aYRf2Z7cV}vQVq=+#Z9C<)Y87y$QpTnk^|YcM!3f`*b;-W1)zr~C z?oc*9K+E0*bzysp`;Wt>)${RQLGwl(H1KzM7QTPpEH_bpLT!(aV(2fjAoB8!&X0(= zINb=@7#rH;8hqx*lqWzhjyjQOf2Ot<(=-^*DiN@fn*orBb2rQrfcdRwFLDWr>_XS(pwg=dmHjm*xch%v1=ex0JVyjU>y;Zw;-{ zg+kc_qTr$y)iL?QGl4?flG4l zlJ;F$`_jdV-1V*lwa3atRKEfy_xS=|?ZWjP5np7%2y(~@UM;y0tC0ZmO@xfF_%^qhUon^m`jRq$I zfrVjddjgP}*cW6j?o5t}Tg4s^){SRszhvmV>)ZrB_k=p5{L;|6&>-aA*3iG-nUF|C z@1+|y&`zLYftw-i8SbH0^rcBL?!kJEZWWlyURJPbT~|W~K~gyZ40(xtm03uCva|LV zMc2Mx8)`eXUlbpB3tSdN0NgF3$BfJd8mI&fS#F<2hN@M<*<;|C*W5F32U-=k`Kx5E z@MNIxVe~NNj>ilV6G!O~U%EuK6S44SwAH32a*rFlZ!Bu4d0FyuKh)v?U*UZOqWcRX+@ep zboX@ht>#Xyot$|xNsau7!-f)FY;S#(&!=+r{mp?aRTslpdpCuDz=BrTk|O~-kE~a zJu*0o)tZ(=y9$OO0?!;9O+obpl7qJv77b4%{T`5UejoN~`z(5SIAp|S%QuRE&k<5B zIbt>DVTbyEcKXO-lVh4gWmJLL6jBlOLHR70GMVWJ>swsBp7sxJvkLXA~I10*|EjS-6tzPi(uXS=|h7PXplG=)B4Rt!?IkKbA=ps^8I@xPk5% zK2}kyAqKJ8 zCNaqh;RToCqn~;jQI4-8M=tZ9?Be!Wbjg7*rg4m1igx1$AUm%W z*auDLdX)_5;5q8>rDKNr)%S}V@(Hoiav9NH`e57)OeQ%n6uW)9CrX6};Lz7j z=8^m*x7L4}QLP36B?0-Ed8L{V54pbSLosTS+_(2`X5IsoP=O}gs^AMYS14a9aR!W6 z-<>-zlM#d5JWlyutdfyT^09%DW#9wEjc9_m8BIvN3bSn}>eTE9zetP3v2zTA1;zP? zaLAXJkeh+sK8v2R?2=G!bpQ1^Osp{>1`9|!HMcCw>Y`lqWO3Z_;Fpr+Aru#CD%dAHsn+g=v zz+k7WCam%Y2*Hhuh8Z$&Rn*_afVb*tO(MJ<@o`G=AWz*Qw-U%Nd`vVGSYpN}W4aw$ zPMfG01ofd=v#1Q94o`;u2kmZYT^Wz8LJjER^`XYD3rSj3%*a$T8rv_;)eKk;nw>$~ zv;Y(%W(VzOI?Kr^#bh%L;6dOLrJv$PVaqC*0bzRrHkt0n*v6Q^QInWHMQE>fLzo6F zm1kNv@5+Kquf*_7EyH-~L7(A=CTg|bx3?HYV5-ciFI@L=K&KKw63=^4!QTD8s7Zu{ zvJ%cJ?%4|za^Q8|twLBmO`M8PS+9biLCYdKF8U)f2i-bUIYp>aseQXX1|KMb@_|c9 z8196vN@E$Y>D%QhFb4Bz^!9Gcvq%{RLnuRlkdy0G{-Czcj?380Ii81&FJ*$}{?1*C zN}d(8DfC)VOzGNRgha-8NZC0sc(&a93eR>6HOao6-sZ!`?DMh9+@0{qE{b54MbI}^ z4`t@T_uSP0o-?mXUkz7^yy~(e?G_!BVC^poVhO}yjhucX*IN(w;*sft*WLdcHSqAC z^CCvh@D`7ZCLK>pDMBwlat4%y7g+U`(OOgtND*NvFF~aTE_$c&;>gTl?AO9Wq5n&k@b**F>e?9)s?^z zG6K@pP0Vy2SS4q}Ja z)9QqAqS3UK5E?&&MMH?8+S63tL^@U?1p06$&)u1Prl-eG&n2#9Em38w>u{7`8t2yK zg5NK&x?iBgnFnLCfdM8RLMTKn)9f7%D6_vrG<#|vV#~n)rIu#p_ZrL4)k4e^}hCS@K z){%qzNQ4<}&T#ybIIVy;1p&16+qKlG7W*M@F=cFfHvD4*k@#f#An9a!iw+kN&G@;lE)Xzf9Jpl9N?JBI%nst>~gULYJRhZyyu_p=nM$hK0jysYct)*jg zTw(x5B|Vaj$Y|bdkG57jM@^-*_=McJV1TK6xuRjkgG^Ju-3!=;ELedvZcNM^JO(~= zYt{O#%?=I41}Eva#0Jb=$0CBkiCjj>Mr+%?U00O98YPX3hhOwo*V3<%tZzkUV43&A z{fL{SR7Q_j8q?N|tSFB!kz{JluzjilklXT=84uqVgKh4_2c0)gx={?1}@=H^vnU2F2hx<_W z?nb4ghSVR>ZEPa68 z&r3{aw|y^RQD$7?R87M0^AGTsP@8mqfZV@msLoGxPyjq%t-UcB)g|6X`IM+;KA*%L z_NSWg4_ZtW=m$Ea{)iopRnUYqu|Q<3PtfVhw;L)b$p%-a;jSY)%+-&GVlX4_M!O2* z8QGzdo-47tjstr%vM)IeC4PGXKv+(ZD8@iHCm`K47VJ^|vd*l3kylG?%^77vSB|Wk z!S1H4ZR}h*<{ilz6mABm86AiAe#!6|5zJhi-@ck#A}%kHyyBxGGP> z-%kg2t?Pcgl3KMH89W$m29V_t!gpiyr`4=O%%p^)b^E1Fgw1aOz+~64mZUtzU?l3` z0n?)A87T`<%Iw4Oi!@OwWL4<#%c*OUn=F}cZzf3(#9H1?td<81>eqfFlpxbfH5sQO zEb)jN6T8Wfl<=K=8Bg}wax7${-`4gwdjp8c!*TH7&C-Q1y)?cltt?%BBhyfoF-L5d z5$)C2ydbv%d%Fq`F`ff+S}5{84*iDxFfYh^(eg)pVL&a(#DZ;~h1rYj7FIaJ zx-v7y9ren|8>pX#7=*wjp+l#y+U{NdpKe)}z3eJ<{{=a0rOfqnGt|zxIOco*1FxH5 zqgh44nY>U%pPr2_sJ%zx%ZY-kZuzC}Xa@%ls#EiIVq@<;5&@FX=84$Oc@VIjYKPRk zd={}M_}(NI#Jkb{7fxV7i6jSEmGJ>A1yly@L=T0$R|)nr)F8hoJz)o0S+09RGSL1a zDH*2L+?=ZL4&w9{V)l5Jw#)4fQvoGt#KR&zQQsF~}6)Cl}MWcM~O9 z^XL(S8ASf_OX~^Rz0t`h2I!nRS5%)cS|Ms*uabteXar%-HzH1dhv{UX(~T>MNFtkZ z0!WwK#7HZeC!5xL(TUk2@rMSnxa}Lu?bcR>Cg3026QC9`wSpi(T=p!EqKv#A1~ zxk&qV*<$J4Gw~fv?F;5P!PuFA$@r8SIYIhmP;#J`82xGf;6TkYyo)H~d28bli16u; zAPy`iKqdyqUmIdbr(X91UcU5!FOEuY)JI0YWmfC~t>yukFW*Z{i17ta8{j_#(iMk1 z=sSTnH7(0kGC>&Da+I!&o-ju--4~f2?;=Xl5^I+2<7p{}ltkIPXI_r_ILH>q%!#U> zg@KaBZ9HN}ePkxPy-bsZb;OdZdoR#bz(Uf>8Er04sJ&4y?kFOpxB*SfqJNQ_9i9UHCf_hWzpB5t)>S(LPPjNBLL11X3A zRrkC+jhLHpc{uq~qsx8es>VA=c-2D0Un##4aa&@lp8L=&kMY9)nO`USQXSoC;uUDA zNn&C^Ohh_IJlT5QnpvcIs^CNA9JiF;r$wG$#hJZ60lG9^!ZEs`aql`nS{?XS&JjGQ zeJ?q_=$Il%&NPw{Rf;e|+9y*jt8)F*jm{vK=$Wk9DoRDZy;HH#ghcm&W{lOkBieoSD%d3g84EL2K;{o< zuyN=!(+Rb+oiZ4On^n97VJNqhdV;t6we#rd1i$ z*0O-jpdlJ^j8miK-qjzILTkf5ada+iRNL!I=m>BP8f+1cMaGCpU^HhnrrMifFD>Pb z1A6de^>=!5j}gV`;WPZ9Lh~+ z%E9q2>zT(qtOAfigWn#;{UWc#NCO(s(ou7?Us_+>WR*}%Z9NDi>Juie4jG@=bBn2h zl&MX*PiCG?LcflJ8^NQX%GJyj3<~hMU@EfaOw*7UCW)G(XnLW0mN%xno5=+P^;b_4 ze;&kQTt*WXT9=2rq$xt!&=oz4#6hVeRyswQiqXaZoiI0)8KG0T)KSUHE?rSEw7DP` zr`$0IkE#XR)5wpLILx*0f)hI+hEZk9I7JlErF^^ecf4p4)+RcIgwL7vEHE!DJzxQ( zL9*)hL%walv@ULD2T+8JNFv(XIEcF(R6^crf02PGL~4^+5R-iB1Y=qj=ef8G8=Ss% zm2=r{*{-^bp2V?!PDK)g8+jZkNco!^Gk}SbPwna5JWG66)~$kY=`J1A_+CLOnrtT{vU6BEw4EO+1t})tNni#U8Ba>+n63?Kune!wrL>Fw zAO@T`&M0K$Q-iq@G?aHfwzdq7g1>z)dOTjI`eCRfZ#YueyE3^)<*^Vo@xi;u4${$h;iikebcpo_eeb7K3_T~5U zhBB*cEmfHerePR%?Y+1t28VBWhwZt&Wr?$8w|IWSS5x(NX{Pt%XB|s(`xI}&D^MI; zGn;E_#%Z_^t}5n}xYjx)H5y7y=ZIip6dKylu1aF|Jc6ZREU&MkZLge9Wlbfow3kKC zLCC9}G11OQEJS`l4~VmlQXocA;eJuJ*~_$`D^^?(@E7e`=bR#`T~m5vA~zsZ1^9SZ z1p)m&0UT*p@A#3HzDFX;00#Mgtk_UuJMtp8gX#|Jmcp(AY!qQa+BHo+%aVE+O2+o- zl_&Pbx&sGda<8W1|5CcTeu2~2=G5u@Vgg7^nlRSbgE!Z#6JVnyQxv?r!6PoO5>%W` zEZ+K?UK+xsGwms}^OQCTz6m0x(lu9L2fGWw~NHldAP(nJujs%EM0~jdV^c${;D1I>y#c8@YE7ZyK|@wE&!M$-_=~MF~HN< z;K-zxPtUh>b${ix*I_5$4p4N*GZ1`m;ZT^Qe;A3K(z&Q|z#Sq5-#e&#Jxcv=qt za>P(qp$9~Di0$9IZcD`)ejj`G0?C&Ck&**;O&ZL2ErX1r^cNAqA@sw=(p&EYc(l2r z>F*uEMN8Er&mKdSX{=2Zf;A_xZ9Pa59MT-6NNvUiL}h6xXfI?GokA?dKx$kLr&47F zErjTIu^3#16Qf_Ptl#^{J{d8V!gUFr8h{?Z`0mbtqa~vWNMdv#OJi>>Li`JJ;dYqS z-7!yR#{|3*Do6P!3YZ#>H*yB4?<$TiJI{;Y3R$ao6w#D?WIU+QN;~0)$&ULm!iXc! ztHO0rSH8(X)RY81ei06faqE83H{w_%5r{NpDH<)13cMP# zXo|>OQwdXr@M2ZJNU6h*92E$bS(;V)i`aTb>VFo*ALtl>LeoY z7WCrzlIEU7CZ5RN4!m5LV60_LoSSNG;V(*gTiH)3wSgbt@F@^$qQaTvOGAJOEp^1$ zim+HK&5tgS47M7i^~!HVA3C_~(0x6+8s??H2$ESNPFZVpE?STk07XTJplARerK6l( zv+QjRlP~RV5e*%p;7B>>TKtRr|0?<*%HQYW1FfeKX)}cG(zzshJH?@-rSo&)=`i!i zQf64Qat#F`oqniOi9lL77vI5M$HSBbfHTRb9u-=$cgDad=6%8&BFDJgfzd$L z;9~SU=$g{#5Hwsl)W$olUCVeIM40t>is@%5f}La>_N(fe>dSg#;(@cJ;h=)eN;j}{ zT}U%5bSsFQXI%uY%KAjx1mE~O#jA@X3P%|Yur;p3;Px+$I|1sKsvF07Pa&W9Zj1X1 zs&xE9xmd4Y5m^==GQdv2IJ)J<*(btvl%+^&H)!e6SAnV^!w0UH{Q|SK!8_e3!WV9( z$}YJvH{LH|W6?VPAYP47-du?ExET18sg)J)7nO6U5Yo@9ZYbu3j=PU+-)Lo(?iXoH z_kOpG)Ii-mrn0qe`!x<@5t!aRj^Cp)4Fr*X2OuBE6Cpoi^dm z5*=a_S$7>Kh&KQb02V$t`_j31hNxD6)Hk5fYzZP4!d+#hwO)r^gKI!>T*Y5H{d$Et(1`q^^d?xR z!Z;tlo7IunRNf_HL)VjpFC1C3=vgDy0z_ z#4LjTL(5x%*`;16>cPesU8R>BrS-+BFHXCbF1I2O8*i1=Aa8AYee;-zLSWJ6 zkW&<{3r(IVK9UTAcS_WJ^0^clkoJ*K3*Tv7IcPLu5qLh<Oz2tE(71 z?7u?u>Q8dgAyEa9d(s2|GcF#54{@sHO88EI5I2fAX;=`$EA0uB#OHSeuX~X8o~f()J2d4c0K<2#!~w zj^>0Y&2?28dGNwit!8c9QVYVo5OPqhj!~QCmAS(3n#Kid!qZUrrM1xb_DbgOH|Bz& z644edyYQz=?_Hyj>Xa{H!i!iF<*`kq)mYt>JZg9-w4r@nhGb*4AURRnX|L5_waOPM{vM{%o zUU46dher$Y)+i^k;_-$jLNZ1rsEOUB zq@30a;hAXXIRRc0SidnUERey4eUkWHgIUP|nrKE!PZh`@65^ec}w2iW1y(>Fq7-r&sRQRQAhU z5SCLmi=Y={-om=Kxk%IeA=Rz5zH7I+{1g&TBp!{Vc24y&@CZQ zrU_bzx}pOZ+}NNVwyNvEu#f_nK|c`c`1uyTje5AGumK6sGqburlrp;Y79EjtFC8Vt zI%3VpwD3}g@Rptesb?dwoyA3vW@sw@e8YwS|Ol= z15hCqVuvZ4@R9&gs;6L?!D^JgN9jcDWJ0c#{Gyon3OObaqmi6O>CFISYb~^(zPXmX zgDh3dkx^}?()~h6PXMDeaaW*@4X`6X}#7^!e|Awz8u4J1{*tV`TMFsH#r`uLib zj^b|>@`9Q>(a>lYYea1*R6`+1>Ag$q>Z&~#$=Wrp(-Cv70xZtQF8xM&L`1>00m6_^ z{GuS$Ihvp>Vv*9f(M#{I*I1V1LD+%PWA}pM_=#vzrMbP$G6YS`ZF-G@^4dqDRnHqO zqjc}0PGR5y8aCAq6<;Di&BAwemy(HSos;zyV&dZ!{~}2MO)I63710xbDs`To2>Z!l zER7kwItp!~TrDRZR9C-480%bH5iGrM*G0!$d7#aWEP@rpT4D*`fB=K@Qfp7OJ&is4 z#Rk?xlGZ~3`rf6#2sPnqn>A_aX_(siECpd{vg_60jHz2^ zE;B(5A8Vx5Mh)*!dcUNVrz4@^=)MG4^v02RayeY6niY4%*nIuMy~{rd+K)+KzLOb&! z#bU2?lwYaWp?q@r0j1HW3_^ooKTBW0<{(s#mxAtgj zw3RY8Wvx<07e2n_dhY_hN|j88y56M}k*s^AS||Sm;9b9T6uNQp;x$5ApfqYmzW}_X z!P|nDlFR7zQvyurq~<}PK3az&ytJZ9wHMuy)PmqK1MKr>!9i(?(LR)SMJcE7W`JKN zQKXv(PZwPCj8%&zBO?vYu6UI66eMNXmFs)7$!mPT`q`V*vSG zKwcFZoN0XlMK@A<2yD2MrK1RZh%Ku&uB;SNNSZ9-aqn(;)WxG*!l}XA%oDH??Mgg` zZJmF6rSk^Zvz~t%a+-ds#ih5m>r#b`0a8;0Z->&u2i5`!%IboEp?eX3I7Oehbnn9X z5hB9?zpJuRFeN&>3(igny3}z+;vHpLz^gkFfs$!jNe5>$Ett{>9wK=V)M-WEy|B|D za|07rl}wa+1KP3RvV=57Is|Jh#a%5*A(Mwh(W-R6kYv;T2hq5rt`t4={$)Fg#&%xe zDC#XNN@!p+P`B+O35fBC<{SO3QihDU+gJ4}pPMjkH+z-uK$`-R`~$NE^DkXTt1I+% z537X+yrjNVwl2;NvOT6}lm3g1CEN|rPblY1dryq0-w{v)eUZ|+fE`k*)6%YDHUwV<&bChQH zNhT0$Qw6iqUlcnkIe^?DZ@_x3O414;~;7}WN<)Ri6r zR74mGYYl!@deP*Lh+G6c3hN9?bz-_%=M~k$?!_4P-K`4Dl$9wxjo^+nY}ACIMCC`g zJ{;#_>%R9=m7??lHgWMn*#@v~E)g1$Ur8jv8A|;=jY5wpoOqS{j6%Z#S51=Ss$(Zw zxL-PDxjuGXEtpxfJ@WkAvzyRGWOzU;;Fwu1X1_!)JaEPy8o?ni{nDr{?bY)u{a&s- zmJ-)8UmEfGh*uj|84bh2xK5e*X2VRN)%TczlQfuzfL!nl08sdiAUXi@W5uy@=TyuI z2m~%ACS&eYI?9#9Q1IS&et>E!5jnnf)awSSHpQbrz|fy$-f@4`2-2^>h-f2}B3JZU zg{e2eM~pVb3_?qEoe}VaQ$neaJD3Y zueo$xKxK~l(7-|W+gmtC;Rc#g&BF8wSJ#FkyAqoIiuH3_xxty*sI!vBD~+WHQi@mD zoNKV8N(@>AXN{ptY_`~y_zD3^h=fv={#b<^d`t)g%6hT+MxZ=#ez`Kg0M$5` zzG|KkQJfbo+@HK^TeLdasG&UA?RxcVexyK^A7|Tjiio9e0BXIDOIp80(+P`3h(Ym9 z!8x&%-VunirUH7O7_s#BMtZaBVBAF*O#nLaW(`cva+BCgK5ZR6%&YFid_X`7D=pw-@S37-}!qW)-0M9_b zz(A=GXm!Z`;->+*btHx&&z2a`S_&8X5} zgq|GHjBiaRdI-!Wh;V?;!Y7ozuwqM1)ElJYdX7|Hgbm;W;FRQ23M)!fPze`xafw^m zfEvWgk!RFVF+7M_=`Yev&JHbp2dd{PsO_~rW@gCHYxomaY(ID!r{JhdrLx_4WE+L+;JC!wkkRWBWdegPyJgw^_`nMFsD4BnrBzALPB6n`glHl>R@ zvfuF$xzcraj5O;?N5PzkM)~2+Z8Nj}jS-_Ls##F1c-kg9~}=--l7 z)lfj-L>?Mgfcc*97#xhn>mofwS3BHrxzkx5QDZIZz{y1-TRIn1Wle4!P~Hyqi!Xel z;~%XZe9&v@X~ZUxSZ%Px=KP$_73WS#j%uf0PRt_3RJR!qM;iJZy6*u)zdX7??h9_0}Yrvku< zr;2GLlMW|Xj%0b_iOsn4hGK#wekske)PPvM=?}Uf@}<>jZCoFXr~yy0!V^FkPK!Q4 z!6A~xb1Dn_jS_Gr%p;N*X-=!FJ*;)g z;?I^DR5DBF;#**Tu$5Z-M^2V;h88Xfxiv9HZrB$l0M|TC{1D%G_T?aMh3we6N-N@=9JCIyM{uF2y z-%^+Ok) zXiCl~B}sOK#yU==cb#WLNEyV|S_?uYf$xA#u)K==rEh@xu;+(0iq%b4p7mjw1^u*4 zP=KZD@+(mgPQnq;6*Yb3+XDqJxZ!>a>@`vK(z##-D=f=F*V70hLBISkhG!7%{=!jw z7EJ|lsbI=}(T7bAd{a|3#o|oZ5kx7>hrX-pV6VCvV7*=8h-{^E5p(nZz-3uu29y>6 zWnZ1Rl1RQZQk5G?VbbYospQAgP;dZ0nVRaVVZqu)RCbkL+=}NSCLPDtuEJIKD)99t z?p&0lcoxu}X^QLI(G!~=<`pac1yUo_PjY15U4`}1FU=K;D(h8uZGB1jI)wELuz^l@ zEFI+rob4xZQ_yFJ%xe0E+XZSPEAcJP@7-j^-Oj<`C)>B5bNaxGYLXSrBcYccF>1 zF57q$1a4`@aDayw$h|AfgW;74v$GbDl-9@u$iGnC;vMPImy>HE`90eB=*Qv^s&X`M7vApviBINw2Axg`7}lovI3->Y^~I*_O`=Tk|nm` zns3yO&I&MXK0ihQTwo=pN58JFGcG#`fKhk1{2L8~gY7bpQljQ<{v`a)e<3=APRaXh zw<49qhXX2JzuHGak@C|@zqG&3R@RJ?bU9|hmqVs}(0g%Zkz zf{)-=OZ{OzM_LdecbS0Yb-y6+#dI0trdZ8Dp?!}YkPaUigRG0}LS z>~t46Ym*Q zT}#5oS7L<(qy3;{S)e@^+!8Qw4UST@h%8t?x97lm&$2j#!#V-b#6ZQaDcp6Kb3}4k zg0$q*ULBCk4(UffAi0`ufZ&yvbsSWd!nYA)iH9&!WZUXW>L)yDRqh4^7=DA7UJVk- z#k~trhti4$iZRf`$Q8b70$nBsN}yppXV>-PQTbA;9;d=momo{_NR<@(T6B~gA@|6c zlo`u6XFvf5OA)9>eM}%-dcRO56i_M&H{H7=wCVArG~0lI6r)%Z4krgC#KgO9b6r@? z=8=$GX$@Yau2JN2^bW0~Y|>yi%1Dt%6Y7q3WrOOFtK;ys42GrfG?L5%ul7v;oM{2H zt{At#Nwu}GG7DvkJEu(M30ij@O(K z2}6yPx)9uCutE*x1-0hfn3#0hTehNnhb~#^FCy-vX%D@%@;-q?>G{TONAk$7vvid7 z@;df_dZx)?b+VL(WU#^QmG&lNWHLqtk0uuO4fv&-+i z*m87TGDpA1y%axJ-8tA|ZJ@q%b!}aZ2y#E)%%KGeakV_O=-?lvbJ3nr-xBVwZzHXH zs4GokIxIL4g|%jNS!!xGA#&6G!aD(0mxY0+HaY~5R@_Rn6(w$%iq}Q82AUFmuO&a4*nNqk zge~8AhNITG*Ip3JzqWLBjiSk|Xw#xN0sH`71jn-yG<|8PRR>d@6>&%sSNNqhZP5~B zj$t#2y;s%_NhQo-xaq?BuB!by9TQl46G{yFyIv%A1h~wlx76e?)3ic&i%uI~gJ{t8 z9c(AQ?OZ%cZhvrFy1i?)g6Bz4`QCfPhfB(dRbNnjff8bj?Sz6Nl=f_N1Gv1wWW?}uePM$r zfY^i6qmNg5j%Hr=gfPLh?!C|MOkVf~SAb^)Ojx)sv{HKEDsV-piQ!|z_Cu~fd(OD~ z#iM{rgkpxp*${)i(fXGis;>@p}eOiY?AvK>$!nt?Gz4#%Q<{ z1x(eC!lytbk4fI6ZFQ+gk9i!yw$^wTcaP8lM*--fgomZyh!@~A_S}B%+KbX^T70a= zJ6@=z%5${qw8K~#G`UvTU(Sqv7A2^4?^3HGcQ`9d;XLk2YaWOiIm2x@GM7H~D}&IE z6sy~AmUP9R3%_Wo&K`i($coB&UIQ)L#-LPvuu zRJ8M)X)#O6yiz1h)l%-9)LCB+fT4-2U=;16PDazh;ehF+YDloz@ms$U2GDsWAfsm4 z1cfI6U>AH#O4M{31An9y+Q$2oi_nJ+AEr}}a(kzuqwj{k z_4|Bn?1`ZVX((Nnb7CM*q3F_!hy;?CgrsVky2Y>kQ5HMxcnpb^bz4+Wz$#`8IwsV8 zaV!ND4JR%`i7FRq8Rf_Mb@)TK<8N_zz&?EmBt_v_GC>kY@ z7N$JNyDNZ^z1!F7(hvs6SJaW&$W@A?W?8SmgVS8o3oD+(q1ARmlUUzr9VPbQxO@>o zEM6Dx!=ralLwUt}tNP6plXp~0l$lERu4nYPxeuvp&Aw9H<_?Lg_b>lC8=u zcZSTyJU}s5q>G2xf*8EzE%j*;uUlSw$_&KqNzEz>C9aGAuY!dSk8t0YRtQjIC}=PT zRG6~5B1=#foDKzkZndSa+L_g~h>r64+OuI$$TdY1_2kXOwJrQcG5{@i)$^uEHJel! z-Z^UE+uQ0%C+JjwcSaQi;tD65*DO&Gie9C^2-ni536vnNH7Wpj2FX6BZPsPBwZ}OUEB{4A+JCDL|6v7ZuSm{H&3^2r^ zZp@zvdx5BYY4;zmG4PN$U#~9-H#Er&KDhF^x1n?{ClB(O+t2=9X`@5t=V1v%`Lk5< zlZ-2DpHhC3wd`G*S2PI}XMJ$R%+k5gFO`<->NRlZq!4(u+5q9zCYy+hG^ibmL8$Fg zG`(A!XAEk*EMkr8+`^R22!$U!2V?1%meO=_I9K<%k3z`~-U|FS&V{9CT0a;>L#09~ z(=STg8V4bt8*`x4OESVD2#APpcl-;6foiwkDb9leD?I@=R{*nm+^e5Wo~6)f6HXnD z#g%*wj$gRFWfJ_(@jsegd)r;P!k)R;nvsQQmHUl8zbm}7>PO#`L^M;7rngbPN-QXc zujPKhxBi7%vl@krk)W!)HTlsFi&P2k=7@V*N;4Z4sOXtQPa%g>JKWY0BQeYAOHZOH z_GYK%>k7u?uwoCQkXHet7RADYppntm;K3&8%tfFKP`cFZP=QatJ7|#8 zRduFM+F)v$q9Bf$JW>m9Or$q(sdFRNkFk{7UiGu7m!+A#mc?jEt-nZpDz6$9Q>~<8 zJf>?(XK`fMvf>$-1Zf4K$i@jz!>w#x-V{SW#`paTgV_Cx%X9bg`aaJuefRk_z7B8W z$7f-V^fvE4-`+oWFZ*EC(Z+d?py2EEz_|m>Dhqtf8+w05x+D|Y1 z2H#%ZJ`RQ(me2j?JbvgI6#lx`&yVi?^X+AL{aju?mf`DV`Ix?5=C^m3>N`fqTj5CW z{p&Ei?shNJ=lj>oe*a-k@5|?lD&U6}(Ys$-m<7JS?+;(^`;V8m&*}5!wHx03x_*2a zmiNBzKf1TBv^M|#@i~2sUtcdD(_5c8Eq>kCE^~Ta#<$n~=jVIbI=z3&ZNHYUm+n13 zY&U$qyp6l@<>S5Ez3)F+P!5G7eYm{l-P_@1e0|@&488w&eVcu|!^hY7-hCd%_qVb+ zeQ2Bbf%D79@bzw_ZZXK~>&piwasL5swtFwUSwF@%u&&SUW%-;f_S>+}viqOQ?(D#@C*0Tml)K->|Q=)MK8nKSNHNtz3b)h(SLPsU+f=0OGkSB8s9$roVVBhBXfFv zdHv}3FCVrgz4W>J+W+rw_y7Gr|L_0#_`g5?FFzzy07`oLoDQ412~3jeDr%ss{C@|! ze-9Mtb)?$keIOh{mI^^iAILKlM23G4gv(2lIPS_xviQ-!RnR6-$X5pW-xtB(1F129 zyXw8->C0lx2uZ8kd8v@x|Mz|Q9|LKJbqEGZ&msrma^&6R7vL);Htc^7H0j&m(hlE? z-Qn$vY|wtNN)9zYO^<>)0;#O~S5tnYW3EGh2+fD$e{Sx-XY??T84)@l-)U%_gY5&+ zdKLCj^P;M*a@;Ub%Ih9V#9^)Uny>co)8?R$==sDbsf14Pk81>9FE$1wQc`3_wf(0V z$Pq)W?`OsF|J?%r#~C@Wy3x`yWNCfM%`?goL2V!%jB@H;Xd5WF--~`6T3gdV$fDZV zLP>nArh%e2!~BS&LxIM{KP@&~EJFyYwvjSWt=K*zrFzvP_B@fmC_usenltr@Uq$StJDve+~{2l0{}5fG00zzqe*a zYLU!o2;1ovCdD4$HKFAQs(_^b@8bU7UyWw7avetWeX-ryI!jlL0)Vap-IBisvhQ?D zAX)Bmt#+cSv`R9NB88!fw_gvDvYlOw=6dhk`Drm9IH0uzt;%dm_8XPlXV}_sD_@W_{IJkH@ISF zgH=UinDosZZ>IVQ9z%ChO-&iLVvX=_6l?#AvqfwkSd=3wI$%IG1HGo2@FGZi^&jK# z@-|BeKlWd{uh)6^{_$0DZ||dwlF)&hU$#K{HIQ3Zuxu=eiq}>)`DZ{%Nh8&AmB@;p z_hg{dN!Voaovzv4PX^LyBsvTCQJ^XE_g?yQAa!9TZ%o$6S~mSOaud1(vEwaJ82r~6 z(U#OFSGz8-cKz3Z1SRZ6kPfOg<)3S02-GprpO$gc8l6#@uqOZ;8^4-9ZTd;z@dfsA z|F%XN=S=?eLP2Aiej3^sD_u%1P|s}xbwmQF!lAIVEjCV_hnt`lid@@_sByY!LGTOE z?f ze^Y?jJ|h~B4AG{G$m{3_HVmYQAn5}bpbk_({{F|GmTCk#EpP8md86i$e7KJ?P>`ws z>(FHXyNvj6GYW@WaT64Cu1MJ*A4oGov%Kn>>zfvkQT}a40OTUv@fZvCrmrR*)Z74% z6Hqn{6rXW+iLgQix;X##)55IcEa1gH*92RCetx$jmxT+1_L>ao$yXy3?m>zq=%ww5 zNY)4g=#OdWH!QYF1mZc)EY4T~5ci)K8^ZIQQmAoW@hUD|BK)Gz?HZ^#Vf)FaJy+UyMvWZc5sjXItnJT)c6$IqXEaD=6~ zyGef8^wU6qabZ-nZG*Ofq>%)?*d?ADk{Uk^(PF>DNF)f@5R7J^NZrFck>_a$A~F!W zL`zKrZ?35OKly4{io{r<&T-(H7TaaSwrIzUw7{zN-;Ri86cNXL#7-LSBWpygEfO_8 zUd!d5fgDV(~M+TP-GDT zoEq|e`-p;ST6Md#oz-)R=_DJ=#4MeKzz!I1wVB2#9guv1RlHgL)VSjQ%GVT&Z zoHg$oFMksE0&P=bfz`A|QS-nu!P~6q)&B9*7@q+AU-&$El3MQUD?EcDGE9lCLc>0i z?7NAGNH8SQk=VXQkimg%(^OKg?^^~^quqs>K~n|#x?x5J(jFt<2Dw?)WO>MGQ#C%5 zn4EW1nG4kO|1qoyE&@Cr(i0!D!2aZ42jUPd?&r!`z$*IJfg+)QCbGr(qiM0thCJyM zX|{%d-5Mc#48%OIgc%y5kqm@)M+BZVW(~gP@z5HGm)nsOacmVD9>@$74Ol8-5aVq- z8xbs)umG!h{nj8G*k`X>&Y7B>}&b-?%ReGA~SMV2OA?FX?STf5SoJ95k0+e zAmx4*P- zXqgd`i(dUiXtE{CRuzvI46GjdK!HBOKi`o2M7dv~7M&?BG{i?RDU{osd$$rp((Q{4 z%f@^Bv>y?2_FY5XpMlibR?iNCeQh(M5kU45_M_#24Bk&oL!?c{a%i|A4WxVog9Ok3 zvDNg`e0@Jlie1}cUtLG|^l@)**pOy)+e5L!GhO^g(;C5};8LM+ zF%j545T1~n=EBMtNg=j=W9daEA z(wZKWu1~{aXP^Kyg0D57G~aQSDTvvihi4&}jy4AMZBh8eX0sVfj0`Ns#+K*T+W zddA|Qz&+yM28y~aGMsn2<%T>{MFh@OWDin5kel9NG*Nkrhx@j(H7- z)<8%}u$nz(g_eS522zC3e?EHr8!k2j1%XW3k|0A1xFQ45eqJn+Afj!JoZA>=25a5$ zu9?w!QbCd-Q~zrF{O4N?2$Ydf+qNHCGg9lP?4fe{8r$G7t+vSbJ&Y&^FMC=wsB) z$)JceMD$zNAYeZ+17Sw&w&jBdJ)WO8;BPUwx(jO z>R8hnMNy_BJx9U6Z6GIvlmT5EwgOEv(hKkD=#CV-8zO%@n{JTJP5Pvp8h;wAGZx1j zwj1v3WoI_M&Jl22m?ao<+42& zSqHk!WbASMWJygwjog@$xDc6*NZUXPzRVu!5f&Kp{?nbEpQZt=n#KMVRHJD|OtlcA zSV!VRH4em?aHQEtC8cd34Jek`myooZ2BM}s(7xmHRiK3MZ;MUEDS}-c@us%3hQCC# zT^$O(rtPOmusr+784cla_R*O$7KQtXI$zuAKQoc%KuIfh-*#w&&*ti(3El9n<)=wR zF=Kr+(O=VI({HCbjt)~v>0|kcK|F$79VTkD}X?3UV&(XR@Dm5|nI?4gs zewtK7QcD820in6hNG?h)7$36n@@GmT8i~kt14t(`;txVt5h;@JNYfg{xtsh{xX5j% zpAL9rz!ef2N@MF!qg`;G&ZP7k2$dP=hEGd@9xkc@>$eU>{e*lmYMh_jsAhKmcZ=L_GF772Wps$?or!@ zbjl>ifXBy%0s`R@oudg^gpUSo?(J(784NfrHh9xQ;je8VmpO<;(gpcx86@%=G&$SuBk;^<O7R-Be~ z+Yvd@p!V>yFlZ^Vm=Poc%@|nr7Qu-uwhjc%84`(BpW*&W)r){(+_~QBg+#N zjJCx-LqpT83-O>K%g!1_`k&;FhHu;3f2Ly-h$b=KhS1N9E+D?Xn;+LuVbABkpokN# zAYt18h+7Am^=U>@F(AlI`-rX|cCWyX=3v`EluMYOabjE=0`{yC5&Pwco~g^;HX~}{ zwtx(xp_`S(7Camj#*TCg+iu9~5phlZh&D%C5P^{!8wE_rxp5#Gfebr#a9V9&?KZ>^ z5G+QQrRl3NzG3D=2H{vET=tkj`fBKOCyy+RJZ2->w-kLd5Px6oRmo_BD2Ix8^cWWLoha)zqQY(e{00hBI07h49U9&>1L@CeuYis9UBg++KohT0hNHor zH~q9g^8wIc;##^{W~4HD5^IxoZ0XcMFv71zc$%`;(D2hH<|x`?7F)l!p}Veb>Z zK>Rers=Ap|Lr!arqI*r!509k*dY(1X&6s$U^WkZrFsuU|*r;+Eh`f8#8l4#H9HV@G zy)~45^3$R>AgoofZQI$vKH{Sc*HVWxBe)90RX6sr0W+G#W}p{?Od8Qc+fPG;Ji?Bs z`ZZ{=t~0uDbpX!2oLf@S{IqNAV{NQ!6(M8%&?9G-Wm=q)S-j6 z5K}nwQfZh`oXR>?@e8%urV2Yr@Cz9&qHZL#8w7B$pE;C?AdaG}{oD|ZTssnzY4%Kt zBn>)R3uYgNk4xlqQfO(ov$=ATgbvM1g4{Qx5DWoePbYD9@V*V7{}%I8S_4uDgC0lR%Z~@`l?nw2vv*6p;NGlwC)lEWEp=6^CWrKP?Lq{-Z40s+N;(&$?X`t({ zXh9&u?OHy+fe1VB4iC$}0bApz-PGt1Y83y-@@)TVs!&pP8vNL>;64olX&BA)yf12Y z=LY(smzuQCby9YX^JeGYeJ(A5x(K=H_#E8u0Mg+LXR}eNPm8(O$*F4&J89U z9Gu9)UUfup{eTg+&nOn9BT(HXj%vg98#=DNU~{>Z2xI`&)%ZQ-ouX6Snxe$kf(l7If#RTXk^-Lzq2#Y)xCdH`$5ZZSR)R8 zVAbwxT@fAu+t*1asbZa?ysi*omj$a)9>W!g;$i#Mvi;9AsD(qEeG+&>A~Ym{UPI z*aeq;-vDG1hPwVaChH!F{I*~I?rZi-^5ek8xqENl*>Sl%(@~61Rh1>^nT?4i39`0g{B2}B9B&e0iHiK=<~ zrDilr`fu-bz!ShsdK1D?sMwk{`YqR7?nd4)@Q!bfT3`K2kVztOTWK&esS3A&X6&-uuef9w8kX3v&J|fZu(K&Z2n$Q5OOBek_ z$u?$9%|Oc6zS)mOvDA2hsbeq&>eqKwlzqNQYy! zChcont%%92P$P<$>@1Q zG)QW0$dBnAZsFy9*nhl`sb5~^_xIPAWqLn+9(Hf<%lKaY^Kgr)T@8O3-uhl?u&Vyd z2sRZrK!=8d)FpIay6iQ>?xbA;Tzg|Q&{c$gsOlsbfFO~?Vs?8NkIL(izA3X^DjtBY zM-KBY`rFqpC!8gJ)#tb@w_C;TCMpR0syu&L)=jye<&a!2h*si^Rn#IGNIPFKrdv(Q zQ6Vm_{|;DZaL3fFk%8dx2)O^XyYUX$6m`O`8guCml8O_AkG}pi2^N0=RxZ~S?pG0! zbQ3+{tGAkOD-(~Xa3ke1tQY}4juk}&X#D@SD3h9op-;qskY2WsPp#lb^;9dQyuxQRHqrYq;xi%#PVa!%vIX zv7#@(WJywu6#wH-%Ro4upc)GeyoQ%HR|xF_pe7kgjX>~|8Cf20t>*8khEn}xpd&uD z7%<)k4QI_yJ1SZu z4a@i0KxF;2$0_NzoHaiU-cMqp-YQYrerIQ(o7W$rN9|zLR!hesR4l|yb_Tl3|=^FU_^d@cW znnu*KfxKzJV`r9^4Oguh9sBc61HoCV(XD$jBktQl`@oLYlr^3V6mEt!M;oj`X+9a~ zBIV|IBbTg^c6>IFWK^O>BW`SXMJzUYX2*S7&33~-QiT{v*8yrC8&XjNDR6M6-+>NY8eS0t#d|d__pFK= z?rZ~DXtyl<@S#Q^_;Ewp&q^FxP!?OCb^BM#KnMPtvi|W{V+;0dMtoR+{!FX}^6_*a z&$WqNSOYixv@7rs76Tc@nkLI1GlI^)LB#Jd2bj!lpOL-+-Vs>sejLUc$j9T1kVRGu zvz8B>X2X4?69Ef9?S~y=UCRxbmWFa$9FG=aA=}p|18GLuiy_8T6n-DqCB=*H--gNYNkHN5@S z=$5|!S!4@7wtYitLJ9fkyD4kJk2MXH_S24qcgJd~VW6NrNopvuYX3IuBT~#lKCFt> z&!^#H)1wvn*+paw4r9X+QK`{5W-WImI#VOa`M8e^q;>?KkL_tMZC`8yF$JW2zSnoH zk(zxnqm$;riL$R&YeT?pMv6W-QLL&sLpA+0idEWexNxk>ng%-4_3K2)y}j8mkVckD zq=wy?*L(9ok#+Xv5l^^pBOkR5bUDz`gecfGWZ9V!PNhb&0`j>A6Zx=@G7!1?E0mtb z=xuwxwhqKs7Gspqd_xa%9cYt(#*?20QBC1R+gFFR>8pX(0emB!AJ5x6HTh}UeQZV) zA#H%R87&H9++jFOZog_XBNv)$a_|7mZ3Dsm5DDbJs|&sTrv=SIz5t(c0@vMs9|bu^ zlWjMlpU$8yO*1;-AE=8=yK!t-BQqjdisJ{SOTVINM*4=lg_2~o45W@Nh(N1{)Budy zJ|hxXl4FgG{%}0kun!&&t%0DTdn^Q$frf%+L?>L=jKOg9b`5R%RlNdRh^a79jT%*^ z$DfvzI2J>2NwUc8Egxx`N<`Y2s6OCGo4*>PvynP@ceqmaywvEiKK!(>e9Z~?93l>b zefx~UJKl9Xc=RC<5VsEm;{^_Pz=zR?YeC6T`d>qT;?He+D2oXO@jhLp&4gPVl0V_l^%22V*Z3whz=^zaZ zu%4X@u7;lljQuS6N-m_V@9D`hy5ZO8LO_56K%=`+U!2idiph?4l3hd@-_Dn zu=knV>CcSxvVm814$q_+Yq*eIAf}+_@h1q7*+ATmG@+t^TqA%-4GigNhJYO5m?blS zXOTWs)AV-N+(%dx!+7BVwazG~|9WK!HOz~@637Vne?SJyq(7Q#C*FLhmO^bcKUB$EPVfq?B zpC>cYINC)giWOT$D*9|7foS#`)lfuPX>}j z5-`AHuaZ!IGSF#6jXm73hH3}{&jvz+?TOcr_HB4YtkK2Os1TJvr(v-JWZHy3di-ey zqN7Rx1rDLFDIY!=NJVVujV1VQctsM`4of_t2$;1jb_T-j??u{f-HMXN<4-eCR2dFP z4629~b;u_JT_WlS#Ll3+VIP^%WtOai)+n{L4Rlq5=5?x4Tf>8V^3!hPNR^QYf~b4@ zD-wb=|85O`%##|@>Enz52bSn(lT?8}Yk2!ZgFWmhX+$0T*szZ>(3#{pVW#C&L-Km^ z(-6L){Z7N_c&KQvJ`R*NJ#r33K9;8~xrl)%md4csR^}x#okqCka8%7k(civCn&L;Q z*UP@g&Z@D!crqgfWfAMRX|7lFMV<__&GGDUAO<{FkG4wv6e znxgN2ziW%$JOR~gr9FYk{ke!d_SPWqs&KhH&ZI)M$i)|o+oTDDc3H-cejkH4m zkbsY*ehs0Y*vM0~J76COYibxQk3Y@Dn3U#>z~y$V6lNKqQ9be5bREQuA(mwI-6qFrG8t zG!T@AU{oP3N=Q54579blEA=kGhBZhSPsih@hhvGZv3_4M^uS67>IzH7CrQd-eHZA>mLJMywvF&Yt&WYvmXb#>`5OiyOYzUYEAuLyl=%qOa8D@r3Tn$|O3o|11J0s*5Z zCUE8yOvEaF8!99rc}>NSMv_V6S&n(G-uR`EluYqbg6ZH9PG7 z=|I+5j^vIk-$(lBJE~cc1j&rFjPyc1|Ih^P+Uy55#1#fv5SRor2Q02) zM!%&rsAjDKPRj55r}<6%4&l#)}$a$yUKk^sRJ_ORQNc?=KM@Wo!ZG(*3 z(}A|gs689VE~hi_G%jF2EOjfzUur}nq_#@=kgn=dQ-^#qBPb1xdfW>Qhk1Y%7| zjC<%WaO_R~OOCMnWBI_6D3ZJU%xU`09eTbkmJ`zS5wQM0bMxpCySuaO?4G)tyNO@m$8 z=79oYWi5F<(BuI<-~Ra#sUbXJ2D%>lu%=D_utw-~BouC%;`=Eivdus3)bBYIV&^6huGj ztTxJssb)q>VUQFP7(I|EhB#L4gt$s>Mj^Ojpm-gfhgHlk<-<|l$PY?Z!-A~_T;Z8l zZv@KH2UjH1@abj269Y)_`R@{I#1xR?VBuAf^!;iEim#=6{<~JI>Zemb zOObjHZq1=ZG1>1JIAIuruB#cGA${~Q34>QP#l=C&X;);^yL%4uUR&Zb;w%`FZYJSSTWE|vyj9&vRc;Y zB!J*fig9#2J0um^k@nZYGyfOG(^ot0Q8EY55$l}t8I5|4Gr&RE-0@)HP8B#>QbfMp^Qw zRPXJFgeDC?&~&cxgC27ivf%kKDiar9h=jOUF6x>U&r!73_Bu!3GfIUW%NOO0JfxeU zVzHkL#0=EK%{-^ZIPuAhSc;#|_)8e96+8RMK*HG#MkP-Maa0_q4aB2rL}OX5HHLRj22%8m-axz)DlY$L19^|YVLFh}ip&4W zK-y}k5bgt%p{AXE6Y=v*!t$xP{QsB{yWEo+^o7{;zNVi2IFL`zR~RscwY)%L`%lXr z(#Xd1qFqo^^?NcSevE*17lH~keA*`iT{T*%M5Hj>evE;D^ z?ek0%uWwAc*ti1U1-+`<02HdeT~d0VtgkxO^$pu5!*u$k%8z#T$D7G{u`o^45R}g z=pVs!S_TT^RHNoh&xVBZ_BBe)e>}(n$LkgJqivuQ4ou3LRYbVQ&u>N^B;+-JJNcr*3AI*WtrY%Rp`;h&@4x zv~By0q@uJ+6%QbO$sacj6h%);(_CR{igk}a&5V=~m6R}sZZ%F`&jvar?nkGcY7pa3 z1|oo=>L*KfEj6vtHfr9J8Qoj}^mwrQYXG{B1F48z?&3bmN;Qz-$AKjK@s+`YM?9$E zWj`6{NFvGy6Smh_?>-r5TNmQVK-;K!j{|9EfannzhK3wl?xXP67_V{{6N--8pQCVc zq@aw&JC?bZhKnsl--Br6#0wg}dixPcr)IgHz*y1XYDA_V7u!ImPJ>OZMyRi%cl2za zGjjh3G&{&Ej{UKNVXmPHKmN4z9*A)eY3%i)wqI;Vw~)DYs4mZQ%!&EaiGoItjB?71YhQ>YMLw$Y7kNA+$>4v8=mn>syLz{aF*+i z!V>D26^s2_EFZmQR6LdWk*bTz6Ee%Wv!`L1j?kwSGdd1uwA7|3&h?5@JIE_N8cHwfRe{D@&u#eJmQ;A!p<`qvGaKnv}}mnSsNTDp8ju{UCn zEoH=^v5$`AZcT{!CYh+37?O71bvz)M@!8g1U3dy!=;;C;)AX&8P(9F-CVh*jx~@@D zQSjvny^pTfx#EUA41~_Ej;>mdnvr=4`1Qlj5eb_rzS_aB7}#4JCIAfs(a&U21Ls3W z1yH+Uv2B^))#H>HBAk2=el6}>s}_I7KpMt3_=@j-f7S@9UgPj0I<85M4-b{m^l9Um zN7sp}M$KYB83^C#qGD^+D{|T=Gtv{`c>~d4QWb0T=Zv^guwd@tYu`g2B33&0JKjXG=7Pa`q6&}ER4G|mY8Y*^T)QPpT$qqt@q4piRv=eDo5jV<=% zt8G&melid^9IS?Dog#D7S0hzSWzC|Nx}xa&_|wv-y=|eLJsF5v z5oF77zE$aGKN)D7?(wsMHnGK?3vG=_do-7Rqk1 zr|xQKXO9DEi_HVjU>X{V65CIII(~HFarU%!ri6g#wD$rY04AGSD`b&y#_+ z`O`ibXqy)6<3JayPrGjW=hvuHsn-*UFWB5LP}*X9 z_*@)s_9<-x!5sI1Rc9$g1t#KgjY5T?62js7>@BG%`#c*+8qiI|ArCFVXl6vIHf|16 zmATZzj1sWVJk$1R_(`)jfBp=F0v9JxfR{_@2H;^6*4rBeZyBvg9R`55PL!NitTH3A)-RFkouLM zSCy{+cfPh-6!Ku|=~YT@wkO9i1f=z%`#ju;mTgb7XjBuJLumj%MJ@`zWRQ8|zKp+d{~5!%y2>VSk*F)&p(~XoU(n%-7}( zsg5X1BcLrn_MU7%B2kE&j|$N^e$LzW$Y0tJ`U;%yaiF2Q{S{di;ygngR?E3cCIo)w z46xb@8v=hnsza*Qqa%<+0z#@->?J5uNzBPWbodljXmN0HC0oW@u3{jSLiS|%?)N(6 z3|hh3jYtq7l&TF0vyjmI+oWu@mF@c;KTEl`##Z(a?2F4@FqHBkyWOjv@d4c!W2A<2 zd^izY#^(AiALgqmO6wVGjyt{;YjmD9tuD02?gh=D#=5YwLA_LdDh5)ZC*n)V@h)2C zK2lsgjrwb|dQ`3fy5Z~P^=<55 z#?Ox0^v4b$z9L5A`kak~k@0uoHzsueHc;^uR|zB)7eP%P$Q-3;6}BsuFTkhFuc}<{ zZ-raOS0f9Unl`k!L1D(=>eZvm7koN+#BOKr(EXTnAim^^R}hLXP%+R%%MbVHKaR$w1o(I!^}DU_X-@)=H@1i#`st7VNh8i#-mc zVna1huNLf!m|ewJdsu7(MRkHpwW4HA_xQ<-wn6kC2U0_VVLYouyLoF=2c8T>X;4#9 zZ;Vvb_BApil9iabXbhO1+Xq@Sq;$75l<57{+>(z!O?ga=wL&y6P`}$}6hOQuiN7F} zRSn$p$&4J387z|EUrmekaUkWf<;<*vF(^D^#Y^&JAO!dgsPV^vJd(&FAnYBCO$}=N zaUj(Q6n3)bY%0f^uHVBzYl{^X7Dx|Kx2p)Yo(y!cldxCyYHNf!o(!ah#7XsVR0)PuO{~+s#KL!W`R#T_1m%frS1bkw72PlBOAXhBWVc zfR7qV^^+NG!yi8zXu*Ppup5Qj4L|LY6RW80q;xf9*2ftIf9%$W96U%ZDsunFfq-=R zCTjT&81^*^AI}C_m>-kl6M)ymkpKN;2Rm{DAVOi0xYzL4A7_N!y$B zSw&&{RmXIJ@2#fpGKj6l*gvp zBXvY~(+;1ZMlk5fK-&O>&jvc7033Jhvuh%^Cj)ImB0d@D#{WXsx!q?V;^!6eJ=LQLiGwwx;2%ZH6>H{xkz! zu}0z$2-i@N0Xz;ANaH32^d|$QXM1L!h-BArv28B?KAF)at^earJW)d%el`$*4T(hz zyP6i_lYzF$gg*`>hTMikd>km{=uJu=PX^j1f&DO0>e>ifEGtRHNp3eE+6;8_Jnkn9 zz$#AUA2XU&*yllBagcU5%t-OqP{Jdq@BXs=&~7hBKmN4Twe{OUk+>e#RN9{n#EfZA zctT{m{i;Q^Jj=QP^&qw>m~Q|4auKoU&JEz^uHi&J{xoGo%_zkm#&undf#Typr_(GI zg&lX`C`NDpX_r9`8v7e{Emex`14RVEzv&-q+cnI{K^?D{q`+Ujs?_#;EhsyhD&+mN z+s-w@3J;4NlS%qzD0ZT@+fWrmXg^#!l0Gs?H7?${%a!3dD^9(Zs;>qwz~AN% zLTZD^95w7J>PK@(j7lu0Wp&Vl8FxmGXNtDd%sai}^Dn0Z4_^e-d%B*IJyVC+A9^Ee zzS?iWtk@;M`0&rW&uCr)EhXDoGxD^rXd;Lie}{h@1k)M*=!%AH11vokMw-K#E$~-E zMZ-=MbReWG`CMykFfoKng^wz2?*57bf_~9inUFBt`qfezL-~OEA{|^+WHHd|I6z0~ z8on&kpicVs{{FImS2W$d!brVU>?K5+K=aAgVEyL3W?Qi5#yPrg{o?XXx%8iJZy)^& zfX4gFg0}newoKDYu;}~gO%3n!t75QWpjLWAr@rrS?^`si0SOhA&NW|8i4@I)z0AGV zhKNkfM7>5Np^#TGqlau;%_mabYtKb9v0)(ohm(sJM3UlT&3<~E5pnKKP%G5l$6DJq zQRQa?rP-p0q!8G$*d+PQv0k0|aYnjzoQlaA5r3a{6_MNHK#DChk#APaOHX5C`{y^% zHj?F&8KE?w#qkM+0Bo8OVm$X*q@5~NlqWOVMzVYy$b}334XvqcUge_uI1nRT=pTYc zfHLC1?Q4`e(%6xU#f_K~Jsd8m{97rJ{VU|L>zIMZX6b{KYgw(@~!fBKL2_acB9czT}9|ww*5ec&( zk~j}+k0Cj-Lupf^k`Kt3w?}MRzSIz?7_wP85$o8zA=A?qtPfWWTM^0j8KGHm3KByw zSOH1c9$^TAVl zSk5+5)lUOpfYN1lyJnFW41JY$9?A<6c~y4w`T>OUGJFn)mvJ86UY2=$d-+)2P4%Py z{Ca(_*h?UT*l;9}8o?;)ExP=8Uf=0xt`Zd>rdrU*HA+p)v%+9!sdUe4Hy7>z4>LoMba^N`e3}BNGkf0r0Tg4jvS&i5R*ip**ud+t)5vvgz zsv`pU_8BE*-y~=BWJbE|0HAc0JxonA;y`!if=NMOswlTU&M0}Uw#GT24OV#DXOsV>oII(HQX?oep>pGv`nB;YS@~OGfF55Aio!hXj3&Twt=9> zrkxjeVyd$Jrx|D)V&n0rt%wb=E<>FQ$n5qR8R$sN414=JPHR+rlo}Fc41Q7jgD`UYPcu;Lm`||s`ZW#Lh=Is+>juN4F&}7}(G4_8 zrlZ-?aMh+5rJ^+*d#H42)8-ki1KCH{Q~F0W{m6%}whlzW7W9LfbWJVtaUjL0Bc(4= zJ-Q<`ZJ#FtZDVUb8A#2as46_;dDwnu(~s6Xpw)!YsAIbQ^hZ8~X*s_su??X7=Fh)f z7wKV*g4h6QQj6Ye!PoR59|wZ>SJDFb1tuZyHv>c|h8p3xfx>>`Xv*7O_HbVGe4D*xtHRQDX1xYBYimhTMSS0)%pkr+VW*-%G zwiUpFoAYfE-jIqa9Kd+8847nKO=C3|df397)6~`EYk)9lkiOfR(+04UGR@VG72H&u ze%&U7qkweARnKObIr5AwHPp!D&E-3rTXr;gMoRP1MY6;fi4k*8F33J+#X!hddpy=} zotFGGx(IAyp%DZ)H3KQBAf9^?Q?SE89ymKuA<*)x;{2a}s}iABcXdLu;#ni$!=s&u zPjuQ%3?3_f+GHFcqMy&7q()WZe5BLH{=8dVm{#~l*7Rs1wWNG^ORXk9pw#NK$sPq&NqxY(v5VpF$3rX9e&!eW4kLLBtr zfqsvw(iOp|Fpp?O^iP-7o#6&vuXMzsK^wV-^MCG@k3FsW{JBOj{wWX+L}Pk*rW&Cx zK#||6`kjBP>L)wjA3Y%R_vd%X!Pwba)Z0!qy%DWqfKm6^-vixlJ^;4%g|u$@K03QK za754|Z!6uC^EHt)h(B6Sry9N=8Li)WAmy(e7~+rb$cl|*7!zktZb21=DB9qXMQy(O z8f}03rDkqgSM9es2ki0Uj$9jmRs0$N-*BS69>;aD;r#V`cq+Ihwf`!<8u>A*yg#4+ z=yeo|2v5kzx$DXY;xI(knMT`vjS`LANLadA&~0nF5EmGj-ZB4Xjc*TYu=+f;fZ52R zx!7(akp4x-PEEtqC$gGu$r-wKt_W*lF||lQ^wcvW zZSiPOm=>AlQ%xQ60%hun>>}`Dv0w)#7t3rHFr&Iw#E{g%+|f7uwe{`aeji;mE+|%; zhpuJ_@xnhL4by5#+o|G)v@n#bG-kg~zp5X14uwB;4JW7kt7)WN_qh-61Ff!%oAeN` zRGkLi2S3@7-VyurS%*b?yoRDrcS2F-#;fx0q=py*V62qACeSjFqygyr`=@!b;}PXX zApuZhslx0`8|*}vYwfP5ex%zcG@^xGr9BRF5?{bY8)S86@-C|RW1thoIoA+S!Fq@U z+^#ez)+6GMjbMag-F%^}S@HR!hk!`6bn@avH~N__UulvScTIPF)dskD>YdiCaP-tQ zYS_MkMei%l8ffqD6c7+iVs#1H*Lr9@@dp9&PvZi#^rE&6^o6Qap^AvS?(!> z3wK6sq4TU+zf`1I7#eho2I$3=@)KkItogTeN9e#I}8Lg6fwTt^jss(e>`i? zK(-a3pTC({OuDJ}8&cj6dptvrUIil+r$2t_B2Svp_ls?k1atDIjQ|TCl<)RC?JOU(=JekNAFAgHd%s2^8hCKq9q6iz zRU4AX{DMtK-C+&bdqUp=ETWp1Q1{AD|NHzoetx~bXwAO83?JkEWqJMl^54GpuN|h= zTg_GSaTvZnKKJysdPB^+&zINFkL6{Yy4P1^&ClVp{HTzcfH<~)T-oc!M+{lk0=XrRrwYdqcXtIbo<=N< zHb$S{F+j3ymrG>2h+_=p?J-m=?ohZwlAJZ&qGKg0lwRZ^s36AY75bHcio}yNGrTZz3H^ z!Fq}^s_>-zeY48H6L0%kLlS`Irlx_Gv#*1e30xsgf{!L0s&cZZ0xsn_iGe(0GHbbU zno;^FS<=m^%rx&+Emu8a#UJ{5&F5<^7R-Gy@5U+Xwoc z3MpPM{YvF|1*!F`L5)~1Wi}WzK8+QNjkeBcqJx83G05;I!U#>f<>F?mh(;3m`Cvaa z5}J{+N?_s$3M>`Pad+bH1n%}Sh#zA|$^%&=+#KzLL0jXzs4Ud1QQSs^L_boGQYM8K zvrOhZme(U)@p@S*Rb|WrTs!|K^lK!&+A#M2y0*u0N_IRxEG|9HO}g(C=CJi6pxN1 z0(`@8VYTW*)}hi_5!I?i!eqvZZ@t*~SM7iZ$YOJkr)W{J*jKi|5_CN1b&UiSDDl@0 zHh~sR%|HMLG!XEprEh+kfM0<;niwRyD_pEZ3$`Nh8iD%#(5~J8NoT`w6hM(JJaAP{tQiQfn+DMjZAc2C{nKM0pI{Oy z9!MwTWK!uDuFnxYHQFPSL`!G0qGX?Bo!XSd|AbSO8@%_shQSq*#$82NqZu)cZnhs} zRC19R&H|DNE-EfIC;{qD0=>V_T54t!7d!e&6?e8|xCf+FK%ju>Ir8B>Y9q5ZJ<Oy0bead-XOVq3eA#r-Ua9)MuHajaIRbek-Zzq^>+7f6}bYeYU->zqQ?mZ<576 z=>vijsvxTV*6@!+$2w6o*-$F-WUCwTc-bijs!%#9X#5sUIw==y{FIqW$K2{_ilOX=Kif_Fg}K2#&48e+)$P4Ab*)6?xu?K*0a!)NYeH@ zt*>p|OHT>8;F{e76*Ky!)`qS>j=)Lh@pwOP!Fz+IXd*IMsIUy(BlrGJKB8N!LaxCQ zWJE$_xU11K&do%fyy6Bhkkm{Z$s{uQ$VIYdq3x^@K(V5Rq=5B1K|3QRzX@89*l+^U z1;z>u#Xsg7wbbk*{V;z}PkM#NFbwjDfU@UR5^-1Tqu;u>h1G$IiS*pxS!{M%Qj68A zqo$AK{+e$=LY^>w-IB{F!X>J55I2cYDpIZfO_851$6;~q-*=(uk6+!38&72O`L+A( zJ}TDf{qy5>>0SYXvpa!zw{a;P%^vskB^GML=s+UA%wQwaA+Z-{))t^}Dh8i-2!utdS<5Yrvbdu2KB80OMT%le&3L>h5Pi!w|^O zz5xL_`5!0!2<{pXPZfr5++jHK#c}NZ`O~_WAxk88Y84fr6a!61j4`qD+H8R(h9Xic zN%(~STk+M>L}2#&lLdreK{B2P<&JlF%@Lueq-{eC<=%2lqkQq8!17L)3PfVOuV%yw z2P{CSYIZd-064@2#qTekO-_FVpH+Y;LDYOTTBgdzBhO+x z8$b?)gnkSsYiU4DA4yGADR~bjy9QjM(hF@Zv73`(t`%#cOi6I?At_mQ()oQ<-^#z5;;TQu#D%F&L z)a!2Qv_B2^T;?3^f*v}zKSuBNkvW>*Ah?1WyKZMIzI9g)J{b?2c z(clQ-rs5h=75km27RSW{ALuLbo(kvuX@iAd!AtR)wLbmTtFvaP1rBH#?RZZC{n@1ua4 z=xrrzi_BKVVhcVHHXRb*3?qhOgzuNw8w#_gZVL?o4&%|_IV;doot8Dbq8Mw7v?}7G z!*3-}!KBM1$Le-KH9xG1&1m2|``PYWrs;wmo&C+^! zzIV2twn?RFKY@ySr2isXDBHVjrR*nbR)I&}PoaA|AODf}d%>mcqa#?;{li>UNY1ZW z11-$}`6R485|5{(A~}xCn=08)5RpJjs0AHilb$P7niy96(hVsuC&_@G_5Ibd*kTB{ zd#~E9BJ!VbkV&8Zhz4e7+g4ufD>z`yRV&f^oqD85e-cFe)V0&vSU}@3Z74_HDqh-2 zjdi*l67T0-L$P5zyTC`LKYguu*Cts9TUeLL+DIVP2}Hhbb$zM|F%wQqhj7n-NZ;yF zf(rC~#1@USimzq|Qqa#8t@`B7M%9`{{@|LE__X30N!>`fU3PSTjx6>~E$W5~4jNf; zLn7Ge{Gp3~U$tpR?=Zh8G)ZqNN@KBjwfCrEYDtJ8BlQF#gYbJ51Jn#O28jUlb)V7d ztP@hnEHxTyf>8|>k6}ijo^%d*b=B!6@+O1tF20aGE;6)1n#z_mipr^#`TAyuFNZ)Bly{Hj5aseqlq5dWHy z`zRs5xCYX`=E)XS|4v2AKx&%sCqaxTjJx+$H-g>{JEs?*x`U5)780YwA8Sppazti1xY^-q^h5=+c8m6=xTblct|4A>&QJj z_fbYba#5a8onVGg@zvyeD8GNT>;(fvNv>)wB%iA;HVt;~Geq4z7ug)K%^%bJ`FVIz zQU7{*e;-g|=ELX9zWeOny0@>7*RP5gY4P|h6Q@bon!L6?BJv$&y-_owLS2vWh`U~) zcXGQLi2gX|848`3MQTz(N7KR*ZXrl%(Wf3Zk3rdEamsdyTUYFE%BS_B&?_HRkFwUde5%z*MY}tSNQVp*f=$9&gIAR*Cz0TNQWsR93syU@1U9(2N1tK6b zD18fOjO4d*?&T0XN}gs)2kTm zO(_5TNBJ=1|4%<#V;%Sk%$X9^fpI{^Kz58Y_IlA$ch=x+HOka}&uWVbClvz$=TcZh z`TMJ^u`TzftoA#VKMiO6ApnB=hFo!NRH#k}BtW4xYa|fX0$n_~Yn{zkJNK4f*62Wr=b9=m zHcc^aHjs^1#1rWak^nNpfRNC!uSnUWSU(bs(db`~$S#6$tn2Z%VSy?xw&QO_worAy zllvcoIU^p147o10mt!8(0(2Dchbx|J&fo(bJlBw32&9Hcz;hH9ppHp}SO?vipy?ME zcTh2Q12YZq5nc8JDoMqYotqT_nK(*-mOG(0T!d<%kV(I`;`A#ya=k}C`gzyT53izc zg*-we6-Pu0n`>Sb`5ygKl7K=@{}y+HRWrlB9@Mr9j8Tc)UB zLNwBcA=8LEQioLQ9PtZpjmJl{W3w}g8q)lc{e$&s7*V-UUbSKUh#)7Hi-jEuApVwq z;`0lg*Rkhif-`MwU-$l~o|~K+PTSN+PN$pg(&SLdRT@OmW%2p3mrcKj0gasCO**8w z>lSWpt1jEAKrC@vq~}A)g4hN^L_{mRH3ot4zHerOC8!oo@)tEEyitS#ir;u^DMru4 zY+HQ4b&1YEZn#WUYZ8L+d7DRL+58#d^Q0nb*i^>QR4bZk=fCL#o~B8Xjfl8W8G)}; zXtU1JQwT=preWo;Vic7ld8XApA zj2-d$Gva(;fB+vIVOGN=m|=zwsI66Y1y~sTwy{K;=RE}6QM)gSAOwk%Ha9!b~wTO}nyX!|${GmbqbL{VW{QyB~;bHUUC)1tx>jIxQ2>BZ2c&v(Ie75k6mcnX9dA6Ox(IDz?UO(f76cP(uh|GvUU|L7n z{K<&?M&hQ5N6QtnlCQ_+;9JiQNgrtdbd=b00{;}snkyv+?BYH2Rj@lg^xg*#uaNPx zQ3`2mj?HZJHiWyFO5B{1eFgP1w^S->tEXoKyE&R>8*;391{bOkB29H3bDjC4-9%@j zLej%S-U|!zbYpxy&d9DJJ&Q+(cAW-&@E$*LHc-@F*jXvS3kepR z80&H}CKw#{qqJFWOe(I!_E^!dnbJr8HnR|Np_4v)7Yk@I#=it&6ZXadZWiZ>(;n`7M@W@$eghI%@|=II6^Dh*%bIc6%27V$l->BTnxj3B|K%#X)n5T6!xH{ z!p1gUh^g0~FJwEqn$*nv;}CTy_H0UiQf0m-R@%XehcN9&zF(>_W`vjto?78yXV&OQ zWv=ZRv5)Y@fFLCxf?5i}6Y#5rc1Q)AeRcglMTk#e_0)?;a{UUzuF?ZvtEx?p0{ftz zYa-ySgs?oI3eQN0(oO@zr)em(w3Fm(sI?8Wu0pPeV3E-rzR-EN5HAdOr2LDNwKDI& zNpgi|%oKg30ZIsbEA3-g+J#%g$W>OUjo)21?g`Pbq7(<1_Q=WeswZXcWj z9_@4W*gc-B=TE=;-L?04_kI4WexKb>OhGnyiS4C1Pf)=t-(cw8lXg((`S1+LK;~?fs3>yt~ux>=MOjz1hkQR z46p`FQn@vd2(MXe@geOCOFFPrzh~Zx4Dxx=Wo;*fg0wrHrYc2AeL# z*@0)Z4Is}bJCXseBF=8?mlfU`R@Ij6@I13sCLsa=s!nDT1;(adbmh<#@u7d2YvaVz zj3W?x-ZXQCU!<_U#&bT-W(w15oZH!l^e7T2DuoMiR}*FCUHd(0C)ho!QlVr~>VCdA zZDE;79}2oTPHkGIjlx-vflCY259D4YcVOgclk?}lQX;reynT@>#tWhQiNhlFH!@|^ zTzN(d9hS&l6xk}uS*fX>yecQ?Nn=e_dD!NBkX0Yp*aetpp_20J<4t)iR3_W?S!{tg zZwlW5-GbX*9iCcD;*>)1Za}sS1hie>@4MFn)%VddqFUd7SNHAaiTS&80Q|Pk=Jk0a zXjda#j0%35+nm3lek|`I8=2yKv=*Rq~!oJP(_qaU+ zO0=liZaIMINR7Hh^zP4}S0`J0nX!muzqo#*5OM#YD3Z^~t(W!U=bM}V|D85_ZcSs? zcQ6A${npbJkcsUE`DeHOUH$CVdqoL5Bktq7)$fa!k!0ncpUR1Aeyn1qkXE`44;+Gn zTeQK~)_@g`CFfZRWjOaR2HLB-5iWNJVVm|@X%NA_XRe5s@ zO(s};5;jPTntl<%AIjv(9!dU%Qdn35OYPl&am6Fsst;~2qOZmZkQ?3YZEfdALO_L zXgE2p3J-fBD2R`d@VbE|Kf)X&dnN#8Mur-66&{B%+-hQGbE97gW&O-L^fpFRJl$bPS0MCt>Gy0{FiR?ls8hdQ- zf463bWRJ>=*2eq!>z5h12)o5E@}WlnVB(*ml=}!4IlmQ~0+_k*i=@@BnIiR)q8a~y zVZ`nA7^D(A(9{YS+9R=v=$Smo5{q$8!zBlDZCF*f5ZVBjFj+`L`A0I#=?QMS&zTz} zS*96Mlra;ALZWs4gUa=_ym7kEp&%Dps7xk~0=x*K9p75E+QWehITHbePT_#u{_MAp z*LKz3*UuG|-j?C&X1m%xy7m_`p}~B9{=jKb+N5C4UTqGh(|8PJ;}?>5-f6*m~Yxw7TLSMYSv zSrxR|yAhLdrpW-zK9v)Nhkc~ZLr|E;ieE?3616Ntml4cF5-Y@V-UYtyx(z0oQkyML zZK)Zaz~|(LW9}DJQjB7J5y9Nd-#u((V%7#adNTo-d|_W|v?F9GGYLHDC|?r}O@<$#dvfMRcHrh#0i5X*|y2bs!8Q8p2Eiw$gs&tZa1DP&7 zY|S16tJ!L09GEAb67Jm;=rYDp(0{CRcLzQ87)=0F^z%Oz(uERgrkkvB|OzO{&}#VoX0(^v|zO?AtygI`YkTkVtr1q#oIkHq$3Tf;2zk(^L~MdBgh^O117g$upn z7T&F>!1jC=+QVx9Y_=;XV!MC*!X|$1pI?j#W;0|6*{^eZbiDjuloE7!hGm5dZ75jb;`d-4;ujI{X($j~RLQPZ*xU&8m+5cmT4_H$mgyvM zNP+$+ zS=t(?h*y_7(k{m}0nO~h+pOT)6kl9NkR++`B>6fU(S?xh7$h(N8;&IW9c+-C0Ob1x zQK}0qRFFb3mMKV;R&2P<0aA^wb zh#?wV1MS{W*_ugTj|lzd6x;w&3S)ZP)GZ>g3gn_vEU5ZngeQl2)4^Q6!JeE7JSQ#SF9bL~C5vG&jgN zXfwp*G&GFQDi_j@ipHEaw+JtoHJg??Qn)Y_F4U87$e-P^Bgil6NM#a^(kN{W^$Qmw zxa9huE;$!s{Ap4~UWmr6o2Wb^h%Z$0?X&I8@s{GS?lEEb6@C#{Bt&$+G*fe9lcjG3 z#VJ<`hTYC1n`8Xm#tWsoy)cuv1xPt4=x(+>jeaz)ND?U|_?ZO^rs#$xV3vMQ?Cn|j#ebbQ?0aa!kl*1&^_z3ZCEVv5X zTkJg)om3(7t!W|#M?hE9RTN(TQm1XtL(rUznUn*~f^?FIxkJL>=Ez>Q@QYBb!C7b^ zBO+mEy6(7THk{VGf{)|A+tz<29clD%G zL=LFR+o;XNO_@`;Pyk!g=lNUwGk6#s2QmpjoC2%(M ze8S_n+v#@;x7PK)ExP9OXMZp(*=$ya-_2q53qRQGCrABBqvME_gFdR+ttZwsP1h@&&zf>QjV?TPgMiZWUFMJyl?B^|OuX~VS#PmZjVK+tTX z(ElTRFdwDZm@ecb0-TBOxpH19#AEAXjP0~HGmqOzqN?$Y7&BIa-yPD}Tfknu?cXpG zI6b>Xu*7(4%(rNhF^O+XFTiJohpkNqC4gJUIx@FrV&^T|U)H4yCDc$D_GQA6+C982 z@Qu>BLX~Bxjm#>2)`pu}n{{;q069qv zaEWi&u(kNaY%UAGh@ikn(sHO6FSHH1WNH(xYQc6T)_)<%IU(&IQdifOqPq(_Toqr~ zlMd=U+tF+);2dBKbr!qEp~OF+aBD0eGyR(Z;I!@M8&5d)VC%{uN&Fo>SR#Xl^B)%s z{WE?^2uAC|R-#2;21>*iWl8;SNdB$omN;@?7;lVO>6&A^Z$wZ6bSrKtyu(n(Z5Xj4 z^OR7y4Qv>auH#f%soHq`kT;OckKbA>Mfgkc0YI1U4~3P@NGO!6nFKbl$(gUKEi_!) z!hRI5J`pMO3`1p`)DL6}#K0~AHH8HUWf!%@t95d@Ai47Ho^TIW)<86n>z>jubr8t-`S7c*6GvK3wn#Y;4XBN3}zR@&(nV07xM+ zbv+uYC1)RT$__c9fh#ugwloRBLvco>K1q=Mkv*#))I%eu#KG94#PsuQ35JP zvHwG8k^HSfg)A0+(NZX~@mNqgZr@`KiTw4IU54HqV=!)p(}hC+XoMQ5b<+VBZjH^W zc1`u?3E4)B4|&x%6D_Ys{VM8LmWVR5tm}^tGLXxs)Qx)(ucN!T8i54k5 zqopug6fLL*?dZt=Crwb&inNH7i&<9T7wM~cBQO;kJ8c=+1SA(W{yN(VtRa$@Kv!(U zw6cv5ITF(+Xyi}Z!bzJ{KGwsM#L{mQG;2k)G|_A^CazovJxAGrB5xH%N<5fA0Xq5^ zt{1kEv(!iKwv2;^=m*uZVvX_d7T$KLpvdyi`H}u}OHuWm5v12qy&3?1{?^d{p==xo z*Mn;}*KOTVBeawX#5?nxy=n3N<2Zd;e8!d1y`vAm(;bPF$UiQeGup4^pcROV4 z&6vU1Y)wS{BF`wy?{nu#>5e~tM*i{3oV1n?WLD)cZ6k>C42}e?*^YFzgh`wst$}xKJdA%J zDjC;vf6L|;S0GO71(3y`US`j}5^HhnK_nlJZ2VIdJd(XO7xq)=*Iei%liSxnisa4N z+^f_FoP87X&p#0kA~^P(TE<@#H;N>q1t0_B6lfp%bbt*X1BT|owB-+l^aJTqZ}$cG zkax^7=i1p zUt(b$?QDoa!{s8UVsnxVMz?ZxEBx)y(v}> zNLB6L{O)8NTzN+DXZ!1adl9=oirYn$P*b_JGY*QxFet_V`o^=JRayry1#?$!Z7E2@ zgngMk8)~FFM?)Cj+V_=zybKqqvoWG<{>othX8JYeYt|$!X;e)WYV3`sLOuczbR0r` zt&GBrU#32SLSuX|evI71t%0}gvj#3Gvzo8ZKapI>K|fDwQu-M{xv;@Ml1k-58i>T1 z{@WpO2H^;Bm;O}PAxUYL>HBZ8n%GdB5!vG1ws)hR5gdrk68NQXYy6RgN89hm{U|at z>4>=F{7ou_mf-u=FVf?uJ7NSYrB6g7qAfP#rLc`KXh*4I^)xQXD1X1oX&265wu}Ed zeY7E=8a}e^$$YC)Xx%tYV8Vj_24Xx+#6+}rdl;l>1cisqyM~7u=c%z^cWYmz$GHOg zLCUO2&X{NP<%Q1q{7pufKMqH>BScnHy4<)x6>e>*trjU4?6lXen;aV*TH+T6BfS>~ zkBSQ6)$JdS=he^pv0mNR?Q6B~f7h$$=6U$(pY(Fw&*!)I+BJ7(Yb!|pKqe@ zmVq{0NHt?S`)}pOf64G()>a|1&(U^1Io{s2q{K&Ikd%#mFLdeiy_@^oG6k0nNtd6{ zpK;6mT4pU+1*|Tm3-f&NxaA5>E{VTwMvfBt`8v}6@l|0xG#vsyeS)^6_Ar?*v=V;N zGR1@oEmKU`ZxO{CeBb0X7)IHDBWns5LB4h689B>XS@ZoKtqqTIt-`VGBwkS?6dv|M zH2_N+5@H|7+)BjP1`k!-0km^n*pINF&|rN0ArdOM!j_A{IC?5k>*t3+BZ_d5ssu@- zL4?B^7^kD`XbpixT?8RVlPo;!g=zrNh`{jVDovk=V&bTUykK25X#9m=WQcGv)Sidq zic(X5Akei#wfekrYnVG+Y?I2Hk@p`bQZ2H&$&9S6{2~tN9f{U|y6q$Zu0d4TKc6?r zB#3;eZAVj?{QW5sZ^LuKRWguHbK{$fX`g|)ueWe(Odmum2qXVj-F}543ywvqlNzxZ z<5o_lW!MBV8%*G|C!fFm&^?eo-bVShTGp$b4~O4vK^hC3<%eev+Kg6o5o;nd6Av;v zsJIcr9YsGe5a|A>`i1E5q|J4PI&Hz0`{+o zSZmvq?Em(oTP7rDVK;z)!mYUwJGFOj>(-=z5=ZfFM2@ap$Y8^b%us8dkzgS{&bZA5 z9#WKSivS5s-%#^fiY6{r8T`_J`z=Zo;kby_pWm9@AD7Wxj1N0N0_sK-4%S7%uPuQc z{BXS}!%Q0+0hk3Tt1mzTx3t19G9V*kP0=W_X}iZ>=!ZiV>|?0&Y~@F!yIc z!|+AWVf+$V!WDkeQe_RM2xj(SwSK(%)$Zv(-5(UKO?Q7i*85lUbH5jU)l%ob*3%7Q z=$Rx20A?G?f67|YL+DNmzi6pKqB)CMR`9co$S+D17$-@D<^i4l9B=^`E`yRH)I{%_`iTdGFlI70-B%QD@X@g0H_UR2Cc z3M9)0DVk@%an@?*0QjzGPdf4v#4iIos876Trgfx_%rFvCi6v9u*fx>^mMQ;SXc1OR z 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Μ;cVDa9PQm7ll4LhznM$E(F4}Ax^ub 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%0DM~VkQco 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 jx&4ag-}~V2e(itxq_=PQraU)f(0tKto|tCG|m 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·zCrq4S-7Xac#^#B)8uci7s;=jNTkRku9 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 jq8b{)jpmE9mgAHu5j+n@1Y&E02< literal 0 HcmV?d00001 diff --git a/SpringBootHomework/target/classes/static/assets/images/users/1.jpg b/SpringBootHomework/target/classes/static/assets/images/users/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..437c2f6c4d36f8617a07b2696de2bf2f0b112c4c GIT binary patch literal 95683 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

    on0 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�EP2I^Nln&9WYuB@`MZAJWJ?uJ4v?3d`xye& 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%0D2tOaB3i@&Apl!TTf(u1YtZ{=)00V$8{|K?7*+H{ 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℘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

    Ut)(^^`DAXmpW+BV#O<<#bEPGj20ad7B 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 z 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Μ;cVDa9PQm7ll4LhznM$E(F4}Ax^ub z$<3Dj53^7pdBxi<7rLRQYbXX_K~l5T1$UJS;?;d#$+=L!=Zg+5X`w;LH0`zW<5xsBW^;^m^ zk~nOP)V)k6oJtA+o&*IBpj|{KYKA|pZmMnlE@!(V$1C)Z!Y^6~p7x7gulDD#GKuo1=Vbp6 zdCH`E-Qi#rmH~@gi+eVv`dYyeLp;YD40k$FA`0RSr+KEmD>Q~q?PX?5SS2~k&?cs5 zqz>3qDS6<@N-7+d+PI^+<{WGuP}s|%8?AYRhjuh#Y;OT=3#TnK^xa7Di8X}0a%@P#N-C@(=pUEvU* zLAnxt(YOp$2jSgUpMH#&I5-zT7)D0+|G`UqL{5_*dpJO1uc!EB6mAVGT?6sPPQpw$ zp#~T&$9T7Jp=8IgAD&0l1HSZyG)*3^uf#m*udI6)T4)jl zrf^VljS1xTc5e2JaBq@(z?^jVIpWnKgAjjEq29)LBO)c^Hw9*g?oeQrwSaqGMsHft zks$Rz5{@4Nmn-m-j9VDo(xc3PXHF7xCDxRpEeq3k|5(?+Le5{cq2@}OIijA>oS^}Q z1u5)vky4py0Ma!;`4m?Ivug3}dM+&iFt%WB&U%bpQg;;BG=BYCZ90yE0T4I~1WkNrp?5RHTV#w+#e)9V5nlf>w$Ea;lL_tIc}|K@dy&XIEm(3l zq}6@?`kSR{B*DLs>I9RG@kaVuSlp2ixVf;aEBqqjT7#B$8owSH5}~VU2ds9uY~ezN zB+C9diatlS90&8y+hI*tP`D6bs-i~6|1PvhFG89@qpX}FOq$?5>~bc$ESQW^o^h7) z#KI{2A_+Y=WV`tn#ooZ=m2TTkP%t7%uX~O{nCd8{%-OYg|2ULMqg1p^PX)`8M z54n`km5kstJEt97{&PUsg?a)6c*gXwaoi<;UJcFV{}m=V+}5lYipIG-_KbWh?(^nd z7Rd50gl5IVX|DdiKC*4v8bGui#vQmf5__yfaXJ3S3NOGLtukA(F797oGTc4(}jbA)!XTNRNh$yCepn!r19O;L>x-G*K&s!6+>k*$2 zpXfO&QLC+-&xHKgU2P`b8V)8g>BdYJFQBiywUaUi?_!?6`DhWYp)Fd9%ewN3;3da^ zY6cO~_>stSOxluk6e@oPY1)|P?IqztUwLh@|2Evmk(04)eJi1(KUxpcTS9uV1C#HYc%3%m(?8^%2B zVg5|Cqhx#M!3Wq0SGY9_qE2?ejE_VwVRO^7MXpk)+K`)g8$l*THRr8`Q6xmLHK#xk z{+y#k6@%@P!hPCqbJ|8>EPh?0bmbQvxDv1XzcpPIRcI#AasHzCFS~zK{)FaL?qrupc?5f$C(bQyobt%hpIC4-A&&`}s#Juy>g~d$;TJ zq?04!)|_i7L69wGTPRtTbIo;BdSDgPLl-(4A$#^|Ykh*18fkaX;&aJTkfyXz^CwfB z>XD(FjlA%TKr{Gg7_Or%J&aECNl<;5u7%Bi$2O2!lWo+XOpJvi6nSqA5I7fd?ddD| zDiO8LfZf+a7GwGt3A23}wp#x?jbA1vZ1@VgWV;W~Ap8R}siD>eu`?HP?$U$VHVY4% zj`>PdI^SBP`)9qyErRE5p+4F%A?{uVS`J0zruBZcf1q7$`k&2X_j~_gbM^VJ0%`JA zM2<1HwVFuY{T&jHO@J<-u-)oqFwr;j=;v!2C}+P&1ZTj6NI1kj{3KNBFTtIKTO$NA zf8cX4d~f`101KugQouJAdqezmecmbFjUyoC%w#4cT#nx!SfTKXh<`NLa3hlq+wO_C zMaRZ>4H4E$7B19dpLrtFTKb-FVFyCl>}Qi)<->WPZZSAK8s`^&5#{&^+B?;e%8>rV zV}KUi?pE2iIjy53U@8B5*tp?TprN)^`VnVZYZ(6ax6AzBOT^&Udfy7@UoRs;YlUw= zZf@Qmz=ogfI=b@0+18smZ#juSehi_-?)Y%K{e8vR%Kza9q;q(F{=oNUg;LUHa|#Tl zNL|pU5_4afk-#33u3+Lmwi38R%zH072~KyF(FV$fiuCL;kM4~LHX&RfcZ|76VQ9w! z!bj5UO8>~XGosmB-2xv+aRJS(-(%b4nI}@P@UZQY;6Ji|hTR$em_|vL=@@|1@)y=p zLdcEi=637*T@o*f6+!f6?`5uT&RU+p|F)M1@=(6QB569aqM?W`nK}X-T+ui z{@HLD&t`8x!NY@rPNhuV-|uE&&FX${d))Nh4q<-tv)VqJ*S7z8v8^ot!o#9qHBecD-(vxvsIJOV8O%5UF z{rHIx-Xpp)@G^)I4*&T&Vu@=LquZUHkzbS=!bY{0cwSi94rjT@Sl?!>+1ySbTXO^l z<&_SkaBDzY=5bgWqXZ-r8TPhJuS}KMlof7msdmdMawftvre|cMgCk0EXH(=S6@HPe z)su-^e?F1#n;QokL3`CCg;8k2ghoYCOA(EqE2u@CL@IFcE+s*W5-)H9U*8jHfi zhRRv|lWR+Dj#*NfNt$fa*YTxxf4&j?7~X<6Vl*tyO1gDRNwiEmiqB|1VIycH~OTx!?xE5YN*H4@E*}5F-Bccsklgpah=?MzI z2zimqW}`mK=5K`L3PTrRaTT1vlw}J+WG54QVhEe$aBH!FBvWT6-HEHKY-~7|WGy`3 zrj|X@Mp}3NTcUspMkkmJOh6Hvj5lHgCv4TcZkwM4%d1eWGG>WGikdX1Ncxck8_)$` zWw{qxEe-pnW!&Q9O);7ZG}teT5?^gs_-JXJ88+Bp$+z?RP26;k1RHC1L$^ZZPb~zK z!m6A;5$9zZQdPT<*@DBR&qJBbaeH#!!TMmlM6ap5kuYEAkPt0JwH>rTs#_6t9-{k9f(<@Ezq96a~}NW)MOl{*txS~-^^kg7Z*4okf%-vN+4 z8wU`wK_q#Ovqz;Di9TnMv)@0NPa6_3xNn$iZA!ZU(UT`}+~V~sP1BfgsbLecobHqWq#)f_4H;q>s?RlKPLar)Y;HVv3r$TDLl zZ|A-rb_CTR1Q#vnmlala06s=XE%U$Oquqj#&If7~qdab0pFeD$1_wDDD~kAR{zpw8 zB>-D5Y|u)-hKRP4h`o=p$#2S_1ya*kl$KGYVCT`U`ioKeC}`qSC*?{NM|UMVt8i>u=4F4-E~C94R*FD1V`Af(T9EG3E+; zb{x?ivbK$2qJeF&Yb0$jheDFAT_uxb9kdo^W0ebC#h~g)ruxV)!fF(cmz8xaJnT@u?fmcQsGS#|)abxBYhU>M z7hTsd5F&;d_Q@$CLXr)vZQ)eFY6WU+h?-`bl^of4dUmIQ3Q*XOh_!KZsD=mTZ%CW@ zdrVn&W$?1Xt-)3~(*b9PZ|z7DA;pa`tjwlTzeY8TRL$#K+_$rzidk=p`+uY=GDR%> zBFxN4e&=c=&xi&fR;fD6LRn)6Ll$1E_(vup@;D?y$;_KZ=T`Vdy)DB?i#f}D9N7s} zCnN;omkJkBb3n9t^^QYdMT9f+W?JJcuhd6epDvU_GgdoTWy%BKlpS!h{HvK5zb7QFao?4lWLqC^UXt8Ez`{nH)FvYiD;Q`2|2; zc-RQ6Cj<5*&Ni~aKpIn=`anvGw?lS$Y;K*u%xn7f4wiHi4yg84>& zTh)~mfwen$-z&d9CB$g@9$0OUfMy!MP4I3>@kC6`IkOc}+ z`3Ln2<=cEiTZ%1F*!;~i{UO`x_=~;=#%+y8{)02=fQ`h;#)y>&NQ_v)Z6BMWq4Usu zjMFSOB3Mb{YunY`{ZX~8(KXdo8Of`$_#G%xUW>~KHYu) zBnA5Xp+A2dZ@>Pu`e^mLX1R8_Z`Z3ww}19+|J!!Y!j|&w&$e^jpTaNuJurRQy1C8kceVd**Q@*Pw_Uw<-RpOI-~Zg#kB@IN;^Tv<)XZ>+ zzce0)v0F^5_McZM+&nko0z0vN#=|^`aXGrwg`=iMxA2SDWDv%f){Tg=gDKIbyB*Tf{HP305Is4Bac!FqEBAgQa>7ZQUrpqQ%`|xupWJ@IE3~`hP z{8XS?{BAA51?L-MkixBLDMekPf(#Xk#ob)?M&%T98KD&}_3=2s+m7 zfrsAbJsjokZvXSM=9svCt?pij#q$GR^hD}3jF@(W5pjeKZPkr8f=NFyH&}IckGTcuF9{_prK7HkZFN9B` zA$w_xfO+mlQHD!^3o6DNvQ&6R$WpSu*R!THWI1yI*#*Ae0)fXbQr!^z&o-kfIc@K@ z5yl?RyuvTyyRT{n;lGOuNp}+S`aPNA=i6=v*47c2AWs)^lr!aKUv8*dDZq5JgySm9 z8F}ZMr(ZHf0iY|)3b(e<32c-sW>Le=cE!faZ0iP~;tGST2uJ_Cwxo`wtvBqLyC$6% z=62>M8oGirxC@a)AlU>UnGOI5#h$sl z0Wq;$<+O#6MKPla8)?@(wvsF2FcEiFaN_MY(v}cY-wmN{#HL20qO13@6rNFcf*wbm zGJLctBt-cjmFN+TzX})9A?>s}Q)}@x3s^^sE4$m^A@kY@&}p7~#Bf^kCty!j_(j4* z3~b)>5<>;w2LEL97b~f9p&avTw>I$G;*trOOhzd~pVBWf@ufnKA?!fjLFGc=h<8VF z3M;=zi6-#ozvtTi)>F@-rD%Bzx0Y1VChgz2XG16mL1PR{SYEL2C5Q|8AM!%{;jPKr zlqfDM*@;c5@;N}|LWm%a!+GuoRc76R%j2N~s0+6S_|;a<*xUCDQa+7r8_P&7slP=@ zWB-=1hy52n`14=HNsbvTBEY|Mjp04(a+EtTZs9`0AeqwHpAoiFv@4Y8`D_8g9dCt) zz140Rn0vm%o_)yEhb;Q!BIzsC+6Fl5*N%RR>59K>e^-zDeZSh>H?P-|LqXHM3b%*z zM;Y_}a4kwRW!wV2Dh#D^p=CI3(D6r$zPmzeT(5c+ExilZgXiX{bwj^CtP5pwc(K$; z9b|gk;C43+ih}`-!@#j{dvHM0oVf-FU(%$4VTMITlUunEZfdH4X=#0Ir6^gF&aXb;GBGjHDTe_?vK~=wOw_O?sxTiVa@wI z_N)G(sDLbVn@8aTZk&pZZf2@X;&1}UrxG_RRziLLtFVYzBWX^jy@}@LLX9&B=-qVT zLM*Bg_ul(=;QZ{KnBeM_(uG(FnO5ZVx9@V7mvAvkleFh>FkQzgkIxR=Z`JKnzw{kdN+X zb9k(N`<<|i`);#({Qh>U{zb0R-g~I<{qqN|30Q<&$VrT^9YK;~XxNj`TySw=B}VZ3 z!n6XGeXE053V`zlu`EDo-9G(B*i2`Z0Ox^4Q=t35yu0V!?Z>V@kIOQ-Q+9V1)2{F19ky-4pfjgfe<59NRp9 z9FA0+nq~I}j$jRAqCi1O@LDKHTl{NYZ4l(iO&SlsVM*o$`@kNe^IP4sK5%ewuop7Q&UuZtTq_*w2j0}EcopusY3ic3ZKZ&`e_Qh za=87he!BL>$3+%b+rAp%4k&DoLQ#rb&WfHOc$x$@sGatwynkCsp_stqJ;xty-jh(U zxt6I6iA(W9KfgUWPRpDmc2)UHF6PV4o0sIohigJ?G~C6Z`0oRczA2y_ifByBO~*4$ML<2M31bw zU^l@8vGA~$f~IvtHW7|@(}L98C{TLVyR=l>LbvS`l`7EZ!yP7Ess~I(3-m+<(H8JF zp2l>8mb4S*A65tVSkd=YVq5?zA(^svKu<0=ko0c}E1~YRT|h43LaR#;=LK6@^&gb@TKZ) zF3B<&Ay7E9dDtpahG53Irqf)L3cqL|Zx|y^4|@mGfJvg_8U+=6Tsv$_=Ok>E33nDH zR8b+1zpgVZ9g_L(V^cqKl_5gTwe%54y_F+Ln2>%y0PyGrl3_U{iT>`&0k?44GRPq1 z5G|aY$RUZy#f{ObBzYxYEj(-{PPC;PQ>dY|AqryWC6qUXeCc76JoI*GvAM%9YT5xG zyRcJ-z!eSvR-2N5xLpz|yETJK~?!L(g7U=C@!r#6)u+9PU(Y8)=oHu5%o<016OUudrs@U<%>oYq~}E+?d{&p1a`+ z<*MINN5c(?UP31Vx@bhnDUde-I)$?h*@p}Wsc1V|X5QfB0Foo48*-J(%1!_`$5u+b zK@u8iB6oT{jZw*|av=o%2sz%|E#Jkd<5~!o;G#N9TLAKQd2YZ=1?dk z7*Tmbrjk4kvLA)w#KFhylG2whv{bFlQ96f)b9(q_v$79s$)_yKj3g^xKPNy1%h(`2a ze~+BPz%-|zK&11tu5Y0 zA)mw&VrU^*WX4AnS}0g7#VF}pAWeZ&<Mwv=rEKuy2#eQMwL5f+P-AiPrrLr@9>q=RbelWiS$AVyH3l z&e)F}ag^|z8K)}(xt$hPH{y@3#%D3iY|SUwQpR0Mt%XBhxDZ=;UZk+Q5l7+yjlIcO zp7RnWNaaEb(i0-t7`sY=3!PNh^3Xy{E}SIj$VXhQnJEALg!G6@jA1dW%kzowO1^rP zCm?d+^|O>wM)DJ3xt;U>#zTL@Ez3yKB(YH0#$fd($zj5gv`XPNdSdokD8lCtn?{*l z2aGknwXa)tPRS~3AL)2VdS~G_-ppBU9P2A@ErC$r=&Ahk%a}wU%4us+c?xKRYGjMa zf)z8gqk9j@$6?mtAHdSJ@Qf0Xf+#n;6ny`T;!S~8HI2wlNM-P(eXy4#xE6jxKY!@8G4l6p+rYI~*`rPT|%tMF^Z{ z#(h58uWWo6qu43DO9oaQ52=g$*VE6PH%1V#G^)D8Jjqgie)YzTyWNdsCT zHS?5Y1AvV9ukvT%Y6u8et|U0o`9@lUQsW>BhScscHbEx-%XVAow38)oG7mNwYe<;C z)u14n#6enX*-X^IRgc@g=ges9c-3n{)mkY49FVF+#hQ5`NIww4#-adG}_ZS z`_Zo3i{rnor0%%2o4^hMK6yexkdywf&X~>JoeC5p`1LaN5ztSWA9{`nqH~SkzmpNec@+_`Fbrl@iMTAO#H>k857}N9s@gNUzR!)UX`GFu zVzV7=2nl(w70Q}SYOmbUIYDHkmCMrc@hZOTPw>COIy&qU)ovR}oy-Z$bUXo*J9Z%U-Zkn&YJ$Yk3tQbQ)or~!l`=?&;; z5`kD&f&O>K8ii+MoGHK!d3=1>DUS(KV=Zq}SQlW{*lvk>0ILjyrh}2Vt(tN~ScznU z&({(C5*u>8M483oTXEYJoiL*pLpGwqZ}4g>*PnCDh4U_G6p8+lYXG?Gz-H3;E2D$L6>8tsNAH?uDw_P>@3vz^Jhw38OJu6>ULiW&BfN zYFv0q0c+I@!^0+yM*=2}0pZ$AD(i?2W&l;EmCZ!J5x}1i*uK3M_9IP|6_DpNwprGr z&mXx4UrRPX;jM)(1mvBjHOWZ;{DrJ5_54^kjvO6MeIo>qWSB$p?=WOlAM-paB&Bl4 zk1?{g!Q#%w*3x~eP#A9@qg9Gg^3E-n)7cDe=(5i^NG#Ki;Ihx35gU?tTi@nF>uWY^ zl7oFz=yYSD1sG5Mvzko?%&h>idN`L8f&71X5$p+4dmXn{RN>Z4eU!-jS;ivbYqaKS zG{)n_+8H@W7Gl1#5P<9nm51$UJ!e~r;v(EX(BDgE?sbpKbgLk1EPNHE0NPPZ@=sA~RjtRq)LtzeWiad0XN`PbLh*hmdwnrcClGKNHKJ5eE--fSw*XsH3q4a67UuQP#VUjG*HGuaa1ZY#YC zw}yU%Ms0MEQN+!d9iJWfn{LD~s>7}00X z#yw1`F+n-VpC?e^*07-jcc_qe!>t`~g^%`aXI#P(D;MfpkJrz0&xmy2-+y>@qUk@HzG2u&ZqGsFacEwjU+nqZ^qcsSZeRWC{=+PF-~4V? zy9ZvheDl|%ExLEV&|303w-9KOHyI5?Rw!aO|(!W80 zi1s+x7DNOI{n5VT5l{OQ@QxXwiyxDm_IYtCrp=$SuKqK*iQN*mqd308+jAig$2hl!TNpEylUF30P68XLIxHqr1<`LAJC?Y=g+@7*9D!4-Txj zxqQK^9GrE8_?U4{N0hdgWdd$dxImZBVOP9L9tknnyV~qT3UK#^!qKEF2Xx_uw|4T4 znm}Fl1MqS%TR;ePbsr87^vZ?IT>8`OmX;PC4q%|j2Ah3H;X)#S=(F{aqsLtbH_@n~ z%%gJ`Qi^<=TkJ|BoM~lim|YSB6H7`_{`oIrOu0xA?^UrBM)%+|p0f_Z#nMQh>o^Y@ zSNKH>je-0k$J<_&JayjR3c%?FjN6lpJgsbRaIe9nwqsCo{`}DN=MXNGsKoojGqOX< zl;WCXTw1XhX8=h#*ns^E$Q|TIb2}tL<7Ea{72FL-2g;cUar=09w0 zj~vMi6FEyj6fhIP1cjB23#F{h1b8SWVz_+F?hC!|3${I^M|6L-|7pG*&rPgk&?|-^ zu3F(2A;U1oxMHDZK@t#X-*Tu~Th#M~3q_2kWmo%U9U&wMlf_Fh7vjHB*!+XuN;sNN zkx+>^Nf26aTr_7Y{353Pq)l&ZGOZWZuPHf$go0^@J)S|Eq0dxAWSU5cAlZ?-6oJv_ zzi3P6v1|FRj@w8sWJThl#^bUtR3k2AY@2Fi?7YA2DtV$KkvcJE4uA#euolS4vIWdo zxV5DUEr-5(bm#Pc-{6=}=SJ;3Jb>iz`xTskjT98~6@!Q+OYYGJPCB zNT4ZcDWaVJw(^SJyR(ts zZYbq3ixW61ZwmR6E@V22g@&6vzJ4igd^{9%a^f$a19`jbhx$;a0Rsz|(;2^nIEpKv zAn=8UZQBS9RTRna)wvP><>i$eVwf&Ew}v;9;a>y>GwZRMZ8HD=FFZ0m7+ z*k3C*0JjTmY;7wBAm$&m?Aecez0%WIEhCkX6%}r+B}tCcgFq5Mesq#Y%0DM~VkQco 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 jx&4ag-}~V2e(itxq_=PQraU)f(0tKto|tCG|m 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·zCrq4S-7Xac#^#B)8uci7s;=jNTkRku9 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 jq8b{)jpmE9mgAHu5j+n@1Y&E02< literal 0 HcmV?d00001 diff --git a/SpringBootHomework/src/main/resources/static/assets/images/users/1.jpg b/SpringBootHomework/src/main/resources/static/assets/images/users/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..437c2f6c4d36f8617a07b2696de2bf2f0b112c4c GIT binary patch literal 95683 zcmaHSbyOTrm-aA&I|O%z!F_^5@WBZZ+=2&p2ol^O0}L*K3c_>$4FCnq*WMNYP*&yuU;_SI9*+P-^4?aC zegG5z>QnX$0N`;0#Bb;2*C2{VeM*Z!(-*@%>yc#|w~<@^!PYaq{4y!QT1>SYJ?`Pu)$<#?D^J-^1pW|4SV!e@81(Yp|3ggM_b`ud|!8 zjh6+3ud|bjrpb_)6d1r!k62{lj*-0|I?L{$aGR zboKUn0e-UdKbqj|_HWw%wXgn%qPqJ3U)9<9pAPsJt*4i^&41hbzY=@u__^8eYTJ0a zdV5&eJgGDN19lUW^RTh-a`n)0b#?l$UevU6^>X#Jb9G~oll!OF1bGA**!1mPtX-p0e;$HrR0!_}GLUkw+t|G#Z{ z{(tiQC)WD^wngCo#PU8F!~4(e{U5jczp|cu=%3`jo%iYD-|lbY^5pX#PtN^#0>J;5 z%L1&spB^HV$7MhS038(-6%7>~4GkR&{prNUL`TQO#>M_ea0zh#B?P$m_yqX)xWvRH zB*es2{|Mc`1qA~G0~ZIEoPdCwiiC*df0X=N<^P{}>;@2F0u6u$AQU11kO&1tg!0%A zsCcpu4Fv_|zsCR&3J?_y9e{!Pl=~m@?=lo1=&1;U5CB90fqWtq@>rZylR&$TT{AC~~QpeGm+hzKABI5V`8NX1D! zGzDZCFLOKsxc`)6#V3>sQXTf*<H>d?Upih6Y1CEQ?~uIRiCvp*V2hU}X*K;4DU@ zL0w9-Mjg_h@y*;YYOc@UpAcL(&)#W$|qeRO~Xe3;W;w7J%uR1NXdR2fkn=}9#eN(MvR17u{O_WodbA{DNhv#ah_4PL4^C(eNtk2;_< zs2^S)@dG5XkOp7L9a7cwk}t3E+_&;QLK}huY@h}dzxo}Tnzkw#%(IN?6qCDav9Hd~ zK8HBL;uPORHk?|OoR!J%^(5vlGB3=ktnDs8d&L>LzG}lF$t=}!eXTP)q2iS<8gCt zrGEzZhJb-ryBl#eEv6@S%nyi7Yy=x3xc#R_zYaPDapwC3T^B`wq($|4vCf;pG)otr z@`X(e#Od#{B))c${Ywq`*Epft78 zk}zQo0T^u!mg*!XbtG2!y9hMO3=w^ob8p4lx0v3{LKVsTfv(V$enC5w3&o7ZMo^)j zvzC=oA}B;wGy_~*Z{TG}RD*Hq70E_mf8w(p9f5~j(^U39+#W)Iy^v%&T8OWBg~mq9 zD|0brCyq_D>lOs znHDi%1kIHpd$4Te;Cyb$_CZ&J8|`?y9Mjc z!8L)Aux%?Gw3iir)Y@7A%TG4=7#W1>amSVRsj*sVS;(52eJwlem2Dc4br1YYMQep} zec6Fw+%MSS9G{2LR~F=j)bzMOjnQeEubuKBv{BhQ_&T;isG(ajWA-SpiyVYMz7i9H z;`QrPcqx-|XxcL%goVM0>fT}7Q07^waWjKL^BPj*Jx-FUeaW?^_~J`)apzzu4lJUx zWZv`>v{12G6knDE?QsHPK}q3qTI@kgW74fMNjgDLzs%B|Qv|ih$|O{YakrqqvYA$} z9P-}U`>ufj$3OEx@w+B}?I#J51hH_dtu23RA-f6js5U$UI7h_0)Go~Qy}#a+9GS+g)}j##F@AG8NtJHzS-#ITCE6q)rbMNR`0xC(~D1{%xm?sDYfjl z>HU!;FBcUz^CA{*rLeMc4|umU!`G9wI6)yjb!#YXE;g-0O%7CU2^}Ey5+Y+gDJpM? z0vDy-7#OM={lOKOuGQHdFvwWue=tO!xPt+{2`R{IJ&O{?NHPTgFNQUyRE)omrYf}G zf8oDzol7;nzFEq;qaZ3UVSfaueam9QDE1AH6rMRN7d|aP2%cGqA{60b8o%&ZXp%*i z|I!u_on0UAz2b;x;bc-|ZNh#2`wQvKwJ-+98uq0}*bqEAu0WnaWoT!uBu!Ex$Ri+; z(t08M5I3=vbeho1U&Xt11*(MJn>=RQ7^>7ry||ImZKV#Fh*fgv_mIF);O#rMnBRllbTS?FmVw#eA&ayek-P|rC+ty3XHo%6WV(Gh z-8OWtC0p3gXJ~QD{6x1CGiAt&TnKJUHNv#wz>aUr@daQQ>v?=qBuWtCq_i=|?_~8) zRk-?YYYu1&LSM9RDF;|&W&iw?*~%M;Nhe%R%w?Mm1u%dP0464P4%Spo!S)y=%uyx% z7xTsPT($c=B+;u*QjreW*Qc5E?kgFNVd=}=bEC9x*ba!tg?~%xU|Pj`XOC8)NBEaQ zP+7q9xG0CS1RS9ZFa(y}y}pF>?4fiS)*HuWvaVro5(2`nR1SXC@Jd%W2nyEhOwyoF zjW^rt4N*t22W1YloUv9;7@^P**L$Lt&Jt|}a%}hV=&)d+kS&_vT~1$`BWPa!K$o5> zg~Z=R=gPo|(AtCF9~8IMZNKLv^mfU0mQIo0n=hG0gEt7DAvK&^@b$T8RH@_e^|gXP zbMqId9HAf~=_oq~{u2 zJJX<|Ob9G={@`x0rBZ>+s{N4;ZVEBK>?}<}Q5#JeOJ&z+qtevtyd^^?-OBS{p07Bz zL+T4^LCYQOcQR)M5bFTRB{vpHeQYEgvy7Bxt35+&xMp3QBW8<&BqiApUg=phVDc${ z02Wi9_Qj4sx20G<#w|bL#n`joe!f&$TJmP+6&7;8Yi%*K9B`zjw%p>t%Py&795e zsux;aBU~(VdX|l*BVTtL!}{4*r@&)~b2zHEZ%=Q%TSvP=@i$lpmwRkwHd1Oy`n*`4 z+>eQA$$~_o=Ll1{5q=l*Ibu|QzaK%qQe9>m9j%f@x;n;Opeum`@Ixb;{kU(0V80$o zo?6|!>N`N`{P;H#rl!=BgjqCKc|z!)kB|N(J~V$CnT*&dl$-HGIEf_4w3L@(JOT=9 zEoP4!VPQ>>FhAn0unR?8{EQV7qrr=jkexo6sE6Zt-oKW6L8%j9Ist1ss0df~GiMiX z23_P9nLQe=_wE&KlUNi6SG1zf>PyBmWA^M@PqG}2zR#0uURx3k(YF+nOyG9@_n z!BnW(qG_UFQ;_L;)jV>a1~UdyF4zicIh)i3|8qr!+4K?-cWa^yDDz0-@bQjSX^PEB6x$xEl4*`H)Y=O zUmI7Ns^M$)@(%5xH|ochY^>4S2a(F=TtTCwg%wawbm@haBwh>_M&b^TWaU3FEs&E&c^dz$bUA`(l3#UZMA4f3zH;)H8>GnHUn|A#yY z_hbKQ*?#--l+FiIq1kbM!QQHsnUA{ zu$?z&7C_{1!)Yhzgj%648d{Fa4(a7;Ex#?l3?$*!e=-OW&@*-*h?J(8@cym`1>rHf zPX^n4#+C#&xEqG8{gLq6*N!Isu1%_=iuXNQt5E_qSy)#On+NGViI`vWBFbg*HD$qW z7B+1(v$}Fz;7L;7|#s7jT zVZ~`uhS6)2(u?I*PlmV5^iGFtTT&J!qg{ObwW=a`G^$=D@b_XZi;u+jXAxpbwXCiQ z=@;1Okr0oyk+KF&_QPjy5k32Fq$jw_TPte+%KD4MhM2zaAn z6mq-vtVfVOCcL!ubS>n}!ZMTwPCU?L;lfO`zX*q zVaZ^B)29@oAsRV<076VZASIl&VX$l=yTE-V)bM@OwR?^NUgyouEwt_akp7>@i%M-4 zr3h75d*VO4s|G|R&vp!TdA$7IP1N=yLFu;_3&)j%4oxC^_pW<{J(rB?1NP*;eD%_n z3^>BfOtLc9^W65H_|JnrC=w@+`iQ+YKJ*{d5lv!l?ILp4Qt14&u_HZ)5)TGapo}!t zP&v!YNEZQiEmwpFu2xe$0^mZb0EhM5oM}qzlPxrlpFB(lN z?aME-!-_*3D;cv9)aYkF)u9smOhkD+vL3*0zlHozd6mTDmdO=R(Nf$Z{fxKFc%8ABx|^j5nl{H&^4?JG$T~`TfbThPOgu_|50YrlG;j zv2QGTWUbErgO&=`&+ldTG~mp9 zUg6)v<3n6{EoxtQBNGrDjg#eOJ)yMzj=C83y3*Q!9OT+w-$`jP7rQXH|7mJ`9Pc<9 zLn8t+UJ0_*Me`B^daqTfkwTpzdUyja2~h(Y>uQvcDX9ZdWCLRrcJ4&rR=@qV6PxpK18(SpiV-Eb$prvVb40ehv<(@#`&is+iI_mBB1KB!?Yxwsr*$ zliS$lnyObS610`(E?X+r#}JazMgP-k=0otrLBSP> z`AUKSd`LuVj=CyVV~!b)Baa|_HG6b843yN>6(&DxDP=ORLZ?q&Yhbh$E z2I|A+R~=@_X`0j=&Yt2)GNlhd8Eqc?t`$5|Mg~##?$hV=FYn0qWITN6yipU5C0T;K zhBHW@pGLn~inF;yl!5n*9W{VxXA^7_`EwQJy@&2Kg7ReraRS^fu!MYtZk%6+c(HGG z3q)FE)o(5tF0SVo2eBaO@`fnBm0y*F=aKPg&lKKM!R&R)6qY?70Y-WS%mdMkmwfME z-20dkbnAJvcy9K^fPD~w35W;w`! z(o1%ViEsnT5C{hbAsN(X{UC0%DHJ(8TYJiJjn+t>d!FmLju(tjg4q ziJMh12;^_OeWr(UDRnfWUtlDVv>EZ^nDx6qMgL8HaHtH6aGLoE%v^)4+lWXuJd zt2q!<@FvQtE74gJ-{RV`s^_-9g8`s~l@m-OO+qV)*qGI<+kZix09q`rLRh4sDLW*;MQ;a z#6VJ~;9O&3ZbF6rb}rgqexi1GcM^x(tX#DmgG`5I>|KL(M9WD#ZZtWWgLm)PKtK<@ zWtd>ZMo zYef1uy2DI;`N*h+LrSTVUjL>Hkr-B5=yrGtr~TZsmDbQU*Y(XEN>d{g-0PdHRx}X9J-zp>l(WW`O|iAx zfcj9Ag$EMD&A1U*y{Q2=iS?`?D#P0c51EQOYQ1v*jw(Z8IMT9z`j-PsHBmf_vNtC_ zS@^sZQY;a&n6q*l`R4_iTIuxW((?gq91l$V=6#3IqHGd*gr7ltbL2s^YTTQvtZ)vX z&Y-}2$Sl~F5b%=PGn6n{hynn*2PLVmOhNfXrH~Skg?SCK}$c5BOz>7 z=ba%cAAO*1v7Ap5kcODM-`BOHdQbitHYTazCJY7Md&GO?t6hrN5Xr;}Q>rXa;_BN{ zi^w3JQJLnK2PKh-;}EDrX;DXbIH37Bzk|$cXZ^fMKBaB$L8{O)%!QZB-<02 zuLNlYWM`3G-)FS$xZBlQvw7EO`+vk9SW_r&6bK~GoM74!#;N9f&XNwY>HO&Y=Em|C zo_HYyxcr(#|MA<}Pwc{D$FhavinW7<0*8CjrE{=BvS#_`0nE(T{ppN?f{AtMi_drSC8am(&HNM36v@mvWF*IiRic_A+_V*zmV=sW3Xi+; zW3T1%Xj+p>o6%xdXqzRHyg%Q~y)bW;YKkNLtDQ#WVS8zUCwSu!EV&+e`7u@T z_Stj7pqFxAsrUN_l{9^7NrSgFdhUYDNxGEYij0a9g+%=bb5SOnZWJ#tYx{iiqR3i5 zPGo(J+3&2@Mv~Fd|K#gDawJ|NC`nr=Sm~AbCBZrd*);ZaFUm&cx2>E-f zl%_CwI8Yv~xfdDna0?@eOeEGQN?6I^tov^43+!zS)#zd|y+eN0;l}nVKp;=F6Om`bM~`GY z9cs;Ghc-m!0jMEczS~E!!Ed+JszogmzZ68%IhWs5-fTOQkg0_rIy-@lV9vsOA+@}j zbj?D3MrSwgr3UU(ex~OLdUh1xf-&Q1#Zn9TGm<8!DLyR8?BX7ovUfywi*AJ`yh$AOi4U{%&SGQRfAQv6kcQ&Li5rPOgQk$4=U&6i7av=EN% zXtS4+uruRBY4rE;WgeSb@kVzVgXKVxp%GPL;+>V{U(;bK1%)W-+q4F`N3dfp-RS|S z%5(^UVEyvzNP|Q%y$vZGQkm;psteH~=$Ao=UgKbX+l@U;43`~OEg`NuPdeOLQ5D-7 zHWsH^-%51Kf!21T8-t*Mj>~J+*w%pMYC6=)^hY>|a9{C??zrxaz8?=Ep zw#rh=0;u5}IDTL~TN+<#wD;973v=|0u-VUW7M1H?w0&Yg|`N)$}E5WdX-bhzWK^k0E3|zR=c?tujzDRGWOdl z@;4J>)jN$6!Bca}&+O-eDs}y$j;uLN=$ z@8?`1^|)NTCSl;7vCcU-sNq9*ukPl~`}1e6dV3mTE$C4;c`$f1>wA9+M;o!_M}WQ9 z@-Z@nhFB(%GARQwUR34BD2=sAwshyJ`63O~W!NQ-2l#8t^{kYdGPeMZq`^XC)*Kr~ zUzmR%k>+Tp8;Yunn=HzhDEs9=x^_B@PC=^UGi)F=9bXVFq4`=jlqqzz023Bl|1|$S zD`1@a zb;tLE#!Nf{>Xan&^5Y4~TAf!VMP0lfjA+=*=;)C{@6X8Xx6zJWkOsN!Xzoqx+?%ip z&$pBzf6nhyxtuvdxMXGxTY=m=22HT!nJo9Cy3pGp##k7l%DD!|g|q51zSB56K9MH? zMm?H05`2~B#P!LgvP?4gTfNUlwa#MUI75)JxH0Sx1wWn8p2JYx4=tt=N^Dh6r1VPW z$3{3V`Gc~#{$s3Hu7;_)-`><^$#;H2wt{+mG2rQc{pO1lr;8?I*wp zt2~ihpOLPceK%>E?pFqf0hyp@M06(7T|8#;^Sh3WmJexlW8ELuZpM`U%17x-2yT+Ap*SYU5Dkep48A)j7DH>jJ*fMRGsd&Z3AiMR ziBgD@i!=bg(^?1MTVg->L8pwXc{1l(mmuv0E(!1m)0looQ!at4+BKdO*R`*oK&({e zg!_iheW@F+($t^G!6DVw6NlNtK)x5KOe?umimSa9%G*f!#T|Ftj~>Nhx|H91l-NcB zv-1m~*ow23mM!t%$T6GOto`ZChEk$%4zX%OTqT28VsjwpOgcd#P0W_ea9Kxt&?A5Y z2v$laRgQ>=uMw_U&Li)+2O>;Q|h56SRXg#a;reZ6_U<;pd7he z%8u7M_zDWQ?W#I_Scb< zVh*wdMQ?7rDoDX0&4U@LD09c-L&BV=SDjV0gz2f)w$@V)Mw@GlpBkT~ErYL??7tj? zz9O?o)WP;MpCA1V;8UwUs@WRGhKv=>yZ06p_2+;zD&Hlfi-LN-fx+vQyCDv=D%Zgy z%5Z$KL?sSYY;$cJ3l!E?A1_M*jG=GM90pmao>qV&)ewL-`uqxi#gsc7!7-3XJ=l%8 zjTI=P9L{L*14S@B)d@H0C`~W*NuHuNZD0%HIm2rlBeZ&z&j~E zg9aObc}2TMMaq>GO-%nrw2?+_kIhGs&jCX8K)yaaRsZldG#vqwx=NL(_}zF1%cowwOwZ_ggN}jf2m~ zs)E)jUtg#MjYJ(xNvh@jAiJ7F(VcO(q3@r|9yGp^$Ca3 zWumfZW7&7t9=8DEhR~E2bj^8>_L;OxoC9aC)5@0>zmu=FHkg=Jhf)Q6>$k<_RMdN(LR?V2T`qw* zk-Z%w8tt#<#PKzmyBv!0{K(p7^{wPm1S!!3RZv-*pFONj!Z`Wt{z}NVxR|$jT=97T z|6%~tfP(`O(VQz)0$MB@)1zm!R;mp zexL&v+o)E?YM@4aB}r#}1T=ETJOVa*+g7E>?>Xt#ldQR^V~WjCIyD2O6XBlA&*N71 zGAo9UhkqwWFQ)F>wkpy&8ayQAt*3joU$GGl9q^~2)I9HZf_vV##V2APiu=sH5d8j1 z*k(i(jWP5_S+?*g?)+8aRb}kG7%xHTR!thYLMv)O?YPNXQ&sP~ci`mi5yY>sLgEjv zaJ`xvHE*T(pc0KBzT&`ndS7AN@OioQ|GLS--3Bzll{(sSG--TFk`=N=S`B5*Gi+I=KB+b2BmlQ z-gYheY;<76!#~QjHiDuPA9*KF7vfz+ydC$9o(@t*u8GxBYN54SF#IDCf4}YyuhM7^ zJsgKUo7XS3jn10Amg@4XSl5xd(79IPLU-A$F}o-O3i!|jQinAz6$41rM!Q?^r7&md zBQ?8Op-2u{xXZ#{J3LNzsr2|Un=X~m58aM-Um2+Jg2>AO2lBR~77PF$E&*XA)}WWt z_TB`dmDTmjw^9;x@Gppe2@eF}nA?PeWOnZ4*bQ&$tPsTfE@eVhQZpAtH38#y`jjV1 zS)-6vz>b=z;GB~^*69qLD=+0*0c8(f*uCe}?wVp~wNlO)DrFG0Z^Z`!AXz)e##Z04 zr!aOCxm46vrK<8X{vVeiZ9G4B-U@QWWuEn(HH@o;B+M%LYd#iAWi ze^kj)Bd8Z&7a7TaN@Q2a$xCL(#9CUX<*-)FBEZxp)HePe7vl2e_}(Fw=zND$CHj1p zV!k_B>{wHEV7sawAn%0oqfhs5n~qL<%bK(Xnna+9_l~2zEnXYV3pU9nj2pVY1H z2+9)k0WDXLd1GR-kgOKMnzYzB7)G)()nEP=s~{N^37K_&74Yr|oj7=?e+8$MDqIOt zQAMoB1!QXhI7s}2G#q4&FW6fdY+m^RMA@YWq#pq*>T0OTN^z0;hSu5!iu*Lys0otQ zD$T07)zTKvRDYG%`h>B%b)Td60~BLkaOl!EUwz7vfK5hu`)6JoIkFn?vZM*4ga`o ztbmUfKb9PqSB>%$;eKTf#TOY=Q+2+sr*%H9IOgfX&pxdDt%saQrQTK2{F8VN+AHBcNl0Y+#`*tu(l~Skdk6JXmP&$rxYr1IJ zWc=L9i95hW>P@=Hb~G*jEWLx^RsYKmcxn1E>Mw*V_iYz=0s>w>lX`_9>720~;}NO7 zw<1L-ONr1JX8C?R0UcL0KOdjC^xS-i>PZU+_m}U2RaI$R0|*Cu;Fs9SZRzA1@# z9+p9MteEco2p}&P-WQ{jU-VZ|Lcr}CoeaOT%z42siNbb~8+2x78@^ia9m}4Ks`MMz z={4_pXU^PoIyeM#{HGG+d4Qa@fkC7u%8GCHN)z+84dLqd)Ir{T4;@;4ZSIXdlSD*`*-qK>1L|Ykls9 zN5I{u;x9oQoldw0Q_TIzvPT%ZoNhcy9KN-7Td(U%3b#lDtB1R{&m`i8Ls7T_c?2iZ z#P}q|{GMqT*@{u@gb1cAO0G^Y7!du@^=?V}(G=smh%#GcFLgEX6o!_80^(ZIS)5AS#Xk@=ENbJHcHNiZ#WqWC zRi|M0XKYk)?=X>fZ7Bt-CwGpwVMJ-wo?=*CQOzD*SFC;6WpRtmZ+ATD71|1jGxgo- zwE>#A|K|FTqHS^;a_;`1U*$coD`d-rr8%7KSm>m)@)U}7c7Y5gB$_4IY4_lHteFWA zK!2V-tL@_YrsUGE5*LZuE}c%IWopL4w$m(`76srVU~-|vw6T*eu(5uW{w*wV(I#(1i;_!D}_|M@NJvoZBnJKC!|kad`>dZ(>y1mnT;>&?6Og*vawJ4 z>yJ7WS%oFGqUjbIIA;&gR(dtPeSBBS?2dhfvyV|JLlJUAf2p=1}Po&KDg3hYr^*9TrLHY_=UD>e{WwOrzWB?xV;Ws}gd_4&Jhv z8yzAeG%l%{cjY{2kAO1IBy*v>a^-Z)BF}`@v*`znq`Z$XOnwoR!Mk z6aC+H27u!!svWBpIvl`T#I{$m1_9QQtq;N#)7*@C0v95ZD^bHkeMN8ZNRt5zNe<18 zx0OWHge`faf1-^+fgneR27>^1s2fiucZb+g-^PZa)-r`^{F{29P7SVCb979p`J(>1 zZ32wV8=Hr__WgFQZE#TEB$5Tk0=@CEqXSEEb@25Ei`*xQ!>#Y zU?GQP*YDWVWV_=Te`7y4#s8F^-dck(S_vEUM_K*N8pKI-wE}3uG-Bq~GFeoYRE@Ih z(HKu*B&o1AAPsPkws4ItLx}G;3{GTl>!;>zHh74UYPf9BFKs!JFU;89I4M;H{E906 zY=8C}5~sCPYxv2`_cRJ&X|MuFkZW#Ii(6P)qxn3M=&=6*Mibna`>Vxfd;9H>N&Zg? zOlK~luZ3{on!r?p@u-L8PdSxi)QeY_%QW&2%EST9$A9J&o3?r)lgP|g$-9VUYh(6? z;aX&ZZ_;c+4KO6+j7<%GqQ6lj=XZ6I9lH%aa8iy^^ghwrersZvZ!*5$Y9&M9nyt8V zl&0Ka!-Ozhy(c@U^f&u_^I6>cj(uV#cR;*Y(Pd~n&NkiE0khZ>m&1rWnT$f2-Tp;s zIAC-mW0_~Fb+$O=>=E$#^7?f^;_V|~I5|*mRh-^K$@5JHPV?3IV(591eS#9)`VTbu zkhN1TRg1=Af*I|-qnqoQs%Y%5oIacHlC{4KvZ4vTSp6+yWx@~QP)bsTypzM!dJkt1 zZoPCZsy576=rw(j-FOn1(%SX2PF5M5xw_@Zr;j(vqgEL5)%+(`E9tyz)r!-O_ws8{ zvvW4lySGr2dVbr6?8AMb+68kbG}X)6`-TU#8$}s`(c?V zP$6yESg0$Ct9E81>sdUT4f)no`j7DbJBf#bxr1@#CXyS`7YkVO@fcmW4uMCSTvsSx z7f$nFT7(Zn#@I?=>oKaBc6`Y~tL$ zXF7fnUi$u4B#cXMi9kH+Z@H<>E>{-`Rvk0`47%Npm9>{JDqP8p`)OH^{deP`(7TE| zvNr?YWY9GT+@-mhJ}Z#IFZCE`#eQ9Re`DUfG5NmL4dRu;yRS3Onu4IBgGM6fqSsF= zjJ+!@opRwTSsAGbm3(Bj0CtOq2K041k}C}p42g<^s#1F61PG}`pyE((eR`qviAasD zWy2XVn-pU;vLVTR{-B!}v+-EXR**X_Lv7;CtnHsO%2>NPC1oZIb!r&r!{@ce;%n2! z@trp$lH1M_#NtD(!h8J$kr&ry9Y#KTap%W#iI{a(pOp;r^|{Z#QgG&~7_?FUjnHf`N;Y@?g4rwSrkO2xzQKYpvSG#}9h%)kC>Y`DHnKbsSnCQUQQ-Ji}7 zf-x9g$27dP&*)sr;NUzNS0i&=V@-6jlW54A7)t5@3p0+z#vlsN(_tt3aW26n^U8T5 zP4m1nwBKZDaPM{&8(f#}v+dOdZ*!LBM^&YSy%g@q^rcn*Nv2>yPXhc4lAie5{vkuA zXaG2v&+|FpS1>IbnwT;qXc2sG7?s|kMaFh5J=MxG?jtOOzPWA#*dqq2=5zK(9=iDx zip9xuRa3+$%{PT+nvMF*$D!-+t&*wMn(7B~&sR{W9lbMOVG`!F#A~Fw`03bQ<@K@T zPYDrFmY2Hb#%O&sOuN5{pA*m(9bo6v2ve}2K$N6|s`%=5H_SC0VKDUI>21(i4+t}{=&klmFq59cGHwZGau43--h{3*YQWyr|{pR2Ky zTeR=v9v%WnUHiGXcnx>tQ<1?AVA-aK(&YF9LyRR^dP?;; zK9mD5vU#mS#d#GY|9!c!flq8k=-{hw>-prXOXQ$!>BG1`3e`MmpHkC9Sra4-DPK# zbl7H%W#7R{X>kh-Vh7QU4|-&}BERxc+w1llVs~z_&;C>@5tsneaRbSZXzJ(Qz+q?5*vp z!t23k=$VzD6H!L;Dj*UEjh(n=GW2N&1g#)>nLW{$VCRt&(ResH9X_3*2g%y7I>Nx; z_v1yF*Zk&XeDG=+wM6iY&+j7$Hu$})6{ZwaktzO}g|{`???(489`n$|luJEaLeq{| z*p}~ow~PS|8JX^Lf%n)cBfgcDmB!1E&EQtCWBP_b_hnD6Mk% zmcs&Xs`<8ufk%K`P`s##;+p$+)npMinwC5@$`D4C2ST-lY#PU5B#qQ;ZIMXh!M z&bK-GLyXT=SsSmXb8g9JbYQ-F_t+qTP$8CTa9~cBJ2jUweV${!6M5%q)TWZ+NSSxJ zh+2=4gL3X}K`h;pFs;H2gMZ8(d_Pr@tkfmGbcGEYt}@Fo?kil<6LdS}bML2!g zQ{ z!J%B8KNQsrB%dEMuPos@cH#SA)ZROOa?R)~pgm}v+Kz2k2euh%~ z=QaINhM^ISQ|J21=61yM5FQ@Ue6kl1ZNA0Os_+x9&pm{w zNg1kOzy#$q<-+1+9@%UQ;%PI@jK4ZOstfw~$8%Y2ea=2nf>N`hmd|(D>JHCeaLJjb zqE=(|A+`T&oCfewFZ|m`#Bz10@zLfI_#V1f}uL-q$ ztHDMhMP!SI__+(G=j?vfT%Xf7&WgI^z{^Hy37kyvVY6e35ug=kz049Vy2G6R(} z`9gRlUk!t?xjMgoj88VhZ8aZ?60(D)!}N!)QcG^$&yA@Jcb6&scJxa6bXKMGoKBM3FTEvDByYJDBN!|(&j`4z}cvI#1R#Vy+ zDSutena6{ox+ocg)mwh@@aR3@;@MKmc-S~e6pbYGQV##YWI(f-{CLmq$zwTg7)d^h z$^YhF-UGa8bN96$K~vJt=E&(gSL>~HbvM2?m!$9_KN+gJmGi(mKwE`fv#;Dl)i$iVbsi%m=}VuL7)X7uTG>#osQ-4r?~7Qc>>nr-b5`!ermRNsav0|Voj<5pqO)`i z#<8v|Mt$>3j}ZbjDUP052$+jC$+wPF9~BYibVk!m`8-5vS+J$~&K|GA|!+a)bi~Qdg_4t4;%Jb_ktcNay6X4`Ae}J{z4H@vgHw%RTX#|5B4@ZlmER z;zniMeOy^?4a=pa)k^uk9?EKb5}d0A;w5_yQlx4Akf(;ESH^f+BK4veu7Tk;6Q}q{ zamOxI$?tZXw?iqIg0Kj4n)@$1-f%{ITMI3;>!|TvEG%?%Z!Objk6QBP-NF=IJ)t2N|eg`d0mU86;#%ss)}3QG3pKcf1a9@o6{$)wm|H z!YFNi>)#Mq(cvlav~wMk{lNELsCV`*YOE=YvK8{yuj7RZ_T0F&)O%AHdiQCZWLR?$ z=I{397p)A;iB?TUJiZ2^95zY|ez+B(ljTv^_Qh*=h+V8VA2zfBnXi#<@t7#9f}YX8)bW;KQS)>dKi-ZL@+=C>={OwDeAcz87f_xcld<=4tCcVK~8B`foOgbV-IRY!d)}hw`>W z`+y7wF6&6d7^+9@nCsiMx0g`R=(H5Irz08}t`o0S;~U4ZSG~)^+yRPCfBFpX3mXeA zkZEZ$M4@A0^?;>h470S|s$_}Z9rtfnqP@+QQEUHBMZEZ$pQI=xBa1Enez-O=rY?&A zME&}7x@ulI!=>Z7Zp%lVADbWi_|LF@86Mvd_E)UXGlismV$-1LlSi5$I;uqVah*M{ z6CRS?&s%$MXIj37gMVyp^<^a_rf|Md@Ey$iXlby^N?ZJAMArkm{9~4*|HX>s9{uIR zH*v!c9nYHnB&-TM8!}(<8-{&S(cO$RObTJ*sy*+B3lm#bceoAylG}CELEEV9UkB=j{=OKY4Q<&p)?BF4dyr^MoCqy2QQO_X%)n_? zq8QCrQ^OwZDO8Q;dm~rIq|mvolOi?uJn?6Hw4|@8f(!<2SOLGY-%1FN>`Jb1)zX#W zUgn;6Mz5YcMV9;O%&N2;A=WE5nFVJVV4Jhx(wi~j#ZW1G4uX0K#7YWDcbFz&Uo8F$ zJ5g#*J5KoFz(ilrjYv=lo$OR^=L}(;qwQ8zzJ{sK^{*mJ<4Q+(O8ywJ0t6$wu>o*S zzOL?S1{e3FxtakrlbI?quPq;MnDX++l#dUklQw9@x-aHQ;~+e^uyZlRR#x;s+I!!7 z`=q~~E7~L6_7k@Bk;EbS(b_~8Ws`VZp)82}D-DPPbOU1tX@d0XW zPcMa=?xlV7gN^26%q~}da=QTVcEoLEFH*(o&j&Su6D9_mzxdOZJJRLXN98INUFo`^ z^V1A-9U9%#)9V+8*DnXg27h^udQ|JyoSDpWr-pl1s@K94>|0ldP?gV>_B7f;0`VU&T3V& z7U$>prr>n~Ug}m$W#VC;!x53jqpObD_(aXW2mWW_BCXh5>jBNy8@nhJLuAkKQm>MssSB?J~ylbRZNNj215wl5}?yVd&l=;HIH2Ja_ zjau%k(tO%N3PvWj{xzhg>_ejbN_X` zSG9Fr`#d&LH$K4TKoQ}1~W2NU~K)rD~14`_CVx~)o*YR;SS zxQLvQ)vkpG)+jMhr?~H(ArsytAE{8x(s8IaO6s68w56r&OfMYzqs>X{GAYGd&%ArAb7{?L9;#{8IkT zUk5*n^jb`mb1Xz*#cO4nqZ9YtrxZ>l5(OT~vBUgI=tq2kLwgd8&e+;X-?jQQDie=4 z%8*23gAmu&$+AM7nP=<`m;!SjXoG-t6cb-HL|UOq-S8Mtb)=>*GAuY(M8SESP=LwV zf&DNN%5KXlXX87ey0rVCGYV0}mvhQ+?rgKhU45n>3jsGvz_nmFzs9i5s`;PM=pxeCVM z@@FNBe}!D2eaS{XI!d8`QiC2>KtTws%GcZIl}ZDYg1v&-`jCPE2!tq4DEn0~r-xfz-^x;GIYXwBJ!`f_^qsm<~PY)sGZh zl|XnzOZ!1NT#rkhUYj01H@$M*xywKGe{z1o^!(YmEsnCUw~K=98F7gej7rMHa&}Nu zheXheZflOZ`&>Hb9LI-tzUeM@c3hbv6p~@@POQc_(K+%gk(MR?R=vlh*M7}0tdZZZ zZdF;IQRT_{?6j1?+}1>hH?|lh)FS8>{48vI?OinKl1Q6&`K!;SzN=h}wZg^E{Ztdn zGNwL4tAb`e*_E+nbxX8lx8*q~eP-cnukr1#E*o#I)5kACd|ZKzm)<^;zB z+~mrlOoKLLx(N)fu|FYqGY%a1t9+QYXO}wO{XP4Of!nhq?LE&V12$BV;bfT=vDX+2 z!z2t@-QsNlE^dULN6{f%T`!oPTbZy%Oj1GZ7~L+>I2H^I^tdM0CsADHxtPNHV~{&8 zc1Vn4=PL=|B@NM%;Q=AXBHQU;T$^udnp-a`wEQjtOhVa}!wadm6K(D-U2$)RJjY~5 z9PqSqfK-U^~a5r1UJia{~S`G8*DBKjVrbHv7HmcCBI?%mTFg6HALXJ2gO zymBMO#fzzL!}7Jk9v0))(r!mtn0js-LQ%9~zeDB?dNtl`<#n)8o+mQK`_|Z{g>~mya&F&z}i6xoInYS>Ql!a4@kZ_Pvgy`tMzI?9Jo-nA=epdvo?#$ff z_;s>bkh`~LS+emY#fhNq0zv-(88I$X-3cQ!av#N-83sPH-49xP4^$%~& zXrb>IXz>)e%8p{Os^swEvoixA5r%d~D|2S>YP#GOWu1Vp)E`ggBrh%}cJ1;k(%=xY z6-foj{{a4&oZXRua7 z)v&WM=@EBK4(W#ksO1EjE8JOI{{Y)_;axiWF>zjQ&az|vPbf${&=AUgJ%7f%a^>c* zvMPy-0i#=&*;El#ZeGB~O^S`p5fzz)yxD+;$B65#P(}z;dxz!#t@OXficrB8&t}fE-OpN)Ksatw_ADDfy5{}fyj+dkf;FBS&Q1~Z9&`PRUMHLNJj{OdVdHftph*fk)|x;m;V6U{29 z)1aW62x(Mvh>b5|d}|_3KeEiq0|9+atzrhWQ5-oQ)2QHXyzgRl@TfW%Cy=r)7WU6B zN9E!_xShA95@ZoYBx)Jw98{E1WCHd#Ct3oD97YUi5;alCk$2Or%|X)!e5H~@$}RxJ zZRq9a_s}^NngbiSk%%@`79fp4)1?&bSmcT@(triI*+zi)dD5a}5+PE;=K9=RUiB0b zQKsi^FKO76eR<+pf%m%$lssWE2XBm-2{bccN?R`PL z2%8)cf{n|ADZQ6LZ!l{jN~5;+wf_Kts1i;wuS@NFTkonLjgyZ6GH0+{G6~2VgC6>W z;B06Zr5@5FUMV#sYpt}u#-gOizxOaq$5|{|{{ZPcSf9FrMpMHdan9otB11LY@Fv=j ziotzAuuvA`YL*c?8F8|+yLYwA9vRdLqWq;-^a7Jemmb}&!$I>`E6)y|82 z!K!yusJu&s@x5)<@5<=VSiAB4&-Uq{vY#NWtC8 zy0erjfe8%KDv^6w?_S%l5ccMcH*d;^2la34{*)pP;T+z+3o~(wKq4|a@@Dl0MYkRy zy;^HrGreiByEpCU)DX?wyA;_&E4Q>*@OG?4iX6%G1~Q^T?J3Zz6g;%zujc#E3x;u=AYOKUMrCDs<7cP0ljK@6%HHIt+xY8=hwGC zqkHPmyfMjQdUX}*y3L#=!ZF0+IGaqTi6QJqCAFB}%wD+OyRVL0_LT=Cw&G<-vcg0e zHV!1=$!~M1*ar2R_}ttYlN)&AwVOXsrNPLSCyyaVsX&q&g09P81;`wQt@iD0t2=8} zScMmMsbZBQNWXGFwgTNGn|MYXX% z*0H|0=i#Yxh3^wEK&uRcn!_UwruP;$>I+-LUbW8WKZfzbTzOHvzR8d*;cv&QE&gCS zt!{75K3Tf)k=6NIi2nfGr+avc>n?mTVj+q7v5A!>xjyFC7So-#w$;ZMJU5@po4aC@ z!!;pMn-;99%%zD2+*;vWcq#L?`tsjjnCY$fWuTuPPt z97J+2EdeUpR&}+~!Et24#W!e}Oqa*Yz%nTc@+q2GQBXUdbz1H=Bh;V;y=w_;E0^@v zH)HRS33n;YIhVVTjPGAZBNCwXITEx;SF8u(W)2&7VPC9ph%tDzqeNE?p_shk4n%b?!If$JMP z8;jfJGz((H18WU<>~uDubBj9I5=TL`K*-9A^go1oRZ$+wSC)Wlw*FK=i>o#7WIrvu z>H=Jn0M%4l{dJ<6Ndnfo+iyAn`%L_k)D(?JkHU!JKP-TLT>(1_QA#-bVBFts9X`qi zGc~Wv)ooPx&|qNp(h|(#;GSUK-(`2K2@1uLj?(g8BIe)|YIp;VEMdfnnYpP_x4q9z zCxe}zX%E2k=o?sZ$~VX*j73k-=YVnd<=IFbP>NF$I9plcIPkj4EsHxS6B zj;z-OZVj|M8_-M;$b>PmJt}2N8Ohf{{nZ0Z>aG-PZyLBnaK*396Cz8SBl=Z^?hxAg z9gR^tAUEm^OO5PEfCj__0E7#a2H;tCzlA_F{Yv(hl14()Je&wTil_t7Z?9hgdY>vN zmE!I=ljB+_rf_5*gcJZW+}~bAG3rGDaooW+1Mqnv#>P206LJJ05_-!qYoAXQ!*xYgXEa8 zd(U~snTVc9)M7If5+*ouvadEM8bw24)by`*pSwv@Yi8J2;6pYxNzBFWD~}ikK|6+T z%POrb4-;`S1J2%)sau{NlU;3dSYdrV+%q!g?jK6+wZ?%lsBn-l6Rtaz~}hG2^85CD6q2;(8(pcZW;0x;HS z)Si2O-wM$EHILkWmd&5H;>>$VlswsZ`5~mmnn>5&c`)17?G8c@Z~^O!)EF|2F}F2% ztB&P?2XxL~s(S}^$b3jkPo0Z^2kIhu0+yK-*VKoCmR>e>9ET%gSecfyUZvXeF>|ot z%f*>z$DISkDiTzJE$P0x*KIj-tn~e^UdNv{Mi}GU@>!*o6&ZwWYqi4iW({J0&wnpw zmrI%9>DPI@#q$#TZ+XCuOlTyY>7Gk=>6Q7%C@3G>NAW9nL48H|=qxp@#}&_LxK$9d zG8SZVFBu?(zU4=sQC&0Z{TT9(niVxwa-45<48#OHwi@k!jdR~$!&=|TxX!MuvH(L1 zE%Yp-YwhFGrn`Jq+8Z_=FK~s?%QBPBIM^tXB5u5sz#C~=<7vnHCoxCgv89hI9Wk@p z7rHgu7Dwgn$?d5Ykw7T#!baDAHz(z~=WNTvdf8_ucK-G;rjiVp&N`CP&5~1&Jd7+0 zF8mvoudRp8^6OcdmyZ=}Xp=941r}sG*xi6TXfJ-Xx!HC8j(1#_Cl?zaM$#yLCh@TW zta@s1_8PluEXr$aRCj#2@sb>WW@i!rk!Gkb?70X1(!Qlv<6_`gU#6AIer6qX{Qm&i zGA!c}KKr@?pq69+D-BM!Bd4f+)pg#_EZuYACQ!4+vRE>kGBWw=q4TZn&n(UnW0w@g z61cns@leWD(X|Cl{vY+FW?6|o8pUV6qwJlkS*3PTv&2?tnkKxAsL^r}jeR48e3skU zhV{>~V&-^s>)NQtae{1!9rBk4BQKc6%_tPBd(1=;J6&9IQ)PST#fF#ToP5T=OA=EC z4(Ei}SyMZHwkJsOoFqsdGTh8OS)4ImM#kWIYAVa^5ACe>TDtbLiIgLYHxf=W2{B@t z%IXzmkw>i&s`?t;=5W@(s^i-K0F_mc#4|gmZ?YraSTeFAm>7dAHU9ulEJ595R~j2N$ENt! zVx$NvByoshBjD8u4G-P$g4B*-)cWkbbsp-{>c1EX~yR(F`?b>R|D;6^aV z?yw@aqYpEI^c6m+GE(G*56axH{uRdQ&kpkN#`h1WvhZ>aUuJln9J^#=7g(f05{V?R zkg5#mg?X`L|vd&rB;aQpQVaSnWMEJsgP>NM(-ZyXPIdI-If@01X@Ys-e zuive7!;z9q#mcpS14{ree;ZQ@MJ$WNGZKFhKf;K3iTPgOAUb)_3P)yZfTR15O(+pv zUdwJIUtOw&5QFLj9$SivaZVbsEz{vZGV!*m-)a674gi(80@l!GbGi#@>OOl4 z0klj&AfF453ItL@@!&ZB0M^%{5s`rnZYOIEbf9Z4m+;)3C@?W&lnjVCg1{EN$pm@V zc2k6D95Mr9;9RbX2(^W+Q9-d(TaQp%ykLv#=T!s5R*;oPSjxE#$a?&3Oo^+HBJ$xV zXJ9~#-+qTmij$R$aw3I!uyobH7S`QCq@W@5mL-MaFJokxZR6)aPt9C|Ge#SgfnlcJ zH>e7Y8AqFlXJSp8O>MZK93n|%TlCjWcRE^v&MZ{3sZe8W7?Zumx>U#<@q1B~fcs3A z1bK9(K{-zfaS9}6+Do3a29Mq(yN)_~Qu^sqf}<}5l2ziy*Nj}))KD^B7ZQbXm$4v{ zKb=^DM5W^h2OyzI`)CyvjE*J>LmMjDLfC1b6cVPLKP(rvwg7d$*Qgj>+mvJd#n|n8 z(MV$o>KQIbu(7_qXe9QWcx26iTycy@2?Xh7B9s-N_>a@+&FMU?%&AON{pax`<{ z$j~Ck$`#^}vOgwgSjhuzPPNBxF4{bw>))he%E6m8@J-k(m>DlM!D36Yy~28ZM39#^ z^Sy7UyVq=dI&IfB*Y$apPG)R<$zL^B4?7A24Dm91xbu>XsKHS2Tcay2j~xRkwS5^l z;pVpdh1h$}S8MJVr@3K1dSEgi(mI6;7bzK|5-2YiX(n@Tm5J0E)+J*V>s^``&x;4R z;ATaW-4mBHEWX|G6~v1GlS7S=B_=;@y)!SW{KK_y+FuTnX*|6zviDqk{{W|0_n4dh zJKf;WPUN#T2ii#E$^^v~2788E>%6n@ugl~y#6kgFW`0LLdFtkN^M2*Z$){yWWU z8*6+uLeoa^lV`UVwZ(}W=x<%;?wGD#7_5%c{eV5@BeFWrCQL_?n258NRzY!L&*Tcn zM)~efmwAVxUuEBE?(;~eA2mH-mB*1mLy_&@m*usYUrUjot8FfC=(SgAi1xbd;+Q+;L{*3cu%oqf3STiVWVm2Lo% z#4zKxAa84LT=QjX68``}r^pjH$C^1xxiUvAKv{SYLNO%UkUAfZ)~>$t`D51}6idl>y+HI ze7sj&X_^OLk-?tt+; zy-|r`cD_I4H?~;4+BTJVr#t-Ox=A^XcRp2J*R)IBFlT|_Fyxr|;{%BkG_oR@6_#0} zTk-(1D+OTx05RU2%gX2Q#r-|?MrYIWw`=Yk-QxVbY*3*dWkSm$DdeL-N`x)1ro*46 zw>6tC+)ft1RbXUd+!0GRxrLVy90ZMH?kr#p<^KS3!r@$Wi}iSU5+g^D2?rWdSCpU*uBpde$C`_F(q9a1dCIfi z5VU!VDm;u@CS7!4rz7#{Tax%oTR)|{x$W852*|``#$=OG>sEi1gGn=&J>%E$Ruy9w z{{W6MdMVgcjucm0u_K8GVX**JLN7aC%v^tk6!VdB>9J9%BWu+{PsPEp;z%31(xMX4h0{xr55|gPa=AP4{!|>Qd_lgXo#+>d zu{{pj&@tl<7m(FW$HaA@Kv!11*yv~*>nuwyodx%x#(Pi8lx#)V8xe8w_*ZsMY;2k4 zR1AcI18d>0N`ta6(WJi;gnaS>M%_FqkeJxY(`CBvbl@vz}acu>-A2I$U)2 zEQxE2*z9k%f`Q$;21s1IfD`_ar+~FB6Cha0XG@DUw%nfzfzmW+OG*H_vtLV}Is>Ca z?28d?fjZPwe?yx`$m_ZB8lCE*TBxvZEdkc#`P2ZL5hUWq%x|%`->-#PObQ}!6Y&si z-wK%sNeK2*w>ov-tpm;x9-zeD+^&98;wg~h9EVe>Tl&1H8~Sx=7G7jAy^f-SMk*{* z4^_efc^x(e_rFSmg#Pdi3wwy->oJ5Yl&}E1TxrooiR*ppf+D<})>&9%1tP#NAW!z* z`u_k5ikI5){ju%jOw#*GVlKayc(ts=qP^}tB>kOjS+E@B#((YdWRPRzenu-Fa7GZ8 zEC^mCHPrE!g~!?}H^WfeZqeJYGb6zfOlL@?k~vqKD#h;EAq>S6mWZhv5^Oy-8}i;; zGU=||v7b@nKk2ih`j;HfgYPU5n3_WINXf-zL3Wi)qzBQ6P4=~WG~Z~OYb!H9Wtnm0XAL1j3^@Wq zk^q1U#4bduVQoAItEG3Fxm_ABqC1vnww<<2{ES>FeaFPy ztjc&^n=_Bg)c%?JoecP0%e*`Ouh~V+?l`h3NPqiMdyyjujB+G#`$`jd%cZM@)vu4s zW@mw?XfuB=0|y|_+qIl-h@2uJ}uGd<}_b;c~ z42WIh_b~CxO(UboB|;dO!pI4e(#>@rhfpl0yjxFSJ|3C3xAk0Mcf*?}>46g@YCZ6` zSwTN3=okVSUfO~+7OOY5W6WmjCq5G=$c|N>D0rN#P#GgG5rK8|f=E1W4T058-3YF? z!x3NIpu^9=ji-gB%f)Zh#HtERvc+}u4_6i!)C+ zPahQb9pTCj?HGHNft7ibx)~F|i*XmVZ!^wG=LX>9q&caTkA*Baa&cI_gix+U(%d#! zqkk<8h#^|FWXgPDH?aLz9)3nf43WXR*i|at zmRk)2eQ|#)t@hyWs18qb#*4lEHuvw?@o+}}0BGbT{m;_Mr13nxR^|$;Ut@Z|$eyb# zF6rAl$83WlHj^4)L%PX$=7rU)c}J^p^M5_jD;xvLeB;)NfswW6% z;3HLC3)Gc($TJcy)1(_#;7$jZdY$(~SS_aB3Y_dUmw!9s;w zjU;4JRS$Z$-^Zad~S&VO-fe z2kI~)j(DRh3`!zaTb2?Cq=qDmoN?qoA5!tO-k+2;Zhq!36-$+ig(66-?TsIC$Bjh% zLbO&3J}i@2h*cbwUx%ev+aOt$M?JG0b-7B%mM;GQ+F!NzH6y-2?-PQGrb}OoD=xmZ z9J-E5+bL04-&|j9d@j3Vip~8y^wZ;G{YBgI$2?4oNTb7OHGZ@<9v|XxcGBT9oMnvM<$$wiM8%N>L6_t zYDgOmeixu?TTKnL2g-q=lr`_M+oe$SZ7*wFTwH5WLr_ENbm)A|5L7yqWxs_K#irA6g_ zVBWwk+ZA zs0yL%ZbL60N$@wRl_?9%s5eVnnuF5&j+9 zji|7wXU8(0NnzZ2@j?jLxL7{aNdSZS=lhA?hpjP$;XxQPFf~JcXbUT2qojqqK?gT^JoY*_2PbumD9%TXTZpX%ssX& zm@;Mz&pcx%=P__#(?mpsk9CPHW5)Y%&MUN;jMvrw08MuIo?AsUlVl;2D-l&A4aHU= zB!M1pU9TdpjQseMTbp5Z&3Vsq`cF3tAKZ@3jLjUcJRj{Owj_H|f~m|eBD_-TeL%f+ zoxhg7U|1cCH0R5huM96PJku17q*e&(2MN+O+%Fd@6fYL!E&&zO+F^?^UWt#``ODk$ zJB06nnFc(ED;gscvoHSuZY8uzXN{$wkuv+Yu(J9L<h!PB_{c5ugams-4c*~7OmLZpI4T#dW zW?7sDlF7*=NryO0f_NPPb_|ya$CcHPg<#hpuT7bAHsNelWm^(?<;7Mw$s5Z&Vm4`` zWlnd;0A2OjJb7)PJa*P+he>WZMNFBqu*Oat;$Gv3Rz@*7iY%37A36}npyl|Kf(E)) zb6TtNJmKy!vdfi=iVIlA6+~$uSlQ7zg4P$@YNX$KrT+l4EHfePh?tofe(X{O zhYKm9k<{eK!Q*?YDTw5(nnx|3{DQj^uC~@*A+7wipHF2*{kjO-C_FFgfH`-zJfJ*a zy9?cU>C0Pa+KTe+F>vYnoAnoB#_qTWw&Wy|W6vZqUmjB*yTZ(++!6?|xNUF$0Jw6i zuGVpmSI;IxmUD8ajwFKo;jd znZ&A3qz9BzssXBBk?7u*TWSVm$A<6j^3eADvSS$`gUTZ?G{Q*O5T&ol zqZ_xRa!@V+z4WQ=VqIY~Chfnco%21l#V~=IoLKSZcs$Eta0^=c50>YBH7x%CM8#%u zJ4{gbNV(+AkCE+&Mtm)6PXEH9G03F=yhZnfkL4eM{c5XOpwek;>0`J3c`H23tnF zpB`3IIGSkG6pWJEuP$DmN2jm-jQpSUj(2NZ=^=(_MpSMm zRVsZ#!rWz+Q*L4h)dRM6kErvoauqTAZ*z_EF=fU^KJ2R}y&EFPt{AjA9@zG!Rs6Tu z3s&)&!!qCue5|Y<;|y7n2>XLT?lL2BD&%7acx51^k&JBzy%yl0eaHBg{pva6=Nz9SUW^xu%{H<=5>3ZzSd_hAH6%K$89eip9F-0=*zY=sH^cz&j zSgi{*XbG?YcwF0lv{K{ya>()vt4HZ^t&OQsBZD&YjjZSJ-+F+tMz`QBIciz8qLxJ= z$mADWsrXS35wElrlu2`Yc#0}SVOlOAT|wMbp&Qk3robC{(E^_b+~B0#uBzJJ<6Uax zqS>30MPk;wUqEUC!5au{{{S%S;Zmts6kw8i9sX20799u%h?c#lI>FK+RfhbR{Ai}X zY|A7MWb;$4ir(LS5z^shM1`I^4VaQNAI5+}GTw+Rz+0LCb|b=yba=Tya7bk02lh7K zV5)}xi#28}@JJ*1nZ35YyY!%0BOEMAvnvv9Yj6PQ4=v5Yk1C3jHY~W(zrH{LL!;^x zhWSUR4Nr#j9UdI>sccvkQp~f=MV@I0CfC1C1OfbLBjnyZR0u=fZ*E;VIaD_#Q2JOl zfcR8aGwSIVFWT*xEj<0VIyH(}vA|rYm@l@e6eYO7rrxsl3f8|PTh>X+`Ktc_qWd?! zkdeoY1H`f!FkSdZERLm>r5@~4-a{7a5n;#=RBiKe-?CrJw9?PR&@ekR>x+*Le3aQMCV|!Cbi*vyuPCQf_k)eB68~QhuzIGHi?T-1J%A>&fFuKSiQ5E>e%5DpmEn+|> z!se#go>Ft+O($!@Ge_QWyL>B?j}Z&pvKB^h9|p4@QT0k%{P=QZ)24~H4P%^TT`$u( z{^mA6{B#*O*&GsFyl4hAOES4Iv5cu!iZ-G$YN9F1;lmoAUD_b7Awh9-74DoTb) zVt>j+5Hx&cb%ePQ7gu4=Qf+cItzG{B1d|TO?H$^DOnJLgX3Zb9!SW1;A2h)cWr`+u zk%?q7w1nx&)p-R5thFuy#_rSLcO+0?iwZ=Q;hrHXOb@#8a9|9LGPIxW7Cx6?+_~6P zzA|BZh}d|T-=fIIo-&dJ#>k)CW@%BZ+}-yKM$$mszVl^7> z2>5i@(XP%G1DPB-I1iJD3S~;xmJ}=$Gl5`1U_!mL)Oi|RHQHrn)>dD(b{ziC+}eC6 z5%z}FyGw=#9i(4ZutmogVQ{wqF(aup!fT4{c9wpt+2bvLYl_5enS6}C<%^k-n2Q9WNG8k2aqeTX zq4y)o3=$7=CO{-&;8}+e#qDmKOUIUR!iyO@hhoZ`A2CsTV>FR6NbXzp4xytGN3aqA zADldpSP+Tnvu$(wR;JBQVarSgmktT!%n~ZRXosDKf<{n1Bs7i5g7NVH5J~cLE47l$ zf!^`4Rli#lg_TXxLJGKdy0UUhE!~3gd+Jnj)j>J;$Bzw7bLMhm!Swfcd9bIC^%yb4 zjgaipd+?4V@po6{BZOc|lk%Vbp7QhhS1T<3sy^qR+&dN~I(D>9BPK`5_qls-322fj zB62p=?z-!h{{Um|kt7VSqhQ& zSfk(HFV#g8ILN}U0AkAm|9#QmDq^Ph@;KsKrvP#>Su zYw@>RR7Y||K-alDU!_qJVa>RbYC0EYOKfPOnPc`@!5nuM*wjMe#XHW%QazFf1OnFa zxuv2?h2~-%It~6c6y{!L!=STit>^|p0@t_%1s)Y-LDWbBkk%vcfuXfQ#5rNaowXDO zj4?b7Rng!TzxdkzZBR9eSN=};A- z2-bD8kDB7&c%V{2a7U+Jntk*KB~z0FVg=sX9wAE>By<2!GxZrlPAbps_;O%Jg#yVu z_P4y`w?gOcs2avch9pJg?xZLN$L4OnR;n3`Fk~%}A-oOASLVBq_R8M&BHX!j{%{%R zo>fjv8bvI|b_!dQ5`A2O8=H6oTEf-w|W)1!!x9B;{$qgGiDHB-d$3~N1`U+C$sG5K38otL+F zJbav#if6`(JZui%iwRg_h&xNcRaHs$2p^oxR2yATlU(N6nT`6^j}N?e9N1u&CGp{w zQE0?r*!+q)tb}c;;=}r0v3Iqp*CK1m&x`FVmw_XZTiv;{a=NfA_xwFuj@0+K;U>I; zjf)g$RggU9$n%u2cK`ydb9M@RO=tSHG`+te@>?NU{pM9oT(n}w;fziBT!1d4QtvT+g7y~v0%5$^GIR#C4jlj$}EzoxZh zGR1d~rXhw!jx1TF%n9wLJkqpllaI+Q942m)b033P~2+xZ;zZU|7AbQ{6vD zlGz6qHOG@uvOYS*!Qlm((f(7RTMlPHz=G9}KP}(My_zo6@vqWZ^TCmei6rj{kbv0A zW_F4`dY^BAQyi#6BMWLqncDL|^30rNsQPETWXCjpuQ{?z!DRf&QB_2dw<42;yCkfK zmDkYvvgkk?*5cy1?LK2!6qzx`>{Vn4Ln%T4mNwL#zGd>?ezqN^*B_S~Ah{63l^7`G zavD0=-Fkuz$KO|JHs&O@F*!J+8!Lu1QDZbgS>Xmw9HLY0f{dS>jeZRvQ0jWzD6cKD zUk^|BL-0GR=Yn#$V`eNaV}@T!&CFahQpQSh152&$H3G~nc9>;hi{2*1%Uo>J&le~( zn9~xG$&S&1cwR7XZa$@b?Qq*%-+3n~>zl!i+Lsk_zfB@f9EabE3Ec3F+mnp#({wf_KBBz@Z^49M_XAs#1bBaSANCPOIx>v0V66Jl?!hvvU5S@>=t zydAl*lPX!nuw>01PArV=7@3ty7=)Jr8(u8GDI2Z6T+Fq=INinby@bm4rN_c%X!7O= ziyVS9i2%R4Ql;(Uh zE_4dB1V|ECqL4=-nG2-SDUi3f$-=S(vX)`++_P>YGF>@R;pa)&vzrPGU(zm3noI^V zwem;htB+-*UsI@!q(U^YZBRXR(>s3KO{A0BH8K5Bl0#q|N5_;fmPX18BarK5Sd3tY z_ig}@ZVw>EP3rBgc&<~9V4dqGNTN)fj30FvzqS@PSrRod$Q@8WxyhuBZD+KfCH6Iq zWuMW$Dy#IecRYDt5;x|^t1cp}VS@m|82zk|ZUV%L~gKW7|Q@az)}pomssZn9su&-xOZSH)+J~E|4L> z?Y~pw3~$q_GyY^?sC82cujaEWo)4gq9$*~>oMi{UybJZ`aTwzxDt4bQw?z&xR}RV? z1ePT$#au>(eMOm7p5nj@HN@dFoMltm@G(T$%An8LyS4@So(k&Gu#H~w83Md=5T%DM zKi#>jEn9%F)w1y*%^ZK{yL9siU{V=mTsWc`FqSRq_jx}XE8fD~Mel5r`c$8m)9Jsb zv0=vjPAtf{SyRhCG-|{&e3Bwi*aqaAYt&o{&DlO$PpA8Y6XgkD93+(wxU79ak;>{i z{Ak6EGQ;i`ECG~&rH|jORu4c`EvPG@ANAuw%9c>Ct&ZLl4RE5s1H_-3tpk-CsNdx$ zuf~Cf>&Z{2`21?9GDMC6(DD~vT2zQ&$7Nzc(_`mUJci&Djs%0Xi4_8tDn4NCqLcjS z7u`ixQg3Z_6bZq2^90=J*Xi(}k0=G~bqSzqq0SeBI8s0Y#A<2`-?SF;3z+OUrq&}} zE2QMf`|6 zP)o>6e{JPnZtgA{+)xXUEavDOk4>$8HS0`>#Gw$Z%st1*5C$WPsxZ=GZq^sjj+6_9 z470o8@(-A)B&z~+LU`Dnk1GaKeR^+92S4fKKGg2kjF1pqmfGUiZa$(#wXx|-1B`g> zsbxSFgC>t707isd1a-ZI`1QR7UT1g1$C6XprbxZ~h@_O}%PeU$&=qD3BS`^8R98GU z3g3mA(%TxE6Sq8g&_W=dI9J?UMrj>lSr$0sMH)F9MqccFUnm6+o6cU1Vhi`g zeEd9t+Q+ws@?q!BWM)NjL&Xc@M!?Do66++d#ey4hJa2t{W^a|8+(y&1U`VjMk}!B6 z{J7TK0x0w%qAJ?K0)VZy^^9kl*4G%3cZ~yN1ou@+p*w?er^RkTZ9FS_&u2ZZ6XV5= zh$MWrusYhp!q@oMNv>S($q5RD761!h@2$;PyBF9b08dK`Y4(b~sq7v`9CAQnCf?_x z;x)MV+LuliZmaJ7t#aPs1X(2t#g+n=kK17Awr%c9ZPN9Prd>7L2$@~1FTP?XCwSR6 zBpce~-u7z?UyX9Zq}wcq)EKeEWRb8EcoI1QV#tL()%L$kw&eUJL*mB#PZ3)3xDU4G zWXtYhO_1^b0LMm=VrMujnv%I=jzicfR7)=xO?4+jTl#GD!b3ZhC@o!QV2D)o!nB%^<^42bTMynuOxyK}i_^0J$oP<`bv69lZqJ z>cpnDx8uno_8ht9#VOl+i2Yc9OiV@ND#Mgac(wSE#_Xp{5-v68oLsIm4bvRr$XzT;jtTl0$REXO>>A8}6L@z0-vA2t}Jn;ut@jC13{j<4-XIU#@2%8U@W z($~GNE2gtI9x7f8leW$O05OT)Ac&@3LLCv1lGA7SsYi!xy_f9;< zwBqyOY%{_MaWP!YBBKcGq8k(f29i{f; z<i2iGS^z9oStR8M#K$gThvE$5L-_O)(iRcWPMV3yxkK zj6hQwIbz@lY{HP}GAExd&_?eSDJ-H-E@|36rm0yyq zjTtW=KS?Z(EyLU5ccz!}fD=d%(fB~W;W%L1= z+mw28Pej^RA6y;XVoulG`(|A5q^4{Pc@BCqW5AiJ>W!3^cojWTBNv!4vl|9qLs@0v zF>tTT?LEKhPR_sZ`ALDB8qb-TA&~xxA(SIi0HzlN~z0~ zwb2euEOcyS#op4rY&xEOH7-twXsT)4oNNS9H@LK~8wvfOFmGnT3hwf4Z&NPcUL zbggC22@29B`7Mb$f_2kPMG%vga5b<56KnqfIs`1Ehzf2Euj4_){Hv?qp}j;SLL`tVCys>M zOVAQj_Q0^c_8w=g0AoN0CeZ2y^%M?7aHWspI(U32tdSyUh1s+qxZcLQGBiRsft6XC zjfJd1H~w`fl@GSWl++tqI0AmLKNH|vWhzfo;-yrTiyKGnC>n3x>!&;OxVnL^3K3}pES-rHbZVw#zz$L z^xTcFKq>Lzk}g74A}5r`snX&U6HbIjWOx(=N> z(-3mWG^QlUbL`mN_>jbNTk``)9+u<|tWNY1yQ<{Pg(tDeGp7&j#Srwe+=b#4HQ9!$ z6l=DPp+YIUE)G5yZDpAxmSsfE$?h{KlnMCuq^#=`CUVqWo*Ax1S+wgnQ%E3{Q1nZck zqs$K@nY~XM{#gix!B*xI@m-0r6`k~+vaXwc>pu@=?O1D%hYTc=$zdWe8Wr@ANH!wl zO3t!JJ+5w7Sn(844)z6w`g9fBR~@QITaZWu`DiPq7|G*PZ@#r7G(a@2m}G@T!SJRR zDET<%L3Q-72FwWr9Y2PZjkRlCu#C}i^fr!$>PRGMvDVkFRyt)}+UL^8?FkU(}3knSFVN(qBFr ztPcLr%FCC=Jcj_}%W$Y=zXj(WrZ#(M-zy*WX;)p`_Ul_oBstg~&Dt?MXz_)96GZk5 zrARHPI*;XAyJ3tV!;_Phg)}*B&SghQeSp5sQjIN>L1P^dH4#kTxMhc@q7&A84QUL<|wV3ejY}?A0yxPuVYkk*B009< zl>RFl@y;e=ralpVqR9UMk?mO6zpalcvRSa*o5a;>mEG_3e! z<(sJ~Vtb!Y$XYyfLMQgI*37vOak*85$PWg!$15+6{P9=yo?0%|gMpm+5J3LR zlyq>2C5F-yBcLS6vPCKUI-AOyKf&XZ!r|HU*D)?E{*8V=a_xWeSnkTMixxfxMph(3U}s(i31YG< zIQ%lHB$e95KpFPq7lwT~%u{zfp4;BCzu~98PC4N|A8>_O&F$q#;$97K*=mw}w?grg z>kL$>={3hSnSTm7u`+R6E;p25;bq?|4m3sf@j@a00Ab!v55bk;v187{>c58FzY8R> zGraH}qaHrt?nuq-`(+tm#}6E87{;yctQivoy1crEM&uW&TwY>&=fy?sIQ^WdhYz`A z<44?LmK=`RK0JkChHrXRCDm3;h~W(?yowL1><0j*wYMzD%V3ytvIH49DwCO{#%|(I zvmdhvMB;{4foJ5i`jGm9fztK4oG#X7>YbDHaXiuFPZaGP{p^@!fseFo&gMwIW3x8= z0)W1FtX1b|NOQZsc6<^CcM-;c2m6Z=EA9eqYuNg1eC>Nv#AdCX5=q0NaCW-5wzfQn z!{uulGLm5hNha=YOC8DItulZGEC9EuNxjXl;kD|A66!8c4R*f!c~u<}J3WG^3$edn zx}bE?vdFxUaM+M`zu7?bj5URU<9pwy+d<5r8yzpX=|Be@2;#h~PbE8Afyj=G+(w(* zsGxdrZ&?-#t6yInQN!hymx(_U89MXUt_k&hxpfF{=P zG{Pj=M0O|qY6XrTaC@B>MHlg)dd9%aBg(O|9cV^B{PoLZJklL#VZijlKfcL{KxgZ%KC-ARUqqq`cOqMGob};JXweYj+eNhlcK@{jB4@&aBPIP17Ze@I$zJ> zK_(1Rvo2fbO7cbwafg&k8mQldU|a90lB&Dc)DvSYQ9%R~&m69p$0yPnXHRxc1}%Ad z0Jff?Q*YI+CTlU5-)4NNakD24HaUaZ?iqH7bDHk*BSflH5fgD>4ah}rNhY{?=l;J( zrc7|iNYQfcIWjWi;|LXVr*>#gEV(noD@i0EH?_4||y?uLpuKknYvib+~ z`Q6X4&Sq5h`&wVJ00ZF}8d(+4O6C6mH62WZuPfQMYu3KRm}9Qqe^<2QKowLl)F=ne z!r#)lNXFGMMToz`_0l;A0Jrn4Ay)qYeQ#8v3h2pns)n|MeR@`FNbeepN>_`UbKCge z!ns)7zX28Gx)8~007l39cvf0ecTV23Cj^Xgkb>{g7+8rcPU=)z-*t1^I_t9;-7zyT zkGDS@xuRdlnX&yZGOnvPFn!3#Iudlfmt8BK+WuX&=f?_u*WKd8?=eS~!Lrg9R7j(C zi`kKv(+G1UvO=l_&5D){W;}G`WtWc?uUy8D{!PDEHdI8uRBYoeB1DfId^pBgb>f_p z(`_&QlgwM6mp@gC$=tI}EbvYunnhN4G7SXTzE}2LWR&EOAk-B9P(B7vk(LoXELW8qKBF+c3KR>57}& zUnPG^&_UaCyGZsQC}kK@G?&;wjT5H;vO69n8AN?718KRux5q4c;xfIPE>7LwSGaa~ z!{K8f$D5bGD?T_vB}rjMc~(edK*)-_dTuz=Hr{-?Suy$#+k3eBqJH7oJB^2QkMkpV zgSt%&hudi7Ar-kMfthu&9aPsn^vCYhmd+}>GqBA*TFKty=M#a8G)|`+Ok+_QK*fx2 zJ4T__MGCS3$L1of+FmD>)>-9FQ5A5#!PZ&Xzt&v?vi${;hNb}Pwsw`xU9k` zpjlO=mL(1XmiGy7%yb$yx3%|myU*1x?Ya19u%DXZMUgUh3_K)w@XT%Px-)U(kqag=NTS^RZ%FtUQ>q4+e|!mOOSy+@Ea^1aoV; z5^Pv<;n$1HpRJ#u7%Pjy9^H#RGfN{jUM_ZAO)9~Y0xTnjE4LEzHnG{971?yPS>rRp zUp)C%r)cg2x?tjWOx#>-sIsEWlNwm^4rje9ES}NGhBq;;sut|OG2dF&wo=7^)P0BP zwfe6sxnyUD#%Z!8j}00_lRT>@wBI&7zT9l1PItfIYa5O0aWKuzy46eF#li6H6ArRwD!Broou zAcEU+^o@K;plUOVhPCy(4Zg|;qZhT->(JhT>Omw}cmd@=(-#A&(2IjW#0z!~0S9~O zdJf__T}cP8g{Ty<00sD8#`FStTHq13jCY_y1NG1!`X+#7Sn=X+I_a>Yvn|R;0g$bQ z+WkHrHPw+<9dsA9&DQ$)=}=8T-zfs%9w6)uML9#8a~($7UYWonMikf{nqG)lVq4tl zV{&i(DM89B-(9V9QAXymr~^ZLX;2{J%R!+Vo#-0kQiMi8Cq(eI=m^Wk%HFT_Z9&Y$ zjYWaeS`JjR9|Q9pZTx5-b9>t3`-cAj4JZmttOAub)w=%xl>kz40Uh)JTF%ug21aUsztF3!sTtQm#KuypCDYzG65W5w4fd$$_Y0+ z(knIGaLUcW5%cWv(382Nwk*zFOG zDuilSo2(%k)0NKl4W zC-Gl&L^a#3dW4R#fqJ{@$gH||&+yf^8mh0aDaWpTTUqDJ25 zxGn6SN)WcD-ATIiHN$B2>-j(#UDLMZdyr(9A$gN{DdWl|oq>5LGx8l$Y zPABQ|&ePj7<*n>J{{RF=sVFJi;&(_pm^Y3ISo-2(8N#b*>2}*q2wS(|%hhw4l=0)r zxbUVnLL0etxR8DmVPH{(?`Ge?ipJJsm`zl`;ddz?^hQL>?Z{pvR$)9m$#2Uot3pU4 zi)cq6yHj1Pn!gOh0=v zUg6uj(0FIVieJ-rY*OJ$#WM*Rv>ubl6U&gZSmy0juz?Pqf?Qwfc3*DonAlnW0Ir>~;>%zAT#ROq^z+Ep5ps5K%AJ?cb@h6AY&hb6>`xWB zam-^o{%jZpn-|?y%ZuBYa=FYyqx*c|k+^@eBw=;4rI}jV*I!F~tlDGxIt*;A+5Z6J zvN9G3eYVMuA~h`nwlohX8|dOg?R$1QgYeffVXd#q!?j1%!wd z76@dHd`Q$}WJ1y2A^EdHR0{(mKe~k^Q)wgG#YySQUAB`sTx)JAox3t@p5=nkK0Xh7 zU?7Vbxvm~Wk%k4&HX|LSP*lX@ixXvK8rP$XK?=4(p4J{{S1Bj@b_pk}l@}jK(14a-d3Gy}$@08v;1( zTE{qM+`V7v-U|N!p!XNuiZLcEihVL-mbfEZ5((6b#bUG=$-!0mk`m~#oqasHT%EZN zR`^t6q^?N!Jv%Ve0j0-LR-_k^E9(~|a_~Bv5Hz-w4{vOn#saC?Njd;6_W95xDC$W0 zloQ9`Xe36!Yz55#-oe4Jy|>nZ#d&eRLw)E4Di(bd8*8ZQHK1z}B-c(|f5L!-1|);9 z1CNyeq~l_xPetW_3I;2xq0keuilIX;k9%LjprbB}5-S$xYv0ep_0tG)DPmQJ7b4-$ zPdW)GJ-_wxAO^SJP%C6b5)&~9x3`VFDS^dWR8Xgp@fzG!1c?r+)^0ur`PM-Jd#E4- z)D5lDiZQVO+sj=l1mL#hcLUS^0HpzzB+#>Je(DZz%VTg;!(u-A0f_?0scVDyx_$L< zIm4@PTibn2$J;>fQA?9z52OK5KITHI#2a3$S-%qlZ7adF z#@xLdT*mr45D(j>bdNn5PPa9v%_Zyz0G_l81;8S}intFN*z~TEkt}V!ZGsVfDOOWk zPM5i`6`HWawXNy#2d9N+JSsechc+rmHzw_JNgX_eVz)V0WV91T%O;DVbzl^&t)U?4 zZ8ffS+g=$C@!0X=%1E+S0fi%}fyXl=$i~HFQ~5yYWh3GR?_746ch`Ga{^8l9Xz?+U zIboj>C&!tk0I_LHIVml;`*)CCoQwW0wT-3tZ(HWGdGL1wj?n(9KHrfmuwPFY-Zdgf z)r%0I`-=Pnoh(NyA4^Lyj4s;z{4{-=>YSSft`_Z8RqLx!CW{ek$3XNs*Z@bWk=V zX@%aPo-CA4ODoDrA(ctCw{BYb?{iwyY;DSIre#!P_lri@-Ps?y_lYK+97W21Z!Kdt z;EOXXZ^kt&8}k-HwfLK#UEe&%4@`03AE-OWY?mG^rtPjhQl8L?#vXYu5@S4OD40&M zyotT6Iaz>WF4q@@#?!}@hib+-u}k#)2|O8#AkD;?!$pM=4=l1gk=+Dw+tjGnZVsT8 zHEy%x{h9XspP2-c_VsLBn550i#>iMFh9p>h_KY->B=NPR^u+dHpjh3l#lVxUOU7(l zz4^k6>O3CxK1xE6U|?fJ=OeQBJXv8$5yB*nVrk|PxMDvtPj7>Za;~~wI7>e{QGGk# z)3Ibt*&>S{y33v(CS zGiA+>By(j)ETys|jf%${Q{&xvGfcN>P!3o1ZE)+j<8S`}3x6}^i&!Uv2Kd=BW97v> zuGqNv%sq*hh?+IX&P8N ztCf>Ej?*~8%M&*w;wA=6qZr8$>zk1;>R%Bhj@fXiPt!6a ze(I#r1vif3*C$3CMZI#lX3lA!R(8ny#tdw(p8Rh!po{<{iZ|o$Laa^Mr67B8xw#J3 zxV2+U>glzVEYAI#k8znYti7@kj_!yN@iH}VLu3mtB|f6<^E#4{ZMu)Vs9K#w9K2EFg{ji@4%$eZfK-ovE< zqW}(TaHn2Ypy%R)krq*YqiPCh9tVv@fhR!YV1C-@j!=b)9!%?ESnc*z5~B<4+fqj0 z@2zD`lO8#O+-ZMO`1PhxbjLC5NDZ+cgme`H;e@DQ%mZAXNVVvvsBtCDj@tF0I2W<$ zZAO&>n9!*!qYoeRq6oY|14dhGdI8FUOQALkYXUE?g%rgK7{mYy2Td*Tpmbq(z4rp= zr^bVt<4uU(+nNV(Qow<7e}w|Qo6-ff1OAN%C@19vwd?>FKfqkk2vSh?xRyQDf{;bV zqU79H5c;bYI#`ee>M3$>%kwM<^za)hi(21( zAZtL08#IRHfVylzI|EZ|!&A#I^$t!_z_Ez(9tq6RGDNEJvIH`^kmNPhRF(GizUN_F zH1O~8@=x4V%9l45dAotf!iqUNj8etUR*#Rh3NSZ3W4mxhFSxaOzP$3Cw-{04JLG*z z-K*)zUp=Lbp^Lc4*PA6Hi`(~Gk&RLWg^DO+sr1~T<6fQoX1M9)^$+d-4n7Cd_?WoY zFh-?gV*cka7}`!?4qoTa<$GUB`FCvXYt^@g#RCy9>V%Sk0m;>HMptjM{M9T~Cc^3vDO{*4&Y$VyqwO&yXEY>M-Rg6X7V}T$1l#Gy?2F zx67a;bgp>(J59Ldm+shKs>Gf%Dm3`W#_>kbn7O^#l!aLA!;-zNa(-L2GtNmd!gp=@ ztvxN?T3#~asydYlWCe_I$_>K@y8aQZ`tMn~OW~WCk=$E57dd9hGrU4b)){fsO39DJ zs<;HVHHg^rUYmoxbIy3JO?b>k?${69%t@9aVi10dIoppnPCPkD=wzNgAOfcQ`c1Uf zo7v%=wT!oP&dTk1@xzhr&lGXSlSLbG%K)BAdX6dbOUd(V^Eti8ZyXVyXues;W@~&TW#YM&K`HZqIUQAgIBL4tj@@8~H zAz?FhR@93f-6qW4temVfG5eQy%FpjO{8#E3u^ue^G9sG`F(ib>?j?+}N0S^fGXM`O zYqjf~&YWK#maUh^`#kqQAYf+8im?|svJ=lO8YyN*K!cDBeXXw(s4O(pu9ezrn4aAJ zra?J)J-B8o87gGOk^Ov?d2-=kk|H*X_`jxZxaHDqmG(b*i5fg!?8PR-9_MTBF}Jwz zO6~3rUoeseeOYbjd$7}xIg>Ekg*SVPyUm)pDIBunW=4CCIw=ShXJV5Tj5`Dz;bq?Z zR1>vz#B!I*OCNX7jONdHmlHJtcSxFcnYqdNibE1)_T?j*HP{1SSlnNh`uw-A;NJb+ zyR4I8NQEQCNMy#tXrhaUxiSMIJUmJXTFdL>asW5wsA;xhZLG^GJM-ehj39(#Br!fd zQpOmgx2asrBxzHVhG5_*RvK~Ay%IRwEU`PDE?02J%y^Zi#gQ^S>~UhKg}HJ^nMG8#mCOQeEZ*%nRW(#EWhhAPfc!Db%G~0b2-(|;&ENrPb zOOY^!-#@nQM<0s1{J+MrXDsa=hYAG`4=fKs?kE_saZ|?1&Th@u z%7QidN1pT%wz#3^?5O|dfGjRoowfw#nDvTqr8d}Gws2M5&Am}$g;Y1i-z=Qt)N5oW9f-SVZ z=U)m1g+OQgKpWr6s3Es5U}!p9N`c@pzYs?s>p|RKKmcp*cG7{fIY{jigCie>&&Gj* z1ujdA++2(4_E8RCtz}<9JC7x{2&O{|jswobG+Hgjtg^3JKwVk{!zF04-p^_|c(qNfmfhCxQ zB4&9Ff|QQNHGUkbUr;gu$QY#d(9kun969Ox%9%9m)} z95mLotztN?)$8iwaOK%A%Poa3Z|xnpVa1NK=J$aS83h73h6K1sgC{6?T(pcB5V~u~ zn(O8mlHv6)&`Jl>ow-4|5Jmy$JtI$mubKYbl5~fLfBcZ#IXRN*N-dcd^{_a)z)pwk3X{qR)~9MGQ_&@3}jNu7&4!fn-R<6 zY)GzGTs!N&RGr7PLhtP4a%dzH30IRWPP{>rn=P0}et_7UUb)H3u5%dtp5H7G`AP6yD|%df;hnYf!l|V09j+XSemX@Am}udyYBBSd<`*hA@PObdwv~ zLZ<6rA4Sk!_peT}V}~AX#X;;n^SJwP_UL3~X@t1(hn?0YiGd;|$7{xT^3e%5Eo*Cf zyKC}G!qOk8aiWfQ%71&g<}^!{3^5n82e^&Z+1K9Vc4e_uZYs933gy35bknjXex_B) z?ahfYoV+Q-4UrLNjtK+%kytoyaY}LwV@(aO(x$W3cA1L&yzGyqB1qAfCVunBB51Kz zNRcAq5MvgN)0Z@7MnvD!>$qWFiLbPI_S>J)DLb|&)PJPL&N$F#L+xU_@eEo8jK-nk zjY~@$Y5>uNv~@hIpQhUQZ`w1R{{ZOBjA`XKX!1a05Jv=sUm+Yf5fQeM-MuloXx29i zwQpVWU2ug4b}meFCT}#zjSPb(9srPRBog!E&hNn7y~WLesp*dme;u_Kk+!}*bzx?IsIuf^cD&eo$8Ar4w?^g(G3R0?vo9qN#QH9+?W-ZTqhCGA znTq9cFAXPX%v^c#R!4^~ws$KlT$Y94XB>v1Om7i7t%DXyuj##>j_^3mcgy zMz|s57mW?Cz&D+%t#O`O{?0L53%SP%s?8%oDz275rbRK3Lg@bG?t?-$*16x+(XQ;{ z{zI|PG%={}9k%euqe5c0%s$I zIc=^g`x@n~vtQ-tRlQfH5NK>!(}xgtzVt)HTs32IMf_?3$_Q(Lpy{{qtw7aYEXS#} zhlNqh7)pP%i`v~yK{xrfoB(naOv}bcn42UHBnd61Z6nO=iq>KOZn`PS5*o2X;2}xjYs=VA> zd5bgvFy_rGF(s9a)Qj0p#MeEeuA5`ZlQZe)fiI4xCW%}|%cudj^xtiN=+<3k%IP~? zm{H9R8<@=MyaN)*vB7H=ZPB#R)Pu{!TvOZfp1DwD_NlSNoFeu=44D3<7k)Pi9J!TU zi3s4HR@c;N*`@P5RO{Y&zG9k3pSC;Z;Y1|JXr3sba2m|ufyrF#5ZzcE2+)nGt-n4R z+gb7DS1u+e=pP#z(Pik^IKHV!9@&VjE-lLMB!i9B)Dp-=+Pxa~Uq22Tb^KY&8{A?2 z4o)ykIH6Y&oQUrHBq-`lVWmwT=f+Ku*+@5TZ*qFx_PA))YBoc0YN1fKkO)RQB ztSBIJEG*_b0q>Ah#~~wEYw8V}igc}AI>N-}j$0K|| zlf}MMxw+&Ty%?Bq=Pf24Y$Fsp%I!2WI!hJqiwh`WD&PB?ks`U-a_N}beKXxMaC?$X zh~P{BOpJEBB+$KwQgs&J;asa$HyytX@baV2?J}70r;neq%6NthRz=t4)NNe0;WL?v z*Y?bYF)6*7KtSK!VSPNkRb+CjMzf&h^K?CLL?Uw+9InSuPSrvbF1%Tbd`8p=(G663 zjlEaXY7XOI3D9|JC>Mw($ED8t+Jk@ugV1>IY7QU+emC(n19w0ThMjG-%>x!UHYI=~ zOZinC6-R(O3-z@G7xu!~>DJXyxSGTYk4ZkEZRtU*6_(zhbUt5wMRnWUK9E+{2jM_i z)fHK|>(HM%2BxYcYw3T50kO%EK|2k>)`&Q`1Srzl_)rQH&3SF6mhhsE5mjza+dwG` zGud_j09M29pk!zZ`m{biA8irEY`_y?t+b$QD`q!5?XSSqD5(6~&U zv>5s~H)}Ee?k3vw+Nz$;IWIB=?_vFFA;I{O9{|y};=bQ~0XW%7y@OCaLi5*9M*jfg zK=zA?QZ^cs<55UL$Vuq7)|3uYX;7IAWevkCDzQ9YMZT@LBrdk7Mhm_^EOSflT1Md9 z(SaccBp~0?ZDmu$YpL6M^V^57NtncTJlHY2`u$Vfos%8|7D-=qWtC%D6=Vz*P%Xmx zETD1QYU#GvvQNu%TtD4n|yMBJlTAqXt0K;SG2DIra|3i(oU_4Zb&6oFmjd94vZI`7i; z(nc*WomdvNly%0JI(gG32nyWT{Ay+{4h%FEsae4Zu($-D3;zI(Os*Ur<7;%aUtB}A5GzZ0Z?-R3%8xZ3G8LYh}hl^^}C56g{? zw_W$r*Xvl%F0y7J5bYTT%x+5D9R>8$#<|x|m403#bB;x_&YE8Oa3nET7vcriOAqts zv~<^CL{SoB1c@Ud9^%`sjkUb}I#zJhwGSf>FHz!Ezy?FaSn13Dty#LdP1)>@#EUae z9L1VW4T+586-Enk7m>c&@wL2nt!IUp%QN*p3&-4~h8Wu*2a-H{FBcq?l2yPaOJCA1 zNgXQ9Ox$Hdos2)@GF>9~WI-P$H}=JxtE0lG@2?`=}RSpC)*vVTV!J`-_|Dtu*f(gYC~ z5=j35ox_w!N@$_JTU^(Dc8*(VR39jtoCX+NgBgsoMHZU+Uz_dL^|mpD=sUJVc(b#E zK0F{sJ>lvNF$`^DZVwY+_XHc-_N-kdTb-8&ziP+Ih-G8EXr6&QMqoHRgoF+r?H$0q z^&VoZws}pax0pU4Zrc>NoyRL7mR6oQ@L+!5f@lj1-_S2* zvT@}s%;8W!Rol!FxRFc_-pO!4;d_IvwCB&RpBmmW%-ae708~i^OmKHBQyg>67dc~( zozhsz4p_CvDHL-YNdQ#RV};xDo7m=_Y&dY_L3knm0A-@~=2<6{GXg$mUss`zL#0jP z>01w_FihEoIRI$kjPY(nHLqi04ZR_*e5;Pt(+@@Zc6_Xqnn{F%GaQ(*BCs7fEtgGB zwZ_aPTz1)~i@D0SQv`q%W;SEXLt&t)I8CP+YOtAF0O{)Gup-ApYOZ8wu}3OyNdnsI z=Ttl1Wz&H=^r?VEC4g`()PucH3Hfpa0e+g^#(;cSxppM5(~p${qCu%}P4^chY0`o7 zSet{P7PtPC5!|>ITc0DKI@Jz#C8|Va2!Rr>TG;Zg#)4n#kC`@not}qhMEDco)jH$ z4=Y?Bx`<(Dl<)@E8VUtjSn1FU>p+Iu@f&ME%|PY_%V}%SDgzvRY<1U_@4Zl~qZ1eh zrS|*k4iR6IU(|GDBwJp#ApZakzY3wt5?<^qf4Ec}@tGBYwV8BNL>4qv^xEt-BjH65 zMgc8rc;9LSe@2AaM_LC9gQd;(2BMv{v;$3iXnR%0N z#QjU#WtX^2pj~FxLU@A?AixMl(^7UzWVm`2JZqeDLgo0KaQzS}onhBM%GGTml_rL9(RmHXA z$JV>>`&?o2XEpW)AJkp1vS6kvvPqpBA~eK8ZTV1gj_d<6^B^eEj@9#e^|zO=vzvkB z`r>SHhx*KQ#2FVuD@tVsQctBBBV}Qs0^?nPtz!Hq@x|Y5`j@rkMUOOjZ092W*m(GI z>H)eft$ixZtn%l2@8N8jDDpDw6x#RPioX1@b>k^0FVI|5C#j8>Za^ClJhwhq)~CB(h|iSvv0ya0B-nC2HZ`AS z=CKY*fecWVRJR~)W4@aBS3I{MEs+>J3H7%U#=`b;c%3yDvr(rsilhS9Bc+Xix1Rb6 z1~hRihF}0XBMr&xp}k_mAxj=9Hj_(_LB9(NSd~2uj`YM|YKGDUDi{`G)>EbQxwePZ zr~Mk9t;(y)%xknqtdLNomICwRGM7z%dfniSz{_ zt=XPqCEb&@F|S6l{{UB?X=0`v9_qOe zoIHfA(eqM$CTQh1l*VHSgq^^I-jw-Ewr;ud4v*VehZ%mnqbd;>5 z`gaWAVIAa}c4TD%f%K2|vWvn#nK z9wt5ji}f!oIN3$Y$CETjtm5;vhZXg4QVrj)rA6?cqSvB;i0Agf+tNv~p(FcmN~5_sQN-L@)-?mixB`F;wgC80If)Hx*+!P267#tuP&FQO4Un@)0M_Q-R0l`W z?V-Je5JY7vEucGIff#yuD7h!cr2|!eFc{dDI(UL;9%3Xjlc(VWT|VT$+zn9pkTN3? zbvhb>OfSi#L#JJQJg7J;3qHi#aX>=MUc+vq#)@evbs+1l!Peu#)CIhH1wA|s$Jwn! zH6klwZDFPS>5!Rfzz$!Q(UHg&y@A~MZ$*sWOl$uDAudGc<=}zC1qsMBti`nAyjNX( ztI507r-zIF<^5~ed-g%?nA4DotPglZEgVud-ryRvEPXcvm>#9QxVN|I{av;F+cVwY zEXJy@+E1q>Zsn8Nd!wd5a>9@=ZkO`e@tRjpdfG8{nM(0t$SBw4V$199vl(#dmR!Do z!ulUG9c4Kq9OEPNu*dx}`;ndizdv_FVo6(G{uUMCyZ(<#t0S{_*gJ2xj+j}#!$ylT zW;B@$B)E~>n9*ztx65mD>uS{6WiKksFRK3lQ6K7-bdFVySu$}WkjB3BlC)_UWM&pS z-GL0;NZgv<+7pGgH|`JVJF@oJ-LjCoD2E&?ltrY#iCJI)CJuc>abybE$IpgSA3 zx>rqpz4>PM>dOzWra3>Uo48<4C$@^wAEx=G-s?iD|D)jcwnz z%QK(dM43l68{uV2728I$I^XjF)S+t&TI0iru9HkmIPKY+kkz}=_OE_9QcOwDt~lpL z$UMnbvMU)_Tx)TrhTB%XBcHuPgX(3&k;XJpWTe+w7D$oFK;eUXk|`y~8}SvdSkLlU zk&pENhZB@4(9Dv?XsS>se04-Z@}^WPuL`vlXm=vQ4Hgh znF{PO9m7K^g@Pmr8jd9`t;z7II@kHC`?CF4*)dxeHhEz=NyX-jb__g)+ose0=F04g7K`scXkHcoaY90rPMrCISKi6D+VwhhOM2^|~IoKH3&i+R#@PZalN zJKxm3-??T_m)xvcnN)qXyEs(WGmxY@b-8s%7i zATPgEw-+hhh1Ot$OFvIn&SDA0JQF_Ru7S6?Di%n| zC~gV=0Ha!D^?WBInDIn$6Y^#0L;IXdOu5xkyLU>;BqTr{7nKfC$z_Yo^%|i zijTx}7Vs1fJc+S418ZwQs>`MCe-YM!%gpj4(x4g+67aHv$XfTHN0g|t`hfG;8V732 zbGr_kP%xI}HLxS5)C33=m$raj$DyJFGtVehi18Qo1Fzjy2@v0qTZORof0Y5*Qr6bM zX=;HZj1}Xd<)PT=*5dtq*2m%~BpB65HzJ5z17!yH)X`mVro(N`yl5LOn$NA5apP(! zsMi-aA`{1t zAOX}~_VxAsd8aqZUhMF|=6z-K{P0hQ7iyXeRSNyNqMcSnm~Pn|l0}#|TLnG@S6^up zZp&sQ#7>jG%}HLAKI13M!OOU_|`5edtb@1{_%Zp6Z@F+ z!33R3LvTlfER5=Y(M&|m7a#Y-_a+O7d#rp~!ISiuyiJYu0y`Z=F0=4^Q5W~G>mi*E ze35py%Y%uEQ`>RWg1;%Ug;Gbtr>t3O$}irG46NBQd%x0syCPha;hm9(HclkcT=HoU ztc;P$TV6qF>lfapFSm!J!I+sC>moT~`k3u|k*V?` zxER4>l1EAXvO^-C0I~ws7O)pKq^o$q@Tt&7zTqHTXrqwdi8uarXXwqplxb!v(gMV? zxjel<4NuL+=TADBSrzY?j_krFjfRX4oLct+*EZ3sHn-}h@4r^|-pdQwmy!HNDb6+ZxN+I zciVf{)|q|B2Ok4FJ2yTz3)}IGkCH>$z(*8@Mce%~0bu&ayhWTweik-!yHvfqxx`dYC%NxM`Fs@@^zy2;l~K6{lI+d6 zQEJwnaGPzy7Ef^R51!f3PCj8U{U7B;8xwC#OUH(~YQGBV#%f+N_RjMpQRGIL9l}W; z-R=RFJZVgfUzCX4Qa8CO2xX7u<-`KjoLLOz222>^n8%Nm8%f4yc&2fPV-XYSkj=ph zxEEAMYwf*jF!ffnUDqQHOvHh|MFRwRQ9md#*384LX6&*P69>G@7r%##GcPin;#LCW zSc|U4#@}r{j1QCBdzL0q!O!iIE@ZHoapH7n<_hW^WUvF8@lr;fG`0~dwS7yO+j3^^ zJ-@k67jd1)W04$llNr~OO(!l*a6kKF<5L_gsafAteP5H?a*?u(-Mxpqnx4c#2x1qJ zVHo4;WnB*Bc+~aQH*KnHzTq_Rre`*JjpCTfOq`dEfIPPVXYPB`fpW-KK{avfed$37fS%F4%4VO)K( z>4l%ty}R`Xkb#zR$sf0WkR`QJb+x)5zPayPk66OQ$HtLX0Omj$zbQRS>bnLO;z;5_ z_}81uOIUHDmliK*h=P;NkXZYueJpR{Eqcl=dwijgdv*_dNT*vhv=tJpFr+qR2lEqd zhkdP8kz>dOM2xJ{nr6;^esEhQ`F3)DAqhJx-c*pd@_C-TLTg7^`z(u<7MM z;(=}ySRFwdUV#ufAhebmSWybd{*V{~PQMBVBu=-p+;3x4H6sC;xdK7^yr>?l>C}Sv z(|b`y9Gb|W+#4P3@zVFGf+rvdy@Kd9zL)q9#|>WOgiLT_6hXt9z9U_R{*FI`w^7oZ*e$6@}V+C;tGHN87V| zfd2rB67iQlBCB)){+1#|8tKZ!SEJHkDni5gCin&vN-;s-yxL2kt88Qu>#y<3~o0yYD!mSCf9-Z;2HT^&fG|%S?>k-GiFZjtLG_5Gs0w^+?25+e2FQ_;I^S@ULOm=L7XU zq2T<+l6;IA$}o)RBS@qYM1VJ2UZ<-(BSF|dRO9|XGBc2z88Pw?>Ez{NPYD?NUXDAn zsU(gfmKa-N{d@H{ZOQ#7eTln?g|1ULGUh~XSd_@pWh9%PMX$EinzL)Id%x|+?!Fgx z!;1$ODs0@@rV;*vWQshvW8lZ1KXGHoLBwkkFA;WN02lK1eSetr>GmbRx#&Hc>yM{% zbnWxa++&A|$tET&^TZh0tYnEDZ*LP`f8gKn>9=OTmD~MG+Mc?k(?S9%rJ>TjW11HTKNg;Ac;x5Y{qz=7mf5+eO-}7q2e&zo8 zcHYS@Mh9h2f4Pzb&JQ1L)p-KMUe+wCP>y#5Hw#(1_5Eq*XD$B6#CRrFchw(QcNTn! z8!AY{NJfbS31wD$e5g38g2z)~a%)l%0~92h(aKYgef7h zk|~;I(1EOajjGQspT~qLCGH5KI4zEZh5`i<*!dA={xz(ptwVfSn1_+ckm}4$?r-8~ zo}~W(u!cge>vhvkr>#?nkr!~sxg5a*Z-qvt(S42F;-45#69Yang~(MZ0gPE=kyLBx z`CII%hgrIMcac1P-c&Koj&x;_1C4jJ_WLUyuAb8QQFm{rI|f+yFjcUnI+YiA$vrK7 zKFYH{E?f0$d@`<`&$8!o1BAgy2G>auv?KjW)v1{CS%i4|mULawd#XvtH6#s*%`V0=e<5=Non&kq~|M=%*@Af#NCPUCanJCvoUZxOJSmC))ebsk2n(8^X8 zUvb1@G2e$G1C~U4+i#s(wKm6vz?ttpMlG4xqBN3lzo0V?8Ws@RjJFLUz>5!;U!9ob4hdxZHz(kw;sW6^_e>wVXX~>W<&r@_wT2lEyg0 zn~L10QF9w193+ze0E#WX0@dV};<^<(Q+BM`@uY~wlPBlFA`2(#0+enI^0aa;w%id} zw=t>ZtQk<|c6jrrUKvp*9Iy`_0lhAKHrHC^e1l;tJQIhF6|#po)DjfPzJO0(nMS@9 zC|6g(mJIYpY)Lr#&8^U((3LunZhY#CXc-*)n#p_eBTt)AsHlmH#y&O|hzly)r%fuL z$}RGeI_ql#_E0^f1l@JE;@kWv2O{&(q2r++AB6;IO9DY&DmE70s9<%w9lxalsIVu; zL-tTLf-@5STtx$<3!z_{)(5Qwe{`S(uO3&pI$EfFc9t=7zfw0o6dbO~Jto6z5qnS= zo2V)WBe}OqgPFLCE}j$%A22uM58puT3hqbnpkzdwTEfRre5!*Ba|Nte-o(^G5Z5|< zeiR%PSJY02ONycD5HRC#H?SAI1d_^;dWgGee*yL$z64YQPnVGNw)WnLBS@k!ZDMvb zQY@>)mitb+T7*1m4X$taXrYh+Jc$PVHZ(zp5wN?BkA(sQ#9Z55Nj)eX8o~{|+lJH| zUw^uwS7cj+R%Rl=o`CodIt-8QpV0GtXY`wPVVbxSG^sp!4GeOC$#7MTjEblI1RXpy zJv#e6Ds8S`7WbabpV@o9Uuo_Uh_i5HXlFoq0L#=7xFbb|D$aO{z}hFgG2upyM&QCV=a z;Ak_lVaCeDNaLCuz?}WW=EzXoG)Hu9hs1Bvu4rt1tGKdz%ZDpOKl_3vDn8pu&@j`>N=BuvbSuGbRmzFaL!WV2Zc!v z=)stA7bW8ay07|(wPzw68IgOT)fbYR+Sdel5!4!)7Fmc^Bb(Y9L)-m6{xpZ&Y-epa zGj)ugk^aN#-e(PF`G!H>C2I*s7dj1hs?_XB$&7bASHw2`LWY+V_2i=EfB6AbcIA&| zxW7UxHn_DvPh&1ND#!=sN;x?@kaiWPZn^TZl|;anHy~c!X_o9%WI%ZkEpxSL&c$A2 zM~e$sj+Aq;Qf=}+!)6gbITR(AF@5A zasg?aW3xvr6R~C1KY0bYD*!HS*UF_?QE{Y}KJ6qK z05E{8xRI-G8>mvY)8%BPRl!6tv@P;U^8Wzt15G@|zS@Y6*>Yp5xlmGP5l9972KMAM z+O7qbB;N7^VeP9B9^3x_g)oD$l^cKnAS8o&2MH4D3tPj&fyO|K#Uj>z+4UPX%v=DS1YZqO|+ot5ert3iiXp2iF&As2bm~uq z0eG`%atA@v;Xv5f868^WCr=L=0!J!H>w5(n{{V#pu36+QzlErvxaSM0uwkgvbEcbr z*V|dz5%T{4{!Dfyi|RZc{St9p*hV%;xob;~2LeyZpvFK0uM=Hdb!TcI9sW02I7}x4Y{HO8|Ag zo)ypQ?Tu^I*{*S3>-7)P@OM9?FmT9?BZm?`5;;(@+9YCix1{mAd^HBV-F=r`vmLHE z%jdtUKW=k-LVMCgKwuok#0FGhaKvwIb|UrkwC$TboAhIu;j8_UZp+#G;^#>dOsWIS z>fLh}m`4u`f7r`xhq_Gnw&_-d{i$Ly`!!yPxAW6S7{+xs`#;_cq-u?HnU63VRh1wki@dbwQL ze){>_ckOHF`)fF3{=WUR?cJ}ncMP*1u#hWqv9}*d<8gEId~2^)eYXkOrn_rv#6F)# zJ@>cqRguO_B_nVd82gK5Wj6&+P;1#ACN|x_xMk+|%3#Sp+N|oMi!#4R7Kew5$ix28Mi^j4USuW